﻿/*
This javascript has hard-coded reference to the page's controls names (including ASP.Net controls)
thus would need to be updated should the form element names or the ASP.NET control's clientID changes.
This code relies on the ASP.NET controls not being nested on a user-defined control (ASCX).  Nesting an 
ASP.NET control to a user-defined control alters the clientID.
*/

function checkMobileSignupForm(source, args) {
    trackPayEvent("mobiledetails/validation-begin");

    /* gail: to do*** change var names */
    var tbPhone1 = "tbPhone1";
    var tbPhone2 = "tbPhone2";
    var tbPhone3 = "tbPhone3";
    var ErrorDiv = "dvMobileError";
    var LoadingDiv = "dvLoading";
    var SignupButtonDiv = "imgStartNow";
    //
    var DisplayErrorsInline = false;

    if (CampaignValidationStyle.toLowerCase() == "inline") {
        DisplayErrorsInline = true;
        var dvMobileInlineError = "dvMobileInlineError";
    }
    
    if (!CheckPhoneNumber(document.getElementById(tbPhone1).value, 3)) {
        showError("Please enter your AT&T Mobile number", tbPhone1, ErrorDiv, ErrorDiv, dvMobileInlineError, DisplayErrorsInline);
        document.getElementById(tbPhone1).style.border = "solid 2px red";
        args.IsValid = false;
        trackPayEvent("mobiledetails/error/" + tbPhone1, document.getElementById(tbPhone1).value);
        return;
    }
    else
        document.getElementById(tbPhone1).style.border = "";

    if (!CheckPhoneNumber(document.getElementById(tbPhone2).value, 3)) {
        showError("Please enter your AT&T Mobile number", tbPhone2, ErrorDiv, ErrorDiv, dvMobileInlineError, DisplayErrorsInline);
        document.getElementById(tbPhone2).style.border = "solid 2px red";
        args.IsValid = false;
        trackPayEvent("mobiledetails/error/" + tbPhone2, document.getElementById(tbPhone2).value);
        return;
    }
    else
        document.getElementById(tbPhone2).style.border = "";
        
    if (!CheckPhoneNumber(document.getElementById(tbPhone3).value, 4)) {
        showError("Please enter your AT&T Mobile number", tbPhone3, ErrorDiv, ErrorDiv, dvMobileInlineError, DisplayErrorsInline);
        document.getElementById(tbPhone3).style.border = "solid 2px red";
        args.IsValid = false;
        trackPayEvent("mobiledetails/error/" + tbPhone3, document.getElementById(tbPhone3).value);
        return;
    }
    else
        document.getElementById(tbPhone3).style.border = "";
    
    ShowLoading(LoadingDiv, SignupButtonDiv);
    trackPayEvent("mobiledetails/validation-complete");
}

function checkMobileOptinForm(source, args) {
    trackPayEvent("mobilepin/validation-begin");

    var tbMobilePin = "tbMobilePin";
    var cbTerms = "cbTerms";
    var dvPinError = "dvPinError";
    var dvTermsError = "dvTermsError";
    var LoadingDiv = "dvLoading";
    var SignupButtonDiv = "imgStartNow";



    if (!CheckPhoneNumber(document.getElementById(tbMobilePin).value, 4)) {
        showError("Please enter your PIN number", tbMobilePin, dvPinError, dvPinError);
        document.getElementById(tbMobilePin).setAttribute("class", "form_error");
        document.getElementById(tbMobilePin).setAttribute("className", "form_error");
        args.IsValid = false;
        trackPayEvent("mobilepin/error/" + tbMobilePin, document.getElementById(tbMobilePin).value);
        return;
    }
    else if (document.getElementById(tbMobilePin).value == '0000') {
        showError("Please enter the PIN that we texted", tbMobilePin, dvPinError, dvPinError);
        document.getElementById(tbMobilePin).setAttribute("class", "form_error");
        document.getElementById(tbMobilePin).setAttribute("className", "form_error");
        args.IsValid = false;
        trackPayEvent("mobilepin/error/" + tbMobilePin + " is 0000", document.getElementById(tbMobilePin).value);
        return;
    }
    else {
        hideError(dvPinError);
        document.getElementById(tbMobilePin).removeAttribute("class");
        document.getElementById(tbMobilePin).removeAttribute("className");
    }

    if (!document.getElementById(cbTerms).checked) {
        showError("Please agree to the Terms & Conditions", cbTerms, dvTermsError, dvTermsError);
        args.IsValid = false;
        trackPayEvent("mobilepin/error/" + cbTerms);
        return;
    }
    else {
        hideError(dvTermsError);
        ShowLoading(LoadingDiv, SignupButtonDiv);
    }
    trackPayEvent("mobilepin/validation-complete");
}

