var win;
var currentCountry = 'USA';
var currentState = 'FM';
var currentPrefecture = '';
var currentClick = '';
var currentSClick = '';
var currentClickType = '';
var currentInfo = '';
var founderUserId = '';
var founderEntityType = '';
var targetUserId = "";

var alreadyBritz = 0;
var allowAttack = 1;
var defensePact = 0;
var val = ""; 

var defenderLightTroops = 0;
var defenderMedTroops = 0;
var defenderHeavyTroops = 0;

var attackerCommunity = 0;  // for Protest/Riot
var defenderCommunity = 0;

var attackerKnowledge = 0;  // for Net/Info
var defenderKnowledge = 0;

var asMapBoxWidth = 750;  // full width of box in Action Station
var asMapBoxHeight = 454; // full height of box in Action Station

var statsBoxWidth = 115;  // full width and heigh of user and target stats charts
var statsBoxHeight = 107;

var offEntities = "";
var offLight = "";
var offMed = "";
var offHeavy = "";
var offDistrict = "";

var userChart1 = "";
var userChart2 = "";
var userChart3 = "";
var userChart4 = "";

var empty = "<chart></chart>";
var emptyChartsStr = empty + "$" + empty + "$" + empty + "$" + empty;

var targetChart1 = empty;
var targetChart2 = empty;
var targetChart3 = empty;
var targetChart4 = empty;

var userid;
var mapfile;

// used for keeping track of the locations the user has clicked on in the map
var targetArr = new Array();
var targetCharts = new Array(); // array with the chart code the user has viewed delimited by $
var curTargetIndex = -1;
var isHomeCounty = 0;

function showMap(val,width,height,p,userid,Mapfile)
{
	currentClick = '';
	targetUserId = "";
	setSelectedSubtab(val);
	if(currentState == '')
		currentState = 'NY';
	if(document.getElementById("fcId1") != null) 
		document.getElementById("fcId1").innerHTML = "";
	if(val == "Prefecture")
		document.getElementById("mapdiv").innerHTML = "";
	else
	   	document.getElementById("mapdiv").innerHTML = "<img src='http://usofearth.com/templates/yget/images/loader.gif' />";

	if(document.getElementById("prefecturehistory") != null)
    	document.getElementById("prefecturehistory").style.visibility = "hidden";

	if(document.getElementById("mapdiv1") != null)document.getElementById("mapdiv1").innerHTML = "";
	if(document.getElementById("mapdiv2") != null)document.getElementById("mapdiv2").innerHTML = "";
	if(document.getElementById("mapdiv3") != null)document.getElementById("mapdiv3").innerHTML = "";
	if(val == 'World')
	{
		if(document.getElementById("mapNameDiv") != null)
			document.getElementById("mapNameDiv").innerHTML = "&nbsp;The World";
		var map = new FusionMaps("flash/World.swf", "Map1Id1", width, height, "0", "0");
		map.setDataURL("data/World.xml"); 
		map.render("mapdiv");
	}
	if(val == 'Country')
	{
		if(document.getElementById("mapNameDiv") != null)
			document.getElementById("mapNameDiv").innerHTML = "&nbsp;The United States Of America";
		var map = new FusionMaps("flash/USA.swf", "Map1Id1", width, height, "0", "0");
		if(width == '510' || currentPage == 'published')
			map.setDataURL("data/USA_1.xml");
		else
			map.setDataURL("data/USA.xml"); 
		map.render("mapdiv");
	}
	if(val == 'State')
	{
		getStateXML(currentState,width,height,"mapdiv");
	}
	if(val == 'Prefecture')
	{
		if(document.getElementById("mapNameDiv") != null)
			document.getElementById("mapNameDiv").innerHTML = "&nbsp;The " + PrefectureName + " Prefecture Of " + LongName;
			
		if(document.getElementById("prefecturehistory") != null)
			document.getElementById("prefecturehistory").style.visibility = "visible";

		getCountyXML(p1,currentState,width/3, height,"mapdiv1","javascript:showPrefecture(1)");
		getCountyXML(p2,currentState,width/3,height,"mapdiv2","javascript:showPrefecture(2)");
		getCountyXML(p3,currentState,width/3,height,"mapdiv3","javascript:showPrefecture(3)");
		
	}
	if(val == 'County')
	{
		if(p == 1)
		{
			getCountyXML(p1,currentState,width,height,"mapdiv","");
			//getList(p1,1);
		}
		else if(p == 2)
		{
			getCountyXML(p2,currentState,width,height,"mapdiv","");
			//getList(p2,1);
		}
		else if(p == 3)
		{
			getCountyXML(p3,currentState,width,height,"mapdiv","");
			//getList(p3,1);
		}
		else
		{
			if(Mapfile == '')
				Mapfile = p1;
			getCountyXML(Mapfile,currentState,width,height,"mapdiv","");	
			//getList(Mapfile,1);
			mapfile = Mapfile;
		}
	}	
}	


function hideDiv()
{
	document.getElementById('founder').innerHTML='';	
}

function myUSA(val)
{
	currentSelectedState = val;
	if(currentPage == 'user')
	{
		width = "510";
		height = "300";
		getStateXML(val,510,300,"mapdiv");
	}
	else if(currentPage == 'published')
	{
		width = "465";
		height = "248";
		getStateXML(val,width,height,"mapdiv");
	}
	else
	{
	    getStateXML(val,asMapBoxWidth,asMapBoxHeight,"mapdiv");
	}
	setSelectedSubtab("State");
}

