/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Name       :  ClickRegistrationSubmit
' Purpose    :  Perform form validation on the registration
'               form.  If everything is valid, submit the form.
' Parameters :  none.
' Return val :  none.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/
function ClickRegistrationSubmit()
{
	var firstname = document.frmRegister.FirstName.value;
	var lastname = document.frmRegister.LastName.value;
	var address1 = document.frmRegister.Address1.value;
	var address2 = document.frmRegister.Address2.value;
	var city = document.frmRegister.City.value;
	var state = document.frmRegister.State.value;
	var zipCode = document.frmRegister.ZipCode.value;
	var homePhone1 = document.frmRegister.HomePhone1.value;
	var homePhone2 = document.frmRegister.HomePhone2.value;
	var homePhone3 = document.frmRegister.HomePhone3.value;
	var cellPhone1 = document.frmRegister.CellPhone1.value;
	var cellPhone2 = document.frmRegister.CellPhone2.value;
	var cellPhone3 = document.frmRegister.CellPhone3.value;
	var month = document.frmRegister.Month.value;
	var day = document.frmRegister.Day.value;
	var year = document.frmRegister.Year.value;
	//var age = document.frmRegister.Age.value;
	var emailAddress = document.frmRegister.Email.value;
	var interestSoprano = document.frmRegister.InterestSoprano.value;
	var interestMellophone = document.frmRegister.InterestMellophone.value;
	var interestBaritone = document.frmRegister.InterestBaritone.value;
	var interestContra = document.frmRegister.InterestContra.value;
	var interestDrumMajor = document.frmRegister.InterestDrumMajor.value;
	var interestSnare = document.frmRegister.InterestSnare.value;
	var interestTenors = document.frmRegister.InterestTenors.value;
	var interestBassDrum = document.frmRegister.InterestBassDrum.value;
	var interestCymbals = document.frmRegister.InterestCymbals.value;
	var interestFrontEnsemble = document.frmRegister.InterestFrontEnsemble.value;
	var interestFlag = document.frmRegister.InterestFlag.value;
	var interestWeapons = document.frmRegister.InterestWeapons.value;
	var interestStaff = document.frmRegister.InterestStaff.value;
	var interestVolunteer = document.frmRegister.InterestVolunteer.value;
	var interestFan = document.frmRegister.InterestFan.value;
	var otherInterests = document.frmRegister.OtherInterests.value;
	var hearAbout = document.frmRegister.HeardAbout.value;
	var comments = document.frmRegister.Comments.value;

	// validate name
	if (firstname.length <= 0)
	{
		alert("Please enter a first name...");
		// set focus to First Name
		document.frmRegister.FirstName.focus();
		return false;
	}
	if (lastname.length <= 0)
	{
		alert("Please enter a last name...");
		// set focus to Last Name
		document.frmRegister.LastName.focus();
		return false;
	}

    // validate address
    if (address1.length <= 0)
    {
        alert("Please enter an address...");
        // set focus on Address1
        document.frmRegister.Address1.focus();
        return false;
    }
    if (city.length <= 0)
    {
        alert("Please enter a city...");
        // set focus on City
        document.frmRegister.City.focus();
        return false;
    }
    if (state.length <= 0)
    {
        alert("Please select a state...");
        // set focus on State
        document.frmRegister.State.focus();
        return false;
    }
    if (zipCode.length <= 0)
    {
        alert("Please enter a zip code...");
        // set focus on Zip Code
        document.frmRegister.ZipCode.focus();
        return false;
    }
    else
    {
        if (!zipCode.toString().match(/^\d{5}$/))
        {
            alert("Please enter a valid zip code...");
            // set focus on Zip Code
            document.frmRegister.ZipCode.focus();
            return false;
        }
    }
    
    // Validate that home phone number, if entered
    if (homePhone1.length > 0 || homePhone2 > 0 || homePhone3 || 0)
    {
        if (homePhone1 <= 0 || homePhone2 <= 0 || homePhone3 <= 0)
        {
            alert("Please enter a valid home phone number...");
            // set focus on Home Phone #1
            document.frmRegister.HomePhone1.focus();
            return false;
        }
        else
        {
            if (!homePhone1.toString().match(/^\d{3}$/) || !homePhone2.toString().match(/^\d{3}$/) || !homePhone3.toString().match(/^\d{4}$/))
            {
                alert("Please enter a valid home phone number...");
                // set focus on Home Phone #1
                document.frmRegister.HomePhone1.focus();
                return false;
            }
        }
    }

    // Validate that cell phone number, if entered
    if (cellPhone1.length > 0 || cellPhone2 > 0 || cellPhone3 || 0)
    {
        if (cellPhone1 <= 0 || cellPhone2 <= 0 || cellPhone3 <= 0)
        {
            alert("Please enter a valid cell phone number...");
            // set focus on Cell Phone #1
            document.frmRegister.CellPhone1.focus();
            return false;
        }
        else
        {
            if (!cellPhone1.toString().match(/^\d{3}$/) || !cellPhone2.toString().match(/^\d{3}$/) || !cellPhone3.toString().match(/^\d{4}$/))
            {
                alert("Please enter a valid cell phone number...");
                // set focus on Cell Phone #1
                document.frmRegister.CellPhone1.focus();
                return false;
            }
        }
    }

	// validate email address
	if (emailAddress.length <= 0)
	{
		alert("Please enter an e-mail address...");
		// set focus to email address
		document.frmRegister.Email.focus();
		return false;
	}
	else
	{
		// Verify if the given value is a possible valid email address by making sure the email address has:
		// 1) one "@" and at least one "."
		// 2) no spaces, extra "@"s or a "." just before or after the "@"
		// 3) at least one "." after the "@"
		var at = "@";
		var dot = ".";
		var lat = emailAddress.indexOf(at);
		var lstr = emailAddress.length;
		var ldot = emailAddress.indexOf(dot);
		if (emailAddress.indexOf(at) == -1)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.Email.focus();
			return false;
		}

		if (emailAddress.indexOf(at) == -1 || emailAddress.indexOf(at) == 0 || emailAddress.indexOf(at) == lstr)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.Email.focus();
			return false;
		}

		if (emailAddress.indexOf(dot) == -1 || emailAddress.indexOf(dot) == 0 || emailAddress.indexOf(dot) == lstr)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.Email.focus();
			return false;
		}

		if (emailAddress.indexOf(at, (lat + 1)) != -1)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.Email.focus();
			return false;
		}

		if (emailAddress.substring(lat - 1, lat) == dot || emailAddress.substring(lat + 1, lat + 2) == dot)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.Email.focus();
			return false;
		}

		if (emailAddress.indexOf(dot, (lat + 2)) == -1)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.Email.focus();
			return false;
		}

		if (emailAddress.indexOf(" ") != -1)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.Email.focus();
			return false;
		}
	}

    // validate birthdate, if entered
    if (month.length > 0 || day.length > 0 || year.length || 0)
    {
        if (!IsValidDate(day, month, year))
        {
		    alert("Please enter a valid birth date...");
		    // set focus to email address
		    document.frmRegister.Month.focus();
            return false;
        }
    }

    // validate age value is numeric, if entered
