var FadeObjects = new Object();
var FadeTimers = new Object();
var wide = true;
var minimapMouseX = 0;
var minimapMouseY = 0;
var minimapX = 0;
var minimapY = 0;
var loggedIn = false;
var slots = new Array(0); // True = nerstängd
var popups = false;
var showMiniMap = true;
var newWindow = new Object();
var loginBlink = false;
var textLinks = false;
var fitAllButtons = 860; // Change this when adding more buttons to the menu
var clientHeight = 0;
var bodyHasLoaded = false;
var chatHeight = 110;

function Fade(object, destOp, rate, delta){
	if (!document.all) {
		if(destOp<100) object.style.opacity=.6
		else object.style.opacity=1;

		return;
	}

	if (object != "[object]"){
	setTimeout("Fade("+object+","+destOp+","+rate+","+delta+")",0);
		return;
	}

	clearTimeout(FadeTimers[object.sourceIndex]);


	try {
		diff = destOp-object.filters.alpha.opacity;
	}
	catch(err) {
		return;
	}


	direction = 1;
	if (object.filters.alpha.opacity > destOp){
		direction = -1;
	}
	delta=Math.min(direction*diff,delta);
	object.filters.alpha.opacity+=direction*delta;

	if (object.filters.alpha.opacity != destOp){
		FadeObjects[object.sourceIndex]=object;
		FadeTimers[object.sourceIndex]=setTimeout("Fade(FadeObjects["+object.sourceIndex+"],"+destOp+","+rate+","+delta+")",rate);
	}
}

function focusPop() {
	if(popups && newWindow.window) newWindow.window.focus();
	return true;
}



function clicky(slot, anchor) {

	//alert('popups=' + popups);

	if(popups) {
		popitup(anchor.href, slot);
		return false;
	}
	else {

		slots[slot] = false; // Not closed

		for(var i=0; i<slots.length; i++) { // Hide all
			parent.map.document.getElementById('slot' + i).style.display='none';
		}

		parent.map.document.getElementById('slot' + slot).style.display = 'block'; // Show it

		if(anchor.href.indexOf('chat') > -1) {
			try {
				if(parent.map.window.frames['ifrslot' + slot].location.href.indexOf('chat') > -1) return false;
			}
			catch(err) {
				return false;
			}
		
		}
		
		return true;

		//document.getElementById('mslot' + slot).style.borderColor='orange';
	}
}


