﻿//===================================================================================
//  Javascript for Registration GUI
//===================================================================================

$(document).ready(function() {
    InitialRegisterValidationEvents();
});

var firstName;
var lastName;
var email1;
var email2;
var password1;
var password2;
var emailValid;
var emailInvalid;
var passwordValid;
var passwordInvalid;
var ddlLocation;
var chkContact;
var contactPreference;
var phoneNumber;
var comments;
var regErrors = {};
var isIE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;


function InitialRegisterValidationEvents()
{
    var regTrigger;
    if ($("#LoginControl").length > 0)
        regTrigger = $("a.lnkRegister, a#lnkSignUp, img#OpenMenuArrow");
    $(".RegisterControl").jqm({
        trigger: regTrigger,
        modal: false,
        overlay:50,
        closeClass: "popup-but-close",
        onShow: function(hash){
            hash.w.css("position","absolute");
            hash.w.show();
        },
        onHide: function(hash){
            hash.w.hide();
            hash.o.remove();
            clearRegistrationForm();
        }
    });

    firstName = $("input.txtFirstName");
    lastName = $("input.txtLastName");
    email1 = $(".registerEmail:eq(0)");
    email2 = $(".registerEmail:eq(1)");
    password1 = $(".registerPassword:eq(0)");
    password2 = $(".registerPassword:eq(1)");
    ddlLocation = $(".ddlLocation");
    emailValid = $("img#EmailValid");
    emailInvalid = $("img#EmailInvalid");
    passwordValid = $("img#PasswordValid");
    passwordInvalid = $("img#PasswordInvalid");
    ddlLocation = $(".ddlLocation");
    chkContact = $("span.chkContactConsultant input");
    contactPreference = $("select.ddlContactPreference");
    phoneNumber = $("input.txtPhone");
    comments = $("textarea.txtComments");


    firstName.change(function() {
        highlightFirstNameValidity(firstNameValid());
    });
    
    lastName.change(function() {
        highlightLastNameValidity(lastNameValid());
    });
    
    $(".registerEmail").change(function() {
        highlightEmailValidity(emailsValid());
    });
    
    $(".registerPassword").change(function() {
        highlightPasswordValidity(passwordsValid());
    });
    
    ddlLocation.change(function() {
        highlightLocationValidity(locationValid());
    });
    
    phoneNumber.change(function() {
        highlightContactPrefValidity(phoneValid());
    });
    
    contactPreference.change(function() {
        highlightContactPrefValidity(phoneValid());
    });
    
    chkContact.change(function(){contactConsultantCheckUpdated()});
    chkContact.click(function(){
        if (isIE6)
            contactConsultantCheckUpdated();
    });
        
    
    $(".RegisterButton").click(function(event) {
        var valid = true;
        if (!firstNameValid())
        {
            valid = false;
            //highlightFirstNameValidity(false);
        }
        if (!lastNameValid())
        {
            valid = false;
            //highlightLastNameValidity(false);
        }
        if (!emailsValid())
        {
            valid = false;
            //highlightEmailValidity(false);
        }
        if (!passwordsValid())
        {
            valid = false;
            //highlightPasswordValidity(false);
        }
        if (!locationValid())
        {
            valid = false;
            //highlightLocationValidity(false);
        }
        if (!phoneValid())
        {
            valid = false;
            //highlightContactPrefValidity(false);
        }
            
        if (valid == false)
        {
            event.preventDefault();
            displayErrorMessages();
        }
    });
    
    $(".PersonalizedTourLink a").click(function(event){
        event.preventDefault();
        chkContact.attr('checked', 'true');
        contactConsultantCheckUpdated();
    });
}

function requestPersonalizedTour()
{
    var origComments = comments.val();
    comments.val(origComments + "\n\n........................\nI would like a personalized tour from an internet consultant");
    
}

