var selectedCardID = 0;
var selectedCardIDFromHand =0;
var libraryFilter = "All";

function sendChat()
{
	msg = document.getElementById("chatMsg").value;
	url = "actions/generalActions.php?action=chat&chatMsg=" + msg;
	sendChatXmlHttp=GetXmlHttpObject();

	sendChatXmlHttp.open("GET",url,true)
	sendChatXmlHttp.send(null);
	
	document.getElementById("chatMsg").value = "";
	refreshChat();
}

var chatTimer = null;
function refreshChat()
{
	//alert("Refreshing Chat");
	chatXmlHttp=GetXmlHttpObject();

	url = 'widgets/displayChat.php';
	chatXmlHttp.onreadystatechange=refreshChat_Complete;
	chatXmlHttp.open("GET",url,true)
	chatXmlHttp.send(null);

}


function refreshChat_Complete()
{
	if (chatXmlHttp.readyState==4)
	{
		fullText  = chatXmlHttp.responseText;
		document.getElementById("chatDiv").innerHTML = fullText;
		chatTimer = null;
		chatTimer = setTimeout("refreshChat()",10000);
	}
}


var battleTimer = null;
function refreshBattles()
{
	//alert("Refreshing Chat");
	battleHistoryXmlHttp=GetXmlHttpObject();

	url = 'widgets/displayBattleHistory.php';
	battleHistoryXmlHttp.onreadystatechange=refreshBattles_Complete;
	battleHistoryXmlHttp.open("GET",url,true)
	battleHistoryXmlHttp.send(null);

}


function refreshBattles_Complete()
{
	if (battleHistoryXmlHttp.readyState==4)
	{
		fullText  = battleHistoryXmlHttp.responseText;
		document.getElementById("battleDiv").innerHTML = fullText;
		battleTimer = null;
		battleTimer = setTimeout("refreshBattles()",300000);	//5 min
	}
}



function cardClicked(cardID)
{
	clickedCard = document.getElementById("card_" + cardID);
	
	if(clickedCard.getAttribute("isInLibrary") == "Y")
	{
		if(selectedCardID > 0)
		{
			document.getElementById("card_" + selectedCardID).className = "card";
			selectedCardID =0;
			//setTimeout("hideCardMenu()",500);
		}
		
		selectedCardID = cardID;
		clickedCard.className = "cardSelected";
		
	}
	else
	{
		if(selectedCardID > 0)
		{
			//alert("swapping");
			swapCards(selectedCardID, cardID);
			selectedCardID = 0;
			cardID = 0;
		}
		else
		{
			selectedCardID = cardID;
			clickedCard.className = "cardSelected";
		}
	}


}

function cardClickedInHand(cardID)
{
	switchCardID = cardID;
	if(selectedCardID > 0)
	{
		swapCards(selectedCardID, cardID);
	}
	else
	{
		cardClicked(cardID);
	}
}


//	Swap -------------------------------------------------------------

function swapCards(cardID1, cardID2)
{
	//alert("Refreshing Chat");
	swapXmlHttp=GetXmlHttpObject();

	url = 'actions/generalActions.php?action=swap';
	url+= '&card1=' +cardID1;
	url+= '&card2=' +cardID2;
	//document.write(url);
	swapXmlHttp.onreadystatechange=swapCards_Complete;
	swapXmlHttp.open("GET",url,true)
	swapXmlHttp.send(null);

}


function swapCards_Complete()
{
	if (swapXmlHttp.readyState==4)
	{
		fullText  = swapXmlHttp.responseText;
		document.getElementById("gameAlert").innerHTML = fullText;
		//alert("refreshing...");
		refreshScreens();
	}
}

function refreshScreens()
{
		refreshCardsInPlay();
		refreshCardsInDeck();
		refreshChar();
		//refreshUserProfile();
		refreshAlerts();
}


//	Load Cards in Play -------------------------------------------------------------