function toggleMenu(w) {

	wide = w;
	
	clientHeight = document.body.clientHeight;

	//alert('clientHeight=' + clientHeight);

	//alert('wide=' + wide);

	if(wide) {
	
	
		document.getElementById('minimap').style.display='none';
		document.getElementById('cities').style.display='none';
		document.getElementById('armies').style.display='none';
		document.getElementById('minimapZoomIn').style.display='none';
		document.getElementById('minimapZoomOut').style.display='none';

		document.getElementById('textlinks').style.display='none';

		document.getElementById('toggleMenuButton').title='Widen the menu';
		document.getElementById('toggleMenuButton').innerHTML = '&laquo;';

		if(turns.document.getElementById('turns')) document.getElementById('turnbutton').innerHTML = "<span>" + turns.document.getElementById('turns').innerHTML + '</span> BT\'s';
		document.getElementById('turnbutton').style.fontSize='8px';
		document.getElementById('turnbutton').style.fontWeight='normal';


		document.getElementById('armybutton').style.display='block';
		document.getElementById('citybutton').style.display='block';
		document.getElementById('trainbutton').style.display='block';
		
		document.getElementById('login').style.display='none';

		document.getElementById('makeItSmaller').style.width='40%';
		document.getElementById('makeItBigger').style.width='40%';
		
		if(clientHeight<fitAllButtons) {
			parent.document.getElementById("horizontalFrameset").cols = "*,68";
			
			document.getElementById('menu').style.width='100%';
			document.getElementById('menu').style.height= (clientHeight - 112) + 'px';
			document.getElementById('menu').style.overflowY='scroll';
			//alert(clientHeight);
		}
		else {
			parent.document.getElementById("horizontalFrameset").cols = "*,48";

			document.getElementById('menu').style.width='100%';
			//document.getElementById('menu').style.height='720px';
			document.getElementById('menu').style.overflowY='hidden';
			
			document.getElementById('makeItSmaller').style.width='18px';
			document.getElementById('makeItBigger').style.width='18px';
		}
		
		if(textLinks) {
			parent.document.getElementById("horizontalFrameset").cols = "*,110";
			document.getElementById('menu').style.width='100%';
		}
		


		wide = false;
	}
	else {
		
		if(loggedIn) {
			document.getElementById('cities').style.display='block';
			document.getElementById('armies').style.display='block';
		}
		
		if(showMiniMap) {
			document.getElementById('minimap').style.display='block';
			document.getElementById('minimapZoomIn').style.display='block';
			document.getElementById('minimapZoomOut').style.display='block';
		}
		
		document.getElementById('textlinks').style.display='block';

		
		document.getElementById('menu').style.width='200px';
		
		//document.getElementById('menu').style.height='180px';
		document.getElementById('menu').style.height=null;
		
		document.getElementById('menu').style.overflowY='auto';

		document.getElementById('armybutton').style.display='none';
		document.getElementById('citybutton').style.display='none';
		document.getElementById('trainbutton').style.display='none';
		
		if(!loggedIn) document.getElementById('login').style.display='block';

		
		document.getElementById('toggleMenuButton').title='Thin menu';
		document.getElementById('toggleMenuButton').innerHTML = 'Thin menu &raquo;';

		if(turns.document.getElementById('turns')) document.getElementById('turnbutton').innerHTML = 'Turns: ' + turns.document.getElementById('turns').innerHTML;
		document.getElementById('turnbutton').style.fontSize='14px';
		document.getElementById('turnbutton').style.fontWeight='bold';

		parent.document.getElementById("horizontalFrameset").cols = "*,200";

		document.getElementById('makeItSmaller').style.width=null;
		document.getElementById('makeItBigger').style.width=null;

		wide = true;
	
	}
	
	
	try {
		
		window.status = top.location;
	}
	
	catch(err) {
		if(!wide) {
			// Chnage button to break out of frame

			document.getElementById('toggleMenuButton').title='Play the game in full screen';
			document.getElementById('toggleMenuButton').innerHTML = 'Full';		
			document.getElementById('toggleMenuButton').onmousedown=function(){top.location = parent.location;};
		}
	}

}


function moseOnMinimap(e) {
	if(!document.all)
	{
		minimapMouseX = e.layerX;
		minimapMouseY = e.layerY;
	}
	else
	{
		minimapMouseX = (document.layers) ? e.layerX : event.x;
		minimapMouseY = (document.layers) ? e.layerY : event.y - 444;
	

		//alert(minimapMouseY);
	
	
	}
	

	//window.status = minimapMouseX + ', ' + minimapMouseY;
}


