
////////////////////////////////////////////////////////////////////////////////
// User Login Functions
////////////////////////////////////////////////////////////////////////////////

// This function will update the cookies, this is called by the onLoad method
// of the HTML Body tags for all pages.
function updateCookies()
{
	var user  = getCurrentUser();
	var group = getCurrentGroup();
	
	if (user != "")
	{
		var today = new Date();
		today.setTime( today.getTime() + 1800000 );
		
		document.cookie = 	'oro_user=' + user + '; expires=' + 
							today.toGMTString() + '; path=/';
							
		document.cookie = 	'oro_group=' + group + '; expires=' 
							+ today.toGMTString() + '; path=/';
	}
	else
	{
		drawLoginContainer("");
		drawMenu();
	}
}

// This function utilises AJAX to send the data from the login form to the login
// php script. The script will update the login area and set a cookie.
function login()
{
	getXMLObject();

	if (xmlHttp)
	{
		var username = document.getElementById("username").value;
		var password = document.getElementById("password").value;
	
		if (username == "")
		{
			alert("Please enter a valid username");
			return;
		}
			
		if (password == "")
		{
			alert("Please enter a valid password");
			return;
		}
		
		var parameters = "type=login&username=" + username + "&password=" + password;

		xmlHttp.open("POST","users.php",true);
		xmlHttp.onreadystatechange  = handleLoginResponse;
		xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');	
		xmlHttp.send(parameters);
	}
}

// This function removes the cookie for the user, hence 'logging off', it then
// will call the drawLoginContainer function to update that...
function logoff()
{
	document.cookie = 'oro_user=dead; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/';
	document.cookie = 'oro_group=dead; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/';
	
	drawLoginContainer("");
	drawMenu();
}

function activate_users()
{
	getXMLObject();

	if (xmlHttp)
	{
		var parameters = "type=activateUsers";
		var form = document.activate_form;
		
		if (typeof( form.user.length ) != "undefined")
		{
			for ( var i=0; i < form.user.length; i++ )
			{
				if ( form.user[i].checked )
				{
					parameters = parameters + "&user" + i + "=" + form.user[i].value;
				}
			}
		}
		else if ((typeof(form.user) != "undefined") && (form.user.checked))
		{
			parameters = parameters + "&user0=" + form.user.value;
		}
		
		if ( parameters == "type=activateUsers" )
		{
			document.getElementById("message_div").innerHTML = "Please select at least one user to activate";
		}
		else
		{	
			xmlHttp.open("POST","users.php",true);
			xmlHttp.onreadystatechange = handleActivateResponse;
			xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');	
			xmlHttp.send(parameters);
		}
	}
	
	return false;
}

function changePass()
{
	var username = getCurrentUser();
	if (username == "")
		return;

	getXMLObject();

	if (xmlHttp)
	{
		var old_pass = document.getElementById("oldPass").value;
		var new_pass = document.getElementById("newPass").value;
	
		if (old_pass == "")
		{
			alert("Please enter your current password");
			return;
		}
			
		if (new_pass == "")
		{
			alert("Please enter a new password");
			return;
		}
		
		var parameters = "type=changePass&username=" + username + "&oldPass=" + old_pass + "&newPass=" + new_pass;
		
		xmlHttp.open("POST","users.php",true);
		xmlHttp.onreadystatechange = handleChangePassResponse;
		xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');	
		xmlHttp.send(parameters);
	}
}

function recoverPass()
{
	getXMLObject();
	
	if (xmlHttp)
	{
		var user = document.getElementById("user").value;
		
		if (user == "")
		{
			alert("Please enter a Username or Email Address");
			return;
		}
		
		var parameters = "type=recoverPass&user=" + user;
		
		
		xmlHttp.open("POST","users.php",true);
		xmlHttp.onreadystatechange = handleRecoverPassResponse;
		xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');	
		xmlHttp.send(parameters);
	}	
}

function getCurrentUser()
{
	var cookie_user = "oro_user=";
	var cookie_data = "";
	
	var ca = document.cookie.split(';');
	for (var i = 0; i < ca.length; i++)
	{
		var cookie = ca[i];
		
		while (cookie.charAt(0) == ' ')
			cookie = cookie.substring(1, cookie.length);
			
		if (cookie.indexOf(cookie_user) == 0)
		{
			cookie_data = cookie.substring(cookie_user.length, cookie.length);
			cookie_data = cookie_data.replace("+", " ");
		}
	}
	
	return cookie_data;
}

function getCurrentGroup()
{
	var cookie_type = "oro_group=";
	var cookie_data = "";
	
	var ca = document.cookie.split(';');
	for (var i = 0; i < ca.length; i++)
	{
		var cookie = ca[i];
		
		while (cookie.charAt(0) == ' ')
			cookie = cookie.substring(1, cookie.length);
			
		if (cookie.indexOf(cookie_type) == 0)
		{
			cookie_data = cookie.substring(cookie_type.length, cookie.length);
		}
	}
	
	return cookie_data;
}

