function showField(id) {
	document.getElementById(id).style.display = "";
}

function hideField(id) {
	document.getElementById(id).style.display = "none";
}

function allowNumeric(evt) {
	var charCode = (evt.which) ? evt.which : event.keyCode;
	if (charCode > 31 && (charCode < 48 || charCode > 57)) {
		return false;
		return true;
	}
}

function checkEmail(str) {
	var at   = '@';
	var dot  = '.';
	var lat  = str.indexOf(at);
	var lstr = str.length;
	var ldot = str.indexOf(dot);
	if (str.indexOf(at)==-1) {
		return false;
	}
	else if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) {
		return false;
	}
	else if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) {
		return false;
	}
	else if (str.indexOf(at,(lat+1))!=-1) {
		return false;
	}
	else if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) {
		return false;
	}
	else if (str.indexOf(dot,(lat+2))==-1) {
		return false;
	}
	else if (str.indexOf(' ')!=-1) {
		return false;
	}
	else {
		return true;
	}
}

function changeSelect(formSelect) {
	var f            = document.demoForm;
	var selectName   = formSelect.name;
	var selectOption = formSelect.options[formSelect.selectedIndex].value;	
	switch(selectName) {
		case "country":
			var hideRows = new Array("United States","Canada","otherCountry","defaultPhone","countryCode","intPhone");
			switch (selectOption) {
				case "United States":
					var showRows = new Array(selectOption,"defaultPhone");
					break;
				case "Canada":
					var showRows = new Array(selectOption,"defaultPhone");
					break;
				default:
					var showRows = new Array("otherCountry","countryCode","intPhone");
			}
  			break;
		case "referralType":
			var hideRows = new Array("ByLuck","Friend","Colleague","Agency","Search","Magazine","Newsletter","Tradeshow","searchSite","otherSite");
			switch (selectOption) {
				case "Search":
					var selectedSearch = f.searchEngine.value;
					if (selectedSearch == "Other") {
						var showRows = new Array(selectOption,"otherSite");
					}
					else {
						var showRows = new Array(selectOption,"searchSite");
					}
					break;
				default:
					var showRows = new Array(selectOption);
			}
  			break;
  		case "searchEngine":
  			var hideRows = new Array("searchSite","otherSite");
  			switch (selectOption) {
  				case "Other":
  					var showRows = new Array("otherSite");
  					break;
  				default:
  					var showRows = new Array("searchSite");
  			}
  			break;
  	}
	for (i=0; i<hideRows.length; i++) {
		hideField(hideRows[i]);	
	}
	for (i=0; i<showRows.length; i++) {
		showField(showRows[i]);	
	}
}

var url = '/captcha/validate.php?value=';
var cStatus = 2;

function httpObject() {
	try {
		req = new XMLHttpRequest();
	}
	catch (err1) {
		try {
			req = new ActiveXObject("Msxml12.XMLHTTP");
		}
		catch (err2) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (err3) {
				req = false;
			}
		}
	}
	return req;
}

var http = httpObject();

function handleResponse() {
	if (http.readyState == 4) {
		cStatus = http.responseText;
		if (cStatus != 1) {
			alert('The security code that you entered is incorrect. Please try again');
			var randomnumber = Math.floor(Math.random()*1001)
			document.getElementById('captcha').src = '/captcha/captcha.php?reload='+randomnumber;
			document.contactForm.captcha.value = '';
			document.contactForm.captcha.focus();
			return false;
		}
		document.demoForm.submit();
	}
}

function checkCode(captcha) {
	http.open("GET", url + captcha, true);
	http.onreadystatechange = handleResponse;
	http.send("");
}