function checkLECFormOnSubmit() {
    trackPayEvent("lecdetails/validation-begin");
    var panelError = "panelError";
    var dlGender = "dlGender";
    var tbFirstName = "tbFirstName";
    var tbLastName = "tbLastName";
    var tbAddress = "tbAddress";
    var tbCity = "tbCity";
    var dlState = "dlState";
    var tbZip = "tbZip";
    var tbHomePhone1 = "tbHomePhone1";
    var tbHomePhone2 = "tbHomePhone2";
    var tbHomePhone3 = "tbHomePhone3";
    var dlBirthMonth = "dlBirthMonth";
    var dlBirthDay = "dlBirthDay";
    var dlBirthYear = "dlBirthYear";
    var tbEmail = "tbEmail";
    var tbSocialSecurity = "tbSocialSecurity";
    var lbError = "lbError";
    var ErrorDiv = "dvLECError";
    var LoadingDiv = "dvLoading";
    var SignupButtonDiv = "imgStartNow";

    //Inline div error fields - Not all campaigns have them.
    var DisplayErrorsInline = false;

    if (CampaignValidationStyle.toLowerCase() == "inline") {
        DisplayErrorsInline = true;
        var dvGenderError = "dvGenderError";
        var dvFnameError = "dvFNameError";
        var dvLnameError = "dvLNameError";
        var dvEmailError = "dvEmailError";
        var dvAddressError = "dvAddressError";
        var dvCityStateZipError = "dvCityStateZipError";
        var dvPhoneError = "dvPhoneError";
        var dvDOBError = "dvDOBError";
        var dvSSNError = "dvSSNError";
    }

    //hide server error message
    if (document.getElementById(panelError) != null)
        document.getElementById(panelError).style.display = "none";

    if (document.getElementById(dlGender).selectedIndex == 0) {
        showError("Please select your gender.", dlGender, ErrorDiv, ErrorDiv, dvGenderError, DisplayErrorsInline);
        document.getElementById(dlGender).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + dlGender, document.getElementById(dlGender).selectedIndex);
        return false;
    }
    else
        document.getElementById(dlGender).style.border = "";
    hideError(dvGenderError);

    if (!CheckString(document.getElementById(tbFirstName).value, 2)) {
        showError("Please enter your first name.", tbFirstName, ErrorDiv, ErrorDiv, dvFnameError, DisplayErrorsInline);
        document.getElementById(tbFirstName).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + tbFirstName, document.getElementById(tbFirstName).value);
        return false;
    }
    else
        document.getElementById(tbFirstName).style.border = "";
    hideError(dvFnameError);

    if (!CheckString(document.getElementById(tbLastName).value, 2)) {
        showError("Please enter your last name.", tbLastName, ErrorDiv, ErrorDiv, dvLnameError, DisplayErrorsInline);
        document.getElementById(tbLastName).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + tbLastName, document.getElementById(tbLastName).value);
        return false;
    }
    else
        document.getElementById(tbLastName).style.border = "";
    hideError(dvLnameError);
    
    //check first name and last name are not the same
    if (document.getElementById(tbFirstName).value.toLowerCase() == document.getElementById(tbLastName).value.toLowerCase()) {        
        showError("First name and last name cannot be the same.", tbFirstName, ErrorDiv, ErrorDiv);        
        document.getElementById(tbFirstName).style.border = "solid 2px red";        
        document.getElementById(tbLastName).style.border = "solid 2px red";        
        trackPayEvent("lecdetails/error/same " + tbFirstName + " " + tbLastName, document.getElementById(tbFirstName).value);
        return false;
    }    
    else {
        document.getElementById(tbFirstName).style.border = "";
        document.getElementById(tbLastName).style.border = "";
    }
    
    //if (!CheckString(document.getElementById(tbAddress).value, 2)) {
    if (!CheckAddress(document.getElementById(tbAddress).value)) {
        showError("Please enter a valid address. (At least 3 letters and 1 number.)", tbAddress, ErrorDiv, ErrorDiv, dvAddressError, DisplayErrorsInline);
        document.getElementById(tbAddress).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + tbAddress, document.getElementById(tbAddress).value);
        return false;
    }
    else
        document.getElementById(tbAddress).style.border = "";
    hideError(dvAddressError);

    if (!CheckAlphaSpaceOnly(document.getElementById(tbCity).value, 3)) {
        showError("Please enter your city. (Please remove any dots or dashes and have at least 3 characters.)", tbCity, ErrorDiv, ErrorDiv, dvCityStateZipError, DisplayErrorsInline);
        document.getElementById(tbCity).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + tbCity, document.getElementById(tbCity).value);
        return false;
    }
    else
        document.getElementById(tbCity).style.border = "";
    hideError(dvCityStateZipError);

    if (document.getElementById(dlState).selectedIndex == 0) {
        showError("Please select your state.", dlState, ErrorDiv, ErrorDiv, dvCityStateZipError, DisplayErrorsInline);
        document.getElementById(dlState).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + dlState, document.getElementById(dlState).selectedIndex);
        return false;
    }
    else
        document.getElementById(dlState).style.border = "";
    hideError(dvCityStateZipError);

    if (!ValidateZip(document.getElementById(tbZip).value)) {
        showError("Please enter your zip code.", tbZip, ErrorDiv, ErrorDiv, dvCityStateZipError, DisplayErrorsInline);
        document.getElementById(tbZip).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + tbZip, document.getElementById(tbZip).value);
        return false;
    }
    else
        document.getElementById(tbZip).style.border = "";
    hideError(dvCityStateZipError);

    if (!CheckPhoneNumber(document.getElementById(tbHomePhone1).value, 3)) {
        showError("Please enter your home phone number.", tbHomePhone1, ErrorDiv, ErrorDiv, dvPhoneError, DisplayErrorsInline);
        document.getElementById(tbHomePhone1).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + tbHomePhone1, document.getElementById(tbHomePhone1).value);
        return false;
    }
    else
        document.getElementById(tbHomePhone1).style.border = "";
    hideError(dvPhoneError);

    if (!CheckPhoneNumber(document.getElementById(tbHomePhone2).value, 3)) {
        showError("Please enter your home phone number.", tbHomePhone2, ErrorDiv, ErrorDiv, dvPhoneError, DisplayErrorsInline);
        document.getElementById(tbHomePhone2).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + tbHomePhone2, document.getElementById(tbHomePhone2).value);
        return false;
    }
    else
        document.getElementById(tbHomePhone2).style.border = "";
    hideError(dvPhoneError);

    if (!CheckPhoneNumber(document.getElementById(tbHomePhone3).value, 4)) {
        showError("Please enter your home phone number.", tbHomePhone3, ErrorDiv, ErrorDiv, dvPhoneError, DisplayErrorsInline);
        document.getElementById(tbHomePhone3).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + tbHomePhone3, document.getElementById(tbHomePhone3).value);
        return false;
    }
    else
        document.getElementById(tbHomePhone3).style.border = "";
    hideError(dvPhoneError);

    //validate full number
    if (!ValidateFullPhoneNumber(document.getElementById(tbHomePhone1).value, document.getElementById(tbHomePhone2).value, document.getElementById(tbHomePhone3).value)) {
        showError("Please enter a valid home phone number.", tbHomePhone1, ErrorDiv, ErrorDiv);
        document.getElementById(tbHomePhone1).style.border = "solid 2px red";
        document.getElementById(tbHomePhone2).style.border = "solid 2px red";
        document.getElementById(tbHomePhone3).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/homephone-full", document.getElementById(tbHomePhone1).value + document.getElementById(tbHomePhone2).value + document.getElementById(tbHomePhone3).value);
        return false;
    } else {
        document.getElementById(tbHomePhone1).style.border = "";
        document.getElementById(tbHomePhone2).style.border = "";
        document.getElementById(tbHomePhone3).style.border = "";
    }        
        
    if (document.getElementById(dlBirthMonth).selectedIndex == 0) {
        showError("Please select birth month.", dlBirthMonth, ErrorDiv, ErrorDiv, dvDOBError, DisplayErrorsInline);
        document.getElementById(dlBirthMonth).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + dlBirthMonth, document.getElementById(dlBirthMonth).selectedIndex);
        return false;
    }
    else
        document.getElementById(dlBirthMonth).style.border = "";
    hideError(dvDOBError);

    if (document.getElementById(dlBirthDay).selectedIndex == 0) {
        showError("Please select your birth day.", dlBirthDay, ErrorDiv, ErrorDiv, dvDOBError, DisplayErrorsInline);
        document.getElementById(dlBirthDay).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + dlBirthDay, document.getElementById(dlBirthDay).selectedIndex);
        return false;
    }
    else
        document.getElementById(dlBirthDay).style.border = "";
    hideError(dvDOBError);

    if (document.getElementById(dlBirthYear).selectedIndex == 0) {
        showError("Please select your birth year.", dlBirthYear, ErrorDiv, ErrorDiv, dvDOBError, DisplayErrorsInline);
        document.getElementById(dlBirthYear).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + dlBirthYear, document.getElementById(dlBirthYear).selectedIndex);
        return false;
    }
    else
        document.getElementById(dlBirthYear).style.border = "";
    hideError(dvDOBError);

    if (isDate(document.getElementById(dlBirthMonth).value + '/' + document.getElementById(dlBirthDay).value + '/' + document.getElementById(dlBirthYear).value) == false) {
        showError("Please select a valid date.", dlBirthYear, ErrorDiv, ErrorDiv, dvDOBError, DisplayErrorsInline);
        document.getElementById(dlBirthDay).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/birthdate-invalid", document.getElementById(dlBirthMonth).value + '/' + document.getElementById(dlBirthDay).value + '/' + document.getElementById(dlBirthYear).value);
        return false;
    }
    else
        document.getElementById(dlBirthDay).style.border = "";
    hideError(dvDOBError);

    cleanEmail(document.getElementById(tbEmail));
    if (!CheckEmail(document.getElementById(tbEmail).value)) {
        showError("Please enter your email.", tbEmail, ErrorDiv, ErrorDiv, dvEmailError, DisplayErrorsInline);
        document.getElementById(tbEmail).style.border = "solid 2px red";
        trackPayEvent("lecdetails/error/" + tbEmail, document.getElementById(tbEmail).value);
        return false;
    }
    else
        document.getElementById(tbEmail).style.border = "";
    hideError(dvEmailError);


    if (document.getElementById(tbSocialSecurity) != null) 
    {
        if (!CheckPhoneNumber(document.getElementById(tbSocialSecurity).value, 4)) {
            showError("Please enter the last 4 digits of your Social Security Number.", tbSocialSecurity, ErrorDiv, ErrorDiv, dvSSNError, DisplayErrorsInline);
            document.getElementById(tbSocialSecurity).style.border = "solid 2px red";
            trackPayEvent("lecdetails/error/" + tbSocialSecurity, document.getElementById(tbSocialSecurity).value);
            return false;
        }
        else
            document.getElementById(tbSocialSecurity).style.border = "";
    }
    

    hideError(dvSSNError);

    hideError(ErrorDiv);
    ShowLoading(LoadingDiv, SignupButtonDiv);

    trackPayEvent("lecdetails/validation-complete");
    return true;
}


