	var style_InputErrorColor = "pink";
	var style_InputNormalColor = "#d8c58b";
	
	
	
	function submitGeneralEmail(formObjId)
	{
		var frmObj = document.getElementById(formObjId);
		var isFormDataValid = false;
		var errors = 0;
		var errMsg = "";
		
		var Subject = "";
		var Name = "";
		var Cell = "";
		var Email = "";
		var Message = "";
		
		Subject = frmObj.footerForm_subject.options[frmObj.footerForm_subject.selectedIndex].value;
		//var e = document.getElementById("ddlViewBy");
		//var strUser = frmObj.footerForm_subject.options[frmObj.footerForm_subject.selectedIndex].value;

		Name = frmObj.footerForm_name.value;
		Cell = frmObj.footerForm_cell.value;
		Email = frmObj.footerForm_email.value;
		Message = frmObj.footerForm_Body.value;
		
		if(!checkRequiredTextField(Subject))
		{
			errors++;
			errMsg = errMsg + "No subject chosen\n";
		}
		
		if(!checkRequiredTextField(Name))
		{
			errors++;
			errMsg = errMsg + "No name given\n";
		}
		
		if(!checkRequiredTextField(Email))
		{
			errors++;
			errMsg = errMsg + "No email address given\n";
		}else{
			if(!isValidEmail(Email))
			{
				errors++;
				errMsg = errMsg + "Email address is not valid\n";
			}
		}
		
		if(!checkRequiredTextField(Message))
		{
			errors++;
			errMsg = errMsg + "Please type a message\n";
		}
		
		if(errors == 0){
			isFormDataValid = true;
		}
		
		if(isFormDataValid)
		{
			frmObj.submit();
		}else{
			frmObj.submit();
			// alert(errMsg);
		}
	}