function showPrefecture(val)
{
    setSelectedSubtab("County");
	if(document.getElementById("mapdiv1") != null)document.getElementById("mapdiv1").innerHTML = "";
	if(document.getElementById("mapdiv2") != null)document.getElementById("mapdiv2").innerHTML = "";
	if(document.getElementById("mapdiv3") != null)document.getElementById("mapdiv3").innerHTML = "";
	if(val == 1)
		val1 = p1;
	else if(val == 2)
		val1 = p2;
	else
		val1 = p3;
	
	if(currentPage == 'user')
	{
		width = "510";
		height = "300";
		getCountyXML(val1,currentState,width,height,"mapdiv","");
		//getList(val1,1);
	}
	else if(currentPage == 'published')
	{
		width = "465";
		height = "248";
		getCountyXML(val1,currentState,width,height,"mapdiv","");
		//getList(val1,1);
	}
	else
	{
		mapfile = val1;
		showMapCounty();
		getCountyXML(val1,currentState,asMapBoxWidth,asMapBoxHeight,"mapdiv","");
		//getList(val1,1);
	}
}

function myWorldJS(val)
{
	if(currentPage == 'user')
	{
		width = "510";
		height = "300";
	}
	else if(currentPage == 'published')
	{
		width = "465";
		height = "248";
	}
	else
	{
		width = asMapBoxWidth;
		height = asMapBoxHeight;		
	}
	var map = new FusionMaps("flash/"+ val +".swf", "Map1Id1", width, height, "0", "0");
	map.setDataURL("data/World.xml"); 
	map.render("mapdiv");
	setSelectedSubtab("Region");
}

function myState(val)
{
	//alert(currentSelectedState);
	if(val<10)
		val = '00' + val;
	if(val>9 && val<100)
		val = '0' + val;
	currentPrefecture = val;
	if(currentPage == 'user')
	{
		width = "510";
		height = "300";
	}
	else
	{
		width = asMapBoxWidth;
		height = asMapBoxHeight;		
	}
	getCountyXML(val,currentSelectedState,width,height,"mapdiv","");
	//getList(val,1);
	setSelectedSubtab("County");
}

function myState1(val)
{
	alert("You are not authorized to view this map.");
}

function myCountyHomeLink(val)
{
	isHomeCounty = 1;
	myCounty(val);
}

function myCounty(val, val1)
{
	defensePact = 0;
	alreadyBritz = 0;
	if(currentPage == 'user')
	{
		return;	
	}
	currentClick = val;
	founderUserId = '';
	founderEntityType = '';
	targetUserId = "";
	
	if (targetArr.length > 0) 
	{
		if (targetArr[curTargetIndex] != val) 
		{ // coming from map
			if (curTargetIndex < targetArr.length - 1) 
			{
				targetArr.splice(curTargetIndex + 1, targetArr.length - (curTargetIndex + 1));  // remove the forward elements
				targetCharts.splice(curTargetIndex + 1, targetCharts.length - (curTargetIndex + 1));
			}
			saveChartInfo();
			curTargetIndex = targetArr.push(val) - 1;
			targetCharts.push(emptyChartsStr);
		} 
		else 
		{
			return; // do nothing - clicking on same district as already selected
		}
	} 
	else 
	{
		curTargetIndex = targetArr.push(val) - 1; // add to array and update pointer
		targetCharts.push(emptyChartsStr);
	}	
	targetChart1 = targetChart2 = targetChart3 = targetChart4 = empty;
	updateTargetBackNext();
	getInfo();
	currentClickType = val1;
	getChart(0);
}

function myCountyProtect(val)
{
	/*
	var left = (screen.width/2)-(250/2);
	var top = (screen.height/2)-(200/2);
	var wparams = 'toolbar=no, location=no, directories=no, status=no, menubar=no,';
			wparams += ' scrollbars=no, resizable=no, copyhistory=no, width=300, height=300, top='+top+', left='+left;
	 
	window.open('popup.html', 'window_name', wparams);*/
	
	alert("This Player is on Leave, and is protected by the General Staff of the U.S.E. until leave is over.");
}

function myCountyNoAttack(val)
{
	allowAttack = 0;
	myCounty(val, 1);
}

function myCountyNoAttackBritz(val)
{
	alreadyBritz = 1;
	myCounty(val, 1);
}

function myCountyDefense(val)
{
	myCounty(val, 1);
	defensePact = 1;
}

function targetBack() {
  saveChartInfo();
  curTargetIndex--;
  loadInfo();
}

function targetNext() {
  saveChartInfo();
  curTargetIndex++;
  loadInfo();
}

function loadInfo() {
  currentClick = targetArr[curTargetIndex];
  var tcharts = targetCharts[curTargetIndex].split("$");
  targetChart1 = tcharts[0];
  targetChart2 = tcharts[1];
  targetChart3 = tcharts[2];
  targetChart4 = tcharts[3];
  
  updateTargetBackNext();
  getInfo();
  viewTargetCharts(targetChart1, targetChart2, targetChart3, targetChart4);
}

