//Create a HTTP Request var
var HRObject = false;

var username=readCookie('FORMSESSION');

if (username != null && username != "")
{
	window.onload = validateForm;
}

//Get an HTTPRequest Object depending on browser
if(window.XMLHttpRequest)
{
	HRObject = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
	HRObject = new ActiveXObject("Microsoft.XMLHTTP");
}

//Function to get the return from the server
function getData()
{
	if((HRObject.readyState == 4) && (HRObject.status == 200))
	{
		//Get the return XML
		var XMLReturn = HRObject.responseXML;
		//Pass the xml to be handled
		handleWarnings(XMLReturn);	
	}
}
//Function to output the warnings to the correct fields
function handleWarnings(XMLDoc)
{
	var valid = 1;
	var warnings = XMLDoc.getElementsByTagName('warning');
	for(i=0; i < warnings.length; i++)
	{
		var warningMessage = warnings[i];
		var warnAttrs = warningMessage.attributes;
		var location = warnAttrs.getNamedItem('id').nodeValue;
		var warnSpot = document.getElementById(location);
		if(warnSpot)
		{
			if(warningMessage.firstChild != null)
			{
				valid = 0;
				warnSpot.innerHTML = warningMessage.firstChild.nodeValue;
				warnSpot.style.display = "block";
			}
			else
			{
				warnSpot.innerHTML = "";
				warnSpot.style.display = "none";
			}			
		}
	}
	if(valid == 1)
	{
		return true;
	}
	return false;
}
function datagram(formName)
{
	this.formName = formName;
	this.parameters = "formId=" + encodeURIComponent(formName);
}
datagram.prototype.formName;
datagram.prototype.parameters;
datagram.prototype.addParameter = function(paramName, paramValue)
{
	if(paramName != "")
	{
		this.parameters += '&' + paramName + '=' + encodeURIComponent(paramValue);
	}
}
datagram.prototype.getMessage = function()
{
	return this.parameters;
}
/**
Validate a field.
**/
function validate(field, includeAll)
{
	includeAll = typeof(includeAll) != 'undefined' ? includeAll : false;
	var requestData = new datagram(field.form.name);
	
	//var error = document.getElementById("errorBox");
	if(includeAll)
	{
		//error.innerHTML = "Including all";
		var form = field.form;
		for(var i = 0; i < form.length; i++)
		{
			requestData.addParameter(form.elements[i].id, form.elements[i].value);
		}
			
	}
	else
	{
		//error.innerHTML = "Include one";
		requestData.addParameter(field.id, field.value);
	}
	HRObject.open("POST", "/formRequests/validateRequest.php", true);
	HRObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	HRObject.onreadystatechange = getData;
	HRObject.send(requestData.getMessage());
	waitingForReply = true;
}
function validateForm(form)
{	
	var requestData = new datagram(form.name);
	for(var i = 0; i < form.length; i++)
	{
		if(form.elements[i].id == "submit" || form.elements[i].id == "formId")
			continue;
		requestData.addParameter(form.elements[i].id, form.elements[i].value);
	}
	HRObject.open("POST", "/formRequests/validateRequest.php", false);
	HRObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	HRObject.send(requestData.getMessage());
	if((HRObject.readyState == 4) && (HRObject.status == 200))
	{
		//Get the return XML
		var XMLReturn = HRObject.responseXML;
		//Pass the xml to be handled
		return handleWarnings(XMLReturn);	
	}
	return true;
}
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;
}
function errorOut(error)
{
	var element = document.getElementById("errorBox");
	element.innerHTML += error;
	
}