function refreshCardsInPlay()
{
	//alert("Refreshing Chat");
	refreshXmlHttp=GetXmlHttpObject();

	url = 'widgets/cardsInPlay.php';
	//document.write(url);
	refreshXmlHttp.onreadystatechange=refreshCardsInPlay_Complete;
	refreshXmlHttp.open("GET",url,true)
	refreshXmlHttp.send(null);

}


function refreshCardsInPlay_Complete()
{
	if (refreshXmlHttp.readyState==4)
	{
		document.getElementById("cardsInPlay").innerHTML = refreshXmlHttp.responseText;
	}
}




//	Load Cards in Deck -------------------------------------------------------------

function refreshCardsInDeck()
{
	//alert("Refreshing Chat");
	refresh2XmlHttp=GetXmlHttpObject();

	url = 'widgets/cardsInDeck.php?filter=' + libraryFilter;
	//document.write(url);
	refresh2XmlHttp.onreadystatechange=refreshCardsInDeck_Complete;
	refresh2XmlHttp.open("GET",url,true)
	refresh2XmlHttp.send(null);

}


function refreshCardsInDeck_Complete()
{
	if (refresh2XmlHttp.readyState==4)
	{
		d = document.getElementById("mainScreen");
		d.innerHTML = refresh2XmlHttp.responseText;
	}
}



//	Load Weapons -------------------------------------------------------------

function refreshWeapons()
{
	//alert("Refreshing Chat");
	refresh3XmlHttp=GetXmlHttpObject();

	url = 'widgets/displayWeapons.php';
	//document.write(url);
	refresh3XmlHttp.onreadystatechange=refreshWeapons_Complete;
	refresh3XmlHttp.open("GET",url,true)
	refresh3XmlHttp.send(null);

}


function refreshWeapons_Complete()
{
	if (refresh3XmlHttp.readyState==4)
	{
		document.getElementById("divWeapons").innerHTML = refresh3XmlHttp.responseText;
	}
}



//	Load Char -------------------------------------------------------------

function refreshChar()
{
	//alert("Refreshing Chat");
	charXmlHttp=GetXmlHttpObject();

	url = 'widgets/displayChar.php';
	//document.write(url);
	charXmlHttp.onreadystatechange=refreshChar_Complete;
	charXmlHttp.open("GET",url,true)
	charXmlHttp.send(null);

}


function refreshChar_Complete()
{
	if (charXmlHttp.readyState==4)
	{
		document.getElementById("divChar").innerHTML = charXmlHttp.responseText;
	}
}





//	Load Stats -------------------------------------------------------------

function refreshStats()
{
	//alert("Refreshing Chat");
	refresh4XmlHttp=GetXmlHttpObject();

	url = 'widgets/displayStats.php';
	//document.write(url);
	refresh4XmlHttp.onreadystatechange=refreshStats_Complete;
	refresh4XmlHttp.open("GET",url,true)
	refresh4XmlHttp.send(null);

}


function refreshStats_Complete()
{
	if (refresh4XmlHttp.readyState==4)
	{
		document.getElementById("divStats").innerHTML = refresh4XmlHttp.responseText;
	}
}


//	Check for alerts -------------------------------------------------------------

function refreshAlerts()
{
	//alert("Refreshing Chat");
	alertXmlHttp=GetXmlHttpObject();

	url = 'widgets/checkAlerts.php';
	//document.write(url);
	alertXmlHttp.onreadystatechange=refreshAlerts_Complete;
	alertXmlHttp.open("GET",url,true)
	alertXmlHttp.send(null);

}


function refreshAlerts_Complete()
{
	if (alertXmlHttp.readyState==4)
	{
		document.getElementById("gameAlert").innerHTML = alertXmlHttp.responseText;
	}
}

//	Pick Defender --------------------------------------------------------------------

function pickDefender()
{
	//alert("Refreshing Chat");
	battleXmlHttp=GetXmlHttpObject();

	url = 'widgets/rankings.php';
	//document.write(url);
	battleXmlHttp.onreadystatechange=pickDefender_Complete;
	battleXmlHttp.open("GET",url,true)
	battleXmlHttp.send(null);

}