function saveChartInfo() {
  targetCharts[curTargetIndex] = targetChart1 + "$" + targetChart2 + "$" + targetChart3 + "$" + targetChart4;
}

function updateTargetBackNext() {
  var backSpan = '<span>&lt;&lt; Back</span>';
  var nextSpan = '<span>Next &gt;&gt;</span>'
  
  if (targetArr.length <= 1) {
    document.getElementById("backTarget").innerHTML = backSpan;
    document.getElementById("nextTarget").innerHTML = nextSpan;
    return;
  }
  
  // if we're at the beginning
  if (curTargetIndex == 0) {
    document.getElementById("backTarget").innerHTML = backSpan;
    document.getElementById("nextTarget").innerHTML = '<a href="javascript:targetNext();">Next &gt;&gt;</a>';
  } else if (curTargetIndex == targetArr.length - 1) {  // if we're at the end
    document.getElementById("backTarget").innerHTML = '<a href="javascript:targetBack();">&lt;&lt; Back</a>';
    document.getElementById("nextTarget").innerHTML = nextSpan;
  } else {  // in the middle somewhere
    document.getElementById("backTarget").innerHTML = '<a href="javascript:targetBack();">&lt;&lt; Back</a>';
    document.getElementById("nextTarget").innerHTML = '<a href="javascript:targetNext();">Next &gt;&gt;</a>';
  }

}

function getTargetInfoById(userId) {
  currentClick = "";
  founderUserId = "";
  founderEntityType = ""
  
  targetUserId = userId;
  getInfo();
  getChart(0);
}


function showMapCounty(showCountyMap) {
  setRightSideSelected("Map");
  
  if(currentPage == 'game')
  {
	  //topLeft(true);
	  document.getElementById("topRightBox").innerHTML = '<div class="headerBar" id="subtabs"><a id="subtabCounty" class="selected" href="javascript:getSCountyXML('+ gameid +')">'+ mapname + '</a><span id="timerDisplay"></span></div> <div id="mapdiv"></div>';
	  if (showCountyMap != false) {
		getSCountyXML(gameid);
	  }
  }
  else
  {
	  topLeft(true);
	  
	  if (showCountyMap != false) {
		showMap('County',asMapBoxWidth,asMapBoxHeight,0,userid,mapfile);
	  }
  }
}

function topLeft(showState)
{
	var topRightBox = '<div class="headerBar">';
	  topRightBox += '<a id="subtabCounty" href="javascript:showMap(\'County\',asMapBoxWidth,asMapBoxHeight,0,userid,mapfile);" class="selected">County</a>';
	  topRightBox += '<a id="subtabPrefecture" href="javascript:showMap(\'Prefecture\',asMapBoxWidth,asMapBoxHeight,0,userid);">Prefecture</a>';
	  if(document.getElementById("avaiblePrefecture") != null)
	  {
		  if(document.getElementById("avaiblePrefecture")[document.getElementById("avaiblePrefecture").selectedIndex].text.indexOf("Prefecture") == -1)
		  {
			 topRightBox += '<a id="subtabState" href="javascript:showMap(\'State\',asMapBoxWidth,asMapBoxHeight,0,userid);">State</a>';
		  }
	  }
	  topRightBox += '<a id="subtabCountry" href="javascript:showMap(\'Country\',asMapBoxWidth,asMapBoxHeight,0,userid);">Country</a>';
	  topRightBox += '<a id="subtabWorld" href="javascript:showMap(\'World\',asMapBoxWidth,asMapBoxHeight,0,userid);">World</a>';
	  topRightBox += '</div>';
	  topRightBox += '<div id="mapdiv"></div><div id="mapdiv1"></div><div id="mapdiv2"></div><div id="mapdiv3"></div>';
	  document.getElementById("topRightBox").innerHTML = topRightBox;	
}
/***** ATTACKS *****/

function troopsSelected() {
  var l = offLight.split(",");
  var m = offMed.split(",");
  var h = offHeavy.split(",");
  var d = offDistrict.split(",");
  var mi = offMilitia.split(",");
  if (sumGreaterThanZero(l) || sumGreaterThanZero(m) || sumGreaterThanZero(h) || sumGreaterThanZero(d) || sumGreaterThanZero(mi)) {
    return true; // this is good, some troops are selected
  } else {
    alert("You have not selected any troops for your attack.");
    return false;
  }
}

function sumGreaterThanZero(arr) {
  var result = false;
  for (i = 0; i < arr.length; i++) {
    if (arr[i] > 0) {
      result = true;
      break;
    }
  }
  
  return result;
}

function canAttack() 
{
	if(userid == 0)
	{
		window.location.href = "login.php";	
	}
	if(alreadyBritz == 1){
		alert("This District is already being invaded no other armies may enter until completed.");
		return false;
	}
	else if (allowAttack == 0) {
		alert("You are not authorized to view this information during your leave");
		return false;
	} else if (defensePact == 1) {
		alert("This district is under your Defense Pact. You are not authorized to attack this district.");
		return false;  
	} else if (currentClick == "" && currentSClick == "") {
		alert("You must select a territory to attack.");
		return false;
	}
	return true;
}

function forwardAttack(val) {

  if (!canAttack() || !troopsSelected()) { return; }
  
  showCombatLog("attack", val);
  
  setTimeout("getNewAttackResult(" + val + ")", 10000);
}