function bodyLoad(l, p, m) {

	try {
		l = parent.map.loggedIn;
		p = parent.map.popups;
		m = parent.map.showMiniMap;
		parentMap = parent.map.armies.length;
	}
	catch(err) {
		parentMap = false;
		//alert(err);
	}

	if(l) loggedIn = l
	else loggedIn = false;
	
	if(p) popups = p
	else popups = false;
	
	if(m) showMiniMap = m
	else showMiniMap = false;
	
	//alert('menu says popups=' + popups);
	
	clientHeight = document.body.clientHeight;

	showStuff();

	document.getElementById('minimap').onmousemove=moseOnMinimap;

	if(parentMap) {

		document.armyForm.armyID.options.length = 0;

		// Populate armies select box
		for (var i=0; i<parent.map.armies.length; i++) {
			if(parent.map.armies[i][11] == parent.map.userID) {
				var opt = new Option(parent.map.armies[i][1]);
				opt.value = parent.map.armies[i][0]
				opt.x = parent.map.armies[i][2];
				opt.y = parent.map.armies[i][3];
				document.armyForm.armyID.options[document.armyForm.armyID.options.length] = opt;
			}
		}


		// Add army overview
		var opt = new Option('* OVERVIEW *');
		opt.value = -1;
		opt.x = null;
		opt.y = null;

		var armyOverviewIndex = document.armyForm.armyID.options.length;
		
		document.armyForm.armyID.options[armyOverviewIndex] = opt;



		document.armyForm.armyID.onchange=function() {
		
			if(this.selectedIndex==armyOverviewIndex) {

				var anchor = document.getElementById('armyOverview');

				var form = document.armyForm;

				if(popups) popitup(anchor.href, 0)
				else {
					form.action = anchor.href;
					form.submit();
					clicky('0', anchor);
				}

				 return false;

			}
			else {
				// Scroll on the map

				var opt = document.armyForm.armyID.options[this.selectedIndex];

				parent.map.bodyHolder.scrollLeft = opt.x - -parent.map.mapSize - parent.map.bodyHolder.clientWidth/2;
				parent.map.bodyHolder.scrollTop = opt.y - -parent.map.mapSize - parent.map.bodyHolder.clientHeight/2;
			}
		
		}




		document.cityForm.cityID.options.length = 0;

		// Populate cities select box

		for (var i=0; i<parent.map.cities.length; i++) {
			if(parent.map.cities[i][13] == parent.map.userID || !loggedIn) {
				var opt = new Option(parent.map.cities[i][1]);
				opt.value = parent.map.cities[i][0];
				opt.x = parent.map.cities[i][4];
				opt.y = parent.map.cities[i][5];

				document.cityForm.cityID.options[document.cityForm.cityID.options.length] = opt;
			}
		}


		// Add city overview
		var opt = new Option('* OVERVIEW *');
		opt.value = -1;
		opt.x = null;
		opt.y = null;
		var cityOverviewIndex = document.cityForm.cityID.options.length;
		document.cityForm.cityID.options[cityOverviewIndex] = opt;


		document.cityForm.cityID.onchange=function() {
			if(this.selectedIndex==cityOverviewIndex) {
			
				
				var anchor = document.getElementById('cityOverview');

				var form = document.cityForm;

				if(popups) popitup(anchor.href, 0)
				else {
					form.action = anchor.href;
					form.submit();
					clicky('0', anchor);
				}

				 return false;

			}
			
			else {
				var opt = document.cityForm.cityID.options[this.selectedIndex];

				parent.map.bodyHolder.scrollLeft = opt.x - -parent.map.mapSize - parent.map.document.body.clientWidth/2;
				parent.map.bodyHolder.scrollTop = opt.y - -parent.map.mapSize - parent.map.document.body.clientHeight/2;
			}
		}
		
		


		if(typeof(parent.map.DrawMiniMap) == 'function') {
			parent.map.DrawMiniMap();
			parent.map.miniMap();
		}
	}


	if(showMiniMap & wide) {
		document.getElementById('minimapZoomIn').style.display='block';
		document.getElementById('minimapZoomOut').style.display='block';
		document.getElementById('minimap').style.display='block';
	}
	else {
		document.getElementById('minimapZoomIn').style.display='none';
		document.getElementById('minimapZoomOut').style.display='none';
		document.getElementById('minimap').style.display='none';
	}
	
	//alert('showMiniMap=' + showMiniMap);

	showCaptions(false);
	
	if(!loggedIn) wide = true;
	toggleMenu(!wide);
	
	bodyHasLoaded = true;
}


