/*	GLOBAL VALUES */
httpReq = null;


/*	javascript version of the $_SESSION['Authenticated'] array */
function serverSession()
{
	//proterties
	this.PlayerId;
	this.Points;
	this.Name;
	this.reset();
}
serverSession.prototype.reset = function()
{
	this.PlayerId=null;
	this.Points=null;
	this.Name=null;
}
serverSession.prototype.serverInit = function(id,point,name)
{
	this.PlayerId=id;
	this.Points=point;
	this.Name=name;
}
serverSession.prototype.isLoggedIn = function()
{
	if (this.PlayerId && this.Points && this.Name)
		return(true);
	else
		return(false);
}

function isRegistered()
{
	if (!session.isLoggedIn() )
	{
		alert( "You have not completed your registration.\nYou will not recieve credit for completing this promotion unless you complete the registration process here.");
		return(false);
	}
	return( true );
}
/* instantiate the serverSession class */
session = new serverSession();


function TopLogoff()
{
	// Logging off in some screens makes no sence as you must be logged in to view them
	// check that the user realy wants to do this from those screens
	var p = window.location.pathname;
	p = p.substr(1);
	p = p.substr(0,p.indexOf('.'));
	switch (p) {
	case 'register3':
	case 'my-account':
	case 'store-checkout':
		var answer = confirm("This screen can only be viewed by a logged on Player.\nIf you confirm that you want to be logged off you will be transfered to the home page!\nPress OK to logoff and CANCEL to remain logged on.");
		if (!answer) { return; }
		break;
	
	default:
		// no refresh required so do the login bar relayout from here
		completeTopBarLogoff();
		break;
	}
	session.reset();
	httpReq = getNewHTTPObject();
	if (httpReq==null)
	{
		alert ("Browser does not support HTTP Request");
		return(false);
	}
	
	var strFunctionCall = generateURL( "/logoff.html" );
	
    httpReq.open('POST', strFunctionCall, true);
    httpReq.onreadystatechange = handle_Logoff;
	httpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    httpReq.send();
	return;	
}

function handle_Logoff()
{
    if (httpReq.readyState == 4)
	{ 
		// some screens require a refresh from server
		var p = window.location.pathname;
		p = p.substr(1);
		p = p.substr(0,p.indexOf('.'));
		switch (p) 
		{
		case 'store':
		case 'store_item':
		case 'register3':
		case 'my-account':
		case 'store-checkout':
			window.location.reload(true);	
			break;
		}
	}
	return;
}

function completeTopBarLogoff()
{
	var loginDiv = document.getElementById('loginBar');
	if (loginDiv)
	{
		loginDiv.innerHTML = 
			'<div id="login_form">' +
			'<div class="lfInner">' +
			'<form method="post" action="" onsubmit="TopLogin(); return false;">' +
			'<fieldset>' +
			'<label for="top_uname">Username:</label>' +
			'<input type="text" id="top_uname" name="top_uname" value="" />' +
			'<label for="top_password">Password:</label>' +
			'<input type="password" id="top_password" name="top_password" value="" />' +
			'<label for="rememberme">Remember Me</label><input name="rememberme" type="checkbox" id="rememberme" value="no"/>' +
			'<input type="image" class="topLogin" src="images/login_button.gif" value="login" />' +
			'<a href="forgot-password.html">Forgot your password?</a>' +
			'<a href="register.html"><img class="image" src="images/login_here.jpg" alt="Login or register" /></a>' +
			'</fieldset></form></div></div>';
	}
}

function completeTopBarLogin(strResponse)
{
	var params = strResponse.split("&&");
	
	session.PlayerId = params[1];
	session.Points = params[2];
	session.Name = params[3];
	
	var loginDiv = document.getElementById('loginBar');
	if (loginDiv)
	{
		loginDiv.innerHTML = 
		'<div id="login_form"><div class="lfInner">'+
		'<form method="post" action="" onsubmit="TopLogoff(); return false;">'+
		'<fieldset><div class="box"><div class="welcome">Welcome back ' + session.Name + '</div>' +
		'<div class="points">You have ' + session.Points + ' points saved</div>' +
		'</div><div class="box1"><div class="acc"><a href="my-account.html" >My Account</a></div>'+
		'</div><div class="box2">'+
		'<div class="button"><input type="image" class="topLogoff" src="images/logoff_button.gif" value="logoff" /></div>'+
		'</div></fieldset></form></div></div>';
	}
	return;	
}