function contactConsultantCheckUpdated()
{
    var checkedContact = $(".chkContactConsultant");
    if (chkContact.is(":checked"))
    {
        $("div#contactOptions").slideDown();
        requestPersonalizedTour();
    }
    else
    {
        $("div#contactOptions").slideUp();
        comments.val("");
        phoneNumber.val("");
        setAsValid(phoneNumber);
    }
}

function clearRegistrationForm(){ $(".RegisterControl").find("input[type='text'], input[type='password'], textarea").val(""); }
function firstNameValid(){
    if (firstName.val().length == 0)
    {
        regErrors["FirstName"] = "First Name is required";
        return false;
    }
    else
    {
        regErrors["FirstName"] = null;
        return true;
    }
}
function lastNameValid(){
    if (lastName.val().length == 0)
    {
        regErrors["LastName"] = "Last Name is required";
        return false;
    }
    else
    {
        regErrors["LastName"] = null;
        return true;
    }
}

function emailsValid(){
    var emailRegExp = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if (emailRegExp.test(email1.val()) == false)
    {
        regErrors["Email"] = "Email addresses must be valid";
        return false;
    }
    else if (email1.val() != email2.val())
    {
        regErrors["Email"] = "Email addresses must match";
        return false;
    }
    else
    {
        regErrors["Email"] = null;
        return true;
    }
}

function passwordsValid(){
    if ((password1.val().length < 5) || (password1.val().length > 16))
    {
        regErrors["Password"] = "Passwords must be between 5 and 16 characters";
        return false;
    }
    else if (password1.val() != password2.val())
    {
        regErrors["Password"] = "Passwords must match";
        return false;
    }
    else
    {
        regErrors["Password"] = null;
        return true;
    }
}
function locationValid(){
    if (ddlLocation.val() == 0)
    {
        regErrors["Location"] = "Please choose a location";
        return false;
    }
    else
    {
        regErrors["Location"] = null;
        return true;
    }
}
function phoneValid() {
    regErrors["Phone"] = null;
    if ((chkContact.is(":checked")) && (contactPreference.val() == "11"))//11 = Phone
    {
        if (phoneNumber.val().length == 0)
        {
            regErrors["Phone"] = "Phone number is required";
            return false;
        }
    }
    return true;
}

function setAsValid(theField){theField.removeClass("InvalidField");}
function setAsInvalid(theField){theField.addClass("InvalidField");}

function highlightAllFieldValidity(){
    highlightFirstNameValidity(firstNameValid());highlightLastNameValidity(lastNameValid());highlightEmailValidity(emailsValid());highlightPasswordValidity(passwordsValid());highlightLocationValidity(locationValid());highlightContactPrefValidity(phoneValid());
    
}

function displayErrorMessages()
{
    var pErrors = $("#RegErrors");
    pErrors.empty();
    for (var key in regErrors)
    {
        if (regErrors[key] != null)
            pErrors.append("* " + regErrors[key] + "<br/>");
    }
}

function highlightFirstNameValidity(valid){
    if (valid)
        setAsValid(firstName);
    else
        setAsInvalid(firstName);
}
function highlightLastNameValidity(valid){
    if (valid)
        setAsValid(lastName);
    else
        setAsInvalid(lastName);
}
function highlightEmailValidity(valid){
    if (valid)
    {
        emailValid.css("display", "");
        emailInvalid.hide();
    }
    else
    {
        emailValid.hide();
        emailInvalid.css("display","")
    }
}
function highlightPasswordValidity(valid){
    if (valid)
    {
        passwordValid.css("display","")
        passwordInvalid.hide();
    }
    else
    {
        passwordValid.hide();
        passwordInvalid.css("display","")
    }
}
function highlightLocationValidity(valid){
    if (valid)
        setAsValid(ddlLocation);
    else
        setAsInvalid(ddlLocation);
}
function highlightContactPrefValidity(valid){
    if (valid)
        setAsValid(phoneNumber);
    else
        setAsInvalid(phoneNumber);
}