function popupAttack(val) {
  if (val == "eradication" && rank < 5)
  {
	 alert("You must be an E5 or above to initiate this attack"); 
	 return;
  }
  if (!canAttack() || !troopsSelected()) { return; }  
  showCombatLog("attack");
  if (val == "blitz") {
	if(currentPage == 'game')
		setTimeout("setBlitz()", 10000);
	else
		setTimeout("showBlitzNegotiation()", 10000);
  } else if (val == "conquest") {
    setTimeout("showConquestNegotiation()", 10000);
  } else if (val == "eradication") {
    setTimeout("showEradicationNegotiation()", 10000);
  } else if (val == "prefect-conflict") {
    setTimeout("showPrefectConflictNegotiation()", 10000);
  }
}

function challenge() {

  if (currentClick == "") {
    alert("You must select a territory.");
    return;
  }
  
  showCombatLog("challenge");
}

function protestRiot() {
  if (!canAttack()) { return; }
  
  if (val.substr(0,1) != "P") {
    if (!confirm("Protest/Riot attack will cost you 2 points.  There is no cost if you are a made player.")) {
      return;
    }
  } else {  // individual
    /*
	var pointsCost = 5;   // default
    var madeCost = 2;
    
    if (rank <= 3) {
      pointsCost = 2;
      madeCost = 1;
    }
      
    if (!confirm("Protest/Riot attack will cost you " + pointsCost + " points or " + madeCost + " if you are a made player.")) {
      return;
    }
	*/
  }
 
  showCombatLog("protest-riot");
  
  setTimeout("setProtestRiot()", 10000);
}

function netInfo() {

  if (!canAttack()) { return; }
  
  var playerType = val.substr(0,1);
  
  if (playerType != "P" && playerType != "H") {
    alert("Only players and Hacker organizations can make Net/Info Attacks");
    return;
  }
  
  showCombatLog("net-info");
  
  setTimeout("setNetInfo()", 10000); //- change after the animation is ready to use
}

function attack(val)
{
	if(userid == 0)
	{
		window.location.href = "login.php";	
		return;
	}
	var negData = '';
	
	if (currentClick == "" && targetUserId == "" && currentSClick == "") 
	{
		alert("You must select a territory or user to Probe/Spy");
		return;
	}
	
	if(val == 'probe')
	{
		if (points < 2) {
		  alert("You do not have enough points to Probe.");
		  return;
		}
		
		if(confirm("Probe will cost you 2 points. Continue?"))
		{
			getChart(2);
		}
   }
   else if(val == 'spy')
   {
		var cost = 10;
		
		if (rank == 1 || rank == 2) {
			cost = 20;
		} 
		if(ism == 1)
		{
			cost = 2;  
		}
		if (points < cost) {
		  alert("You do not have enough points to Spy.");
		  return;
		}
			
		if(confirm("Spying will cost you " + cost + " points. Continue?"))
		{
		  getChart(100);
		}
	}
}

function challengeOpp() {
  var chForm = document.challenge_form;
  var time1 = getFullTime(chForm.day1, chForm.hour1, chForm.min1);
  var time2 = getFullTime(chForm.day2, chForm.hour2, chForm.min2);
  var time3 = getFullTime(chForm.day3, chForm.hour3, chForm.min3);
  
  setChallenge(0, chForm.challenge.value, time1, time2, time3, chForm.defenderId.value);   
}

function getFullTime(day, hour, min) {
  if (hour.disabled == true) {
    return null;
  } else {
    return day.value + " " + hour.value + ":" + min.value;
  }
}

function setAllForces() {
  var off = document.offensive;
  var districtId;

	for (i = 0; i < off.elements.length; i++) {

    if (off.elements[i].name.indexOf("lightTroops") != -1) {    
	
      districtId = off.elements[i].name.substring(off.elements[i].name.indexOf("[") + 1, off.elements[i].name.indexOf("]"));
	  document.getElementById("check[" + districtId + "]").checked = true;
      document.getElementById("lightTroops[" + districtId + "]").value = document.getElementById("lightAvail[" + districtId + "]").innerHTML;
      document.getElementById("medTroops[" + districtId + "]").value = document.getElementById("medAvail[" + districtId + "]").innerHTML;
      document.getElementById("heavyTroops[" + districtId + "]").value = document.getElementById("heavyAvail[" + districtId + "]").innerHTML;
      
      highlightBox(document.getElementById("lightTroops[" + districtId + "]"));
      highlightBox(document.getElementById("medTroops[" + districtId + "]"));
      highlightBox(document.getElementById("heavyTroops[" + districtId + "]"));
      
      if (document.getElementById("DTroops[" + districtId + "]")) {
        document.getElementById("DTroops[" + districtId + "]").value = document.getElementById("districtAvail[" + districtId + "]").innerHTML;
        highlightBox(document.getElementById("DTroops[" + districtId + "]"));
      }
	  
	   if (document.getElementById("militiaTroops[" + districtId + "]") != null) {
		document.getElementById("militiaTroops[" + districtId + "]").value = document.getElementById("militiaAvail[" + districtId + "]").innerHTML;
		highlightBox(document.getElementById("militiaTroops[" + districtId + "]"));
	  }
    }
  }
  
  troopsCount(off.id);
}