function checkUserForm(vpath) {
    trackEvent(vpath, "splash/validation-begin");
    var tbFirstName = "tbFirstName";
    var tbLastName = "tbLastName";
    var tbEmailAddress = "tbEmailAddress";
    var tbPassword = "tbPassword";
    var tbHomePhone1 = "tbHomePhone1";
    var tbHomePhone2 = "tbHomePhone2";
    var tbHomePhone3 = "tbHomePhone3";
    var tbMobilePhone1 = "tbMobilePhone1";
    var tbMobilePhone2 = "tbMobilePhone2";
    var tbMobilePhone3 = "tbMobilePhone3";
    var ErrorDiv = "ErrorDiv";
    var ErrorMsgDiv = "ErrorMsgDiv";
    var LoadingDiv = "dvLoading";
    var SignupButtonDiv = "JoinNow";

    //Inline error messages.//
    var DisplayErrorsInline = false;

    if (CampaignValidationStyle.toLowerCase() == "inline") {
        DisplayErrorsInline = true;
        var dvFnameError = "dvFNameError";
        var dvLnameError = "dvLNameError";
        var dvEmailError = "dvEmailError";
        var dvPassError = "dvPassError";
        var dvCnfrmPassError = "dvCnfrmPassError";
        var dvPhoneError = "dvPhoneError";
        var dvMobilePhoneError = "dvMobilePhoneError";
    }

    //hide server error message
    if (document.getElementById(ErrorDiv) != null)
        document.getElementById(ErrorDiv).style.display = "none";

    if (document.getElementById(tbFirstName) != null)
        if (!CheckString(document.getElementById(tbFirstName).value, 1)) {
            showError("Please enter your first name.", tbFirstName, ErrorDiv, ErrorMsgDiv, dvFnameError, DisplayErrorsInline);
            document.getElementById(tbFirstName).style.border = "solid 2px red";
            trackEvent(vpath, "splash/error/" + tbFirstName, document.getElementById(tbFirstName).value);
            return false;
        }
        else {
            document.getElementById(tbFirstName).style.border = "";
            hideError(dvFnameError);
        }

    if (document.getElementById(tbLastName) != null)
        if (!CheckString(document.getElementById(tbLastName).value, 1)) {
            showError("Please enter your last name.", tbLastName, ErrorDiv, ErrorMsgDiv, dvLnameError, DisplayErrorsInline);
            document.getElementById(tbLastName).style.border = "solid 2px red";
            trackEvent(vpath, "splash/error/" + tbLastName, document.getElementById(tbLastName).value);
            return false;
        }
        else {
            document.getElementById(tbLastName).style.border = "";
            hideError(dvLnameError);
        }
    
    if (document.getElementById(tbEmailAddress) != null) {
        cleanEmail(document.getElementById(tbEmailAddress));
        if (!CheckEmail(document.getElementById(tbEmailAddress).value)) {
            showError("Please enter your valid email address.", tbEmailAddress, ErrorDiv, ErrorMsgDiv, dvEmailError, DisplayErrorsInline);
            document.getElementById(tbEmailAddress).style.border = "solid 2px red";
            trackEvent(vpath, "splash/error/" + tbEmailAddress, document.getElementById(tbEmailAddress).value);
            return false;
        }
        else {
            document.getElementById(tbEmailAddress).style.border = "";
            hideError(dvEmailError);
        }
    }

    if (document.getElementById(tbPassword) != null)
        if (!CheckString(document.getElementById(tbPassword).value, 4)) {
            showError("Please enter a password of at least 4 characters.", tbPassword, ErrorDiv, ErrorMsgDiv, dvPassError, DisplayErrorsInline);
            document.getElementById(tbPassword).style.border = "solid 2px red";
            trackEvent(vpath, "splash/error/" + tbPassword, document.getElementById(tbPassword).value);
            return false;
        }
        else {
            document.getElementById(tbPassword).style.border = "";
            hideError(dvPassError);
        }

    /*BEGIN PHONE VALIDATION*/
    //Requirements: Home and Mobile fields may or may not be present and filled in correctly
    //If both are there, then
        //if (home is not empty) or (home is empty and mob is empty), validate home 
            //if home incorrect, prompt
        //if (home has no error, and mobile is not empty), validate mob
            //if mob is incorrect, prompt
    //if one is there, then
        //if (empty or incorrect), prompt

    var homeExists = false;
    var mobileExists = false;
    var homeErrorField = '';
    var mobileErrorField = '';
    var strHome;
    var strMobile;
    var displayHomeError = false;
    var displayMobileError = false;

    if (document.getElementById(tbHomePhone1) != null && document.getElementById(tbHomePhone2) != null && document.getElementById(tbHomePhone3) != null) {
        homeExists = true;
        document.getElementById(tbHomePhone1).style.border = "";
        document.getElementById(tbHomePhone2).style.border = "";
        document.getElementById(tbHomePhone3).style.border = "";
        strHome = document.getElementById(tbHomePhone1).value + document.getElementById(tbHomePhone2).value + document.getElementById(tbHomePhone3).value;
    }
    if (document.getElementById(tbMobilePhone1) != null && document.getElementById(tbMobilePhone2) != null && document.getElementById(tbMobilePhone3) != null) {
        mobileExists = true;
        document.getElementById(tbMobilePhone1).style.border = "";
        document.getElementById(tbMobilePhone2).style.border = "";
        document.getElementById(tbMobilePhone3).style.border = "";
        strMobile = document.getElementById(tbMobilePhone1).value + document.getElementById(tbMobilePhone2).value + document.getElementById(tbMobilePhone3).value;
    }
    
    if (homeExists && mobileExists)
    {
        if ((strHome != '') || (strHome == '' && strMobile==''))
        {
            homeErrorField = validatePhoneFields(tbHomePhone1, tbHomePhone2, tbHomePhone3);  
            if (homeErrorField != '')
                displayHomeError = true;
        }
        if (displayHomeError == false && strMobile != '')
        {
            mobileErrorField = validatePhoneFields(tbMobilePhone1, tbMobilePhone2, tbMobilePhone3); 
            if (mobileErrorField != '')
                displayMobileError = true;
        }
    } 
    else if (homeExists)
    {
        homeErrorField = validatePhoneFields(tbHomePhone1, tbHomePhone2, tbHomePhone3);  
        if (homeErrorField != '')
            displayHomeError = true;
    }
    else if (mobileExists)
    {
        mobileErrorField = validatePhoneFields(tbMobilePhone1, tbMobilePhone2, tbMobilePhone3); 
        if (mobileErrorField != '')
            displayMobileError = true;
    }
    
    if (displayHomeError == true)
    {
        showError("Please enter a valid 10-digit phone number. Enter digits only.", homeErrorField, ErrorDiv, ErrorMsgDiv, dvPhoneError, DisplayErrorsInline);
        trackEvent(vpath, "splash/error/tbHomePhone", document.getElementById(tbHomePhone1).value + document.getElementById(tbHomePhone2).value + document.getElementById(tbHomePhone3).value);
        return false;
    }
    else if (displayMobileError == true)
    {
        showError("Please enter a valid 10-digit phone number. Enter digits only.", mobileErrorField, ErrorDiv, ErrorMsgDiv, dvMobilePhoneError, DisplayErrorsInline);
        trackEvent(vpath, "splash/error/tbMobilePhone", document.getElementById(tbMobilePhone1).value + document.getElementById(tbMobilePhone2).value + document.getElementById(tbMobilePhone3).value);
        return false;
    }
    else {
        hideError(dvPhoneError);
        hideError(dvMobilePhoneError);
    }
    /*END PHONE VALIDATION*/

    hideError(ErrorDiv);

    document.getElementById(LoadingDiv).style.display = "block";

    document.getElementById(SignupButtonDiv).style.display = "none";

    trackEvent(vpath, "splash/validation-complete");
    return true;
}

