// JavaScript Document

var triedZipValidation = false;  // indicates whether validation has been attempted yet
var zipInDatabase = false;  // indicates whether the entered zip code was found in our db
var validateColor = "red";
var txtColor = "#5F4215";
var memberStatus = true;
var vCompany = true;
var vSales = false;

function selectChange() {
	var selIndex = document.getElementById("breakfast").selectedIndex;
	var selValue = document.getElementById("breakfast").options[selIndex].value;
	document.getElementById("member_status").value = selValue;			
}

/*
 *	Called from faux submit button
 *	For US: trigger the hidden frame to validate the zip code
 *	For non-US: start javascript validation
 */
function checkGeography() {
	triedZipValidation = true;
	copyValues();

	if (isUsa()) {
		if (validateZIP(document.getElementById("zip").value)) {

			document.getElementById("submitbtn").disabled = true;
			document.getElementById("parZIP").style.color = txtColor;

			var frame = document.getElementById("getZipInfo");
			frame.src = "/enrollment/asp/validateZip.asp?zip=" + document.getElementById("zip").value;

		} else {
			document.getElementById("submitbtn").disabled = false;
			document.getElementById("parZIP").style.color = validateColor;
			document.getElementById("zip_entry").focus();
		}

	} else {
		displayCityState();
		validateAndSubmit();
	}

}

/*
 *	Called from child iframe.
 *	Copies over any valid geography-related items to hidden form and starts javascript validation
 */
function childLoaded()
{
	var frame = document.getElementById("getZipInfo");
	zipInDatabase = (window.frames[0].document.getElementById('ZipOK').innerHTML == "true");

	displayCityState();

	if (zipInDatabase) {

		document.getElementById("00N70000001gNrp").value = window.frames[0].document.getElementById('Region').innerHTML;
		document.getElementById("00N70000001gNrq").value = window.frames[0].document.getElementById('MSA').innerHTML;
		document.getElementById("city").value = window.frames[0].document.getElementById('City').innerHTML;
		document.getElementById("state").value = window.frames[0].document.getElementById('State').innerHTML;

	} else {
		document.getElementById("00N70000001gNrp").value = "";
		document.getElementById("00N70000001gNrq").value = "";
	}

	validateAndSubmit();

}

/*
 *	simply copies values from entry form to hidden form
 */

function copyValues() {
	document.getElementById("first_name").value = document.getElementById("first_name_entry").value;
	document.getElementById("last_name").value = document.getElementById("last_name_entry").value;
	document.getElementById("title").value = document.getElementById("title_entry").value;
	document.getElementById("00N70000001zAiQ").value = document.getElementById("company_entry").value;
	document.getElementById("email").value = document.getElementById("email_entry").value;
	document.getElementById("city").value = document.getElementById("city_entry").value;
	document.getElementById("state").value = document.getElementById("state_entry").value;	
	document.getElementById("phone").value = document.getElementById("phone_entry").value;
	document.getElementById("zip").value = document.getElementById("zip_entry").value;
}

/*
 *	Displays or hides city and state entry boxes if needed
 */
function displayCityState() {

	if (isUsa()) {

		if (zipInDatabase || !triedZipValidation) {
			document.getElementById("needCity").style.display = "none";
			document.getElementById("needState").style.display = "none";
		} else {
			document.getElementById("needCity").style.display = "inline";
			document.getElementById("needState").style.display = "inline";
		}

	} else {
		document.getElementById("needCity").style.display = "inline";
		document.getElementById("needState").style.display = "none";
	}

}

function isUsa() {
	return (document.getElementById("country").value == 'US');
}

/*Cut and paste code pulled from web 
Courtesy of http://javascript.internet.com/forms/val-zip-code.html
*/
function validateZIP(field) {

	var valid = "0123456789-";
	var hyphencount = 0;

	if (!isUsa()) {
		return true;
	}

	if (field.length!=5 && field.length!=10) {
		return false;
	}

	for (var i=0; i < field.length; i++) {
		temp = "" + field.substring(i, i+1);

		if (temp == "-") hyphencount++;

		if (valid.indexOf(temp) == "-1") {
			return false;
		}

		if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) {
			return false;
		}
	}

	return true;
}

/*
 *	Main javascript validation
 *	Notifies user of any missing or wrong looking values
 *	(Note: values should already have been copied to the hidden form)
 *	Submits hidden form if no problems
 */
