/**** Common variables ****/

/**** Common utility functions ****/

var oldClass = "";  // Used in highlightRow(), below

/*
 * 
 */
function setBackground()
{
	var bg = readCookie("pelteretBG");
	if (bg != null)
	{
		document.getElementsByTagName("body")[0].className = bg;		
	}
}

/*
 * 
 */
function changeBackground()
{
	var bg = "";
	
	if (document.getElementsByTagName("body")[0].className == "background0")
	{
		bg = "background1";
	}
	else
	{
		bg = "background0";
	}
	
	document.getElementsByTagName("body")[0].className = bg;
	
	createCookie("pelteretBG", bg, 14)
	
	//var n = Math.round(2 * Math.random());
	//document.getElementsByTagName("body")[0].className = "background" + n;
	//n = Math.round(Math.random());
	//document.getElementById("headerImage").src = "images/header_" + n + ".jpg";
}

/*
 * Does nothing. Used to create "blank" links (e.g. for anchor tags)
 */
function doNothing()
{
	return;
}

/*
 * Show or hide a form and it's special heading
 */
function showHideForm(formID)
{
	var formObj = document.getElementById(formID + "Form");
	var formExp = document.getElementById(formID + "Exp");
	
	if (formObj.className == "")
	{
		formExp.innerHTML = "+";
		formObj.className = "hide";
	}
	else
	{
		formExp.innerHTML = "&ndash;";
		formObj.className = "";
	}
}

/*
 * Changes an HTML element to reflect a particular message
 * Meant for <span> or <td> elements
 */
function setMsg(elementID, msg, type)
{
	var msgElement = document.getElementById(elementID);
	msgElement.innerHTML = msg;
	
	if (type == "error")
	{
		msgElement.className = "msgError";
	}
	else if (type == "ok")
	{
		msgElement.className = "msgOK";
	}
}

/*
 * Strips a string of its leading and trailing whitespace
 */
function stripWS(string)
{
	return string.replace(/^\s+|\s+$/g, "");
}

/*
 * Highlights a table's row as the mouse is hovered over it.
 * Also used to "un-highlight" the row
 */
function highlightRow(element, revert)
{
	if (!revert)
	{
		oldClass = element.className;
		element.className = "highlight";
	}
	else
	{
		element.className = oldClass;
	}
}

/*
 * Gets the data from a form and constructs a URL-encoded string.
 * This method is a customised version of YUI's setForm() (found in connection.js)
 */
function getFormData(formID)
{
	var element, name, value, disabled, formData = "";
	
	var formObject = document.getElementById(formID);
	
	for (var i = 0; i < formObject.elements.length; i++)
	{
		element = formObject.elements[i];
		disabled = formObject.elements[i].disabled;
		name = formObject.elements[i].name;
		value = formObject.elements[i].value;

		// Do not submit fields that are disabled or
		// do not have a name attribute value.
		if(!disabled && name)
		{
			switch(element.type)
			{
				case undefined:
					// stub case for fieldset element which returns undefined.
				case 'reset':
					// stub case for input type reset button.
				case 'button':
					// stub case for input type button elements.
					break;
				case "checkbox":
					if(element.checked)
					{
						formData += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
					}
					else
					{
						formData += encodeURIComponent(name) + '=' + '0&';
					}
					break;
				
				default:
					formData += encodeURIComponent(name) + '=' + encodeURIComponent(stripWS(value)) + '&';
			}
		}
	}
	
	formData = formData.substr(0, formData.length - 1);
		
	return formData;
}


/****  Cookie functions  ****/
// Obtained from http://www.quirksmode.org/js/cookies.html

/*
 * Creates a cookie
 */
function createCookie(name,value,days)
{
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

/*
 * Reads the data from a cookie with a given cookie
 */
function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

/*
 * Deletes a particular cookie
 */
function eraseCookie(name)
{
	createCookie(name,"",-1);
}


/****  Log in/out functions  ****/

/*
 * Checks whether the user is logged in
 * If not, they are re-directed to the log in page;
 * if they are, a "logged in" status message is set
 */
function checkLogin()
{
	if (readCookie("cellshopLogin") == null || readCookie("cellshopUserID") == null)
	{
		window.location = "index.html";
	}
	else
	{
		document.getElementById("userLogin").innerHTML = "Logged in as <span id='userLoginName'>" + readCookie("cellshopLogin") + "</span> - <a href='javascript: logOut();'>Log Out</a>";
	}
}

/*
 * Logs the user out and returns them to the log in page
 */
function logOut()
{
	// Call server log out
	request = YAHOO.util.Connect.asyncRequest('GET', proxyGET + "user/User_Logout?UserId=" + getUserID(), null);
	eraseCookie("cellshopLogin");
	eraseCookie("cellshopUserID");
	window.location = "index.html";
}

/*
 * Reads and returns the user's system ID, which is stored in a cookie when they log in
 */
function getUserID()
{
	return readCookie("cellshopUserID");
}