function cityGo(anchor) {

	var form = document.cityForm;

	if(self.location.href.indexOf('translate.google.com') > -1) {
		//Using google translate... DO SOMETHING!!
		
	}
	
	var sessionStr = new String();
	if(form.vuid) sessionStr = '&vuid=' + form.vuid.value;
	
	if(popups) popitup(anchor.href + '?cityID=' + form.cityID.value + sessionStr, 0)
	else {
		form.action = anchor.href;
		form.submit();
		clicky('0', anchor);
	}
	
	 return false;

	
	//alert('submit form... cityID=' + document.cityForm.cityID.value);
	
}

function armyGo(anchor) {

	var form = document.armyForm;

	if(self.location.href.indexOf('translate.google.com') > -1) {
		//Using google translate... DO SOMETHING!!
		
	}
	
	if(anchor.href.indexOf('March') > -1 && race != 3) {
	
		try {parent.map.document.getElementById('army'+ form.armyID.value).style.zIndex="1";}
		catch(err) {;};
		
		if(!popups) {
		
			for(var i=0; i<slots.length; i++) { // Hide all
				parent.map.document.getElementById('slot' + i).style.display='none';
			}
		}
		
		parent.map.focus();
	
	}
	else {
	
		var sessionStr = new String();
		if(form.vuid) sessionStr = '&vuid=' + form.vuid.value;

	
		if(popups) popitup(anchor.href + '?armyID=' + form.armyID.value + sessionStr, 0)
		else {
			form.action = anchor.href;
			form.submit();
			clicky('0', anchor);
		}
	}
	
	 return false;
	
	//alert('submit form... armyID=' + document.armyForm.cityID.value);
	
}

function showStuff() {

	if(loggedIn) {
	
		if(wide) {
			document.getElementById('cities').style.display='block';
			document.getElementById('armies').style.display='block';
		}
		
		document.getElementById('turnbutton').style.display='block';

		document.getElementById('mslot12').style.display='block';
		document.getElementById('mslot13').style.display='block';
		document.getElementById('mslot14').style.display='block';
		document.getElementById('mslot15').style.display='block';
		document.getElementById('mslot16').style.display='block';
		document.getElementById('magic').style.display='block';
		document.getElementById('waypoint').style.display='block';
		document.getElementById('mslot20').style.display='block';
		document.getElementById('mslot24').style.display='block';
		document.getElementById('mslot23').style.display='block';

		document.getElementById('login').style.display='none';

		//alert('You are logged in my friend');

		if(loginBlink) clearInterval(loginBlink);

	}
	else {

		document.getElementById('cities').style.display='none';
		document.getElementById('armies').style.display='none';
		document.getElementById('turnbutton').style.display='none';

		document.getElementById('mslot12').style.display='none';
		document.getElementById('mslot13').style.display='none';
		document.getElementById('mslot14').style.display='none';
		document.getElementById('mslot15').style.display='none';
		document.getElementById('mslot16').style.display='none';
		document.getElementById('magic').style.display='none';
		document.getElementById('waypoint').style.display='none';
		document.getElementById('mslot20').style.display='none';
		document.getElementById('mslot24').style.display='none';
		document.getElementById('mslot23').style.display='none';



		document.getElementById('login').style.display='block';

		//alert('Not logged in');
		
		
		if(!loginBlink) loginBlink = setInterval('blinkLogin()', 500);
		
		document.getElementById('login').onmouseover = function() {
			if(loginBlink) {
				clearInterval(loginBlink);
				document.getElementById('login-border').style.borderColor = 'transparent';
			}
		}

	}

}


function blinkLogin() {
	
	var obj = document.getElementById('login-border');
	
	var color = obj.style.borderColor;
	
	if(color=='transparent') obj.style.borderColor = 'red'
	else obj.style.borderColor = 'transparent';
	
}