function validatePhoneFields(tbPhone1, tbPhone2, tbPhone3) {
    var errorField = '';

    if (!CheckPhoneNumber(document.getElementById(tbPhone1).value, 3)) {
        document.getElementById(tbPhone1).style.border = "solid 2px red";
        errorField = tbPhone1;
    }
    else
        document.getElementById(tbPhone1).style.border = "";

    if (errorField == '' && !CheckPhoneNumber(document.getElementById(tbPhone2).value, 3)) {
        document.getElementById(tbPhone2).style.border = "solid 2px red";
        errorField = tbPhone2;
    }
    else
        document.getElementById(tbPhone2).style.border = "";

    if (errorField == '' && !CheckPhoneNumber(document.getElementById(tbPhone3).value, 4)) {
        document.getElementById(tbPhone3).style.border = "solid 2px red";
        errorField = tbPhone3;
    }
    else
        document.getElementById(tbPhone3).style.border = "";

    return errorField;
}


function checkCCForm(oSrc, args) {
    trackPayEvent("ccdetails/validation-begin");
    var panelError = "panelError";
    var txtAddress = "tbAddress";
    var txtZip = "tbZip";
    var tbCreditCardNumber = "tbCreditCardNumber";
    var txtCVV2 = "tbCVV2";
    var cbTerms = "cbTerms";
    var dvCCError = "dvCCError";
    var dlExpMonth = "dlExpMonth";
    var dlExpYear = "dlExpYear";

    //Inline div error fields - Not all campaigns have them.
    var DisplayErrorsInline = false;

    if (CampaignValidationStyle.toLowerCase() == "inline") {
        DisplayErrorsInline = true;
        var dvAddressError = "dvAddressError";
        var dvZipError = "dvZipError";
        var dvCountryError = "dvCountryError";
        var dvCCNumberError = "dvCCNumberError";
        var dvExpiryDateError = "dvExpiryDateError";
        var dvCVV2Error = "dvCVV2Error";
        var dvTermsError = "dvTermsError";
    }

    //hide server error message
    if (document.getElementById(panelError) != null)
        document.getElementById(panelError).style.display = "none";

    if (!CheckString(document.getElementById(txtAddress).value, 3)) {
        showError("Please enter your address as it appears on your credit card statement.", txtAddress, dvCCError, dvCCError, dvAddressError, DisplayErrorsInline);
        args.IsValid = false;
        document.getElementById(txtAddress).style.border = "solid 2px red";
        trackPayEvent("ccdetails/error/" + txtAddress, document.getElementById(txtAddress).value);
        return;
    }
    else {
        document.getElementById(txtAddress).style.border = "";
        hideError(dvAddressError);
    }

    if (!ValidateZip(document.getElementById(txtZip).value)) {
        showError("Please enter your zip code as it appears on your credit card statement.", txtZip, dvCCError, dvCCError, dvZipError, DisplayErrorsInline);
        args.IsValid = false;
        document.getElementById(txtZip).style.border = "solid 2px red";
        trackPayEvent("ccdetails/error/" + txtZip, document.getElementById(txtZip).value);
        return;
    }
    else {
        document.getElementById(txtZip).style.border = "";
        hideError(dvZipError);
    }

    var cardnumber = document.getElementById(tbCreditCardNumber).value;
    var cardtype = "";
    if (cardnumber.indexOf("6") == 0)
        cardtype = "discover";
    else if (cardnumber.indexOf("4") == 0)
        cardtype = "visa";
    else if (cardnumber.indexOf("5") == 0)
        cardtype = "mastercard";
    else if (cardnumber.indexOf("3") == 0)
        cardtype = "amex";

    if (!isValidCreditCardNumber(cardnumber, cardtype)) {
        showError("Please enter a valid credit card number.", tbCreditCardNumber, dvCCError, dvCCError, dvCCNumberError, DisplayErrorsInline);
        args.IsValid = false;
        document.getElementById(tbCreditCardNumber).style.border = "solid 2px red";
        trackPayEvent("ccdetails/error/" + tbCreditCardNumber);                
        return;
    }
    else {
        document.getElementById(tbCreditCardNumber).style.border = "";
        hideError(dvCCNumberError);
    }

    if (document.getElementById(dlExpMonth).selectedIndex == 0) {
        showError("Please enter a valid expiry date.", dlExpMonth, dvCCError, dvCCError, dvExpiryDateError, DisplayErrorsInline);
        args.IsValid = false;
        document.getElementById(dlExpMonth).style.border = "solid 2px red";
        trackPayEvent("ccdetails/error/" + dlExpMonth, document.getElementById(dlExpMonth).selectedIndex);
        return;
    }
    else {
        document.getElementById(dlExpMonth).style.border = "";
        hideError(dvExpiryDateError);
    }

    if (document.getElementById(dlExpYear).selectedIndex == 0) {
        showError("Please enter a valid expiry date.", dlExpYear, dvCCError, dvCCError, dvExpiryDateError, DisplayErrorsInline);
        args.IsValid = false;
        document.getElementById(dlExpYear).style.border = "solid 2px red";
        trackPayEvent("ccdetails/error/" + dlExpYear, document.getElementById(dlExpYear).selectedIndex);
        return;
    }
    else {
        document.getElementById(dlExpYear).style.border = "";
        hideError(dvExpiryDateError);
    }
    
    // Check that expiry date entered is not in the past
    var currentTime = new Date();
    var e = document.getElementById(dlExpYear);
    if (document.getElementById(dlExpMonth).selectedIndex < (currentTime.getMonth() + 1)
        && e.options[e.selectedIndex].value <= currentTime.getFullYear().toString().slice(2)) {
        showError("Please enter a valid expiry date.", dlExpMonth, dvCCError, dvCCError, dvExpiryDateError, DisplayErrorsInline);
        args.IsValid = false;
        document.getElementById(dlExpMonth).style.border = "solid 2px red";
        trackPayEvent("ccdetails/error/pastExpDate", document.getElementById(dlExpMonth).selectedIndex + "/" + e.options[e.selectedIndex].value);
        return;
    }
    else {
        document.getElementById(dlExpMonth).style.border = "";
        hideError(dvExpiryDateError);
    }

    if (!CheckString(document.getElementById(txtCVV2).value, 3)) {
        showError("Please enter a valid security field.", txtCVV2, dvCCError, dvCCError, dvCVV2Error, DisplayErrorsInline);
        args.IsValid = false;
        document.getElementById(txtCVV2).style.border = "solid 2px red";
        trackPayEvent("ccdetails/error/" + txtCVV2);
        return;
    }
    else {
        document.getElementById(txtCVV2).style.border = "";
        hideError(dvCVV2Error);
    }

    if (!document.getElementById(cbTerms).checked) {
        showError("You must agree to the terms.", cbTerms, dvCCError, dvCCError, dvTermsError, DisplayErrorsInline);
        document.getElementById(cbTerms).style.border = "solid 2px red";
        trackPayEvent("ccdetails/error/" + cbTerms);
        args.IsValid = false;
        return;
    }
    else {
        document.getElementById(cbTerms).style.border = "";
        hideError(dvTermsError);
    }
    
    hideError(dvCCError);
    ShowLoading("dvLoading", "butCCNext");
    args.IsValid = true;

    trackPayEvent("ccdetails/validation-complete");
    return true;
}

