﻿
/* Validation functions for IKEA infant/child product registration */
// var selectedModelIndexId = -1; // Using this value in back end to pass index value

var highlighted = Array();  // array of fields currently highlighted


    function showFeedbackMessage(messageText) {

        // Your information has been saved. [product ]
        // Thanks for updating your contact info! Your changes have been saved. [contact]
        // &iexcl;Gracias por haber actualizado tu información! Tus cambios se han guardado.  
        // &iexcl;Gracias por haber actualizado tu información de contacto! Tus cambios se han guardado.

        $jq(document).ready(function($) {
            $jq('div.fadeoutMessage').html(messageText).show().fadeOut(10000);
        });

    }


function storeHiddenSeriesNumber(selectedModelIndexValue) {
  var seriesNumberClicked = selectedModelIndexValue;
  var hiddenSeriesNumber = document.getElementById(myHiddenSeriesNumber);
  hiddenSeriesNumber.value = seriesNumberClicked;
}

var genericErrorMessage = "Please complete or revise items now highlighted.";
var genericSpanishErrorMessage = "Por favor completa o modifica los campos destacados.";



/* -----------------  Validate fields for user signup  ------------- */

function validateSignUp(userLanguage) {

    // if errorlabels exist, de-highlight
    unhighlight(highlighted);

    var errmsg = "";
    var errorlabels = Array();

    if (isEmpty(txtFirstName)) {
        errmsg += "Please enter your first name.  ";
        errorlabels.push(lblFirstName);
    }

    if (isEmpty(txtLastName)) {
        errmsg += "Please enter your last name.  ";
        errorlabels.push(lblLastName);
    }

    if (isEmpty(txtAddress1)) {
        errmsg += "Please enter your address.  ";
        errorlabels.push(lblAddress);
    }

    if (isEmpty(txtCity)) {
        errmsg += "Please enter your city.  ";
        errorlabels.push(lblCity);
    }

    if (isEmpty(ddlState)) {
        errmsg += "Please select your state.  ";
        errorlabels.push(lblState);
    }
    if (isEmpty(txtZip) || isNaN(txtZip.value) || txtZip.value.length < 5) {
        errmsg += "Please enter a valid ZIP Code.  ";
        errorlabels.push(lblZip);
    }


    //  var strPhone = txtPhone1.value + txtPhone2.value + txtPhone3.value;
   
    strPhone = txtPhone1.value + txtPhone2.value + txtPhone3.value;

  
        if (strPhone.length > 0 && (isNaN(strPhone) || (strPhone.length < 10))) {
            errmsg += "Please enter a valid phone number. ";
            errorlabels.push(lblPhone);
        }
    


    if (!isEmpty(txtEmail) || !isEmpty(txtEmailConfirm)) {
        if (!isValidEmail(txtEmail.value)) {
            errmsg += "Please enter a valid email address.  ";
            errorlabels.push(lblEmail);
        }

        if (!isValidEmail(txtEmailConfirm.value)) {
            errmsg += "Please confirm your email address.  ";
            errorlabels.push(lblEmailConfirm);
        }

        if (txtEmail.value != txtEmailConfirm.value) {
            errmsg += "Email and confirmation email do not match.  ";
            errorlabels.push(lblEmailConfirm);
        }
    }

    // Highlight errorfields and display error message

    if (errmsg != "") {
        highlight(errorlabels);
        
        // Use generic error msg:

       if (userLanguage == "Spanish") {
           document.getElementById(errSignup).innerHTML = genericSpanishErrorMessage;  
       } else {
       document.getElementById(errSignup).innerHTML = genericErrorMessage;
        }
        
        return false;
    }
    else {
    
        return true;
    }
} // end function validatesignup()



/* -----------------  Validate fields for user login ------------- */
function validateLogin(userLanguage) {
    
    unhighlight(highlighted);

    var errmsg = "";
    var errorlabels = Array();

    if (isEmpty(txtLoginEmail) || !isValidEmail(txtLoginEmail.value)) {

        errmsg += "Please enter a valid email address. ";
        errorlabels.push(lblLoginEmail);
    }

    if (isEmpty(txtLoginZip) || isNaN(txtLoginZip.value) || (txtLoginZip.value.length < 5)) {
        errmsg += "Please enter a valid ZIP Code. ";
        errorlabels.push(lblLoginZip);
    }

 

    if (errmsg != "") {
        highlight(errorlabels);

        if (userLanguage == "Spanish") {
            document.getElementById(errLogin).innerHTML = genericSpanishErrorMessage;
        } else {
            document.getElementById(errLogin).innerHTML = errmsg;
        }
        
        return false;
    }
    else {
        return true;
    }
}  // end function validatelogin()



/* -----------------  Validate email add popup  ------------- */

