/*
* File: 		ajax.js
* Author: 		Matt Skelton
* Company: 		Broda Seating LTD.
* Date:		December 18, 2008	: Created
*			December 18, 2008 	: Updated
* Description:	This file contains mutliple functions/methods that assist in Ajax implementations of the seatingisbelieving.com website.
* License:		You are free to use any code within this file as you see fit, as long as you include the header of this file. Cheers!
*/

/*
* Validates the Contest form and displays results back to user.
*/
function validateForm(form, validationUrl)
{
	// Get an xmlHttp object
	var xmlHttp = getTransport();
	
	if (xmlHttp == null)
	{
		return;
	}
		
	xmlHttp.open("POST", validationUrl, false);
	
	var fields = "";

	for (i = 0; i < form.elements.length; i++)
	{
		switch (form.elements[i].type)
		{
			case 'text':
			case 'password':
			case 'textarea':
				fields += "&" + form.elements[i].name + "=" + form.elements[i].value;

				break;

			case 'select-one':

				fields += "&" + form.elements[i].name + "=" + form.elements[i].options[form.elements[i].selectedIndex].value;

				break;

			case 'radio':
			case 'checkbox':

				if (form.elements[i].checked)
				{
					fields += "&" + form.elements[i].name + "=" + form.elements[i].value;
				}
				
				break;
		}
		
		form.elements[i].style.borderColor = "";
		form.elements[i].style.borderWidth = "";
	}

	xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded' );
	xmlHttp.setRequestHeader('Content-length', fields.length );
	xmlHttp.send(fields);

	var errorLabel 				= document.getElementById("errorLabel");
	errorLabel.style.display 	= "none";
		
	if (xmlHttp.responseText != "")
	{
		var listOfErrors 	= xmlHttp.responseText.split("\n");		// Get a list of error messages
		var errorMetaData 	= listOfErrors[0].split("|"); 			// Just the 1st error message
		var id 				= errorMetaData[0];						// Grab the id of the error
		var errorMessage 	= errorMetaData[1];						// Grab the message of the error
		var element 		= document.getElementById(id);			// Find the matching HTML input element
		
		if (element)
		{
			element.focus(); 							// Focus on form element
			element.style.borderColor 	= "#ff6600"; 	// Change form element's border color to #ff6600 (orange)
			element.style.borderWidth 	= "2px"; 		// Change form element's border width to 2px (thicker)
			
			var elementPosition 		= findPos(element);
			errorLabel.innerHTML 		= errorMessage;
			errorLabel.style.left 		= elementPosition[0] + element.offsetWidth + 20 + "px";
			errorLabel.style.top 		= elementPosition[1] + "px";
			errorLabel.style.width		= errorMessage.length * 7 + "px";
			errorLabel.style.position 	= "absolute";
			errorLabel.style.display 	= "block";
		}
		
		return false;
	}
	else
	{
		return true;
	}
}

function findPos(obj)
{
	var curleft = curtop = 0;

	if (obj.offsetParent)
	{
		do
		{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
		while (obj = obj.offsetParent);

		return [curleft,curtop];
	}
}