// GOW2EXP, by MarkWillis.co.uk

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.26; break;
	case "2": var multi = 0.28; break;
	case "3": var multi = 0.49; break;
	case "4": var multi = 0.91; break;
	case "5": var multi = 0.98; break;
	case "6": var multi = 1.00; break;
	case "7": var multi = 1.09; break;
	}
	if(isInteger(gamePoints))
	{
	var result = 'You\'ll get ' + Math.floor(gamePoints * multi) + ' exp!';
	}else{
	var result = 'Invalid points. Enter a number.';
	}
	
	document.getElementById('expCalc').innerHTML = '<h3>' + result + '</h3>';
	return false;
}


///////////////////////////////////////////////////
//         Interface by MarkWillis.co.uk         //
/*************************************************/
var aianRoot = 'http://www.markwillis.co.uk/gow2exp/inc/';
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.26; break;
	case "2": var multi = 0.28; break;
	case "3": var multi = 0.49; break;
	case "4": var multi = 0.91; break;
	case "5": var multi = 0.98; break;
	case "6": var multi = 1.00; break;
	case "7": var multi = 1.09; break;
	}
	if(isInteger(gamePoints))
	{
	var result = 'You\'ll get ' + Math.floor(gamePoints * multi) + ' exp!';
	}else{
	var result = 'Invalid points. Enter a number.';
	}
	
	document.getElementById('remCalcRes').innerHTML = '<div class="rankContainerFull"><h3>' + result + '</h3></div>';
	return false;
}