function pickDefender_Complete()
{
	if (battleXmlHttp.readyState==4)
	{
		document.getElementById("mainScreen").innerHTML = battleXmlHttp.responseText;
		document.getElementById("mainScreen").style.visibility = "visible";
	}
}



//	Battle --------------------------------------------------------------------

function closeBattleSummary()
{
	document.getElementById('battleSummary').style.visibility='hidden';
	refreshCardsInDeck();
}


function battle(defenderID)
{
	//alert("Refreshing Chat");
	d = document.getElementById("divChar");
	d.innerHTML = "<h1>Fighting Battle...</h1>";
	
	battleXmlHttp=GetXmlHttpObject();

	url = 'actions/battle.php?defenderID=' + defenderID;
	//document.write(url);
	battleXmlHttp.onreadystatechange=battle_Complete;
	battleXmlHttp.open("GET",url,true)
	battleXmlHttp.send(null);


}

var rememberTournamentID =0;
function battleTournament(defenderID,tID)
{
	rememberTournamentID = tID;
	//alert("Refreshing Chat");
	d = document.getElementById("divChar");
	d.innerHTML = "<h1>Fighting Battle...</h1>";
	
	battleXmlHttp=GetXmlHttpObject();

	url = 'actions/battle.php?tournamentID=' + tID + '&defenderID=' + defenderID;
	//document.write(url);
	battleXmlHttp.onreadystatechange=battle_Complete;
	battleXmlHttp.open("GET",url,true)
	battleXmlHttp.send(null);


}


var currentRound=0;
var autoPlay = "N";
function battle_Complete()
{
	if (battleXmlHttp.readyState==4)
	{
		document.getElementById("divChar").innerHTML = battleXmlHttp.responseText;
		document.getElementById("divChar").style.visibility = "visible";
		d = document.getElementById("divChar");
		if(rememberTournamentID > 0)
		{
			pickTournamentDefender(rememberTournamentID);
			rememberTournamentID = 0;
		}
		else
		{
			pickDefender();
		}
		
	}
}

function gotoRound(round)
{
	currentRound = round-1;
	nextRound();
}

function nextRound()
{
	currentRound++;
	//alert(currentRound);
	t = document.getElementById("round_" + currentRound);
	if(t)
	{
		d.innerHTML = t.innerHTML;
		if(autoPlay == "Y")
		{
			setTimeout("nextRound()",3500);
		}
	}
	else
	{
		t = document.getElementById("tmpBattleSummary");
		if(t)
		{
			d.innerHTML = t.innerHTML;
			d.innerHTML+= "<a href='javascript:gotoRound(0);void(0);'>First Round</a>";
			if(currentRound > 1)
			{
				d.innerHTML+= " | <a href='javascript:gotoRound(currentRound-1);void(0);'>Previous</a>";
			}
		}
	}
}


function closeBattleScreens()
{
		refreshCardsInDeck();
		//document.getElementById("mainScreen").style.visibility = "hidden";
}


function setBattleWaitTime(delay)
{
		/*
		if(delay > 0)
		{
			document.getElementById("gameAlert").innerHTML = "Ready to Battle in " + delay + " seconds";

			delay = delay -1;

			setTimeout("setBattleWaitTime(" + delay + ")",1000);
		}
		else
		{
			document.getElementById("battleLink").href="javascript:pickDefender();void(0);";
			document.getElementById("gameAlert").innerHTML = "Ready to Battle!";

			//innerHTML = "<a href='javascript:pickDefender();void(0);'>Battle</a>";
		}
		*/
}


//	All Cards --------------------------------------------------------------------

function showAllCards()
{
	//alert("Refreshing Chat");
	battleXmlHttp=GetXmlHttpObject();

	//url = 'widgets/allCards.php';
	url = 'widgets/listCards.php';
	//document.write(url);
	battleXmlHttp.onreadystatechange=showAllCards_Complete;
	battleXmlHttp.open("GET",url,true)
	battleXmlHttp.send(null);

}


function showAllCards_Complete()
{
	if (battleXmlHttp.readyState==4)
	{
		document.getElementById("mainScreen").innerHTML = battleXmlHttp.responseText;
	}
}