/*
IN-LINE Javascript function.
These javascripts are executed as the page loads.
TO DO: check if this can be moved grouped to a function and the form/body's onload event
*/

if ((location.href.indexOf("lecdetails.aspx") >= 0) && (document.getElementById("panelError") != null)) {
    document.getElementById("panelError").style.display = "none";
    showError(document.getElementById("lbError").innerHTML, "", "dvLECError", "dvLECError");
}

function PrePopulatePhoneFields(mobilephone) {
    if ((mobilephone != null) && (location.href.indexOf("mobiledetails.aspx") >= 0) && (document.getElementById("tbPhone1") != null) && (document.getElementById("tbPhone2") != null) && (document.getElementById("tbPhone3") != null)) {
        document.getElementById("tbPhone1").value = mobilephone.toString().substring(0, 3);
        document.getElementById("tbPhone2").value = mobilephone.toString().substring(3, 6);
        document.getElementById("tbPhone3").value = mobilephone.toString().substring(6, 10);
    }
    return true;
}

function ShowMobileSingupError(msg, getfocus, ErrorDiv, ErrorMsgDiv) {
    var ErrorMessage = "";
    if (msg != "") {
        ErrorMessage = msg;
    }
    else {
        if (location.href.toLowerCase().indexOf("mobiledetails.aspx") >= 0) {
            ErrorMessage = "We are not able to send your pin. Please enter your valid AT&T number.";
            trackPayEvent("mobiledetails/error/pin-send-error");
        }
        if (location.href.toLowerCase().indexOf("mobilepin.aspx") >= 0) {
            ErrorMessage = "Please re-enter your pin per the SMS notifcation";
            trackPayEvent("mobilepin/error/pin-send-error");
        }
    }
    showError(ErrorMessage, getfocus, ErrorDiv, ErrorMsgDiv);
}


