/*
	Advances the focus to field as specified by parameter 'nextFieldId' 
	if the number of characters of input equals parameter 'lengthOfInput'.
	
	If did not specify a field id to advance to, will just return.
	If length of input is less than or equal to 0, will just return.
*/

function moveToNextInputField(inputFieldId, nextFieldId, lengthOfInput)
{
	if ( (null == inputFieldId) || (null == nextFieldId) )
		return;
		
	if (0 >= lengthOfInput)
		return;

	if (lengthOfInput == document.getElementById(inputFieldId).value.length)
		document.getElementById(nextFieldId).focus();
}

/*
	Registers the required fields to the Validations object
	Returns True or False if all required fields have been entered
	and are of valid format.
*/
function validateForm()
{
	var validated = true;
	var validations = new Array();	
	var highlightField = true;
	var errorMessageId = "errorMessage";
	var errorMessage = "We apologize for this inconvenience! We need all fields in red filled out completely to ensure we get the information you are requesting sent quickly and accurately. Please review the form, correct as needed and then send again. Thank you for your interest in Highway Technologies, Inc.";

	validations.push(validation.required("firstName", errorMessageId, errorMessage, highlightField, errorMessageId));
	validations.push(validation.required("lastName", errorMessageId, errorMessage, highlightField, errorMessageId));
	validations.push(validation.required("email", errorMessageId, errorMessage, highlightField, errorMessageId));
	validations.push(validation.required("verifyEmail", errorMessageId, errorMessage, highlightField, errorMessageId));
	validations.push(validation.required("companyName", errorMessageId, errorMessage, highlightField, errorMessageId));
	validations.push(validation.required("areaCode", errorMessageId, errorMessage, highlightField, errorMessageId));
	validations.push(validation.required("numberSet1", errorMessageId, errorMessage, highlightField, errorMessageId));
	validations.push(validation.required("numberSet2", errorMessageId, errorMessage, highlightField, errorMessageId));
	validations.push(validation.required("zip", errorMessageId, errorMessage, highlightField, errorMessageId));
	
	var areasOfInterestCheckboxes = YAHOO.util.Dom.getElementsByClassName("checkbox", "input", "areasOfInterestOptions");
	var numberOfAreasOfInterestChecked = 0;
	
	for (var i = 0; i < areasOfInterestCheckboxes.length; i++)
	{
		if (areasOfInterestCheckboxes[i].checked)
			numberOfAreasOfInterestChecked++;
	}
	
	for (var v in validations) 
		validated = validated && validations[v];

	validated = validated && (0 < numberOfAreasOfInterestChecked);

    validated = (document.getElementById("email").value == document.getElementById("verifyEmail").value)
	
	if (false == validated)
	{
		validation.message(errorMessageId, errorMessage);
		validation.highlightLabel(validated, errorMessageId);
		
		document.getElementById(errorMessageId).style.display = "block";
		document.getElementById("instructionMessage").style.display = "none";
	}
	else
	{
		document.getElementById(errorMessageId).style.display = "none";
		document.getElementById("instructionMessage").style.display = "block";
	}
	
	if (true == validated)
		mailForm();
}

function formSubmitSuccess()
{
	var formDiv = document.getElementById("form");
	var formSubmitDiv = document.getElementById("formSubmit");

	if (undefined == formDiv)
		return;
		
	if (undefined != formDiv)
		formDiv.style.display = "none";

	if (undefined != formSubmitDiv)
		formSubmitDiv.style.display = "none";

	var headerElement = document.getElementById("header");
		headerElement.innerHTML = "Thank You";
		headerElement.style.display = "block";
		
	var nLink = "Your contact request is on its way to us. Click <a href='contactUs.php'>here</a> if you would like to send another submission.";	
	var subTitleElement = document.getElementById("subTitle");
		subTitleElement.innerHTML = nLink;
		subTitleElement.style.display = "block";
		
	var introElement = document.getElementById("intro");
		introElement.innerHTML = "Sed mi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec sagittis nulla nonA \
								  diam. Quisque felis ligula, elementum vel, malesuada ac, aliquet vel, libero. Morbi vehicula mattis mauris. Etiam \
								  sapien. \
								  <br /> \
								  Mauris non ipsum. Nullam vulputate elementum diam. Vestibulum eget ipsum ac enim congue porttitor. Aliquam \
								  eleifend leo ut nibh. Donec aliquet est non turpis. Nunc a mauris in pede elementum sollicitudin.";

	var exploreDiv = document.getElementById("explore");
	
	if (undefined != exploreDiv)
		exploreDiv.style.display = "block";
}

