﻿// Array of fields currently highlighted
var highlighted = Array();

/* -----------------  Validate fields for user signup  ------------- */

function validateSignUp() {

  var wantsCatalog = $("#" + hdnOptinCatalog).attr('value');
  var wantsEmails = $("#" + hdnOptinEmails).attr('value');
  var wantsTxtMessages = $("#" + hdnOptinTxtMessages).attr('value');

  // if errorlabels exist, de-highlight
    unhighlight(highlighted);

    var errmsg = "";
    var errorlabels = Array(); // list of just IDs, not objects

    // required: zip, email, confirm email
    
    if (isEmpty(txtZip) || isNaN(txtZip.value) || txtZip.value.length < 5) {
        errmsg += "Please enter a valid ZIP Code.  ";
        errorlabels.push("lblZip");
    }


    if (txtEmail.value != txtEmailConfirm.value) {
        errmsg += "Email addresses don't match.  ";
        errorlabels.push("lblEmailConfirm");
    } else {
        if (isEmpty(txtEmail) || !isValidEmail(txtEmail.value)) {
            errmsg += "Please enter a valid email address. ";
            errorlabels.push("lblEmail");
        }
        if (isEmpty(txtEmailConfirm) || !isValidEmail(txtEmailConfirm.value)) {
            errmsg += "Please confirm your email address. ";
            errorlabels.push("lblEmail");
        }
    } // end if
    
    
    if (wantsCatalog=="true" || wantsEmails=="true") { // required: first, last
        if (isEmpty(txtFirstName) || txtFirstName.value == "First name") {
            errmsg += "Please enter your first name.  ";
            errorlabels.push('lblFirstName');
        }

        if (isEmpty(txtLastName) || txtLastName.value == "Last name") {
            errmsg += "Please enter your last name.  ";
            errorlabels.push('lblLastName');
        }

    } // end if


    if (wantsCatalog == "true") { // required: street address

        if (isEmpty(txtAddress1) || txtAddress1.value == "Address Line 1") {
            errmsg += "Please enter your address.  ";
            errorlabels.push('lblAddress1');
        }

    } // end if wantsCatalog


    if (wantsTxtMessages == "true") { // required: mobile, confirm mobile

        if (txtMobileNumber.value != txtConfirmMobileNumber.value) {
            errmsg += "Mobile number and confirmation mobile number do not match.  ";
            errorlabels.push("lblConfirmMobileNumber");
        } else {

            if (isEmpty(txtMobileNumber) || isNaN(txtMobileNumber.value)) {
                errmsg += "Please enter a valid mobile phone number.  ";
                errorlabels.push("lblMobileNumber");
            }

            if (isEmpty(txtConfirmMobileNumber) || isNaN(txtConfirmMobileNumber.value)) {
                errmsg += "Please confirm your mobile number.  ";
                errorlabels.push("lblConfirmMobileNumber");
            }
        }
        

    } // end if wantsTxtMessages


    // Highlight errorfields and display error message

    if (errmsg != "") {
       // highlight(errorlabels);

        lblErrorMessage.innerHTML = errmsg;

        return false;
    }
    else {
        return true;
    }
    
} // end function validatesignup()