function popitup(href, slot) {


	var height = parent.document.body.clientHeight - 300;
	if(!height) height = 600;
	if(height<600) height = 600;



	newWindow = window.open(href,'ifrslot' + slot,'top='+(screen.height/2 - height/2)+',left='+(screen.width/2 - 362)+',width=605,height=' + height + ',resizable=no,scrollbars=yes');
	newWindow.window.focus();
	newWindow.focus();
		
	return false;

	//alert('ama poppin it! height=' + height + ' href=' + href + ' slot=' + slot +'\ntop='+(screen.height/2 - height/2)+',left='+(screen.width/2 - 312)+',width=624,height=' + height + ',resizable=no,scrollbars=yes');

}


function showCaptions(b) {
	
	if(b) {
	
		textLinks = true;

		var spans = document.getElementById('menus').getElementsByTagName('span');
		
		for (var i = spans.length; i--;) {
			spans[i].style.display = 'inline';
		}
		
		document.getElementById('armies').style.height='110px';
		document.getElementById('cities').style.height='110px';

		// Makes images smaller
		
		var imgs = document.getElementById('menus').getElementsByTagName('img');
		for (var i = imgs.length; i--;) {
			
			
			imgs[i].style.width = "22px";
			imgs[i].style.height = "15px";
				


		}

		var as = document.getElementById('menus').getElementsByTagName('a');
		for (var i = as.length; i--;) {

			as[i].style.width = "96px";
			as[i].style.height = "12px";
			as[i].style.margin = "2px";
			as[i].style.borderWidth = "0px";
		}
		
		var hrs = document.getElementById('menu').getElementsByTagName('hr');
		for (var i = hrs.length; i--;) {

			hrs[i].style.clear = "both";
			hrs[i].style.width = "100px";
			//hrs[i].style.height = "10px";
			hrs[i].style.display = "block";

		}
		
		if(!wide) {
			parent.document.getElementById("horizontalFrameset").cols = "*,110";
			document.getElementById('menu').style.width='100%';
		}

		
	}
	
	else {
		// Hide all span tags
	
		textLinks = false;

		var spans = document.getElementById('menus').getElementsByTagName('span');
		
		for (var i = spans.length; i--;) {
			spans[i].style.display = 'none';
		}
		
		document.getElementById('armies').style.height='90px';
		document.getElementById('cities').style.height='90px';

		
		var imgs = document.getElementById('menus').getElementsByTagName('img');
		for (var i = imgs.length; i--;) {

			imgs[i].style.width = "40px";
			imgs[i].style.height = "28px";

		}

		var as = document.getElementById('menus').getElementsByTagName('a');
		for (var i = as.length; i--;) {
			as[i].style.width = "";
			as[i].style.height = "";
			as[i].style.margin = "";
			as[i].style.borderWidth = "";

		}

		var hrs = document.getElementById('menu').getElementsByTagName('hr');
		for (var i = hrs.length; i--;) {

			hrs[i].style.clear = "";
			hrs[i].style.width = "";
			hrs[i].style.height = "";
			hrs[i].style.display = "none";

		}

		if(!wide) {
			if(clientHeight<fitAllButtons) {
				parent.document.getElementById("horizontalFrameset").cols = "*,68";
			}
			else {
				parent.document.getElementById("horizontalFrameset").cols = "*,48";
			}
			document.getElementById('menu').style.width='100%';
		}

	}

}

function loadChat() {

	var reload = false;
	
	shChat();
	
	try {
		var test = parent.chat.location.href;
		
		if(test.indexOf('chat') > 0) reload = false
		else reload = true;
		
		//alert(test);
	}
	catch(err) {
		reload = false;
	}

	return reload;
}

function shChat() {

	if(parent.document.getElementById('toggleChat').rows=='*, ' + chatHeight + '') {
		parent.document.getElementById('toggleChat').rows='*, 0';
	} 
	else {
		parent.document.getElementById('toggleChat').rows='*, ' + chatHeight + '';
	}
}

function setChatHeight(v) {

	chatHeight = chatHeight - -v;
	parent.document.getElementById('toggleChat').rows='*, ' + chatHeight + '';
	
	setTimeout('toggleMenu(!wide);', 0);
}