function checkLecOverlayForm() {
    var tbPhone1 = "tbLecOverlayHomePhone1";
    var tbPhone2 = "tbLecOverlayHomePhone2";
    var tbPhone3 = "tbLecOverlayHomePhone3";
    var ErrorDiv = "dvLECError";

    var errorField = validatePhoneFields(tbPhone1, tbPhone2, tbPhone3);

    //return validation result
    if (errorField != '') {
        showError("Please enter a valid 10-digit phone number. Enter digits only.", errorField, ErrorDiv, ErrorDiv);
        return false;
    }
    else {
        ShowLoading("dvLoading", "btnLecOverlaySubmit");
        return true;
    }
}

function IsNumeric(sText) {
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;

    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}

// Date validation script. 
var dtCh = "/";
function daysInFebruary(year) {
    // February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}
function DaysArray(n) {
    for (var i = 1; i <= n; i++) {
        this[i] = 31;
        if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 };
        if (i == 2) { this[i] = 29 };
    }
    return this;
}
function isDate(dtStr) {
    var daysInMonth = DaysArray(12);
    var pos1 = dtStr.indexOf(dtCh);
    var pos2 = dtStr.indexOf(dtCh, pos1 + 1);
    var strMonth = dtStr.substring(0, pos1);
    var strDay = dtStr.substring(pos1 + 1, pos2);
    var strYear = dtStr.substring(pos2 + 1);
    strYr = strYear;

    if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1);
    if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1);

    month = parseInt(strMonth);
    day = parseInt(strDay);
    year = parseInt(strYr);

    if (strMonth.length < 1 || month < 1 || month > 12) {
        return false;
    }
    if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
        return false;
    }
    return true;
}