//    if (age.length > 0 && !age.toString().match(/^\d*$/))
//    {
//        alert("Please enter a valid age...");
//        // set focus on Age
//        document.frmRegister.Age.focus();
//        return false;
//    }

    // validate interests
//    if (interests.length <= 0)
//    {
//		alert("Select at least one interest...");
//		// set focus to interests
//		document.frmRegister.Interests.focus();
//		return false;
//    }

    // TODO: If 'Other' interest is selected, verify it exists
    
	document.frmRegister.submit();
}


/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Name       :  IsValidDate
' Purpose    :  Perform validation on the values passed in to determine
'               if the values make a valid date.
' Parameters :  none.
' Return val :  none.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/
function IsValidDate(Day,Mn,Yr)
{
    var DateVal = Mn + "/" + Day + "/" + Yr;
    var dt = new Date(DateVal);

    if(dt.getDate()!=Day)
    {
        return false;
    }
    else if(dt.getMonth()!=Mn-1)
    {
        //this is for the purpose JavaScript starts the month from 0
        return false ;
    }
    else if(dt.getFullYear()!=Yr)
    {
        return false;
    }
        
    return(true);
}


/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Name       :  ClickOpenHouseSubmit
' Purpose    :  Perform form validation on the Open House registration
'               form.  If everything is valid, submit the form.
' Parameters :  none.
' Return val :  none.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/
function ClickOpenHouseSubmit()
{
	var firstname = document.frmRegister.iFirstname.value;
	var lastname = document.frmRegister.iLastname.value;
	var address1 = document.frmRegister.iAddress1.value;
	var address2 = document.frmRegister.iAddress2.value;
	var city = document.frmRegister.iCity.value;
	var state = document.frmRegister.iState.value;
	var zipCode = document.frmRegister.iZipCode.value;
	var homePhone1 = document.frmRegister.iHomePhone1.value;
	var homePhone2 = document.frmRegister.iHomePhone2.value;
	var homePhone3 = document.frmRegister.iHomePhone3.value;
	var cellPhone1 = document.frmRegister.iCellPhone1.value;
	var cellPhone2 = document.frmRegister.iCellPhone2.value;
	var cellPhone3 = document.frmRegister.iCellPhone3.value;
	var emailAddress = document.frmRegister.iEmail.value;
	var interests = document.frmRegister.iInterests.value;
	var otherInterests = document.frmRegister.iOtherInterests.value;
	var age = document.frmRegister.iAge.value;
	var openHouse = document.frmRegister.iOpenHouse.value;
	var hearAbout = document.frmRegister.iHeardAbout.value;
	var comments = document.frmRegister.iComments.value;

	// validate name
	if (firstname.length <= 0)
	{
		alert("Please enter a first name...");
		// set focus to First Name
		document.frmRegister.iFirstname.focus();
		return false;
	}
	if (lastname.length <= 0)
	{
		alert("Please enter a last name...");
		// set focus to Last Name
		document.frmRegister.iLastname.focus();
		return false;
	}

    // validate address
    if (address1.length <= 0)
    {
        alert("Please enter an address...");
        // set focus on Address1
        document.frmRegister.iAddress1.focus();
        return false;
    }
    if (city.length <= 0)
    {
        alert("Please enter a city...");
        // set focus on City
        document.frmRegister.iCity.focus();
        return false;
    }
    if (state.length <= 0)
    {
        alert("Please select a state...");
        // set focus on State
        document.frmRegister.iState.focus();
        return false;
    }
    if (zipCode.length <= 0)
    {
        alert("Please enter a zip code...");
        // set focus on Zip Code
        document.frmRegister.iZipCode.focus();
        return false;
    }
    else
    {
        if (!zipCode.toString().match(/^\d{5}$/))
        {
            alert("Please enter a valid zip code...");
            // set focus on Zip Code
            document.frmRegister.iZipCode.focus();
            return false;
        }
    }
    
    // Validate that home phone number, if entered
    if (homePhone1.length > 0 || homePhone2 > 0 || homePhone3 || 0)
    {
        if (homePhone1 <= 0 || homePhone2 <= 0 || homePhone3 <= 0)
        {
            alert("Please enter a valid home phone number...");
            // set focus on Home Phone #1
            document.frmRegister.iHomePhone1.focus();
            return false;
        }
        else
        {
            if (!homePhone1.toString().match(/^\d{3}$/) || !homePhone2.toString().match(/^\d{3}$/) || !homePhone3.toString().match(/^\d{4}$/))
            {
                alert("Please enter a valid home phone number...");
                // set focus on Home Phone #1
                document.frmRegister.iHomePhone1.focus();
                return false;
            }
        }
    }

    // Validate that cell phone number, if entered
    if (cellPhone1.length > 0 || cellPhone2 > 0 || cellPhone3 || 0)
    {
        if (cellPhone1 <= 0 || cellPhone2 <= 0 || cellPhone3 <= 0)
        {
            alert("Please enter a valid cell phone number...");
            // set focus on Cell Phone #1
            document.frmRegister.iCellPhone1.focus();
            return false;
        }
        else
        {
            if (!cellPhone1.toString().match(/^\d{3}$/) || !cellPhone2.toString().match(/^\d{3}$/) || !cellPhone3.toString().match(/^\d{4}$/))
            {
                alert("Please enter a valid cell phone number...");
                // set focus on Cell Phone #1
                document.frmRegister.iCellPhone1.focus();
                return false;
            }
        }
    }

	// validate email address
	if (emailAddress.length <= 0)
	{
		alert("Please enter an e-mail address...");
		// set focus to email address
		document.frmRegister.iEmail.focus();
		return false;
	}
	else
	{
		// Verify if the given value is a possible valid email address by making sure the email address has:
		// 1) one "@" and at least one "."
		// 2) no spaces, extra "@"s or a "." just before or after the "@"
		// 3) at least one "." after the "@"
		var at = "@";
		var dot = ".";
		var lat = emailAddress.indexOf(at);
		var lstr = emailAddress.length;
		var ldot = emailAddress.indexOf(dot);
		if (emailAddress.indexOf(at) == -1)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.iEmail.focus();
			return false;
		}

		if (emailAddress.indexOf(at) == -1 || emailAddress.indexOf(at) == 0 || emailAddress.indexOf(at) == lstr)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.iEmail.focus();
			return false;
		}

		if (emailAddress.indexOf(dot) == -1 || emailAddress.indexOf(dot) == 0 || emailAddress.indexOf(dot) == lstr)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.iEmail.focus();
			return false;
		}

		if (emailAddress.indexOf(at, (lat + 1)) != -1)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.iEmail.focus();
			return false;
		}

		if (emailAddress.substring(lat - 1, lat) == dot || emailAddress.substring(lat + 1, lat + 2) == dot)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.iEmail.focus();
			return false;
		}

		if (emailAddress.indexOf(dot, (lat + 2)) == -1)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.iEmail.focus();
			return false;
		}

		if (emailAddress.indexOf(" ") != -1)
		{
			alert("Please enter a valid e-mail address...");
			// set focus to email address
			document.frmRegister.iEmail.focus();
			return false;
		}
	}

    // validate interests