function selectTroops(id) {
	var districtId;
	var off = document.offensive;
	for (i = 0; i < off.elements.length; i++) {
    if (off.elements[i].name.substr(0,11) == "lightTroops") {      
      districtId = off.elements[i].name.substring(off.elements[i].name.indexOf("[") + 1, off.elements[i].name.indexOf("]"));
	  if(districtId == id)
	  {
		  if(document.getElementById("check[" + id + "]").checked == true)
		  {
			  document.getElementById("lightTroops[" + districtId + "]").value = document.getElementById("lightAvail[" + districtId + "]").innerHTML;
			  document.getElementById("medTroops[" + districtId + "]").value = document.getElementById("medAvail[" + districtId + "]").innerHTML;
			  document.getElementById("heavyTroops[" + districtId + "]").value = document.getElementById("heavyAvail[" + districtId + "]").innerHTML;
			  
			  
			  highlightBox(document.getElementById("lightTroops[" + districtId + "]"));
			  highlightBox(document.getElementById("medTroops[" + districtId + "]"));
			  highlightBox(document.getElementById("heavyTroops[" + districtId + "]"));
			  
			  if (document.getElementById("DTroops[" + districtId + "]")) {
				document.getElementById("DTroops[" + districtId + "]").value = document.getElementById("districtAvail[" + districtId + "]").innerHTML;
				highlightBox(document.getElementById("DTroops[" + districtId + "]"));
			  }
			  
			  if (document.getElementById("militiaTroops[" + districtId + "]") != null) {
				document.getElementById("militiaTroops[" + districtId + "]").value = document.getElementById("militiaAvail[" + districtId + "]").innerHTML;
				highlightBox(document.getElementById("militiaTroops[" + districtId + "]"));
			  }
		  }
		  else
		  {
			  document.getElementById("lightTroops[" + districtId + "]").value = 0;
			  document.getElementById("medTroops[" + districtId + "]").value = 0;
			  document.getElementById("heavyTroops[" + districtId + "]").value = 0;
			  
			  checkBoxBlur(document.getElementById("lightTroops[" + districtId + "]"));
			  checkBoxBlur(document.getElementById("medTroops[" + districtId + "]"));
			  checkBoxBlur(document.getElementById("heavyTroops[" + districtId + "]"));
			  
			   if (document.getElementById("DTroops[" + districtId + "]")) {
				document.getElementById("DTroops[" + districtId + "]").value = 0;
				checkBoxBlur(document.getElementById("DTroops[" + districtId + "]"));
			  }
			  if (document.getElementById("militiaTroops[" + districtId + "]") != null) {
				document.getElementById("militiaTroops[" + districtId + "]").value = 0;
				checkBoxBlur(document.getElementById("militiaTroops[" + districtId + "]"));
			  }
		  }
	  }	
	}
  }
  troopsCount(off.id);
}

function setOffensive(val) {
  if(isHomeCounty && val=='blitz')
  {
	alert("Home Districts are protected by General Staff of the U.S.E. as long as Trooper logs in once per week protection will prevent any Blitzkriegs on this district.");
	clearTargetInfo();
	showMapCounty();  
	return;
  }
  var str = "";
  var off = document.offensive;
  var entityStr = new Array();
  var lightStr = new Array();
  var medStr = new Array();
  var heavyStr = new Array();
  var districtStr = new Array();
  var militiaStr = new Array();
  var districtId;
    
  for (i = 0; i < off.elements.length; i++) {

    if (off.elements[i].name.substr(0,11) == "lightTroops") {
      if (isNaN(off.elements[i].value) || off.elements[i].value < 0) {
        alert("You can only assemble troops with numbers of at least 0.");
        return;
      }
      
      districtId = off.elements[i].name.substring(off.elements[i].name.indexOf("[") + 1, off.elements[i].name.indexOf("]"));
      if (off.elements[i].value > parseInt(document.getElementById("lightAvail[" + districtId + "]").innerHTML)) {
        alert("You have assembled too many light troops in District " + document.getElementById("district[" + districtId + "]").innerHTML);
        return;
      }
      
      entityStr.push(districtId);
      lightStr.push(off.elements[i].value);
    }
    
    if (off.elements[i].name.substr(0,9) == "medTroops") {
      if (isNaN(off.elements[i].value) || off.elements[i].value < 0) {
        alert("You can only assemble troops with numbers of at least 0.");
        return;
      }
      
      if (off.elements[i].value > parseInt(document.getElementById("medAvail[" + districtId + "]").innerHTML)) {
        alert("You have assembled too many medium troops in District " + document.getElementById("district[" + districtId + "]").innerHTML);
        return;
      }
      
      medStr.push(off.elements[i].value);
    }
    
    if (off.elements[i].name.substr(0,11) == "heavyTroops") {
      if (isNaN(off.elements[i].value) || off.elements[i].value < 0) {
        alert("You can only assemble troops with numbers of at least 0.");
        return;
      }
      
      if (off.elements[i].value > parseInt(document.getElementById("heavyAvail[" + districtId + "]").innerHTML)) {
        alert("You have assembled too many heavy troops in District " + document.getElementById("district[" + districtId + "]").innerHTML);
        return;
      }
      heavyStr.push(off.elements[i].value);
    }
    
    if(off.elements[i].name.substr(0,7) == 'DTroops') {
      if (isNaN(off.elements[i].value) || off.elements[i].value < 0) {
        alert("You can only assemble troops with numbers of at least 0.");
        return;
      }
      
      if (off.elements[i].value > parseInt(document.getElementById("districtAvail[" + districtId + "]").innerHTML)) {
        alert("You have assembled too many district troops in District " + document.getElementById("district[" + districtId + "]").innerHTML);
        return;
      }
      districtStr.push(off.elements[i].value);
    }
	
	 if (off.elements[i].name.indexOf("militiaTroops") != -1) {
      if (isNaN(off.elements[i].value) || off.elements[i].value < 0) {
        alert("You can only assemble troops with numbers of at least 0.");
        return;
      }
      
      if (off.elements[i].value > parseInt(document.getElementById("militiaAvail[" + districtId + "]").innerHTML)) {
        alert("You have assembled too many heavy troops in Militia " + document.getElementById("district[" + districtId + "]").innerHTML);
        return;
      }
      militiaStr.push(off.elements[i].value);
    }
	
  }
  
  offEntities = entityStr.toString();
  offLight = lightStr.toString();
  offMed = medStr.toString();
  offHeavy = heavyStr.toString();
  offDistrict = districtStr.toString();
  offMilitia = militiaStr.toString();
  
  if (currentClick == "" && currentSClick == "") {
    alert("You have not selected any target for attack.");
    showMapCounty();
  } else {
    if(val == 12 || val == 11 || val == 10)
		forwardAttack(val);
	else if(val == 'blitz')
		popupAttack(val);
	else if(val == 'protestRiot')
		protestRiot();
	else
		netInfo();
  }
}