//	Cards by Type --------------------------------------------------------------------

function showCardsByType(t)
{
	//alert("Refreshing Chat");
	battleXmlHttp=GetXmlHttpObject();

	url = 'widgets/allCardsByType.php?type=' + t;
	//document.write(url);
	battleXmlHttp.onreadystatechange=showAllCardsByType_Complete;
	battleXmlHttp.open("GET",url,true)
	battleXmlHttp.send(null);

}


function showAllCardsByType_Complete()
{
	if (battleXmlHttp.readyState==4)
	{
		document.getElementById("mainScreen").innerHTML = battleXmlHttp.responseText;
	}
}



function showCardMenu(cardID)
{
	//
	//get the card menu and move it to lay over the selected card
	//
	d = document.getElementById("cardMenu");
	c = document.getElementById("card_" + cardID);
	d.style.visibility = "visible";
	pos = findPosOfObject(c);
	d.style.top = pos[1] + 80;
	d.style.left = pos[0] + 75;
}

function hideCardMenu()
{
	document.getElementById("cardMenu").style.visibility = "hidden";

}

var popupTimer = "";

function popupCard(obj, cardDeckID)
{
	d2 = document.getElementById("divPopupCard");
	//d2.style.visibility = "visible";
	pos = findPosOfObject(obj);
	d2.style.top = pos[1] + 20;
	d2.style.left = pos[0] + 100;
	//d2.innerHTML = "Loading...";

	clearTimeout(popupTimer);
	popupTimer = setTimeout("popupCardLater(" + cardDeckID + ")",500);
	
}

function popupCardLater(cardDeckID)
{
	popXmlHttp=GetXmlHttpObject();
	url = 'widgets/displayCard.php?cardDeckID=' + cardDeckID;
	//document.write(url);
	popXmlHttp.onreadystatechange=popupCard_Complete;
	popXmlHttp.open("GET",url,true)
	popXmlHttp.send(null);
}


function popupCard_Complete()
{
	if (popXmlHttp.readyState==4)
	{
		document.getElementById("divPopupCard").style.visibility = "visible";
		document.getElementById("divPopupCard").innerHTML = popXmlHttp.responseText;
		
		popupTimer=setTimeout("hidePopupCard()", 10000);
	}
}

function hidePopupCard()
{
		document.getElementById("divPopupCard").style.visibility = "hidden";
}


function hideCardMenu()
{
	document.getElementById("cardMenu").style.visibility = "hidden";

}




//	Stats Actions --------------------------------------------------------------------

function openStats()
{
	//alert("Refreshing Chat");
	upgradeXmlHttp=GetXmlHttpObject();

	url = 'widgets/unitProfile.php';
	//document.write(url);
	upgradeXmlHttp.onreadystatechange=openUpgrade_Complete;
	upgradeXmlHttp.open("GET",url,true)
	upgradeXmlHttp.send(null);
}





//	Card Actions --------------------------------------------------------------------

function openUpgrade()
{
	if(selectedCardID > 0)
	{
		//alert("Refreshing Chat");
		upgradeXmlHttp=GetXmlHttpObject();

		url = 'widgets/upgradeCards.php?cardDeckID=' + selectedCardID;
		//document.write(url);
		upgradeXmlHttp.onreadystatechange=openUpgrade_Complete;
		upgradeXmlHttp.open("GET",url,true)
		upgradeXmlHttp.send(null);
	}
}


function openBounty()
{
	if(selectedCardID > 0)
	{
		//alert("Refreshing Chat");
		upgradeXmlHttp=GetXmlHttpObject();

		url = 'widgets/openBounty.php?cardDeckID=' + selectedCardID;
		//document.write(url);
		upgradeXmlHttp.onreadystatechange=openUpgrade_Complete;
		upgradeXmlHttp.open("GET",url,true)
		upgradeXmlHttp.send(null);
	}
}