function validateAndSubmit() {

	var valid = true;
	var textbox;
	var label;
	var cursor;

	//document.getElementById("formErrorMsg").style.display = "none";
    alert("in validate");
	textbox = document.getElementById("zip");
	entrybox = document.getElementById("zip_entry");
	label = document.getElementById("parZIP");
	if(textbox.value == '') { 
		label.style.color = validateColor;
		cursor = entrybox;
		valid = false;
	} else {label.style.color = txtColor;}

	// state is only required for US addresses where we don't recognize the zip
	if (isUsa() && !zipInDatabase) {
		textbox = document.getElementById("state");
		entrybox = document.getElementById("state_entry");
		label = document.getElementById("parState");
		if(textbox.value == '') { 
			label.style.color = validateColor;
			cursor = entrybox;
			valid = false;
		} else {label.style.color = txtColor;}
	}

	// city is only required for when we don't recognize the zip
	if (!zipInDatabase) {
		textbox = document.getElementById("userCity");
		entrybox = document.getElementById("city_entry");
		label = document.getElementById("parCity");
		if(textbox.value == '') { 
			label.style.color = validateColor;
			cursor = entrybox;
			valid = false;
		} else {label.style.color = txtColor;}
	}	

	textbox = document.getElementById("phone");
	entrybox = document.getElementById("phone_entry");
	label = document.getElementById("parPhone");
	if(textbox.value == '') { 
		label.style.color = validateColor;
		cursor = entrybox;
		valid = false;
	} else {label.style.color = txtColor;}

	textbox = document.getElementById("email");
	entrybox = document.getElementById("email_entry");
	label = document.getElementById("parEmail");
	if (!echeck(textbox.value)) {
		label.style.color = validateColor;
		cursor = entrybox;
		valid = false;
	} else {label.style.color = txtColor;}

	// Some forms don't require company
	if (vCompany) {
		textbox = document.getElementById("company"); // company
		entrybox = document.getElementById("company_entry");
		label = document.getElementById("parCompany");
		if(textbox.value == '') { 
			label.style.color = validateColor;
			cursor = entrybox;
			valid = false;
		} else {label.style.color = txtColor;}
	}

	textbox = document.getElementById("last_name");
	entrybox = document.getElementById("last_name_entry");
	label = document.getElementById("parLastName");
	if(textbox.value == '') { 
		label.style.color = validateColor;
		cursor = entrybox;
		valid = false;
	} else {label.style.color = txtColor;}

	textbox = document.getElementById("first_name");
	entrybox = document.getElementById("first_name_entry");
	label = document.getElementById("parFirstName");
	if(textbox.value == '') { 
		label.style.color = validateColor;
		cursor = entrybox;
		valid = false;
	} else {label.style.color = txtColor;}
	
	textbox = document.getElementById("title");
	entrybox = document.getElementById("title_entry");
	label = document.getElementById("parTitle");
	if(textbox.value == '') { 
		label.style.color = validateColor;
		cursor = entrybox;
		valid = false;
	} else {label.style.color = txtColor;}	
	if (memberStatus) {
		textbox = document.getElementById("member_status"); 
		entrybox = document.getElementById("breakfast");
		label = document.getElementById("parMemberStatus");
		if(textbox.value == '') { 
			label.style.color = validateColor;
			cursor = entrybox;
			valid = false;
		} else {label.style.color = txtColor;}	
	}


	if (!valid) {
		// display generic error message
		document.getElementById("submitbtn").disabled = false;
		//return false;
		//cursor.focus();
	}

	if (valid) {
		document.getElementById("realSubmitButton").click();
		document.getElementById("submitbtn").disabled = true;	
		//return true;		
	}

}
function goToSubmit() {
	alert("in sumbit");
	//document.getElementById("realSubmitButton").click();
}
/*
 * Validates email for subscribe to e-newsletter form only
 */
function validateEmail() {
	if ( !echeck(document.getElementById("f_vchEmailAddress").value)) {
		document.getElementById("eMailErrorMsg").style.display = "block";
		return false;
	} else {
		document.getElementById("eMailErrorMsg").style.display = "none";
		return true;
	}
}

/*Cut and paste code pulled from web 
Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
*/
function echeck(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;
	}

	if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) {
		return false;
	}

	if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) {
		return false;
	}

	if (str.indexOf(at, (lat+1)) != -1) {
		return false;
	}

	if (str.substring(lat-1, lat) == dot || str.substring(lat+1, lat+2) == dot) {
		return false;
	}

	if (str.indexOf(dot, (lat+2)) == -1) {
		return false;
	}

	if (str.indexOf(" ") != -1) {
		return false;
	}

	return true;
}