function loadAssembledTroops() {
  if (offEntities == "") {
    return;
  }
  
  var off = document.offensive;
  var e = offEntities.split(",");
  var l = offLight.split(",");
  var m = offMed.split(",");
  var h = offHeavy.split(",");
  var d;
  
  if (offDistrict != "") {
    d = offDistrict.split(",");
  }
  
  var index = -1;
  var districtId;
  for (i = 0; i < off.elements.length; i++) {

    if (off.elements[i].name.substr(0,11) == "lightTroops") {
      index++;
      districtId = e[index];
      document.getElementById("lightTroops[" + districtId + "]").value = l[index];
      document.getElementById("medTroops[" + districtId + "]").value = m[index];
      document.getElementById("heavyTroops[" + districtId + "]").value = h[index];
      
      highlightBox(document.getElementById("lightTroops[" + districtId + "]"));
      highlightBox(document.getElementById("medTroops[" + districtId + "]"));
      highlightBox(document.getElementById("heavyTroops[" + districtId + "]"));
      
      if (document.getElementById("DTroops[" + districtId + "]")) {
        document.getElementById("DTroops[" + districtId + "]").value = d[index];
        highlightBox(document.getElementById("DTroops[" + districtId + "]"));
      }
    }
  }
  
  troopsCount(off.id);
}

function setDefensive() 
{
	var entityStr = new Array();
	var defensiveType = new Array();
	var fortification = new Array();
	var defForm = document.defensive;
	var districtId;
	for (i = 0; i < defForm.elements.length; i++) 
	{
		if (defForm.elements[i].name.substr(0,11) == "defenceType") 
		{
			districtId = defForm.elements[i].name.substring(defForm.elements[i].name.indexOf("[") + 1, defForm.elements[i].name.indexOf("]"));
			entityStr.push(districtId);
			defensiveType.push(defForm.elements[i].value);
			if (document.getElementById("mapfortification[" + districtId + "]") != null) 
			{
				fortification.push(document.getElementById("mapfortification[" + districtId + "]").value);
			} 
			else 
			{
				fortification.push(0);
			}
		}
	}
	setAssembleDefensive(entityStr.toString(), defensiveType.toString(), fortification.toString());
}