function formSubmitFailure()
{
	var formDiv = document.getElementById("form");
	var formSubmitDiv = document.getElementById("formSubmit");

	if (undefined == formDiv)
		return;
		
	if (undefined != formDiv)
		formDiv.style.display = "none";

	if (undefined != formSubmitDiv)
		formSubmitDiv.style.display = "none";

	var headerElement = document.getElementById("header");
		headerElement.innerHTML = "We're Sorry.";
		headerElement.style.display = "block";
		
	var subTitleElement = document.getElementById("subTitle");
		subTitleElement.innerHTML = "An error occurred.  Please try again later.";
		subTitleElement.style.display = "block";
		
	var introElement = document.getElementById("intro");
		introElement.innerHTML = "Sed mi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec sagittis nulla nonA \
								  diam. Quisque felis ligula, elementum vel, malesuada ac, aliquet vel, libero. Morbi vehicula mattis mauris. Etiam \
								  sapien. \
								  <br /> \
								  Mauris non ipsum. Nullam vulputate elementum diam. Vestibulum eget ipsum ac enim congue porttitor. Aliquam \
								  eleifend leo ut nibh. Donec aliquet est non turpis. Nunc a mauris in pede elementum sollicitudin.";
		introElement.style.display = "block";

	var exploreDiv = document.getElementById("explore");
	
	if (undefined != exploreDiv)
		exploreDiv.style.display = "block";
}

var callback =
{
	success: mailFormResult,
	failure: formSubmitFailure,
	timeout: 5000
};

function mailFormResult(o)
{
	if ( (o.responseText !== undefined) && (0 < o.responseText.length) )
	{
		var responseText = o.responseText;
		
		if (1 == responseText)
			formSubmitSuccess();
		else
			formSubmitFailure();
	}
}

function mailForm()
{
	var firstName = document.getElementById("firstName").value;
	var lastName = document.getElementById("lastName").value;
	var emailAddress = document.getElementById("email").value;
	var companyName = document.getElementById("companyName").value;
	var address1 = document.getElementById("address1").value;
	var address2 = document.getElementById("address2").value;
	var city = document.getElementById("city").value;
	var state = document.getElementById("state").value;
	var zip = document.getElementById("zip").value;
	
	var phoneNumber = document.getElementById("areaCode").value + document.getElementById("numberSet1").value + document.getElementById("numberSet2").value;
	var faxNumber = document.getElementById("faxAreaCode").value + document.getElementById("faxNumberSet1").value + document.getElementById("faxNumberSet2").value;

	var dailyRental = document.getElementById("dailyRental").checked;
	var contractServices = document.getElementById("contractServices").checked;
	var striping = document.getElementById("striping").checked;
	var contractorSupply = document.getElementById("contractorSupply").checked;
	var signAndGuardrailInstallation = document.getElementById("signAndGuardrailInstallation").checked;
	var specialtyServices = document.getElementById("specialtyServices").checked;
	var notSure = document.getElementById("notSure").checked;

	var freeText = document.getElementById("freeText").value;

	var urlString = "php/mailForm.php?firstName=" + firstName + "&lastName=" + lastName + "&emailAddress=" + emailAddress
	 				+ "&companyName=" + companyName + "&address1=" + address1 + "&address2=" + address2 + "&city=" + city
					+ "&state=" + state + "&zip=" + zip + "&phoneNumber=" + phoneNumber + "&faxNumber=" + faxNumber
					+ "&dailyRental=" + dailyRental + "&contractServices=" + contractServices + "&striping=" + striping
					+ "&contractorSupply=" + contractorSupply + "&signAndGuardrailInstallation=" + signAndGuardrailInstallation 
					+ "&specialtyServices=" + specialtyServices + "&notSure=" + notSure + "&freeText=" + freeText;
	var request = YAHOO.util.Connect.asyncRequest('GET', urlString, callback);
}

function init()
{
	YAHOO.util.Event.addListener("areaCode", "keyup", function() { moveToNextInputField("areaCode", "numberSet1", 3); });
	YAHOO.util.Event.addListener("numberSet1", "keyup", function() { moveToNextInputField("numberSet1", "numberSet2", 3); });

	YAHOO.util.Event.addListener("faxAreaCode", "keyup", function() { moveToNextInputField("faxAreaCode", "faxNumberSet1", 3); });
	YAHOO.util.Event.addListener("faxNumberSet1", "keyup", function() { moveToNextInputField("faxNumberSet1", "faxNumberSet2", 3); });

	YAHOO.util.Event.addListener("formSubmitBtn", "click", validateForm);	
}

YAHOO.util.Event.onAvailable('formSubmitBtn', init);