////////////////////////////////////////
// Basket related JS
//////////////////////////////////////////
	
	function validateBasketFormNonAccountHolder()
	{
		var ErrorList = "";
		formObj = document.getElementById('basketform');
		errorMsgObj = document.getElementById("formErrors");
		numErrors = 0;
		formValid = false;
		acceptedTS = false;
		
		// If Terms and Conditions have not been accepted, stop everything else;
		if(!isBasketTSAccepted(formObj.reg_acceptedTS))
		{
			numErrors += 1;
			ErrorList += "<li>Terms and Conditions - Not checked</li>";
			setStyleByBrowser(formObj.reg_acceptedTS, "background-color", style_InputErrorColor);
		}else{
			setStyleByBrowser(formObj.reg_acceptedTS, "background-color", style_InputNormalColor);
		}
		
		// First name is required
		formObj.f_fname.value = trimStr(formObj.f_fname.value);
		if(!checkRequiredTextField(formObj.f_fname.value))
		{
			numErrors += 1;
			ErrorList += "<li>First name - Missing</li>";
			setStyleByBrowser(formObj.f_fname, "background-color", style_InputErrorColor);
		}else{
			setStyleByBrowser(formObj.f_fname, "background-color", style_InputNormalColor);
		}
		
		// Surname is required
		formObj.f_surname.value = trimStr(formObj.f_surname.value);
		if(!checkRequiredTextField(formObj.f_surname.value))
		{
			numErrors += 1;
			ErrorList += "<li>Surname - Missing</li>";
			setStyleByBrowser(formObj.f_surname, "background-color", style_InputErrorColor);
		}else{
			setStyleByBrowser(formObj.f_surname, "background-color", style_InputNormalColor);
		}
		
		// Email 1 is required
		formObj.f_email1.value = trimStr(formObj.f_email1.value);
		if(!checkRequiredTextField(formObj.f_email1.value))
		{
			numErrors += 1;
			ErrorList += "<li>Email address - Missing</li>";
			setStyleByBrowser(formObj.f_email1, "background-color", style_InputErrorColor);
		}else{
			setStyleByBrowser(formObj.f_email1, "background-color", style_InputNormalColor);
		}
		
		// Email 2 is required
		formObj.f_email2.value = trimStr(formObj.f_email2.value);
		if(!checkRequiredTextField(formObj.f_email2.value))
		{
			numErrors += 1;
			ErrorList += "<li>Email address confirmation - Missing</li>";
			setStyleByBrowser(formObj.f_email2, "background-color", style_InputErrorColor);
		}else{
			setStyleByBrowser(formObj.f_email2, "background-color", style_InputNormalColor);
		}
		
		// Values have been provided for both emails, now check if 
		// (a) They are email addresses and
		// (b) if they match.
		var email1 = trimStr(formObj.f_email1.value);
		var email2= trimStr(formObj.f_email2.value);
		
		if((email1.length != 0) && (email2.length != 0))
		{
			var email1IsValid = false;
			var email2IsValid = false;
	
			email1IsValid = isValidEmail(formObj.f_email1.value);
			email2IsValid = isValidEmail(formObj.f_email2.value);

			if(!email1IsValid)
			{
				numErrors += 1;
				ErrorList += "<li>Invalid email address</li>";
				setStyleByBrowser(formObj.f_email1, "background-color", style_InputErrorColor);
			}

			if(!email2IsValid)
			{
				numErrors += 1;
				ErrorList += "<li>Invalid email address confirmation</li>";
				setStyleByBrowser(formObj.f_email2, "background-color", style_InputErrorColor);
			}

			if(email1IsValid && email2IsValid)
			{
				if(formObj.f_email1.value != formObj.f_email2.value)
				{
					numErrors += 1;
					ErrorList += "<li>Email addresses do not match.</li>";
					setStyleByBrowser(formObj.f_email1, "background-color", style_InputErrorColor);
					setStyleByBrowser(formObj.f_email2, "background-color", style_InputErrorColor);
				}
			}
		}
		
		// Home tel is required
		formObj.f_hometel.value = trimStr(formObj.f_hometel.value);
		if(!checkRequiredTextField(formObj.f_hometel.value))
		{
			numErrors += 1;
			ErrorList += "<li>Home telephone - Missing</li>";
			setStyleByBrowser(formObj.f_hometel, "background-color", style_InputErrorColor);
		}else{
			setStyleByBrowser(formObj.f_hometel, "background-color", style_InputNormalColor);
		}
		
		// Home tel is required
		formObj.f_add1.value = trimStr(formObj.f_add1.value);
		if(!checkRequiredTextField(formObj.f_add1.value))
		{
			numErrors += 1;
			ErrorList += "<li>Address line 1 - Missing</li>";
			setStyleByBrowser(formObj.f_add1, "background-color", style_InputErrorColor);
		}else{
			setStyleByBrowser(formObj.f_add1, "background-color", style_InputNormalColor);
		}
		
		// City is required
		formObj.f_city.value = trimStr(formObj.f_city.value);
		if(!checkRequiredTextField(formObj.f_city.value))
		{
			numErrors += 1;
			ErrorList += "<li>City - Missing</li>";
			setStyleByBrowser(formObj.f_city, "background-color", style_InputErrorColor);
		}else{
			setStyleByBrowser(formObj.f_city, "background-color", style_InputNormalColor);
		}
		
		// Home tel is required
		formObj.f_postalcode.value = trimStr(formObj.f_postalcode.value);
		if(!checkRequiredTextField(formObj.f_postalcode.value))
		{
			numErrors += 1;
			ErrorList += "<li>Postal code - Missing</li>";
			setStyleByBrowser(formObj.f_postalcode, "background-color", style_InputErrorColor);
		}else{
			setStyleByBrowser(formObj.f_postalcode, "background-color", style_InputNormalColor);
		}
		
		// Home tel is required
		formObj.f_country.value = trimStr(formObj.f_country.value);
		if(!checkRequiredTextField(formObj.f_country.value))
		{
			numErrors += 1;
			ErrorList += "<li>Country - Missing</li>";
			setStyleByBrowser(formObj.f_country, "background-color", style_InputErrorColor);
		}else{
			setStyleByBrowser(formObj.f_country, "background-color", style_InputNormalColor);
		}
		
		errorMsgObj.innerHTML = "Order form form errors:<br><br>"; // Reset the error message header
		errorMsgObj.innerHTML = errorMsgObj.innerHTML + '<UL class="errorList">' + ErrorList + '</ul>';
		setStyleByBrowser(errorMsgObj, "margin", "30px;");
		/****************************************************************************************
		 * If the form data is valid submit it, else display the error messages
		 ****************************************************************************************/
		 
		if(numErrors == 0)
		{
			// Form is valid, submit it
			if(ForceUpdate==false)
			{
				formObj.submit();
			}else{
				alert('The quantities have changed, please click the Update Quantities before proceeding with your order.');
			}
		}else{
			// Not valid, don't submit it and display the error messages
			setStyleByBrowser(errorMsgObj, "visibility", "visible");
			setStyleByBrowser(errorMsgObj, "margin-left", "20px");
			setStyleByBrowser(errorMsgObj, "margin-right", "20px");
			setStyleByBrowser(errorMsgObj, "margin-bottom", "10px");
			setStyleByBrowser(errorMsgObj, "margin-top", "-5px");
		}
	}
	
	function prepVarBasket()
	{
		formObj = document.getElementById('basketform');
		errorMsgObj = document.getElementById("formErrors");
		
		errorMsgObj.innerHTML = "";
		
		setStyleByBrowser(errorMsgObj, "visibility", "hidden"); // Hide the error message box
		//setStyleByBrowser(document.getElementById("formErrors"), "margin", "0px");
	}
	
	function isBasketTSAccepted(TSObject)
	{
		if(TSObject.checked)
    		return true;
		else
    		return false;
	}
				
	function validateBasketForm()
	{
		var boolAcceptedTS = false;
		boolAcceptedTS = isBasketTSAccepted(document.getElementById('reg_acceptedTS'));
		
		orderNumberGiven = false;
		var OrderNum = document.getElementById('ordernumber').value;
		
		if(OrderNum != "")
		{
			orderNumberGiven = true;
		}
		
		if(boolAcceptedTS && orderNumberGiven)
		{
			document.forms[0].submit();
		}else{
			if(!boolAcceptedTS && orderNumberGiven)
			{
				alert("Please indicate you have read and accept the Terms and Conditions.");
			}
			
			if(boolAcceptedTS && !orderNumberGiven)
			{
				alert("Please provide an order number");
			}
			
			if(!boolAcceptedTS && !orderNumberGiven)
			{
				alert("Please provide an order number and indicate you have read and accept the Terms and Conditions.");
			}
		}
	}