function placeBounty(userID)
{
	if(selectedCardID > 0)
	{
		//alert("Refreshing Chat");
		upgradeXmlHttp=GetXmlHttpObject();

		url = 'widgets/openBounty.php?action=place&enemyID=' + userID + '&cardDeckID=' + selectedCardID;
		//document.write(url);
		upgradeXmlHttp.onreadystatechange=openUpgrade_Complete;
		upgradeXmlHttp.open("GET",url,true)
		upgradeXmlHttp.send(null);
	}
}


function viewBounty(userID)
{
	//alert("Refreshing Chat");
	upgradeXmlHttp=GetXmlHttpObject();

	url = 'widgets/viewBounty.php?enemyID=' + userID + ' ';
	//document.write(url);
	upgradeXmlHttp.onreadystatechange=viewBounty_Complete;
	upgradeXmlHttp.open("GET",url,true)
	upgradeXmlHttp.send(null);

}

function viewBounty_Complete()
{
	if (upgradeXmlHttp.readyState==4)
	{
		document.getElementById("battleSummary").innerHTML = upgradeXmlHttp.responseText;
		d = document.getElementById("battleSummary");
		d.style.visibility = "visible";
		left = (screen.availWidth/2) - 325;
		d.style.position = "absolute";
		d.style.top = "50px";
		d.style.left = left + "px";
		d.style.zIndex = 1000;
	}
}

function doUpgrade()
{
	if(selectedCardID > 0)
	{
		//alert("Refreshing Chat");
		upgradeXmlHttp=GetXmlHttpObject();

		url = 'widgets/upgradeCards.php?action=trade&cardDeckID=' + selectedCardID;
		//document.write(url);
		upgradeXmlHttp.onreadystatechange=openUpgrade_Complete;
		upgradeXmlHttp.open("GET",url,true)
		upgradeXmlHttp.send(null);
	}
}


function openUpgrade_Complete()
{
	if (upgradeXmlHttp.readyState==4)
	{
		document.getElementById("divChar").innerHTML = upgradeXmlHttp.responseText;
		d = document.getElementById("divChar");
		refreshCardsInDeck();
	}
}

function closeUpgrades()
{
	document.getElementById("battleSummary").style.visibility = "hidden";
	window.location.href="play.php";
}


function joinTournaments(tID)
{
	//alert("Refreshing Chat");
	mainXmlHttp=GetXmlHttpObject();

	url = 'widgets/joinTournaments.php?action=join&tournamentID=' + tID;
	//document.write(url);
	mainXmlHttp.onreadystatechange=loadMain_Complete;
	mainXmlHttp.open("GET",url,true)
	mainXmlHttp.send(null);
	
}

function openTournaments()
{
	//alert("Refreshing Chat");
	mainXmlHttp=GetXmlHttpObject();

	url = 'widgets/joinTournaments.php';
	//document.write(url);
	mainXmlHttp.onreadystatechange=loadMain_Complete;
	mainXmlHttp.open("GET",url,true)
	mainXmlHttp.send(null);
	
}

function pickTournamentDefender(tID)
{
	//alert("Refreshing Chat");
	battleXmlHttp=GetXmlHttpObject();

	url = 'widgets/rankings.php?tournamentID='+tID;
	//document.write(url);
	battleXmlHttp.onreadystatechange=pickDefender_Complete;
	battleXmlHttp.open("GET",url,true)
	battleXmlHttp.send(null);

}






function loadMain_Complete()
{
	if (mainXmlHttp.readyState==4)
	{
		document.getElementById("divChar").innerHTML = mainXmlHttp.responseText;
	}
}
/************************************************
AJAX Handlers
************************************************/
var xmlHttpDivID = ""
var xmlHttp = ""

function GetXmlHttpObject(handler)
{
    var objXMLHttp=null
    if (window.XMLHttpRequest)
    {
        objXMLHttp=new XMLHttpRequest()
    }
    else if (window.ActiveXObject)
    {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
    return objXMLHttp;
}


function findPosOfObject(obj)
{
	var curleft = curtop = 0;
	if (obj.offsetParent)
	{
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent)
		{
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}

	return [curleft,curtop];
}


