/*********************************
 * Name:    Christopher R. Beran *
 * Date:    May 2007             *
 * Purpose: Awana Inquiry Form   *
 *********************************/

var fieldIDs = new Array("company","first_name","last_name","00N50000001Jw2Y","lead_source");
var fieldReqs = new Array("reqChurchName","fNameReq","lNameReq","cIntReq","lead_sourceReq");
var returnValue = true;
var requiredField = 0;

// This function displays and hides the fields associated with snail mail in the form, based on whether or nothe the "Mail" checkbox is checked.
function toggleDirectMail(toggle)
{
	if(toggle)
	{
		document.getElementById("maLabel").innerHTML = "&nbsp;<font color='#B22222'>*</font>Mail";
		document.getElementById("street").style.display = "block";
		document.getElementById("city").style.display = "block";
		document.getElementById("mState").style.display = "block";
		document.getElementById("zip").style.display = "block";
		document.getElementById("lbl-street").style.display = "block";
		document.getElementById("lbl-city").style.display = "block";
		document.getElementById("lbl-state").style.display = "block";
		document.getElementById("lbl-zip").style.display = "block";
		document.getElementById("street").value = "";
		document.getElementById("city").value = "";
		document.getElementById("mState").value = "";
		document.getElementById("zip").value = "";

		// The following lines add the mail fields to an array used later for validation.
		fieldIDs[fieldIDs.length] = "street";
		fieldIDs[fieldIDs.length] = "city";
		fieldIDs[fieldIDs.length] = "mState";
		fieldIDs[fieldIDs.length] = "zip";

		// The following lines add the mail fields to an array used later for error reporting.
		fieldReqs[fieldReqs.length] = "streetReq";
		fieldReqs[fieldReqs.length] = "cityReq";
		fieldReqs[fieldReqs.length] = "stateReq";
		fieldReqs[fieldReqs.length] = "zipReq";
	}
	else
	{
		document.getElementById("maLabel").innerHTML = "&nbsp;Mail";
		document.getElementById("street").style.display = "none";
		document.getElementById("city").style.display = "none";
		document.getElementById("mState").style.display = "none";
		document.getElementById("streetReq").style.display = "none";
		document.getElementById("cityReq").style.display = "none";
		document.getElementById("stateReq").style.display = "none";
		document.getElementById("zip").style.display = "none";
		document.getElementById("zipReq").style.display = "none";
		document.getElementById("lbl-street").style.display = "none";
		document.getElementById("lbl-city").style.display = "none";
		document.getElementById("lbl-state").style.display = "none";
		document.getElementById("lbl-zip").style.display = "none";
		for(i=0;i<=3;i++)
		{
			// These lines remove the array entries created when the mail fields were initially displayed.
			fieldIDs.pop();
			fieldReqs.pop();
		}
	}
}

// This function resets the checkboxes when the page is refreshed.
function pageLoad()
{
	document.getElementById("chkPhone").checked = false;
	document.getElementById("chkEmail").checked = false;
	document.getElementById("chkMail").checked = false;
}

// This function will display and hide a text input field for phone number entry depending on whether the phone checkbox is checked.
function cbxPhoneToggle()
{
	if( document.getElementById("chkPhone").checked)
	{
		document.getElementById("phLabel").innerHTML = "&nbsp;<font color='#B22222'>*</font>Phone (xxx)xxx-xxxx";
		document.getElementById("phone").style.display = "block";
		document.getElementById("phone").value = "";
		fieldIDs[fieldIDs.length] = "phone";
		fieldReqs[fieldReqs.length] = "phoneReq";
	}
	else
	{
		document.getElementById("phLabel").innerHTML = "&nbsp;Phone (xxx)xxx-xxxx";
		document.getElementById("phone").style.display = "none";
		document.getElementById("phoneReq").style.display = "none";
		fieldIDs.pop();
		fieldReqs.pop();
	}
	
}