//check ZIP isn't all the same number
function ValidateZip(zip) {
    //check for only 5 numbers
    var ValidZIP = /^[0-9]{5}$/;
    // allow only numbers
    if (!ValidZIP.test(zip))
        return false;

    //not all the same
    if ((zip == '11111') ||
         (zip == '22222') ||
         (zip == '33333') ||
         (zip == '44444') ||
         (zip == '55555') ||
         (zip == '66666') ||
         (zip == '77777') ||
         (zip == '88888') ||
         (zip == '99999'))
        return false;
    return true;
}

// 'box' validation – one centralized place where all validation messages are available.
// 'inLine' validation - each error message next to the validated control
var CampaignValidationStyle = 'box'; // Default.

function SetCampaignValidationStyle(str) {
    CampaignValidationStyle = str;
}

var eventTracker; 
var eventTrackerY;
function trackEvent(vpath, msg, errorvalue){
    try{
        if (eventTracker == null)
            eventTracker = _gat._getTracker("UA-3204473-4");
        eventTracker._setCustomVar(1,"errorvalue", errorvalue, 3);
        eventTracker._trackPageview(vpath + msg);

        if (eventTrackerY == null)
            eventTrackerY = _gat._getTracker("UA-3204473-5");
        eventTrackerY._trackEvent(vpath, msg, errorvalue);
    } catch(err) {}
	return true;
}

