
var divsArray = null;
var leaguesArray = null;
var userInfoArray = null;

var currentBrowser = null;
var browserVersion = null;

var browserIE = "IE";
var browserNetscape = "Netscape";
var browserNA = "NA";

var sessionid = null;
var username = null;
var autologingid = null;
var userid = null;
var playerid = null;
var fid = null;
var suid = null;
var loginMode = 0;

var testMode = false;

var pageCallbacks = new Array();
var subCallbacks = new Array();

var eventTypeUnload = 1;
var eventTypeLogin = 2;
var eventTypeLogout = 3;

var loading = false;
var lastCmd = null;

function trace( text)
{
	if ( testMode)
	{
  	document.getElementById("traceDivId").innerHTML += text + "<br>";
	}
}

function testAlert( text)
{
	if ( testMode)
	{
		alert( text);
	}
}

function showTime( timestamp)
{
	var d = new Date( timestamp);
	return "Time: " + d.toLocaleString();
}


function onLoadMain()
{

	if ( location.search == "?test")
	{
		testMode = true;
	} 
	
	
  browserInfo();
  createXmlHttp();
  createMenus(); 
  

 	checkCookies();
 	checkSession();
  
  var menuSelected = false;
  
  createInfoBox();
  
/*  if ( navigator.cookieEnabled )
  {
  	var cookiestr = getCookie("ra_address");
  	trace( cookiestr.length);
  	trace( cookiestr);
  	if ( cookiestr.length )
  	{
  		goToMenu( cookiestr);
  		menuSelected = true;
  	}  	
  }*/
  
  if ( (location.search.length == 0 || location.search == "?test") && !menuSelected)
  {
      goToMenu( "mainpage"); 
  } else
  {
    str = location.search.substr( 1).replace("=", "#");
    goToMenu( str);   
  }    
     
}