function validateSignUpSpanish() {
    
    var wantsCatalog = $("#" + hdnOptinCatalog).attr('value');
    var wantsEmails = $("#" + hdnOptinEmails).attr('value');
    var wantsTxtMessages = $("#" + hdnOptinTxtMessages).attr('value');

    // if errorlabels exist, de-highlight
    unhighlight(highlighted);

    var errmsg = "";
    var errorlabels = Array(); // list of just IDs, not objects

    // required: zip, email, confirm email

    if (isEmpty(txtZip) || isNaN(txtZip.value) || txtZip.value.length < 5) {
        errmsg += "Por favor completa tu código postal. ";
        errorlabels.push("lblZip");
    }

    if (txtEmail.value != txtEmailConfirm.value) {
        errmsg += "Direcci&oacute;n de correo electrónica y confirmaci&oacute;n no son iguales.";
        errorlabels.push("lblEmailConfirm");
    } else {

        if (isEmpty(txtEmail) || !isValidEmail(txtEmail.value)) {
            errmsg += "Por favor completa tu dirección de correo electrónico. ";
            errorlabels.push("lblEmail");
        }

        if (isEmpty(txtEmailConfirm) || !isValidEmail(txtEmailConfirm.value)) {
            errmsg += "Por favor confirma tu dirección de correo electrónico. ";
            errorlabels.push("lblEmail");
        }
    }
   

    if (wantsCatalog == "true" || wantsEmails == "true") { // required: first, last, street address
        if (isEmpty(txtFirstName) || txtFirstName.value == "First name") {
            errmsg += "Por favor completa tu nombre.";
            errorlabels.push('lblFirstName');
        }

        if (isEmpty(txtLastName) || txtLastName.value == "Last name") {
            errmsg += "Por favor completa tu apellido.";
            errorlabels.push('lblLastName');
        }
} // end if

 if (wantsCatalog == "true") {
        if (isEmpty(txtAddress1) || txtAddress1.value == "Address Line 1") {
            errmsg += "Por favor completa tu domicilio línea 1.";
            errorlabels.push('lblAddress1');
        }

    } // end if wantsCatalog


    if (wantsTxtMessages == "true") { // required: mobile, confirm mobile

        if (txtMobileNumber.value != txtConfirmMobileNumber.value) {
            errmsg += "Número m&oacute;vil y confirmaci&oacute;n número m&oacute;vil no son iguales. ";
            errorlabels.push("lblConfirmMobileNumber");
        } else {

            if (isEmpty(txtMobileNumber) || isNaN(txtMobileNumber.value)) {
                errmsg += "Por favor completa tu número de teléfono m&oacute;vil. ";
                errorlabels.push("lblMobileNumber");
            }

            if (isEmpty(txtConfirmMobileNumber) || isNaN(txtConfirmMobileNumber.value)) {
                errmsg += "Por favor confirma tu número de teléfono m&oacute;vil. ";
                errorlabels.push("lblConfirmMobileNumber");
            }
        }
     
    } // end if wantsTxtMessages



    // Highlight errorfields and display error message

    if (errmsg != "") {
        // highlight(errorlabels);

        lblErrorMessage.innerHTML = errmsg;

        return false;
    }
    else {
        return true;
    }

} // end function validatesignupspanish()






/* ------------ Misc functions used by validation routines above --------- */

// highlight() displays given labels in reversed out orange
// Fields parameter contains a list of IDs, not objects
 
function highlight(fields) {
    for (var label in fields) {
        document.getElementById(fields[label]).className += " highlighted";
    }
    highlighted = fields; // remember what fields you just highlighted
}

// unhighlight() turns highlighting off: revert to pre-highlighted CSS class 

function unhighlight(fields) {

    var currentClass;
    var unhighlightedClass;

    for (var label in fields) {
        currentClass = document.getElementById(fields[label]).className;
        unhighlightedClass = currentClass.replace(/highlighted/g, "");
        document.getElementById(fields[label]).className = unhighlightedClass;
    }

  //    hide(lblSelectLanguage);


} // end function unhighlight


/* ----------------------- Misc utils ----------------------- */

function isEmpty(field) {
    
    if ((field.value.length == 0) || (field.value == null)) {
        return true;
    }
    else {
        return false;
    }
}

function isValidEmailOrPhone(str) {
    if (isValidEmail(str) || isValidPhone(str)) {
        return true;
    } else {
        return false;
    }
}

function getradioSelection(group) {
    for (var k = 0; k < group.length; k++) {
        if (group[k].checked) {
            return group[k].value;
        }
    }
}


function isValidPhone(str) {
    var phoneFilter = /^\+?1?[\( \-\.]*[0-9]{3}[\) \-\.]*[0-9]{3}[ \-\.]?[0-9]{4}$/;
    return (str.match(phoneFilter) != null);
}

function isValidEmail(str) {
    var emailFilter = /^[^+][+\-.\w]*@([\w\-+]+\.)+[\w]{2,}$/;
    return (str.match(emailFilter) != null);
}

function disable(field) {field.disabled = true;}

function undisable(field) {field.disabled = false;}

function unhide(div) {document.getElementById(div).style.display = "block";}

function hide(div) {document.getElementById(div).style.display = "none";}