function validateAddEmail(userLanguage) {

    // if errorlabels exist, de-highlight
    unhighlight(highlighted);
    
    var errmsg = "";
    var errorlabels = Array();

        if (!isValidEmail(txtAddEmail.value)) {
        
            errmsg += "Please enter a valid email address.<br />  ";
            errorlabels.push(lblAddEmail);
        }

        if (!isValidEmail(txtAddEmailConfirm.value)) {
            errmsg += "Please confirm your email address.<br />  ";
            errorlabels.push(lblAddEmailConfirm);
        }

        if (txtAddEmail.value != txtAddEmailConfirm.value) {
            errmsg += "Email and confirmation email do not match.<br />  ";
            errorlabels.push(lblAddEmailConfirm);
        }

      
    // Highlight errorfields and display error message

    if (errmsg != "") {
        highlight(errorlabels);

        if (userLanguage == "Spanish") {
            document.getElementById(errAddEmail).innerHTML = genericSpanishErrorMessage;
        } else {
        document.getElementById(errAddEmail).innerHTML = errmsg;
        }
        
        return false;
    }
    else {

        return true;
    }
} // end function validateAddEmail()



// * -----------------  Validate fields if user forgot zip ------------- */

function validateGetZip(userLanguage) {
    // Show error msgs and highlight labels in orange
    var errmsg = "";
    var errorlabels = Array();

    if (isEmpty(txtForgotZipEmail) || !isValidEmail(txtForgotZipEmail.value)) {
        errmsg = "Please enter a valid email address.";
    }    
    
    errorlabels.push(lblForgotZipEmail);

    if (errmsg) {
    
     if (userLanguage == "Spanish") {
         document.getElementById(errForgotZip).innerHTML = 'Por favor entra una dirección de correo electrónico válida.';
        } else {
        document.getElementById(ForgotZip).innerHTML = errmsg;
        }
    
        highlight(errorlabels);
        
        return false ;
    }
    else {
        errForgotZip.innerHTML ="";
        return true;
    }
} // end function validategetzip()


// * -----------------  Validate fields for mfg date ------------- */

function validateMfgDate(userLanguage) {
    // Show error msgs and highlight labels in orange
    var errmsg = "";
    var errorlabels = Array();

// skip validation if Don't Know box is checked
 if (document.getElementById(chkDontKnowMfgDate).checked) {
     return true;
 }
 


var testDate =  document.getElementById(txtMfgDateDigit1).value.toString() +  document.getElementById(txtMfgDateDigit2).value.toString() + document.getElementById(txtMfgDateDigit3).value.toString() + document.getElementById(txtMfgDateDigit4).value.toString();


if ( testDate.length < 4 || isNaN(testDate)  ) {

    if (userLanguage == "Spanish") {
        document.getElementById(errMfgDate).innerHTML = "Por favor entra una fecha válida.";
    } else {
    document.getElementById(errMfgDate).innerHTML = "Please enter a valid 4-digit Manufacture Date.";
    }

   return false;
   
} else {

document.getElementById(errMfgDate).innerHTML = "";
  
return true;

}

} // end functionvalidateMfgDate()


/* ------------------------- end validation routines -------------------------- */


function setPanelState(strPanelState) {
    if (strPanelState == 'editProfile') {
        document.getElementById(panel_DisplayProfile).style.display = "none";
        document.getElementById(panel_EditProfile).style.display = "block";
        document.getElementById(panel_DisplaySurvey).style.display = "block";
        document.getElementById(panel_EditSurvey).style.display = "none";
    }
    else if (strPanelState == 'editSurvey') {
        document.getElementById(panel_DisplayProfile).style.display = "block";
        document.getElementById(panel_EditProfile).style.display = "none";
        document.getElementById(panel_DisplaySurvey).style.display = "none";
        document.getElementById(panel_EditSurvey).style.display = "block";
    }
    // default to the "display" state
    else {
        document.getElementById(panel_DisplayProfile).style.display = "block";
        document.getElementById(panel_EditProfile).style.display = "none";
        document.getElementById(panel_DisplaySurvey).style.display = "block";
        document.getElementById(panel_EditSurvey).style.display = "none";
    }
    document.forms[0].reset();
}


/* ------------ Misc functions used by validation routines above --------- */

// highlight() displays given labels in reversed out orange

function highlight(fields) {

    for (var index = 0; index < fields.length; ++index) {
        var labelID = fields[index];
        document.getElementById(labelID).className += " highlighted";    
    }
    highlighted = fields; // remember what fields you just highlighted
    return (highlighted);
}


// unhighlight() turns highlighting off: revert to pre-highlighted CSS class 

function unhighlight(fields) {

    var currentClass;
    var unhighlightedClass;

    for (var index = 0; index < fields.length; ++index) {

     var labelID = fields[index];   
           
     currentClass = document.getElementById(labelID).className;
     unhighlightedClass = currentClass.replace(/highlighted/g, "");
     document.getElementById(labelID).className = unhighlightedClass;

 }

} // 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 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";
}

// Checks if return key was pressed
function checkreturn(e){ 

var characterCode ;

if(e && e.which){ 
e = e;
characterCode = e.which; //NN4 which property
}
else{
e = event;
characterCode = e.keyCode //IE keyCode property
}

if(characterCode == 13){   // if hit return/enter, submit form
document.forms[0].submit();
return false;
}
else{
return true;
}

}

// show modal dialog

function modalDialog() {

myCurtain = document.getElementById("curtain");
myCurtain.style.display = (myCurtain.style.display == "block") ? "none" : "block";

}

function oldmodalDialog() {

myCurtain = document.getElementById("curtain");
myCurtain.style.visibility = (myCurtain.style.visibility == "visible") ? "hidden" : "visible";

}