////////////////////////////////////////////////////////////////////////////////////
	
	function OpenTSWindow()
	{
		OpenWindow('SupplyTS.html','STerms',500,600,'no','no','no','no','no','yes','yes');
	}
	
	function OpenReturnsWindow()
	{
		OpenWindow('SupplyReturns.html','SReturns',500,600,'no','no','no','no','no','yes','yes');
	}
	
	function OpenWindow(targetFile, winName, width, height, toolbar, menubar, status, location, resizeable, scrollbars, titlebar)
	{
		jsWin = window.open(targetFile ,winName,'width='+width+',height='+height+',toolbar='+toolbar+',menubar='+menubar+',status='+status+',location='+location+',resizeable='+resizeable+',scrollbars='+scrollbars+',titlebar='+titlebar);
		// jsWin.document.write('http://john-virtualbox/supply/public_html/' + targetFile);
		jsWin.focus();
	}
	
	function OpenDisclaimerWindow()
	{
		OpenWindow('SupplyDisclaimer.html','SReturns',500,600,'no','no','no','no','no','yes','yes');
	}
	
	function OpenPrivWindow()
	{
		OpenWindow('Privacy.htm','SReturns',500,600,'no','no','no','no','no','yes','yes');
	}
	
	// Change an elements style atttribute. Browser based.
	// Yet again we are forced to do things the non standard way for Internet Explorer
	function setStyleByBrowser(object, attribute, value)
	{
		
		var appNameBrowser = navigator.appName;
	    var appType = "";
	    
	    if(appNameBrowser == "Netscape")
	    {appType="netscape";}else{appType="ie";}
	    
		var IEStyleData = "";
		
		if(appType=="netscape")
		{
			object.style.setProperty(attribute, value, "");
		}else{
			IEStyleData = attribute + ':' + value + ';';
			object.style.setAttribute('cssText', IEStyleData);
		}
	}

	

	/****************************************************************************************
	 * Generic functions
	 ****************************************************************************************/
	
	// Remove whitespace from left and right hand sides
	function trimStr(inStr)
	{
		var strInternal = new String(inStr);
		var retStr = "";

		retStr = strInternal.replace(/^\s+|\s+$/g, '');
		return retStr;
	}

	// Accept only numeric characters
	function isNumericOnly(inStr)
	{
		var field = inStr;
		
		var filter = /[^0-9]/ 
		
		if (field.match(filter))
		{	// Return FALSE if anything other than digits is matched
			return false;
		}else{
			return true;
		}
	}

	// Check if string is a valid email address
	function isValidEmail(inStr)
	{
		var email = inStr;
		
		var filter = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ 
		
		if (!email.match(filter))
		{
			return false;
		}else{
			return true;
		}
	}
	
	function checkRequiredTextField(inStr)
	{
		if(inStr.length >= 1)
		{
			return true;
		}else{
			return false;
		}
	}