function setMoveTroops() {
  var str = "";
  var off = document.movetroops;
  var entityStr = new Array();
  var lightStr = new Array();
  var medStr = new Array();
  var heavyStr = new Array();
  var districtStr = new Array();
  var toStr = new Array();
  
  var districtId;
    
  for (i = 0; i < off.elements.length; i++) {

    if (off.elements[i].name.substr(0,11) == "lightTroops") {
      if (isNaN(off.elements[i].value) || off.elements[i].value < 0) {
        alert("You can only assemble troops with numbers of at least 0.");
        return false;
      }
      
      districtId = off.elements[i].name.substring(off.elements[i].name.indexOf("[") + 1, off.elements[i].name.indexOf("]"));
      if (off.elements[i].value > parseInt(document.getElementById("lightAvail[" + districtId + "]").innerHTML)) {
        alert("You have assembled too many light troops in District " + document.getElementById("district[" + districtId + "]").innerHTML);
        return false;
      }
      
      entityStr.push(districtId);
      lightStr.push(off.elements[i].value);
      continue;
    }
    
    if (off.elements[i].name.substr(0,9) == "medTroops") {
      if (isNaN(off.elements[i].value) || off.elements[i].value < 0) {
        alert("You can only assemble troops with numbers of at least 0.");
        return false;
      }
      
      if (off.elements[i].value > parseInt(document.getElementById("medAvail[" + districtId + "]").innerHTML)) {
        alert("You have assembled too many medium troops in District " + document.getElementById("district[" + districtId + "]").innerHTML);
        return false;
      }
      
      medStr.push(off.elements[i].value);
      continue;
    }
    
    if (off.elements[i].name.substr(0,11) == "heavyTroops") {
      if (isNaN(off.elements[i].value) || off.elements[i].value < 0) {
        alert("You can only assemble troops with numbers of at least 0.");
        return false;
      }
      
      if (off.elements[i].value > parseInt(document.getElementById("heavyAvail[" + districtId + "]").innerHTML)) {
        alert("You have assembled too many heavy troops in District " + document.getElementById("district[" + districtId + "]").innerHTML);
        return false;
      }
      heavyStr.push(off.elements[i].value);
      continue;
    }
    
    if(off.elements[i].name.substr(0,7) == 'DTroops') {
      if (isNaN(off.elements[i].value) || off.elements[i].value < 0) {
        alert("You can only assemble troops with numbers of at least 0.");
        return false;
      }
      
      if (off.elements[i].value > parseInt(document.getElementById("districtAvail[" + districtId + "]").innerHTML)) {
        alert("You have assembled too many district troops in District " + document.getElementById("district[" + districtId + "]").innerHTML);
        return false;
      }
      districtStr.push(off.elements[i].value);
    }
    
    if (off.elements[i].name.substr(0,2) == "to") {
      toStr.push(off.elements[i].value);
      continue;
    }
  }
  setAssembleMoveTroops(entityStr.toString(), lightStr.toString(), medStr.toString(), 
    heavyStr.toString(), districtStr.toString(), toStr.toString());

}

function setRecruits() 
{
	document.getElementById("submitbtn").disabled=true;
	var str = "";
	var off = document.recruits;
	var entityStr = new Array();
	var lightStr = new Array();
	var medStr = new Array();
	var heavyStr = new Array();
  
	var districtId;

	for (i = 0; i < off.elements.length; i++) 
	{
		if (off.elements[i].name.substr(0,11) == "lightTroops") {
		
		districtId = off.elements[i].name.substring(off.elements[i].name.indexOf("[") + 1, off.elements[i].name.indexOf("]"));
		var numLight = document.getElementById("lightTroops[" + districtId + "]").value;
		var numMed = document.getElementById("medTroops[" + districtId + "]").value;
		var numHeavy = document.getElementById("heavyTroops[" + districtId + "]").value;
		
		if (isNaN(numLight) || parseInt(numLight) < 0 || isNaN(numMed) || parseInt(numMed) < 0	|| isNaN(numHeavy) || parseInt(numHeavy) < 0) 
		{
			alert("You can only assemble troops with numbers of at least 0.");
			return false;
		}
	  
	  	if(document.getElementById("recruitsAvailable") != null)
		{
			if ((parseInt(numLight) + parseInt(numMed) + parseInt(numHeavy)) > parseInt(document.getElementById("recruitsAvailable").innerHTML)) 
			{
				alert("You do not have enough recruits");
				return false;
			}	
		}
		else
		{
			if ((parseInt(numLight) + parseInt(numMed) + parseInt(numHeavy)) > parseInt(document.getElementById("recruitsAvail[" + districtId + "]").innerHTML)) 
			{
				alert("You do not have enough recruits in " + document.getElementById("district[" + districtId + "]").innerHTML);
				return false;
			}
		}
		if((parseInt(numLight) + parseInt(numMed) + parseInt(numHeavy)) == 0)
		{
			alert("You have not chosen any recruits to train!");
			return false;
		}
		
		entityStr.push(districtId);
		lightStr.push(numLight);
		medStr.push(numMed);
		heavyStr.push(numHeavy);
	 } 
	}  
	setResourcesRecruits(entityStr.toString(), lightStr.toString(), medStr.toString(), heavyStr.toString());
}

function setBorrowPoints() 
{
	var f = document.borrow;	
	for (i = 0; i < f.elements.length; i++) 
	{
		if (f.elements[i].type == "radio" && f.elements[i].checked == true) 
		{
			var id = f.elements[i].value;
			var amount = document.getElementById("amount[" + id + "]").value;
			if (isNaN(amount) || amount < 0) 
			{
				alert("You must enter a positive number in the Amount field for the Bank you selected.");
				return false;
			}
			setResourcesBorrowPoints(id, amount);
			return;
		}
	}
	alert("You need to select a Bank to borrow from.");
}