// This function will display and hide a text input field for e-mail entry depending on whether the e-mail checkbox is checked.
function cbxEmailToggle()
{
	if( document.getElementById("chkEmail").checked )
	{
		document.getElementById("emLabel").innerHTML = "&nbsp;<font color='#B22222'>*</font>E-mail";
		document.getElementById("email").style.display = "block";
		document.getElementById("em2Label").style.display = "block";
		document.getElementById("email2").style.display = "block";
		document.getElementById("email").value = "";
		document.getElementById("email2").value = "";
		fieldIDs[fieldIDs.length] = "email";
		fieldIDs[fieldIDs.length] = "email2";
		fieldReqs[fieldReqs.length] = "emailReq";
		fieldReqs[fieldReqs.length] = "emailReq2";
	}
	else
	{
		document.getElementById("emLabel").innerHTML = "&nbsp;Email";
		document.getElementById("em2Label").style.display = "none";
		document.getElementById("emailReq2").style.display = 'none';
		document.getElementById("email").style.display = "none";
		document.getElementById("email2").style.display = "none";
		document.getElementById("email2").style.display = "none";
		document.getElementById("emailReq").style.display = "none";
		for(i=0;i<=1;i++)
		{
			fieldIDs.pop();
			fieldReqs.pop();		
		}
	}
	
}

// This function compares the two emails that the user inputs and ensures that they match.
function compareEmails()
{
	var email1 = document.getElementById("email").value
	var email2 = document.getElementById("email2").value
	if(email1 != email2)
	{
		document.getElementById("emailReq2").style.display = 'block';
	}
	else
	{
		document.getElementById("emailReq2").style.display = 'none';
		requiredField++;
	}
}

// This function checks the Phone, Email, and Mail fields to make sure that, if they are displayed, that the syntax is correct for them.  Syntax functions are located in script/validation.js.
function chkRequiredField()
{
	if(document.getElementById("chkPhone").checked == true)
	{
		validatePhone(1);
	}
	if(document.getElementById("chkEmail").checked == true)
	{
		validateEmail("email");
	}
	if(document.getElementById("chkMail").checked == true)
	{
		validateRegularText("street");
		validateRegularText("city");
		validateRegularText("mState");
		validateZipCode("zip");
		if (isDone != false)
		{
			requiredField++;
		}
	}
}

// When the form is submitted, this function checks every required field in the form (defined in the "fieldIDs" array) and makes sure that they are not empty.  If they are empty, this function displays an appropriate error message beneath the field.  It will also prevent the form from submitting til all required fields have been filled.
function jsValidate()
{
	for(i=0;i<fieldIDs.length;i++)
	{
		if (document.getElementById(fieldIDs[i]).value == "")
		{
			document.getElementById(fieldReqs[i]).style.display = "block";
			returnValue = false;
		}
	}
	if(returnValue == false)
	{
		document.getElementById("finalCheck").style.display = "block";
	}
}

// On submit, this function ensures that at least one method of contact (Phone, Email, or Mail) has been selected and checked for correct syntax.  If a method has not been selected or the syntax is incorrect, it will show an error message at the bottom of the screen and prevent the form from submitting until corrections have been made.
function validateDisplay()
{
	if (document.getElementById("chkPhone").checked != true && document.getElementById("chkEmail").checked != true && document.getElementById("chkMail").checked != true)
	{
		document.getElementById("errorsTXT").innerHTML = "Please select a method by which we may contact you.";
		returnValue = false;
	}
	if(requiredField < 1)
	{
		returnValue = false;
	}
}

// On submit, this function clears the previous submit attempt in preparation for another submit attempt.
function validateRefresh()
{
	returnValue = true;
	isDone = null;
	requiredField = 0;
	document.getElementById("errorsTXT").innerHTML = "";
}

// This function is a wrapper that calls the previously mentioned functions in order to ensure the syntax and completeness of the form.  If everything is correct and completed, the "returnValue" will return to the form as "true" and allow the form to submit to the server.
function validateWrapper()
{
	validateRefresh();
	chkRequiredField();
	jsValidate();
	validateDisplay();
	return returnValue;
}