// Cherry Huffman Contact Form 
// JavaScript Document


//
// Form Validation
//
var W3CDOM = (document.getElementsByTagName && document.createElement);

function formValidation() 
{
	document.forms[0].onsubmit = function () 
	{
		return validate()
	}
}

function validate()
{
	validForm = true;
	firstError = null;
	errorstring = '';
	var ok = true;
	var text = " ";
	var errormessage = " ";
	var x = document.forms[0].elements;
	var sorry = '<span class="h2">Sorry, your message could not be sent!<br />Please correct the following errors:<\/span>';


	// makes sure every field is filled
	/*
	if( !x[i].value )
	{
	    if( ok )
		{
			document.getElementById('warning').innerHTML = sorry;
			ok = false;
		}
		writeError(x['firstname'],'Required field');
		text = document.getElementById('warning').innerHTML;
	    errormessage = text + "<br />*All fileds must be filled out";
		document.getElementById('warning').innerHTML = errormessage;
	}
	*/
	
	// check individual fields
	if( !x['Ecom_BillTo_Postal_Name_First'].value )
	{
	    if( ok )
		{
			document.getElementById('warning').innerHTML = sorry;
			ok = false;
		}
		writeError(x['Ecom_BillTo_Postal_Name_First'],'Required field');
		errormessage = document.getElementById('warning').innerHTML + "<br />*Full Name is required";
		document.getElementById('warning').innerHTML = errormessage;
	}
	
	if( !x['Ecom_BillTo_Online_Email'].value )
	{
	    if( ok )
		{
			document.getElementById('warning').innerHTML = sorry;
			ok = false;
		}
		writeError(x['Ecom_BillTo_Online_Email'],'Required field');
		errormessage = document.getElementById('warning').innerHTML + "<br />*Email Address is required";
		document.getElementById('warning').innerHTML = errormessage;
	}
	else if( x['Ecom_BillTo_Online_Email'].value.indexOf('@') < 1 || x['Ecom_BillTo_Online_Email'].value.indexOf('.') < 3 )
	{
	    if( ok )
		{
			document.getElementById('warning').innerHTML = sorry;
			ok = false;
		}
		writeError(x['Ecom_BillTo_Online_Email'],'Invalid field');
	    errormessage = document.getElementById('warning').innerHTML + "<br />*Email Address is invalid";
		document.getElementById('warning').innerHTML = errormessage;
	}
	else if( x['Ecom_BillTo_Online_Email'].value.length < 6 )
	{
	    if( ok )
		{
			document.getElementById('warning').innerHTML = sorry;
			ok = false;
		}
		writeError(x['Ecom_BillTo_Online_Email'],'Invalid field');
	    errormessage = document.getElementById('warning').innerHTML + "<br />*Email Address is invalid";
		document.getElementById('warning').innerHTML = errormessage;
	}
	
	if( !x['Ecom_BillTo_Telecom_Phone_Number_1'].value && !x['Ecom_BillTo_Telecom_Phone_Number_2'].value && !x['Ecom_BillTo_Telecom_Phone_Number_3'].value )
	{
	    // not required
	}
	else if( !x['Ecom_BillTo_Telecom_Phone_Number_1'].value || !x['Ecom_BillTo_Telecom_Phone_Number_2'].value || !x['Ecom_BillTo_Telecom_Phone_Number_3'].value )
	{
	    if( ok )
		{
			document.getElementById('warning').innerHTML = sorry;
			ok = false;
		}
		writeError(x['Ecom_BillTo_Telecom_Phone_Number_3'],'Incomplete field');
		errormessage = document.getElementById('warning').innerHTML + "<br />*Phone Number with Area Code is not a 10-digit number";
		document.getElementById('warning').innerHTML = errormessage;
	}
	else if( x['Ecom_BillTo_Telecom_Phone_Number_1'].value.length < 3 || x['Ecom_BillTo_Telecom_Phone_Number_2'].value.length < 3 || x['Ecom_BillTo_Telecom_Phone_Number_3'].value.length < 4 )
	{
	    if( ok )
		{
			document.getElementById('warning').innerHTML = sorry;
			ok = false;
		}
		writeError(x['Ecom_BillTo_Telecom_Phone_Number_3'],'Incomplete field');
		errormessage = document.getElementById('warning').innerHTML + "<br />*Phone Number with Area Code is not a 10-digit number";
		document.getElementById('warning').innerHTML = errormessage;
	}
	else if( parseInt(x['Ecom_BillTo_Telecom_Phone_Number_1'].value)!=x['Ecom_BillTo_Telecom_Phone_Number_1'].value-0 || parseInt(x['Ecom_BillTo_Telecom_Phone_Number_2'].value)!=x['Ecom_BillTo_Telecom_Phone_Number_2'].value-0 || parseInt(x['Ecom_BillTo_Telecom_Phone_Number_3'].value)!=x['Ecom_BillTo_Telecom_Phone_Number_3'].value-0 )
	{
	    if( ok )
		{
			document.getElementById('warning').innerHTML = sorry;
			ok = false;
		}
		writeError(x['Ecom_BillTo_Telecom_Phone_Number_3'],'Incomplete field');
		errormessage = document.getElementById('warning').innerHTML + "<br />*Phone Number with Area Code is not a 10-digit number";
		document.getElementById('warning').innerHTML = errormessage;
	}
	
	if( !x['comments'].value )
	{
	    if( ok )
		{
			document.getElementById('warning').innerHTML = sorry;
			ok = false;
		}
		writeError(x['comments'],'Required field');
		errormessage = document.getElementById('warning').innerHTML + "<br />*Email Message is required";
		document.getElementById('warning').innerHTML = errormessage;
	}
	
	if( !W3CDOM )    alert( errormessage );
	if( firstError ) firstError.focus();
	if( validForm )
	{
		document.getElementById('warning').className = 'green';
		document.getElementById('warning').innerHTML = '<span class="h2">Thank You.<\/span>';
	}
	return validForm;
}

function writeError(obj,message)
{
	validForm = false;
	if (obj.hasError) return;
	if (W3CDOM)
	{
	    
		obj.className += ' error';
		obj.onchange = removeError;
		var sp = document.createElement('span');
		sp.className = 'error';
		// prints error next to field
		/*
		sp.appendChild(document.createTextNode(message));
		obj.parentNode.appendChild(sp);
		*/
		obj.hasError = sp;
	}
	else
	{
		errorstring += obj.name + ': ' + message + '\n';
		obj.hasError = true;
	}
	if (!firstError)
		firstError = obj;
}

function removeError()
{
	this.className = this.className.substring(0,this.className.lastIndexOf(' '));
	this.parentNode.removeChild(this.hasError);
	this.hasError = null;
	this.onchange = null;
}


//
// AUTO TABBING
//
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
var keyCode = (isNN) ? e.which : e.keyCode; 
var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
if(input.value.length >= len && !containsElement(filter,keyCode)) {
input.value = input.value.slice(0, len);
input.form[(getIndex(input)+1) % input.form.length].focus();
}
function containsElement(arr, ele) {
var found = false, index = 0;
while(!found && index < arr.length)
if(arr[index] == ele)
found = true;
else
index++;
return found;
}
function getIndex(input) {
var index = -1, i = 0, found = false;
while (i < input.form.length && index == -1)
if (input.form[i] == input)index = i;
else i++;
return index;
}
return true;
}