//    if (interests.length <= 0)
//    {
//		alert("Select at least one interest...");
//		// set focus to interests
//		document.frmRegister.iInterests.focus();
//		return false;
//    }

    // TODO: If 'Other' interest is selected, verify it exists
    
    // validate age value is numeric, if entered
    if (age.length > 0 && !age.toString().match(/^\d*$/))
    {
        alert("Please enter a valid age...");
        // set focus on Age
        document.frmRegister.iAge.focus();
        return false;
    }

	// validate open house attendance
	if (openHouse.length <= 0)
	{
		alert("Indicate your plans to attend Open House...");
		// set focus to open house
		document.frmRegister.iOpenHouse.focus();
		return false;
	}

	document.frmRegister.submit();
}


/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Name       :  ClickPasswordChangeSubmit
' Purpose    :  Perform form validation on the password change
'               form.  If everything is valid, submit the form.
' Parameters :  none.
' Return val :  none.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/
function ClickPasswordChangeSubmit()
{
	var currentPassword = document.frmPwdChange.iCurrentPassword.value;
	var newPassword = document.frmPwdChange.iNewPassword.value;
	var confirmNewPassword = document.frmPwdChange.iConfirmNewPassword.value;
	var emailAddress = document.frmPwdChange.iEmail.value;
	var confirmEmailAddress = document.frmPwdChange.iConfirmEmail.value;

    var regexp;

	// validate current password
	if (currentPassword.length <= 0)
	{
		alert("Please enter a current password...");
		// set focus to Current Password
		document.frmPwdChange.iCurrentPassword.focus();
		return false;
	}

	// validate new password
	if (newPassword.length <= 0)
	{
		alert("Please enter a new password...");
		// set focus to New Password
		document.frmPwdChange.iNewPassword.focus();
		return false;
	}
	else
	{
        if (newPassword != "" && newPassword == confirmNewPassword)
        {
            if (newPassword.length < 8 || newPassword.length > 15)
            {
                alert("New password must contain between 8 and 15 characters.  Please try again...");
                // set focus to New Password
    	        document.frmPwdChange.iNewPassword.focus();
	            return false;
            }
            regexp = /[0-9]/;
            if (!regexp.test(newPassword))
            {
                alert("New password must contain at least one number (0-9).  Please try again...");
                // set focus to New Password
    	        document.frmPwdChange.iNewPassword.focus();
	            return false;
            }
            regexp = /[a-z]/;
            if (!regexp.test(newPassword))
            {
                alert("New password must contain at least one lowercase letter (a-z).  Please try again...");
                // set focus to New Password
    	        document.frmPwdChange.iNewPassword.focus();
	            return false;
            }
            regexp = /[A-Z]/;
            if (!regexp.test(newPassword))
            {
                alert("New password must contain at least one uppercase letter (A-Z).  Please try again...");
                // set focus to New Password
    	        document.frmPwdChange.iNewPassword.focus();
	            return false;
            }
        }
        else
        {
            alert("Please check that you've entered and confirmed your password.");
		    // set focus to New Password
    	    document.frmPwdChange.iNewPassword.focus();
	        return false;
        }
    }

	// validate email address
	if (emailAddress.length <= 0)
	{
		alert("Please enter an e-mail address...");
		// set focus to email address
		document.frmPwdChange.iEmail.focus();
		return false;
	}
	else
	{
        if (emailAddress != "" && emailAddress == confirmEmailAddress)
        {
		    // Verify if the given value is a possible valid email address by making sure the email address has:
		    // 1) one "@" and at least one "."
		    // 2) no spaces, extra "@"s or a "." just before or after the "@"
		    // 3) at least one "." after the "@"
		    var at = "@";
		    var dot = ".";
		    var lat = emailAddress.indexOf(at);
		    var lstr = emailAddress.length;
		    var ldot = emailAddress.indexOf(dot);
		    if (emailAddress.indexOf(at) == -1)
		    {
			    alert("Please enter a valid e-mail address...");
			    // set focus to email address
			    document.frmPwdChange.iEmail.focus();
			    return false;
		    }

		    if (emailAddress.indexOf(at) == -1 || emailAddress.indexOf(at) == 0 || emailAddress.indexOf(at) == lstr)
		    {
			    alert("Please enter a valid e-mail address...");
			    // set focus to email address
			    document.frmPwdChange.iEmail.focus();
			    return false;
		    }

		    if (emailAddress.indexOf(dot) == -1 || emailAddress.indexOf(dot) == 0 || emailAddress.indexOf(dot) == lstr)
		    {
			    alert("Please enter a valid e-mail address...");
			    // set focus to email address
			    document.frmPwdChange.iEmail.focus();
			    return false;
		    }

		    if (emailAddress.indexOf(at, (lat + 1)) != -1)
		    {
			    alert("Please enter a valid e-mail address...");
			    // set focus to email address
			    document.frmPwdChange.iEmail.focus();
			    return false;
		    }

		    if (emailAddress.substring(lat - 1, lat) == dot || emailAddress.substring(lat + 1, lat + 2) == dot)
		    {
			    alert("Please enter a valid e-mail address...");
			    // set focus to email address
			    document.frmPwdChange.iEmail.focus();
			    return false;
		    }

		    if (emailAddress.indexOf(dot, (lat + 2)) == -1)
		    {
			    alert("Please enter a valid e-mail address...");
			    // set focus to email address
			    document.frmPwdChange.iEmail.focus();
			    return false;
		    }

		    if (emailAddress.indexOf(" ") != -1)
		    {
			    alert("Please enter a valid e-mail address...");
			    // set focus to email address
			    document.frmPwdChange.iEmail.focus();
			    return false;
		    }
        }
        else
        {
            alert("Please check that you've entered and confirmed your email address.");
		    // set focus to email address
    	    document.frmPwdChange.iEmail.focus();
	        return false;
        }
	}

	document.frmPwdChange.submit();
}


/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Name       :  PayPalOpenHouseSubmit
' Purpose    :  Perform form validation on the PayPal online payment
'               form for Open House registration fees.  If everything 
'               is valid, submit the form.
' Parameters :  none.
' Return val :  none.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/
function PayPalOpenHouseSubmit()
{
	var registrant = document.frmPayPalOpenHouse.os0.value;

	// validate name
	if (registrant.length <= 0)
	{
		alert("Please enter the registrant's full name...");
		// set focus to registrant
		document.frmPayPalOpenHouse.os0.focus();
		return false;
	}

	document.frmPayPalOpenHouse.submit();
}


/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Name       :  PayPalDuesSubmit
' Purpose    :  Perform form validation on the PayPal online payment
'               form for Open House registration fees.  If everything 
'               is valid, submit the form.
' Parameters :  none.
' Return val :  none.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/
function PayPalDuesSubmit()
{
	var member = document.frmPayPalDues.os0.value;

	// validate name
	if (member.length <= 0)
	{
		alert("Please enter the member's full name...");
		// set focus to registrant
		document.frmPayPalDues.os0.focus();
		return false;
	}

	document.frmPayPalDues.submit();
}