// Functions to validate the form

function trim(inputString) {
	// Removes leading and trailing spaces from the passed string. Also removes
	// consecutive spaces and replaces it with one space. If something besides
	// a string is passed in (null, custom object, etc.) then return the input.
	if (typeof inputString != "string"){ 
		return inputString;
	}
	var retValue = inputString;
	var ch = retValue.substring(0, 1);
	while (ch == " "){ // Check for spaces at the beginning of the string
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
	}
	ch = retValue.substring(retValue.length-1, retValue.length);
	while (ch == " "){ // Check for spaces at the end of the string
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}
	while (retValue.indexOf("  ") != -1){ // Note that there are two spaces in the string - look for multiple spaces within the string
		retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
	}
	return retValue; // Return the trimmed string back to the user
}

// Form Element Validation

function validateForm(thevalue, thename){
	var proceed = true;                       
    var contactId;
	var tvalue = trim(thevalue);                    // value of field with whitespace trimmed off
	var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
	// Find out which for is being submitted and set all error messages blank
	if (document.getElementById("formId").value == "1"){
		contactId = "genContact";
		document.getElementById("errfname").innerHTML = "";
		document.getElementById("errlname").innerHTML = "";
		document.getElementById("erremail").innerHTML = "";
		document.getElementById("errquestions").innerHTML = "";
	} else if (document.getElementById("formId").value == "2"){
		contactId = "quoContact";
		document.getElementById("errfname").innerHTML = "";
		document.getElementById("errlname").innerHTML = "";
		document.getElementById("erremail").innerHTML = "";
		document.getElementById("errvyear").innerHTML = "";
		document.getElementById("errvmake").innerHTML = "";
		document.getElementById("errvmodel").innerHTML = "";
		document.getElementById("erraddInfo").innerHTML = "";
	}
	
	// Begin validation
	if (thename == "fname"){
		if (tvalue == ""){
			document.getElementById("errfname").innerHTML = "Please enter your First Name.";
			document.getElementById(contactId).fname.focus();
			proceed = false;
		}
	}
	if (proceed == true){
		if (thename == "lname"){
			if (tvalue == ""){
				document.getElementById("errlname").innerHTML = "Please enter your Last Name.";
				document.getElementById(contactId).lname.focus();
				proceed = false;
			}
		}
	}
	if (proceed == true){
		if (thename == "email"){
			if (tvalue == ""){
				document.getElementById("erremail").innerHTML = "Please enter your Email Address.";
				document.getElementById(contactId).email.focus();
				proceed = false;
			} else if (proceed == true){
				if (!emailFilter.test(tvalue) || tvalue.match(illegalChars)) {
					document.getElementById("erremail").innerHTML = "Please enter a valid Email Address.";
					document.getElementById(contactId).email.focus();
					proceed = false;
				}
			}
		}
	}
	if (proceed == true){
		if (thename == "vyear"){
			if (tvalue == ""){
				document.getElementById("errvyear").innerHTML = "Please enter the vehicle year.";
				document.getElementById(contactId).vmake.focus();
				proceed = false;
			}
		}
	}
	if (proceed == true){
		if (thename == "vmake"){
			if (tvalue == ""){
				document.getElementById("errvmake").innerHTML = "Please enter the vehicle make.";
				document.getElementById(contactId).vmake.focus();
				proceed = false;
			}
		}
	}
	if (proceed == true){
		if (thename == "vmodel"){
			if (tvalue == ""){
				document.getElementById("errvmodel").innerHTML = "Please enter the vehicle model.";
				document.getElementById(contactId).vmodel.focus();
				proceed = false;
			}
		}
	}
	if (proceed == true){
		if (thename == "questions"){
			if (tvalue == ""){
				document.getElementById("errquestions").innerHTML = "Please enter your Questions.";
				document.getElementById(contactId).questions.focus();
				proceed = false;
			}
		}
	}
	if (proceed == true){
		if (thename == "addInfo"){
			if (tvalue == "" && document.getElementById("ptint").checked){
				document.getElementById("erraddInfo").innerHTML = "Please tell us which windows you want tinted.";
				document.getElementById(contactId).addInfo.focus();
				proceed = false;
			} else {
				tvalue;
			}
		}
	}
	return proceed;
}


var aok; // needs to be global

// Functions to submit a form

function getFormValues(fobj, valFunc) {

	var str = "";
	aok = true;
	var val;

	// Run through a list of objects contained in the form
	for (var i = 0; i < fobj.elements.length; i++) {
		if (fobj.elements[i].type != "checkbox" || (fobj.elements[i].type == "checkbox" && fobj.elements[i].checked)){		
			if (valFunc) {
				if (aok == true) {
					val = valFunc (fobj.elements[i].value, fobj.elements[i].name);
					if (val == false) {
						aok = false;
					}
				}
			}
			str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
		} else {
			str += fobj.elements[i].name + "=&";
		}
	}
	return str;
}

function submitForm(theForm, dataSource, objId, valFunc) {
	var file = dataSource;
	var str = getFormValues(theForm, valFunc);
	//if the validation is ok
	if (aok == true) {
		obj = document.getElementById(objId);
		processajax(dataSource, obj, "POST", str);
	}
}