function goToMenu( menu)
{
  var result = menu.split( /#/); 
  
  var cmd = result[0];
  
  var param1 = null;
	var param2 = null;
	var param3 = null;
	
  if ( result.length > 1 && result[1] != "null")
  {
  		param1 = result[1];
  }

  if ( result.length > 2 && result[2] != "null")
  {
  	param2 = result[2];
  }

  if ( result.length > 3 && result[3] != "null")
  {
  	param3 = result[3];
  }
  
  goToMenuP( cmd, param1, param2, param3);
}

function loadingActive( status)
{
	
	var div = document.getElementById("loadingNote");
	div.style.left = 45 + "%";	

	if ( status)
	{
		div.style.visibility = "visible";
		loading = true;
	} else
	{
		div.style.visibility = "hidden";
		loading = false;
	}
}

function goToMenuP( cmd, param1, param2, param3)
{
	loadingActive( true);
  var container = document.getElementById("contentDiv");
  
  if ( cmd != lastCmd )
  {
  	publishEvent( eventTypeUnload);
  }
  
  pageCallbacks = new Array();
  
//  trace("cmd: " + cmd);
//  trace("p1: " + param1);
//  trace("p2: " + param2);
//  trace("p3: " + param3);
  
  lastCmd = cmd;
  
/*  if ( navigator.cookieEnabled )
  {
  	var cookiestr = cmd + "#" + param1 + "#" + param2 + "#" + param3;
  	setCookie( "ra_address", cookiestr, null);
  }*/
  
  if ( cmd == "subloadurl")
  {
    xmlHttpRequest( param1, "", 0);
    container.innerHTML = xmlHttp.responseText;
   	loadingActive( false);
		return;
  }
  
  if ( cmd == "mainpage")
  {
     mainPage(); 
	 	 loadingActive( false);
		 return;
 	} 
    
	if ( cmd == "players")
  {	
    	showPlayersPanel( param1);
   		loadingActive( false);
			return;
  }
    
  if ( cmd == "report")
  {    
    loadGameReport( param1);
    loadingActive( false);
		return;
  }
  
  if ( cmd == "statistic")
  {    
    showStatisticView();
    loadingActive( false);
		return;
  }  
  
  if ( cmd == "finance")
  {
  	if ( username )
  	{
  		loadFinance( "main", username);
  	} else
  	{
  		goToMenuP( "mainpage", null, null, null);
  	}
  	
  	loadingActive( false);
  	return;
  }
  
  if ( cmd == "games")
  {
  	//league, div
  	games( param1, param2);	
	 	loadingActive( false);
	 	return;
  }
  
  if ( cmd == "gamesMain")
  {
  	gamesMain();
  	loadingActive( false);
  	return;
  }
  
  if ( cmd == "league")
  {
  	leagueStandings( param1, param2);
		loadingActive( false);
  	return;
  }
  
  if ( cmd == "results")
  {
		gameResults( param1, param2);
		loadingActive( false);
		return;
	}
  
  if ( cmd == "invStatTab")
  {
  	invStat( param1, param2);
  }

  
  if ( cmd == "link")
  {
  	location.href = "http://" + param1;
  }
  
	loadingActive( false);
}


function goToSub( subMenu)
{
	for ( var i = 0; i < subCallbacks.length; i++)
	{
		subCallbacks[i]( eventTypeUnload);
	}
  subMenuCallbacks = new Array();
	
	if ( subMenu == "preComment")
	{
		createPreCommentTab();
	}

	if ( subMenu == "commentTab")
	{
		createCommentTab();
	}

	if ( subMenu == "preStat")
	{
		preGameStat();
	}
}

function getLeagueName( id)
{
	if ( leaguesArray == null )
	{
  	loadLeaguesAndDivs();
  }
  
  var retVa = "";
  for ( var i = 0; i < leaguesArray.length; i++)
  {
  	if ( id == leaguesArray[i].id)
  	{
  		retVal = leaguesArray[i].name;
  		break;
  	}		
  }

  return retVal; 
}

function getTeamName( id)
{
  return "ToDoT:" + id; 
}

function getDivName( id)
{
	if ( divsArray == null )
	{
  	loadLeaguesAndDivs();
  }
  
  var retVal = "";
  for ( var i = 0; i < divsArray.length; i++)
  {  	
  	if ( id == divsArray[i].id)
  	{
  		retVal = divsArray[i].name;
  		break;
  	}		
  }
	
	return retVal;
}

function getUserName( uid)
{
	if ( !userInfoArray)
	{
		userInfoArray = new Array();
		
	  var params = "rid=getUserData";

  	xmlHttpRequest( "common/server/getters.php", params, 0);
//	  testAlert( xmlHttp.responseText);    
  	var xml = xmlParser( xmlHttp.responseText);    
  
  	var userdataarray = xml.getElementsByTagName("userdata");
 
  	for ( var i = 0; i < userdataarray.length; i++)
  	{
  		var userdata = userdataarray[i];
  		var obj = new Object();
  		obj.id = userdata.attributes.getNamedItem("userid").nodeValue;
  		obj.name = userdata.attributes.getNamedItem("username").nodeValue; 
  		
  		var node = userdata.attributes.getNamedItem("playerid")
  		if ( node )
  		{
  			obj.playerid = node.nodeValue;
  		} else
  		{
  			obj.playerid = "";
  		}
  		userInfoArray.push( obj);
  	}
  }
  		
  var retVal = "";
  for ( var i = 0; i < userInfoArray.length; i++)
  {  	
  	if ( uid == userInfoArray[i].id)
  	{
  		retVal = userInfoArray[i].name;
  		break;
  	}		
  }
	
	return retVal;	
}

function loadLeaguesAndDivs()
{
	leaguesArray = new Array();
	divsArray = new Array();
	
	
  var params = "rid=getLeaguesAndDivs";

  xmlHttpRequest( "common/server/getters.php", params, 0);
  //testAlert( xmlHttp.responseText);    
  var xml = xmlParser( xmlHttp.responseText);    
  
  var leagues = xml.getElementsByTagName("league");
 
  for ( var i = 0; i < leagues.length; i++)
  {
  	var league = leagues[i];
  	var obj = new Object();
  	obj.id = league.attributes.getNamedItem("id").nodeValue;
  	obj.name = league.attributes.getNamedItem("name").nodeValue; 
  	
  	leaguesArray.push( obj);
  	
  	var divs = league.getElementsByTagName("div"); 
  	
  	for ( var a = 0; a < divs.length; a++)
  	{
  		var div = leagues[i];
  		var obj = new Object();
  		obj.id = div.attributes.getNamedItem("id").nodeValue;
	  	obj.name = div.attributes.getNamedItem("name").nodeValue; 
	  	divsArray.push( obj);
  	}
  }
}

function removeChilds( element)
{
  while ( element.childNodes.length )
  {
    element.removeChild( element.childNodes[0]); 
  } 	
}

function browserInfo()
{
	if ( navigator.appName == "Netscape" )
	{
		currentBrowser = browserNetscape;
		browserVersion = parseFloat( navigator.appVersion);
	} else
	{
		if ( navigator.appName == "Microsoft Internet Explorer")
		{
			currentBrowser = browserIE;

			var patt1=new RegExp("MSIE\\s\\d");
			var patt2=new RegExp("\\d");

			var res = patt1.exec( navigator.appVersion);
			browserVersion = parseFloat( patt2.exec( res));
		} else
		{
			currentBrowser = browserNA;
			browserVersion = 0;
		}
	}
}

function registerPageCallback( callback)
{
	pageCallbacks.push( callback);
}

function registerSubCallback( callback)
{
	subCallbacks.push( callback);
}

function publishEvent( eventType)
{
	for ( var i = 0; i < pageCallbacks.length; i++)
	{
		pageCallbacks[i]( eventType);
	}
	for ( var i = 0; i < subCallbacks.length; i++)
	{
		subCallbacks[i]( eventType);
	}
}

function checkSession()
{
	if ( sessionid && suid )
	{
		//check session
		var params = "rid=checkSession";
  	params += "&sid=" + sessionid;
  	params += "&userid=" + suid;

  	xmlHttpRequest( "common/server/sessions.php", params, 0);
	
  	//alert( xmlHttp.responseText);
  	var xml = xmlParser( xmlHttp.responseText);    	
  	checkSessionResponse( xml);
 
	}	
	loginMenu();
}

function checkCookies()
{
	sessionid = getCookie( "phpbb2mysql_sid");
	
//	trace(  sessionid.substr(0, 10));
	
	var sessioninfo = getCookie( "phpbb2mysql_data");
	var patt = /"\w*"/g;
	var patt1 = new RegExp(/\w+/);

	var res = sessioninfo.match( patt);
	
	if ( res )	
	{
		for ( var i = 0; i < res.length; i++)
		{
			if ( "autologingid" ==  patt1.exec( res[i]))
			{
				i++;
				autologingid = patt1.exec( res[i]);
			}
			if ( "userid" ==  patt1.exec( res[i]))
			{
				i++;
				suid = patt1.exec( res[i]);
			}
		}
	} else
	{
		autologingid = null;
		suid = null;
	}
}

function checkSessionResponse( xml)
{
  var sessions = xml.getElementsByTagName("session");

  if ( sessions.length == 1)
  {
  	var session = sessions[0];
  	sessionid = session.attributes.getNamedItem("sessionid").nodeValue;
  	userid = session.attributes.getNamedItem("userid").nodeValue;
  	username = session.attributes.getNamedItem("username").nodeValue;
  	
  	var node = session.attributes.getNamedItem("player");
  	if ( node)
  	{
  		playerid = node.nodeValue;
  	} else
  	{
  		playerid = null;
  	}

  	var node = session.attributes.getNamedItem("fid");
  	if ( node)
  	{
  		fid = node.nodeValue;
  	} else
  	{
  		fid = null;
  	}
  	
  	loginMode = 2;
  	publishEvent( eventTypeLogin);
  } else
 	{
  	sessionid = null;
		userid = null;
		username = null; 	
		playerid = null;
		fid = null;
		loginMode = 0;
		publishEvent( eventTypeLogout);
	}	
	
	checkPrivateMenu();
}

function loginClicked()
{
	checkCookies();
	
	var uname = document.getElementById("userNameInputId").value;
	var password = document.getElementById("passwordInputId").value;
	
	var params = "rid=login";
	params += "&username=" + uname;
	params += "&password=" + password;
	
	
	if ( sessionid && suid)
	{
		if ( suid)
		{
			checkSession();
			if ( userid )
			{
				loginMenu();
				return;
			}
		} else
		{
			params += "&sessionid=" + sessionid;
		}
	}
	
  xmlHttpRequest( "common/server/sessions.php", params, 0);
  //testAlert( xmlHttp.responseText);

  var xml = xmlParser( xmlHttp.responseText);    	
  checkSessionResponse( xml);

	if ( !userid )
	{
		alert("Väärä käyttäjätunnus tai salasana!");
	} else
	{
		setCookie( "phpbb2mysql_sid", sessionid, null);
		
		var idstr = String( userid);
		var info = "a:2:{s:11:\"autologinid\";s:0:\"\";s:6:\"userid\";s:" +idstr.length + ":\"" + userid + "\";}";
		setCookie( "phpbb2mysql_data", info, 31536000);

	}
	
	loginMenu(); 
  createInfoBox();
}

function logoutClicked()
{
	var params = "rid=logout";
	params += "sid=" + sessionid;

  xmlHttpRequest( "common/server/sessions.php", params, 0);

	setCookie( "phpbb2mysql_sid", '', -31536000);
	setCookie( "phpbb2mysql_data", '', -31536000);
	
 	sessionid = null;
	userid = null;
	username = null; 	
	playerid = null;
	fid = null;
	loginMode = 0;
	
	loginMenu(); 
	publishEvent( eventTypeLogout);
	
	createInfoBox();	
	checkPrivateMenu();
}