/**
  For Charts
*/ 
function viewUserStatsText() {
  var teck = document.getElementById("userTeck").innerHTML;
  if(document.getElementById("userPack") != null)
  {
  	var pack = document.getElementById("userPack").innerHTML; 
  	var hamp = document.getElementById("userHamp").innerHTML;
  }
  else
  	var troops = document.getElementById("userTroops").innerHTML;
  
  var teckLabels = new Array("Total Troops", "Experience", "Community", "Knowledge");
  var packLabels = new Array("Points", "Art of War", "Challenges", "Karma");
  var hampLabels = new Array("Humor", "Allied Troops", "Morale", "Politics");
  var troopsLabels = new Array('Light Troops', 'Medium Troops', 'Heavy Troops', 'District Troops');
  
  document.getElementById("userTeck").innerHTML = getStatsTextString(userChart1, teckLabels);
  if(document.getElementById("userPack") != null)
  {
  	document.getElementById("userPack").innerHTML = getStatsTextString(userChart2, packLabels);
  	document.getElementById("userHamp").innerHTML = getStatsTextString(userChart3, hampLabels);
  }
  else
	  document.getElementById("userTroops").innerHTML = getStatsTextString(userChart4, troopsLabels);
  
  if (targetChart1 != empty) {
    document.getElementById("targetTeck").innerHTML = getStatsTextString(targetChart1, teckLabels);
    if(document.getElementById("userPack") != null)
		document.getElementById("targetPack").innerHTML = getStatsTextString(targetChart2, packLabels);
  }
  
  if (targetChart4 != empty) {
	  if(document.getElementById("userHamp") != null)
		document.getElementById("targetHamp").innerHTML = getStatsTextString(targetChart3, hampLabels);
	  else
	  document.getElementById("targetTroops").innerHTML = getStatsTextString(targetChart4, troopsLabels);
	}
	
  document.getElementById("viewUserStatsToggle").innerHTML = "View as Charts";
  document.getElementById("viewUserStatsToggle").href = "javascript:viewUserStatsChart();";
}

function viewUserStatsChart() {

  viewUserCharts();
  
  viewTargetCharts(targetChart1, targetChart2, targetChart3, targetChart4);
  
  document.getElementById("viewUserStatsToggle").innerHTML = "View as Text";
  document.getElementById("viewUserStatsToggle").href = "javascript:viewUserStatsText();";
}

function getStatsTextString(chartHTML, labelsArr) {
  var pattern = /set label='(.*?)' value='(.*?)' \//g;

  var count = 0;
  var str = "";
  while(pattern.exec(chartHTML)) {
    str += '<span class="label">' + labelsArr[count] + '</span><span class="value">' + RegExp.$2 + '</span>';
    count++;
  }
  
  if (count == 0) {
    str = chartHTML;
  }
  
  return str;
}

function getStatsChartString(textHTML, labelsArr) {
  var pattern = /<span class="value">(.*?)<\/span>/g;

  var count = 0;
  var str = "";
  while(pattern.exec(chartHTML)) {
    str += '<span class="label">' + labelsArr[count] + '</span><span class="value">' + RegExp.$2 + '</span>';
    count++;
  }
  
  return str;
}

/**** STYLE SETTINGS ****/

function setRightSideSelected(header) {
try
{
  if(header == "Map")
  	run = 1;
  else
  	run = 0;
  var rightSide = document.getElementById("rightSide");
  if (rightSide == null) {
    return; // not on action station
  }
  for (i = 0; i < rightSide.childNodes.length; i++) {
    rightSide.childNodes[i].className = "";
  }
  
  document.getElementById("rightSide" + header).className = "selected";
}
catch(exception){}
}


function setSelectedSubtab(header) {

try
{
  var subtabs = document.getElementById("subtabs");
  
  if (subtabs == null) {
    return; // not on action station
  }
  
  for (i = 0; i < subtabs.childNodes.length; i++) {
		subtabs.childNodes[i].className = "";
  }
  if(document.getElementById("subtab" + header) != null)
	  document.getElementById("subtab" + header).className = "selected";
}
catch(exception){}
}

/**
  Called from drop down when changing Player
*/
function setVal(v) {
  val = v;
  
  // need to clear any troops that were assembled
  offEntities = "";
  offLight = "";
  offMed = "";
  offHeavy = "";
  offDistrict = "";
  
  showAssembleOffensive();
}

/**
  Resets all Information
*/
function clearTargetInfo() {
  isHomeCounty = 0;
  currentClick = '';
  founderUserId = '';
  founderEntityType = '';
  //targetUserId = "";
  defenderLightTroops = "";
  defenderMedTroops = "";
  defenderHeavyTroops = "";
  defenderCommunity = "";
  defenderKnowledge = "";
  
  /*
  targetChart1 = empty;
  targetChart2 = empty;
  targetChart3 = empty;
  targetChart4 = empty;
  
  viewTargetCharts(targetChart1, targetChart2, targetChart3, targetChart4);
  */
  offEntities = "";
  offLight = "";
  offMed = "";
  offHeavy = "";
  offDistrict = "";
  
  //document.getElementById("targetCommander").innerHTML = '<span>Commander: </span><a href="" class="defender right">Add as a Friend</a>';
  
  var targetTable = '<img src="/templates/yget/images/nophoto.gif" class="photo" border="0" />';
  targetTable += '<table><tbody id="targetTable"><tr><td>Rank:</td><td></td></tr><tr><td>District:</td><td></td></tr>';
  targetTable += '<tr><td>Morale:</td><td></td></tr><tr><td>Wins:</td><td></td></tr><tr><td>Losses:</td><td></td></tr></tbody></table>';
  
  //document.getElementById("targetTable").innerHTML = targetTable;
  
  //document.getElementById("targetLinks").innerHTML = '<p>Community Alliance: </p><p>Knowledge Alliance: </p><p>Send Message</p><p>Propose Treaty / Negotiation</p><p>Propose a Defensive Pact</p>';
         
}