loginErrorMsg = "Please enter a Username and a Password in order to logon.\nRemember your Username is case sensitive!";
unexpectedErrorMsg = "An unexpected error was returned from the server. Please wait 30 seconds and try again!";

function TopLogin()
{
	var userName = document.getElementById('top_uname');
	var passWord = document.getElementById('top_password');
	
	if ( userName.value == '' || passWord.value == '' )
	{
		alert(loginErrorMsg);
		return(false);
	}
	
	httpReq = getNewHTTPObject();
	if (httpReq==null)
	{
		alert ("Browser does not support HTTP Request");
		return(false);
	}
	
	var strFunctionCall = generateURL( "/ajax/login.php" );
	
	var param = 'a=' + escape(userName.value) + '&';
		param += 'b=' + escape(passWord.value);

    httpReq.open('POST', strFunctionCall, true);
    httpReq.onreadystatechange = handle_Login;
	httpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    httpReq.send(param);
	return;	
}

function handle_Login()
{
    if (httpReq.readyState == 4)
	{ 
		var strResponse = httpReq.responseText;
		if (strResponse.substring(0,2) != '00')
		{	// we have some sort of error and cannot depend upon the message being formatted as we expect, it could be a compile error even
			if (strResponse.substring(0,2) == '-1' || strResponse.substring(0,2) == '-2')
			{
				alert(loginErrorMsg);
				return;
			}
			alert(unexpectedErrorMsg);
			return;
		}

		var p = window.location.pathname;
		p = p.substr(1);
		p = p.substr(0,p.indexOf('.'));

		switch (p)
		{
		case 'store':
		case 'store_item':
		case 'register':
			window.location.reload(true);
			break;
		
		default:
			completeTopBarLogin(strResponse);
			break;
		}
	}
}

function ppLoginUser()
{
	httpReq = getNewHTTPObject();
	if (httpReq==null)
	{
		alert ("Browser does not support HTTP Request. I am afraid you cannot use this web site with this browser.");
		return;
	} 

	var username 	= document.getElementById("login_uname");
	var pwd		 	= document.getElementById("login_password");
	
	var param = 'a=' + escape(username.value) + '&';
		param += 'b=' + escape(pwd.value);

	var strFunctionCall = generateURL( "/ajax/login.php" );
    httpReq.open('POST', strFunctionCall, true);
    httpReq.onreadystatechange = handle_ppLoginUser;
	httpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    httpReq.send(param);
	return;
}

function handle_ppLoginUser()
{

	if (httpReq.readyState==4) 
	{ 
		var strResponse = httpReq.responseText;

		if (strResponse.substring(0,2) != '00')
		{
			if (strResponse.substring(0,2) == '-1' || strResponse.substring(0,2) == '-2') 
			{
				var objError = document.getElementById("login");
				if (objError)
				{
					setParentInError( objError, "Incorrect Username or password please re-enter. Remember your Username is case sensitive." );
					return;
				}
			}
			// promo already registered
			if (strResponse.substring(0,2) == '-3')
			{
				var param = strResponse.split('&&');
				alert( param[1] );
				location.replace('register.html');
				return;				
			}
			alert( unexpectedErrorMsg );
			return
		}
		
		var objError = document.getElementById("login");
		clearParentInError( objError );
		
		var RegBox = document.getElementById("RegisterPromoBox");
		var LoginBox = document.getElementById("LoginFormBox");
		if (LoginBox != null)
				LoginBox.style.display = 'none';	
		if (RegBox != null)
				RegBox.style.display = 'block';	

		completeTopBarLogin(strResponse);
		document.getElementById("promo_name").focus();
	}
}