	//===============================================
	//==== Variables used in form check routines ====
	//===============================================
	var whitespace = " \t\n\r";
	//================================================================================
	//=== Remove whitespace characters and check whether remaining string is empty ===
	//=== If string null or empty return false; else if non-whitespace character   ===
	//=== return true; else no non-whitespace characters found - return false      ===
	//================================================================================
	function isStringFilled(s) {
	var i;
		if ((s == null) || (s.length == 0)) return false;
		for (i = 0; i < s.length; i++) {
			var c = s.charAt(i);
			if (whitespace.indexOf(c) == -1) return true;			
		}
		return false;
	}
		
	//====================================
	//=== Is entry a positive integer? ===
	//====================================
	function isPosInteger (n) {
		if (!isStringFilled(n)) return false;
		for (var i = 0; i < n.length; i++) {
			if (n.charAt(i) < "0" || n.charAt(i) > "9") return false;
		}
		return true;
	}
	
	// ===================================
	// ==== Email valid format checker ===
	// ===================================
	function allLegalEmailChars(n, s, g) {
	//Test for illegal characters in parts of email address
		var allParts = n + s + g;
		if (allParts.indexOf(" ") >= 0) return false;
		if (allParts.indexOf(",") >= 0) return false;
		if (allParts.indexOf("?") >= 0) return false;
		if (allParts.indexOf("/") >= 0) return false;
		if (allParts.indexOf("@") >= 0) return false;
		if (allParts.indexOf("\\") >= 0) return false;
		if (allParts.indexOf("..") >= 0) return false;
		if (allParts.indexOf("'") >= 0) return false;
		if (s.lastIndexOf(".") == s.length-1) return false;
		return true;
	}
	function isEmail(s) {
		var iAt = s.indexOf("@");
		var pAt = s.lastIndexOf(".");
		if (iAt < 1) return false;
		if ((pAt < iAt + 2) || (pAt > s.length - 2)) return false;
		var name = s.substring(0,iAt);
		var server = s.substring(iAt+1,pAt);
		var group = s.substring(pAt+1,s.length);
		return allLegalEmailChars(name, server, group); 
	}

	//=====================================
	//=== Is entry a valid US zip code? ===
	//=====================================
	function isUSZipCode(s) {
		var front, sep, back;
		switch(s.length) {
			case 5:
			case 9:
				return isPosInteger(s);
				break;
			case 10:
				front = isPosInteger(s.substring(0,5));
				sep = (s.substring(5,6) == "-");
				back = isPosInteger(s.substring(6,10));
				return (front && sep && back);			
			default:
				return false;
		}
		return true;
	}

	//======================================
	//=== Is entry a US telephone number ===
	//======================================
	function isUSPhoneNo(s) {
		var area, reg, num, sep1, sep2, sep3;
		switch(s.length) {
			case 7:		// xxxxxxx
			case 10:		// xxxxxxxxxx
				return isPosInteger(s);
				break;
			case 8:		// xxx-xxxx or xxx.xxxx
				reg = isPosInteger(s.substring(0,3));
				sep1 = (s.substring(3,4) == "-" || s.substring(3,4) == ".");
				num = isPosInteger(s.substring(4,8));
				return (reg && sep1 && num);
				break;
			case 12:		// xxx-xxx-xxxx or xxx xxx-xxxx or xxx.xxx.xxxx or xxx xxx.xxxx
				area = isPosInteger(s.substring(0,3));
				sep1 = (s.substring(3,4) == "-" || s.substring(3,4) == ".");
				reg = isPosInteger(s.substring(4,7));
				sep2 = (s.substring(7,8) == "-" || s.substring(7,8) == ".");
				num = isPosInteger(s.substring(8,12));
				return (area && sep1 && reg && sep2 && num); 
			case 13:		// (xxx)xxx-xxxx
				sep1 = (s.substring(0,1) == "(");
				area = isPosInteger(s.substring(1,4));
				sep2 = (s.substring(4,5) == ")");
				reg = isPosInteger(s.substring(5,8));
				sep3 = (s.substring(8,9) == "-" || s.substring(8,9) == ".");
				num = isPosInteger(s.substring(9,13));
				return (sep1 && area && sep2 && reg && sep3 && num); 
			case 14:		// (xxx) xxx-xxxx
				sep1 = (s.substring(0,1) == "(");
				area = isPosInteger(s.substring(1,4));
				sep2 = (s.substring(4,6) == ") ");
				reg = isPosInteger(s.substring(6,9));
				sep3 = (s.substring(9,10) == "-" || s.substring(9,10) == ".");
				num = isPosInteger(s.substring(10,14));
				return (sep1 && area && sep2 && reg && sep3 && num); 
			default:
				return false;
		}
		return true;
	}

	function checkForm(t) {
		var errMsg = "";
		var errColor = "#F4E1D5";
		var okColor = "#FFFFFF";
		t.action = "";

		if(!isStringFilled(t.coname.value)) {
			if (errMsg.length == 0) t.coname.focus();
			errMsg = errMsg + "\n    Company Name";
			t.coname.style.background = errColor;
		} else { t.coname.style.background = okColor; }
		
		if(!isStringFilled(t.contactperson.value)) {
			if (errMsg.length == 0) t.contactperson.focus();
			errMsg = errMsg + "\n    Contact Person";
			t.contactperson.style.background = errColor;
		} else { t.contactperson.style.background = okColor; }
		
		if(!isStringFilled(t.address.value)) {
			if (errMsg.length == 0) t.address.focus();
			errMsg = errMsg + "\n    Address";
			t.address.style.background = errColor;
		} else { t.address.style.background = okColor; }
		
		if(!isStringFilled(t.city.value)) {
			if (errMsg.length == 0) t.city.focus();
			errMsg = errMsg + "\n    City";
			t.city.style.background = errColor;
		} else { t.city.style.background = okColor; }
		
		if(!isUSZipCode(t.zip.value)) {
			if (errMsg.length == 0) t.zip.focus();
			errMsg = errMsg + "\n    US Zipcode only";
			t.zip.style.background = errColor;
		} else { t.zip.style.background = okColor; }
		
		if(!isStringFilled(t.phone.value)) {
			if (errMsg.length == 0) t.phone.focus();
			errMsg = errMsg + "\n    US phone number only";
			t.phone.style.background = errColor;
		} else { t.phone.style.background = okColor; }
		
		if(!isEmail(t.email.value)) {
			if (errMsg.length == 0) t.email.focus();
			errMsg = errMsg + "\n    Email address";
			t.email.style.background = errColor;
		} else { t.email.style.background = okColor; }

		if(t.privatelabel.checked || t.brandedmake.checked) {
			document.getElementById("interest").style.color = "#000000"; }
		else {
			if (errMsg.length == 0) t.privatelabel.focus();
			errMsg = errMsg + "\n    Select type of program interest.";
			document.getElementById("interest").style.color = "#AA6666";
		}
		
		if(!isPosInteger(t.pairs.value)) {
			if (errMsg.length == 0) t.pairs.focus();
			errMsg = errMsg + "\n    Number of pairs (minimum 125).";
			t.pairs.style.background = errColor;
		} else {
			if(t.pairs.value < 125) {
				if (errMsg.length == 0) t.pairs.focus();
				errMsg = errMsg + "\n    Number of pairs (minimum 125).";
				t.pairs.style.background = errColor; 
			} else { t.pairs.style.background = okColor; }
		}
		
		if(errMsg.length > 0) {
			alert("Please fill in the required information:" + errMsg);
			return false;
		}
		
		t.action = "sendRequestMail.asp";
		return true;
	}