////////////////////////////////////////////////////////////////////////////////
//	Functions for the standings/results stuff
////////////////////////////////////////////////////////////////////////////////

// Functions for the ajax-esque hack for the admin page/csv upload
function postResults()
{
  document.getElementById('loading').style.display = 'inline';
  return;
}

////////////////////////////////////////////////////////////////////////////////
// General Page Functions 
////////////////////////////////////////////////////////////////////////////////

// Function to 'hack' the size/position of the page, called using the 'onload' 
// event
function setPageSize()
{
	var page_width;
	var margin;
	
	var header_height;
	var outer_height;
	var main_height;
	
	if ( typeof( window.innerWidth ) != 'undefined' )
	{
		outer_height = window.innerHeight;
		page_width = window.innerWidth;
	}
	else if (( typeof( document.documentElement ) != 'undefined' ) &&
			 ( typeof( document.documentElement.clientWidth ) != 'undefined' ) &&
			 ( document.documentElement.clientWidth != 0 ))
	{
		outer_height = document.documentElement.clientHeight;
		page_width = document.documentElement.clientWidth;
	}
	else
	{
		outer_height = document.getElementsByTagName('body')[0].clientHeight;
		page_width = document.getElementsByTagName('body')[0].clientWidth;
	}	
	
	// Work out the left-margin of the page, if there is one...
	if (page_width > 964)
	{
		margin=(page_width - 964) / 2;
		document.getElementById("outer_container").style.marginLeft=margin + "px";
	}
		
	// Work out the height of the main element
	header_height=document.getElementById("header_container").offsetHeight;
	footer_height=document.getElementById("footer_container").offsetHeight;
	
	var page_height = outer_height - header_height - footer_height - 15;
	page_height = page_height + '';
	
	document.getElementById("main_container").style.height = page_height + 'px';
}

// Function to fill out the login container of the oro header, this looks at the
// status of any cookie before drawing either a welcome message or login form.

function drawLoginContainer(message)
{
	// Fix in case the page is refreshed
	if (message == "")
	{
		if (getCurrentUser() != "")
			message = "pass";			
	}

	if (message == "pass")
	{
		var username = getCurrentUser();
		
		var welcome_html = 	"<font id=\"welcome_text\">Welcome, " + username + "</font><br />" +
							"<a target=\"main_frame\" href=\"settings.html\">Settings</a><br />" + 
							"<a href=\"javascript:logoff()\">Log Off</a>";
							
		document.getElementById("login_container").innerHTML = welcome_html;
	}
	else
	{
		var form_html = "<form name=\"LOGIN\">" +
						"<label class=\"login\">Username:</label> <input type=\"text\" name=\"username\" id=\"username\" size=\"12\" />" + 
						 "<a href=\"javascript:registerUser();\" id=\"register\">Register/Recover Password</a>" +
						"<font id=\"error_text\">" + message + "</font><br />" +				
						"<label class=\"login\">Password:</label> <input type=\"password\" name=\"password\" id=\"password\" size=\"12\" />" +						
						"<input type=\"button\" onClick='login();' value=\"Login\"/>"
						"</form>";
						
		var login_box = document.getElementById("login_container");
		login_box.innerHTML = form_html;
	}
}

function drawMenu()
{
	var menu = document.getElementById("menu");
	var group = getCurrentGroup();
	
	var menu_html = "<ul id=\"menu_list\" class=\"element\">" +
					"<li><a href=\"javascript:drawNewsPage();\">News</a></li>" +
					"<li><a href=\"javascript:drawInfoPage();\">Info</a></li>" +
					"<li><a href=\"javascript:drawSchedulePage();\">Schedule</a></li>" +
					"<li><a href=\"javascript:drawStandingsPage();\">Standings</a></li>";
					
	if( (group == "admin") || (group == "driver") )
		menu_html = menu_html + "<li><a href=\"javascript:drawRacePassPage();\">Password</a></li>";
					
	if (group == "admin")
		menu_html = menu_html + "<li><a href=\"javascript:drawAdminPage();\">Admin Panel</a></li>";

	menu.innerHTML = menu_html + "</ul>";
}

function drawHome()
{
	drawingHome = true;
	drawTop5();
}

////////////////////////////////////////////////////////////////////////////////
// Functions for the news page
////////////////////////////////////////////////////////////////////////////////

function getNewsPage() 
{
	if (xmlHttp.readyState == 4) 
	{
		if(xmlHttp.status == 200) 
		{
				n_page = "<div id=\"news_page\">" + xmlHttp.responseText + "</div>";
				
				frame = document.getElementById("main_container");
				frame.innerHTML = n_page;
		}
		else 
		{
			alert("Error during AJAX call. Please try again");
		}
	}
}

function drawNewsPage()
{
	getXMLObject();

	if (xmlHttp)
	{
		xmlHttp.open("POST","news.php",true);
		xmlHttp.onreadystatechange  = getNewsPage;
		xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');	
		xmlHttp.send();
	}
}
