// GOW2EXP, by MarkWillis.co.uk

var aianRoot = 'http://www.gow2exp.com/inc/';
var expMulti = 2;

// Jul 2010 Multiplier
var limg = new Image(16, 16); limg.src = "http://www.gow2exp.com/img/loaders/loadBall.gif";
function pushMulti(multi){expMulti = multi;}
function updateMulti(newMulti, goid)
{
	document.getElementById('expm').innerHTML = '<div class="expLoader"><!-- --></div>';
	
	// Save Client-Side
	expMulti = newMulti;
	
	//alert("Sorry - this feature is not yet available. \nRequest::Update->"+newMulti+"*exp");

	// Save Server Side
	var d = new Date();
	var tsec = d.getSeconds();
	var ajaxRequest;
	try{ajaxRequest = new XMLHttpRequest(); } catch (e){try{ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try{ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");} catch (e){return true;}}}
	ajaxRequest.onreadystatechange = function()
	{
	if(ajaxRequest.readyState == 4){
		document.getElementById('expm').innerHTML = ajaxRequest.responseText;
	}
	}
	var queryString = aianRoot + 'updateExpMulti.php?time=' + tsec + '&nm=' + newMulti;
	ajaxRequest.open("GET", queryString, true);
	ajaxRequest.send(null);
	return false;
}


function isInteger (s)
   {
      var i;

      if (isEmpty(s))
      if (isInteger.arguments.length == 1) return 0;
      else return (isInteger.arguments[1] == true);

      for (i = 0; i < s.length; i++)
      {
         var c = s.charAt(i);

         if (!isDigit(c)) return false;
      }

      return true;
   }
   
    function isEmpty(s)
   {
      return ((s == null) || (s.length == 0))
   }

   function isDigit (c)
   {
      return ((c >= "0") && (c <= "9"))
   }

function calcExp()
{
	// Game type?
	var gameMode = document.expMe.gameType.value;
	var gamePoints = document.expMe.gameScore.value;
	
	switch(gameMode)
	{
	case "1": var multi = 0.23; break;
	case "2": var multi = 0.28; break;
	case "3": var multi = 0.47; break;
	case "4": var multi = 0.83; break;
	case "5": var multi = 0.98; break;
	case "6": var multi = 1.00; break;
	case "7": var multi = 1.10; break;
	}
	if(isInteger(gamePoints))
	{
	var result = 'You\'ll get ' + Math.floor((gamePoints * multi)*expMulti) + ' exp!';
	}else{
	var result = 'Invalid points. Enter a number.';
	}
	
	document.getElementById('expCalc').innerHTML = '<h3>' + result + '</h3>';
	return false;
}


///////////////////////////////////////////////////
//         Interface by MarkWillis.co.uk         //
/*************************************************/
var aiviewportwidth;
var aiviewportheight;
var MouseX = 0; var MouseY = 0;
function TrackingMousePosition(e)
{
	e = e || window.event;
	if (e.pageX)
	{
		MouseX = e.pageX;
		MouseY = e.pageY;
		
		if(MouseX + 200 > aiviewportwidth){MouseX = MouseX - 200;}
		
		if(document.getElementById('tip-box').style.display == "block")
		{
			document.getElementById('tip-box').style.left = (MouseX + 10) + "px";
			document.getElementById('tip-box').style.top = (MouseY + 25) + "px";
		}
	}
	else
	{
		x = window.event.clientX+document.documentElement.scrollLeft;
		y = window.event.clientY+document.documentElement.scrollTop;
		
		if(x + 200 > aiviewportwidth){x = x - 200;}
		
		if(document.getElementById('tip-box').style.display == "block")
		{
			document.getElementById('tip-box').style.left = (x + 10) + "px";
			document.getElementById('tip-box').style.top = (y + 25) + "px";
		}
	}
}
window.onmouseover = TrackingMousePosition;
// 'normal' browsers 
if (typeof window.innerWidth != 'undefined')
{
	aiviewportwidth = window.innerWidth;
	aiviewportheight = window.innerHeight;
}
// IE6
else if(typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0)
{
	aiviewportwidth = document.documentElement.clientWidth;
	aiviewportheight = document.documentElement.clientHeight;
}
// even older IE :O
else
{
	aiviewportwidth = document.getElementsByTagName('body')[0].clientWidth;
	aiviewportheight = document.getElementsByTagName('body')[0].clientHeight;
}
function talk2Ian(useMouse, useY)
{
	// useMouse: set to 1 if you want to have Ian popup at the mouse's location (centered), set to 0 if you want manual x,y
	// useY: manual y location of Ian popup (vertical position)
	var x = 0; var y = 0;
	var oY = useY;
	if(MouseX)
	{
		x = MouseX;
		
		if(useMouse == 1){
		y = MouseY;
		}else{
		scroll(0,(oY - 10));
		y = oY;
		}
	}
	else
	{
		x = window.event.clientX+document.documentElement.scrollLeft;
		if(useMouse == 1){
		y = window.event.clientY+document.documentElement.scrollTop;
		}else{
		scroll(0,(oY - 10));
		y = oY;
		}
	}
	document.getElementById('aianBlock').style.left = ((aiviewportwidth / 2) - 300) + "px";
	document.getElementById('aianBlock').style.top = (y + 10) + "px";
	document.getElementById('aianBlock').innerHTML = '<div class="aian-inner" id="aiInner"><div class="aian-close"><a href="#" onclick="return byeIan();"><!-- close --></a></div><div class="aian-main"><h3>one moment...</h3></div></div>';
	document.getElementById('aianBlock').className = 'aianBlock-on';
	document.getElementById('aianBlock').style.display = "block";
	var d = new Date();
	var tsec = d.getSeconds();
	var ajaxRequest;
	try{ajaxRequest = new XMLHttpRequest(); } catch (e){try{ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try{ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");} catch (e){return true;}}}
	ajaxRequest.onreadystatechange = function()
	{
	if(ajaxRequest.readyState == 4){
		document.getElementById('aianBlock').innerHTML = ajaxRequest.responseText;
	}
	}
	var queryString = aianRoot + 'expCalc.php?time=' + tsec;
	ajaxRequest.open("GET", queryString, true);
	ajaxRequest.send(null);
	return false;
}
function byeIan()
{
	document.getElementById('aianBlock').innerHTML = ''; document.getElementById('aianBlock').className = 'aianBlock-off'; document.getElementById('aianBlock').style.display = "none";
	return false;
}

// Engine

function remCalc(target)
{
	var currLvl = escape(target.currRank.value);
	var newLvl = escape(target.newRank.value);
	document.getElementById('remCalcRes').innerHTML = '<div class="rankContainerFull">Calculating...</div>';
	var d = new Date();
	var tsec = d.getSeconds();
	var ajaxRequest;
	try{ajaxRequest = new XMLHttpRequest(); } catch (e){try{ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try{ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");} catch (e){return true;}}}
	ajaxRequest.onreadystatechange = function()
	{
	if(ajaxRequest.readyState == 4){
		document.getElementById('remCalcRes').innerHTML = ajaxRequest.responseText;
	}
	}
	var queryString = aianRoot + 'remCalc.php?time=' + tsec + '&currRank=' + currLvl + '&newRank=' + newLvl;
	ajaxRequest.open("GET", queryString, true);
	ajaxRequest.send(null);
	return false;
}

function remCalcExp(target)
{
	// Game type?
	var gameMode = escape(target.gameType.value);
	var gamePoints = escape(target.gameScore.value);
	
	switch(gameMode)
	{
	case "1": var multi = 0.23; break;
	case "2": var multi = 0.28; break;
	case "3": var multi = 0.47; break;
	case "4": var multi = 0.83; break;
	case "5": var multi = 0.98; break;
	case "6": var multi = 1.00; break;
	case "7": var multi = 1.10; break;
	}
	if(isInteger(gamePoints))
	{
	var result = 'You\'ll get ' + Math.floor((gamePoints * multi)*expMulti) + ' exp!';
	}else{
	var result = 'Invalid points. Enter a number.';
	}
	
	document.getElementById('remCalcRes').innerHTML = '<div class="rankContainerFull"><h3 style="color: #FF9900;">' + result + '</h3></div>';
	return false;
}

function calcRemTime(target)
{
	var aim = escape(target.expAim.value);
	var weekly = escape(target.aveWeek.value);
	
	var lvlCurr = escape(target.lcurr.value);
	var lvlAim = escape(target.laim.value);
	
	if(isInteger(weekly))
	{
		var weeks = Math.ceil(aim / weekly);
		
		if((aim / weekly) < 1)
		{
			var result = 'Less than a week!';
		}else{
			if(weeks < 52)
			{
				if(weeks > 4)
				{
					var months = Math.floor( weeks / 4 );
					weeks = weeks - (months * 4);
					var result = 'About ' + months + ' months, <br />' + weeks + ' weeks';
				}else{
					var result = 'About ' + weeks + ' weeks!';
				}
			}else{
				var years = Math.floor(weeks / 52);
				var months = Math.floor( (weeks - (years * 52)) / 4 );
				weeks = weeks - (years * 52) - (months * 4);
				var result = 'About ' + years + ' years, <br />' + months + ' months, <br />' + weeks + ' weeks';
			}
		}
		
	}else{
		var result = 'Invalid points. Enter a number!';
	}
	document.getElementById('timeResult').innerHTML = '<div class="rankContainerFull">Lvl ' + lvlCurr + ' to ' + lvlAim + ' will take you<h3>' + result + '</h3></div>';
	return false;
}

function calcRemTime2(target)
{
	var aim = escape(target.expAim2.value);
	
	var lvlCurr = escape(target.lcurr2.value);
	var lvlAim = escape(target.laim2.value);
	
	var userExp = escape(target.aveGame.value);
	var userGamesADay = escape(target.aveDay.value);
	var userDaysAWeek = escape(target.aveWeek.value);
	var totalGames = Math.ceil(aim / userExp);
	
	if(isInteger(userExp) && isInteger(userGamesADay) && isInteger(userDaysAWeek))
	{
		var weekly = userExp * userGamesADay * userDaysAWeek;
		var weeks = Math.ceil(aim / weekly);
		
		if((aim / weekly) < 1)
		{
			var result = 'Less than a week!';
		}else{
			if(weeks < 52)
			{
				if(weeks > 4)
				{
					var months = Math.floor( weeks / 4 );
					weeks = weeks - (months * 4);
					var result = 'About ' + months + ' months, <br />' + weeks + ' weeks';
				}else{
					var result = 'About ' + weeks + ' weeks!';
				}
			}else{
				var years = Math.floor(weeks / 52);
				var months = Math.floor( (weeks - (years * 52)) / 4 );
				weeks = weeks - (years * 52) - (months * 4);
				var result = 'About ' + years + ' years, <br />' + months + ' months, <br />' + weeks + ' weeks';
			}
		}
		
	}else{
		var result = 'Invalid input. Enter a number!';
	}
	document.getElementById('timeResult').innerHTML = '<div class="rankContainerFull">Lvl ' + lvlCurr + ' to ' + lvlAim + ' will take you<h3>' + result + '</h3>Total games: ' + totalGames + '!<br /><br /><small>Based on ' + weekly + ' ave exp per week.</small></div>';
	return false;
}

function showTimeCalc(which)
{
	switch(which)
	{
		case 1: var doActive = 'timeCalcA2'; doInActive = 'timeCalcA1'; break;
		case 2: var doActive = 'timeCalcA1'; doInActive = 'timeCalcA2'; break;
	}
	document.getElementById(doActive).style.display = "block";
	document.getElementById(doInActive).style.display = "none";
	return false;
}

// Aug 2009 showAllArea upgrade

function changeShowAll(opt)
{
	switch(opt)
	{
	case 1: var gogo = 'table'; break;
	case 2: var gogo = 'list'; break;
	case 3: var gogo = 'graph'; break;
	}
	
	document.getElementById('showAllArea').innerHTML = '<h3>Processing...</h3>';
	var d = new Date();
	var tsec = d.getSeconds();
	var ajaxRequest;
	try{ajaxRequest = new XMLHttpRequest(); } catch (e){try{ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try{ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");} catch (e){return true;}}}
	ajaxRequest.onreadystatechange = function()
	{
	if(ajaxRequest.readyState == 4){
		document.getElementById('showAllArea').innerHTML = ajaxRequest.responseText;
	}
	}
	var queryString = aianRoot + 'showAll.php?time=' + tsec + '&do=' + gogo;
	ajaxRequest.open("GET", queryString, true);
	ajaxRequest.send(null);
	return false;
}

function graphIt(doOpen)
{
	if(doOpen == 1)
	{
		document.getElementById('calcData').style.display = 'none';
		document.getElementById('calcGraph').style.display = 'block';
	}else
	{
		document.getElementById('calcData').style.display = 'block';
		document.getElementById('calcGraph').style.display = 'none';
	}
	return false;
}