function trackPayEvent(msg, errorvalue){
    try{
        var vpath = location.pathname.split("/");
        vpath = "/" + vpath[3] + "/";
        trackEvent(vpath, msg, errorvalue);
    } catch(err) {}
	return true;
}

var CleanEmailOn = true; // Default.
function SetCleanEmail(str) {
    CleanEmailOn = str;
}

function cleanEmail(tbEmail){
    if (CleanEmailOn) {
    
        if (tbEmail.value.indexOf("@") == -1) {
            tbEmail.value = tbEmail.value.replace(/yahoo.com$/, "@yahoo.com");
            tbEmail.value = tbEmail.value.replace(/yahoo$/, "@yahoo.com");
            tbEmail.value = tbEmail.value.replace(/hotmail.com$/, "@hotmail.com");
            tbEmail.value = tbEmail.value.replace(/hotmail$/, "@hotmail.com");
            tbEmail.value = tbEmail.value.replace(/gmail.com$/, "@gmail.com");
            tbEmail.value = tbEmail.value.replace(/gmail$/, "@gmail.com");
            tbEmail.value = tbEmail.value.replace(/aol.com$/, "@aol.com");
            tbEmail.value = tbEmail.value.replace(/aol$/, "@aol.com");
        }
        
        if (tbEmail.value.indexOf("@") > -1)
            tbEmail.value = tbEmail.value.replace(/ /g, "");
     
        tbEmail.value = tbEmail.value.toLowerCase();
        tbEmail.value = tbEmail.value.replace(/\.$/, "");
        tbEmail.value = tbEmail.value.replace("@.", "@");
        tbEmail.value = tbEmail.value.replace(".@", "@");
        tbEmail.value = tbEmail.value.replace(",com", ".com");
        tbEmail.value = tbEmail.value.replace(",net", ".net");
        tbEmail.value = tbEmail.value.replace("..", ".");
        tbEmail.value = tbEmail.value.replace("@yahoocom", "@yahoo.com");
        tbEmail.value = tbEmail.value.replace("@hotmailcom", "@hotmail.com");
        tbEmail.value = tbEmail.value.replace("@gmailcom", "@gmail.com");
        tbEmail.value = tbEmail.value.replace("@aolcom", "@aol.com");
        tbEmail.value = tbEmail.value.replace(/@hotmail$/, "@hotmail.com");
        tbEmail.value = tbEmail.value.replace(/@gmail$/, "@gmail.com");
        tbEmail.value = tbEmail.value.replace(/@yahoo$/, "@yahoo.com");
        tbEmail.value = tbEmail.value.replace(/@aol$/, "@aol.com");

    }
}

function hasFlash() {
    var hasFlash = false;
    try {
        var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
        if(fo) hasFlash = true;
    }catch(e){
        if(navigator.mimeTypes ["application/x-shockwave-flash"] != undefined) 
            hasFlash = true;
    }
    return hasFlash;
}
