/* Form validation and highlighter script copyright Alexis Shirtliff
 * http://www.sliff.co.uk
 * This script may not be re-used in any way without written permission
 * of the author
 */

	var eText = "The following fields were not correctly filled in\n\n";
	var eHTML = "<h4>The following fields were not correctly filled in</h4>";
	var isError = false;
  
	function checkForm(form) {
	    if (!form) return;
		if (!document.getElementsByTagName) {
			// Basically use the old form validator
		 	return validateQuote(form);
		} else {
			eText = "The following fields were not correctly filled in\n\n";
			eHTML = "<h4>The following fields were not correctly filled in</h4>";
			isError = false;
			fields = document.getElementsByTagName("input");
			for (i=0;i<fields.length;i++) {
				thisF = fields[i];
				if (((' '+thisF.className+' ').indexOf("verifytext") != -1) && (thisF.id)) {
					// Run some verification!
					checkRequiredText(thisF);
				}
				if (((' '+thisF.className+' ').indexOf("verifyint") != -1) && (thisF.id)) {
					// Run some verification!
					checkRequiredInt(thisF);
				}
				if (((' '+thisF.className+' ').indexOf("verifydbl") != -1) && (thisF.id)) {
					// Run some verification!
					checkRequiredDbl(thisF);
				}
			}
			var shipping = document.getElementById("Shipping");
			if (shipping.value == "CandF Sea Freight" || shipping.value == "CIF Sea Freight") {
				var port = document.getElementById('port');
				if (port.value=="") {
					isError = true;
					port.className = "verifytext badinput";
					eText += port.title + " must be given as you have selected C&amp;F or CIF Sea Freight.\n";
					eHTML += "<p>" + port.title + " must be given as you have selected C&amp;F or CIF Sea Freight.</p>";
				}
			}
			//Shipping == "CandF Sea Freight" || Shipping == "CIF Sea Freight" && port==""
			if (isError) {
				if (document.getElementById) {
					error_box = document.getElementById('form_errors');
					error_box.className = "failed";
					error_box.innerHTML = eHTML;
				} else {
					alert(eText);
				}
				return false;
			} else {
				if (document.getElementById) {
					error_box = document.getElementById('form_errors');
					error_box.className = "failed nonvisible";
					error_box.innerHTML = '';
				}
				return true;
			}
		}
	}
	
	function checkRequiredText(fieldRef) {
		if (fieldRef.value=='') {
			isError = true;
			fieldRef.className = "verifytext badinput";
			eText += fieldRef.title + " must have a value entered.\n";
			eHTML += "<p>" + fieldRef.title + " must have a value entered.</p>";
		}
	}
	
	function checkRequiredInt(fieldRef) {
		var f = fieldRef.value;
		if (f=='') {
			isError = true;
			fieldRef.className = "verifyint badinput";
			eText += fieldRef.title + " must have a value entered.\n";
			eHTML += "<p>" + fieldRef.title + " must have a value entered.</p>";
		} else if (isNaN(f)) {
			isError = true;
			fieldRef.className = "verifyint badinput";
			eText += fieldRef.title + " must be a numeric value.\n";
			eHTML += "<p>" + fieldRef.title + " must be a numeric value.</p>";
		} else {
			decTest		= 	f.split(".");
			if (decTest.length>1)
			{
				isError = true;
				fieldRef.className = "verifyint badinput";
				eText += fieldRef.title + " must be a whole number.\n";
				eHTML += "<p>" + fieldRef.title + " must be a whole number.</p>";
			}
		}
	}
	
	function checkRequiredDbl(fieldRef) {
		var f = fieldRef.value;
		if (f=='') {
			isError = true;
			fieldRef.className = "verifydbl badinput";
			eText += fieldRef.title + " must have a value entered.\n";
			eHTML += "<p>" + fieldRef.title + " must have a value entered.</p>";
		} else if (isNaN(f)) {
			isError = true;
			fieldRef.className = "verifydbl badinput";
			eText += fieldRef.title + " must be a numeric value.\n";
			eHTML += "<p>" + fieldRef.title + " must be a numeric value.</p>";
		}
	}
	
	function validateQuote(thisForm)
	{
		// Declare and initialise form variables
		var fn			= 	thisForm.FirstName.value;
		var sn			=	thisForm.LastName.value;
		var comnm		=	thisForm.Organization.value;
		var phone		=	thisForm.Phone.value;
		var eml			=	thisForm.Email.value;
		var cnt			=	thisForm.Country.value;
		var qty			=	thisForm.quantity.value;
		var volt		=	thisForm.voltage.value;
		var kva			=	thisForm.kva.value;
		var sCou		=	thisForm.country_for_shipping.value;
		var sr			=	thisForm.Shipping.value;
		var port		=	thisForm.port.value;
		var decTest;
	
		// Declare and initialise error variables
		var isError		=	false;
		var eText		=	"The following fields were not completed.\n";
		eText			+=	"To submit your quote request please complete them.\n\n";
	
		// Do standard check for blanks
		if (fn=="")
		{
			isError 	=	true;
			eText		+=	"First Name\n";
		}
	
		if (sn=="")
		{
			isError 	=	true;
			eText		+=	"Last Name\n";
		}
	
		if (comnm=="")
		{
			isError 	=	true;
			eText		+=	"Organization\n";
		}
	
		if (phone=="")
		{
			isError 	=	true;
			eText		+=	"Phone Number\n";
		}
	
		if (eml=="")
		{
			isError 	=	true;
			eText		+=	"Email address\n";
		}
	
		if (cnt=="")
		{
			isError 	=	true;
			eText		+=	"Country\n";
		}
	
		if (qty=="")
		{
			isError 	=	true;
			eText		+=	"Quantity\n";
		}
		else if (isNaN(qty))
		{
			isError 	= 	true;
			eText		+=  "Quantity must be a whole number\n";
		}
		else // Do test to ensure qty is an integer
		{
			decTest		= 	qty.split(".");
			if (decTest.length>1)
			{
				isError	= true;
				eText	+= "Quantity must be a whole number\n";
			}
		}
	
		if (volt=="")
		{
			isError 	=	true;
			eText		+=	"Voltage\n";
		}
		else if (isNaN(volt))
		{
			isError 	= 	true;
			eText		+=  "Voltage must be a whole number\n";
		}
		else // Do test to ensure qty is an integer
		{
			decTest		= 	volt.split(".");
			if (decTest.length>1)
			{
				isError	= true;
				eText	+= "Voltage must be a whole number\n";
			}
		}
	
		if (kva=="")
		{
			isError 	=	true;
			eText		+=	"KVA\n";
		}
		else if (isNaN(kva))
		{
			isError 	= 	true;
			eText		+=  "KVA must be a whole number\n";
		}
	
		if (sCou=="")
		{
			isError 	=	true;
			eText		+=	"Country of Final Destination\n";
		}
	
		if ((sr=="CandF Sea Freight" || sr=="CIF Sea Freight") && port=="")
		{
			isError 	=	true;
			eText		+=	"Port\n";
		}
	
		// If error has been found return accumulated error message 
		// and then stop form from submitting
		if (isError)
		{
			alert(eText);
			return false;
		}
	}