function checkFields() {
	// CONFIGURE FORM VALIDATION STYLES
	var errorBorder     = 'solid 1px #dc5c26';
	var errorBackground = '#ffe7cd';
	var validBorder     = 'solid 1px #999999';
	var validBackground = '#ffffff';
	var f               = document.demoForm;
   var captcha         = f.captcha;
	var reqField        = new Array();
	reqField[0]         = f.fname;
	reqField[1]         = f.lname;
	reqField[2]         = f.country;
	reqField[3]         = f.address1;
	reqField[4]         = f.city;
	reqField[5]         = f.email1;
	reqField[6]         = f.email2;
	reqField[7]         = f.company;
	reqField[8]         = f.jobposition;
	reqField[9]         = f.website;
   reqField[10]        = f.knowledgerating;
	reqField[11]        = f.referralType;
	reqField[12]        = f.captcha;
	var errors          = 0;
	for (i=0; i<reqField.length; i++) {
		switch (i) {
			case 2: // COUNTRY SELECTION
				switch(reqField[i].value) {
					case "United States":
						var reqOption = new Array();
						reqOption[0]  = f.zip;
						reqOption[1]  = f.areacode;
						reqOption[2]  = f.prefix;
						reqOption[3]  = f.suffix;
						//reqOption[4]  = f.faxareacode;
						//reqOption[5]  = f.faxprefix;
						//reqOption[6]  = f.faxsuffix;
						var reqLength  = new Array(5, 3, 3, 4, 3, 3, 4);
						for (j=0;j<reqOption.length;j++) {
							if (reqOption[j].value.length<reqLength[j]) {
								reqOption[j].style.border     = errorBorder;
								reqOption[j].style.background = errorBackground;
								errors += 1;
							}
							else {
								reqOption[j].style.border     = validBorder;
								reqOption[j].style.background = validBackground;
							}
						}
						break;
					case "Canada":
						var reqOption = new Array();
						reqOption[0]  = f.canpost;
						reqOption[1]  = f.areacode;
						reqOption[2]  = f.prefix;
						reqOption[3]  = f.suffix;
						//reqOption[4]  = f.faxareacode;
						//reqOption[5]  = f.faxprefix;
						//reqOption[6]  = f.faxsuffix;
						var reqLength = new Array(6, 3, 3, 4, 3, 3, 4);
						for (j=0;j<reqOption.length;j++) {
							if (reqOption[j].value.length<reqLength[j]) {
								reqOption[j].style.border     = errorBorder;
								reqOption[j].style.background = errorBackground;
								errors += 1;
							}
							else {
								reqOption[j].style.border     = validBorder;
								reqOption[j].style.background = validBackground;
							}
						}
						break;
					default:
						var reqOption = new Array();
						reqOption[0]  = f.intpost;
						reqOption[1]  = f.countrycode;
						reqOption[2]  = f.intphone;
						//reqOption[3]  = f.intfax;
						for (j=0;j<reqOption.length;j++) {
							if (reqOption[j].value == "") {
								reqOption[j].style.border     = errorBorder;
								reqOption[j].style.background = errorBackground;
								errors += 1;
							}
							else {
								reqOption[j].style.border     = validBorder;
								reqOption[j].style.background = validBackground;
							}
						}
						break;
				}
				break;
			case 5: // EMAIL1 IS VALID			
				if (checkEmail(reqField[i].value) == false ) {
					reqField[i].style.border     = errorBorder;
					reqField[i].style.background = errorBackground;					
					errors += 1;
				}
				else {
					reqField[i].style.border     = validBorder;
					reqField[i].style.background = validBackground;					
				}
				break;
			case 6: // VERIFY THAT EMAIL2 = EMAIL1
				if ((reqField[i].value == "")||(reqField[i].value != reqField[i-1].value)) {
					reqField[i].style.border     = errorBorder;
					reqField[i].style.background = errorBackground;
					errors += 1;
				}
				else {
					reqField[i].style.border     = validBorder;
					reqField[i].style.background = validBackground;
				}					
				break;
			case 9: // WEBSITE URL
				if ((reqField[i].value == "") || (reqField[i].value == "http://")) {
					reqField[i].style.border     = errorBorder;
					reqField[i].style.background = errorBackground;
					errors += 1;
				}
				else {
					reqField[i].style.border     = validBorder;
					reqField[i].style.background = validBackground;
				}
				break;
			case 10: // SELECT KNOWLEDGE RATING
				if (reqField[i].value == "Please Select") {
					reqField[i].style.border     = errorBorder;
					reqField[i].style.background = errorBackground;
					errors += 1;
				}
				else {
					reqField[i].style.border     = validBorder;
					reqField[i].style.background = validBackground;
				}
				break;
			case 11: // SELECT REFERRAL
				if (reqField[i].value == "ByLuck") {
					reqField[i].style.border     = errorBorder;
					reqField[i].style.background = errorBackground;
					errors += 1;
				}
				else {
					var reqOption = new Array();
					switch (reqField[i].value) {
						case "Friend":
							reqOption[0] = f.friendName;
							break;
						case "Search":
							var whichSearch  = f.searchEngine.value;
							if (whichSearch == "Other") {
								reqOption[0] = f.otherSite;
								reqOption[1] = f.otherKeywords;
							}
							else {
								reqOption[0] = f.keywordsUsed;
							}
							break;
						case "Magazine":
							reqOption[0] = f.magazineName;
							break;
						case "Newsletter":
							reqOption[0] = f.newsletterName;
							break;
						case "Tradeshow":
							reqOption[0] = f.mm;
							reqOption[1] = f.yy;
							break;
					}
					for (j=0; j<reqOption.length;j++) {
						if (reqOption[j].value == "") {
							reqOption[j].style.border     = errorBorder;
							reqOption[j].style.background = errorBackground;
							errors += 1;						
						}
						else {
							reqOption[j].style.border     = validBorder;
							reqOption[j].style.background = validBackground;											
						}
					}
					reqField[i].style.border     = validBorder;
					reqField[i].style.background = validBackground;					
				}
				break;
			case 12: // CAPTCHA
				if (reqField[i].value.length<6) {
					reqField[i].style.border     = errorBorder;
					reqField[i].style.background = errorBackground;
					errors += 1;
				}
				else {
					reqField[i].style.border     = validBorder;
					reqField[i].style.background = validBackground;
				}
				break;
			default:
				if (reqField[i].value == "") {
					reqField[i].style.border     = errorBorder;
					reqField[i].style.background = errorBackground;
					errors += 1;
				}
				else {
					reqField[i].style.border     = validBorder;
					reqField[i].style.background = validBackground;
				}	
		}		
	}
		if (errors > 0) {
			alert('The highlighted fields need correction before you can submit your request.');
			return false;
		}
      checkCode(captcha.value);
}

