﻿$(document).ready(init);
function init() {
    var cPage = null;
    cPage = getCurrentPage();
    switch (cPage) {
        case "index.aspx":
            initLogin();
            break;
        case "register.aspx":
            if ($("#txtPassword").is('*')) {
                initRegister();
            }
            else {
                initVerify();
            }
            break;
    }
    if ($(":input:visible:enabled").is('*')) {
        $(":input:visible:enabled").get(0).focus();
    }
}
function initLogin() {
    $("#LoginForm").bind("submit", validateLoginForm);
    $("#txtBadgeNumber").bind("blur", verifyBadge);
    $("#txtBadgeNumber").bind("focus", clearValidations);
    $("#txtPassword").bind("focus", clearValidations);
    $("#txtPassword").bind("blur", clearPasswordFocus);
}
function initVerify() {
    $("#VerifyEmployeeForm").bind("submit", validateVerifyForm);
    $("#txtBadgeNumber").bind("blur", verifyBadge);
    $("#txtBadgeNumber").bind("focus", clearValidations);
    $("#txtLast4SSN").bind("focus", clearValidations);
    $("#txtLast4SSN").bind("blur", verifySSN);
    $("#txtDateOfBirth").bind("focus", clearValidations);
    $("#txtDateOfBirth").bind("blur", verifyDOB);
}
function initRegister() {
    $("#RegistrationForm").bind("submit", validateRegistrationForm);
    $("#txtPassword").bind("blur", verifyPassword);
    $("#txtPassword").bind("focus", clearValidations);
    $("#txtConfirmPassword").bind("focus", clearValidations);
    $("#txtConfirmPassword").bind("blur", verifyConfirmPassword);
    $("#txtEmailAddress").bind("focus", clearValidations);
    $("#txtEmailAddress").bind("blur", verifyEmail);
    $("#txtConfirmEmailAddress").bind("focus", clearValidations);
    $("#txtConfirmEmailAddress").bind("blur", verifyConfirmEmail);
}
function verifyBadge() {
    var BadgeNumber = null;
    var isValid = false;
    BadgeNumber = $("#txtBadgeNumber").val();
    if (BadgeNumber != null && BadgeNumber != "" && BadgeNumber.length > 0) {
        if (isNumeric(BadgeNumber)) {
            isValid = true;
            $(".badgenumber").removeClass("default");
            $(".badgenumber").removeClass("not_ok");
            $(".badgenumber").addClass("ok");
            $("div.message .badgenumber").text("");
        }
        else {
            $(".badgenumber").removeClass("default");
            $(".badgenumber").removeClass("ok");
            $(".badgenumber").addClass("not_ok");
            $("div.message .badgenumber").text("Badge number does not contain any letters.");
        }
    }
    else {
        $(".badgenumber").removeClass("not_ok");
        $(".badgenumber").removeClass("ok");
        $(".badgenumber").addClass("default");
        $("div.message .badgenumber").text("");
    }
    return isValid;
}
function clearPasswordFocus() {
    $(".password").removeClass("not_ok");
    $(".password").removeClass("ok");
    $(".password").addClass("default");
}
function verifyPasswordSimple(){
    var Password = null;
    var isValid = false;
    
    Password = $("#txtPassword").val();
    if (Password != null && Password != "" && Password.length > 0) {
        isValid = true;
        $(".password").removeClass("default");
        $(".password").removeClass("not_ok");
        $(".password").addClass("ok");
    }
    else{
        $(".password").removeClass("default");
        $(".password").removeClass("ok");
        $(".password").addClass("not_ok");
        $("div.message .password").text("You must enter a password.");
        isValid = false;
    }
    return isValid;
}
function verifySSN(){
    var SSN = null;
    var isValid = false;
    SSN = $("#txtLast4SSN").val();
    if (SSN != null && SSN != "" && SSN.length > 0) {
        if (isNumeric(SSN) && SSN.length == 4) {
            isValid = true;
            $(".ssn").removeClass("default");
            $(".ssn").removeClass("not_ok");
            $(".ssn").addClass("ok");
            $("div.message .ssn").text("");
        }
        else {
            $(".ssn").removeClass("default");
            $(".ssn").removeClass("ok");
            $(".ssn").addClass("not_ok");
            if (SSN.length != 4 && isNumeric(SSN)) {
                $("div.message .ssn").text("Please enter last 4 digits of your SSN.");
            }
            else {
                $("div.message .ssn").text("SSN does not contain any letters.");
            }
        }
    }
    else {
        $(".ssn").removeClass("not_ok");
        $(".ssn").removeClass("ok");
        $(".ssn").addClass("default");
        $("div.message .ssn").text("");
    }
    return isValid;
}
function verifyDOB(){
    var DateOfBirth = null;
    var isValid = false;
    var DateValidationResultArr = null;
    DateOfBirth = $("#txtDateOfBirth").val();
    if (DateOfBirth != null && DateOfBirth != "" && DateOfBirth.length > 0) {
        DateValidationResultArr = isValidBirthDate(DateOfBirth);
        if (DateValidationResultArr[0]) {
            isValid = true;
            $("#txtDateOfBirth").val(DateValidationResultArr[1])
            $(".dob").removeClass("default");
            $(".dob").removeClass("not_ok");
            $(".dob").addClass("ok");
            $("div.message .dob").text("");
        }
        else {
            $(".dob").removeClass("default");
            $(".dob").removeClass("ok");
            $(".dob").addClass("not_ok");
            if (DateValidationResultArr.length > 1) {
                $("div.message .dob").text(DateValidationResultArr[1]);
            }
            else {
                $("div.message .dob").text("Please enter your date of birth (ex. 01/01/1960).");
            }
        }
    }
    else {
        $(".dob").removeClass("not_ok");
        $(".dob").removeClass("ok");
        $(".dob").addClass("default");
        $("div.message .dob").text("");
    }
    return isValid;
}
function verifyPassword() {
    var Password = null;
    var isValid = false;
    
    Password = $("#txtPassword").val();
    if (Password != null && Password != "" && Password.length > 0) {
        if (Password.length >= 6 && Password.length <= 20) {
            isValid = true;
            $(".password").removeClass("default");
            $(".password").removeClass("not_ok");
            $(".password").addClass("ok");
            $("div.message .password").text("You have an OK password.");
            if (Password.length > 7 && hasNumbersAndLetters(Password)) {
                $("div.message .password").text("You have a Good password.");
            }
        }
        else {
            $(".password").removeClass("default");
            $(".password").removeClass("ok");
            $(".password").addClass("not_ok");
            $("div.message .password").text("Passwords must be between 6 and 20 characters.");
        }
    }
    else {
        $(".password").removeClass("not_ok");
        $(".password").removeClass("ok");
        $(".password").addClass("default");
        $("div.message .password").text("");
    }
    return isValid;
}
function verifyConfirmPassword() {
    var Password = null;
    var ConfirmPassword = null;
    var isValid = false;

    Password = $("#txtPassword").val();
    ConfirmPassword = $("#txtConfirmPassword").val();
    if (ConfirmPassword != null && ConfirmPassword != "" && ConfirmPassword.length > 0) {
        if (Password == ConfirmPassword) {
            isValid = true;
            $(".confirmpassword").removeClass("default");
            $(".confirmpassword").removeClass("not_ok");
            $(".confirmpassword").addClass("ok");
            $("div.message .confirmpassword").text("");
        }
        else {
            $(".confirmpassword").removeClass("default");
            $(".confirmpassword").removeClass("ok");
            $(".confirmpassword").addClass("not_ok");
            $("div.message .confirmpassword").text("Passwords do not match.");
        }
    }
    else {
        $(".confirmpassword").removeClass("not_ok");
        $(".confirmpassword").removeClass("ok");
        $(".confirmpassword").addClass("default");
        $("div.message .confirmpassword").text("");
    }
    return isValid;
}
function verifyEmail() {
    var EmailAddress = null;
    var isValid = false;

    EmailAddress = $("#txtEmailAddress").val();
    if (EmailAddress != null && EmailAddress != "" && EmailAddress.length > 0) {
        if (isEmailAddress(EmailAddress)) {
            isValid = true;
            $(".email").removeClass("default");
            $(".email").removeClass("not_ok");
            $(".email").addClass("ok");
            $("div.message .email").text("");
        }
        else {
            $(".email").removeClass("default");
            $(".email").removeClass("ok");
            $(".email").addClass("not_ok");
            $("div.message .email").text("Enter an email like 'name@email.com'");
        }
    }
    else {
        $(".email").removeClass("not_ok");
        $(".email").removeClass("ok");
        $(".email").addClass("default");
        $("div.message .email").text("");
    }
    return isValid;
}
function verifyConfirmEmail() {
    var EmailAddress = null;
    var ConfirmEmailAddress = null;
    var isValid = false;

    EmailAddress = $("#txtEmailAddress").val();
    ConfirmEmailAddress = $("#txtConfirmEmailAddress").val();
    if (ConfirmEmailAddress != null && ConfirmEmailAddress != "" && ConfirmEmailAddress.length > 0) {
        if (EmailAddress == ConfirmEmailAddress) {
            isValid = true;
            $(".confirmemail").removeClass("default");
            $(".confirmemail").removeClass("not_ok");
            $(".confirmemail").addClass("ok");
            $("div.message .confirmemail").text("");
        }
        else {
            $(".confirmemail").removeClass("default");
            $(".confirmemail").removeClass("ok");
            $(".confirmemail").addClass("not_ok");
            $("div.message .confirmemail").text("Email addresses do not match.");
        }
    }
    else {
        $(".confirmemail").removeClass("not_ok");
        $(".confirmemail").removeClass("ok");
        $(".confirmemail").addClass("default");
        $("div.message .confirmemail").text("");
    }
    return isValid;
}
function validateLoginForm(e) {
    if (verifyBadge() && verifyPasswordSimple()) {
        return true;
    }
    e.preventDefault();
    e.stopPropagation();
    return false;
}
function validateVerifyForm(e) {
    if (verifyBadge() && verifySSN() && verifyDOB()) {
        return true;
    }
    e.preventDefault();
    e.stopPropagation();
    return false;
}
function validateRegistrationForm(e) {
    if (verifyPassword() && verifyConfirmPassword() && verifyEmail() && verifyConfirmEmail()) {
        return true;
    }
    e.preventDefault();
    e.stopPropagation();
    return false;
}
function clearValidations(e) {
    var selectorString = null;
    var inputArr = null;
    inputArr = new Array("badgenumber", "password", "confirmpassword", "ssn", "dob", "email", "confirmemail");
    for( var i=0; i < inputArr.length; i++ ){
        if ($(e.target).hasClass(inputArr[i])) {
            selectorString = "." + inputArr[i];
        }
    }
    if (selectorString != null && selectorString != "") {
        $(selectorString).removeClass("default");
        $(selectorString).removeClass("not_ok");
        $(selectorString).removeClass("ok");
        $("input.input" + selectorString).addClass("ok");
        $("div.message " + selectorString).text("");
    }
}
function getCurrentPage(){
    var currentURL = null;
    var URLPartArr = null;
    var lastSlashPosition = null;
    var currentPage = null;
    
    currentURL = window.location.href;
    URLPartArr = currentURL.split('?');
    if (URLPartArr[0] != null) {
        lastSlashPosition = URLPartArr[0].lastIndexOf('/');
        currentPage = URLPartArr[0].substr(lastSlashPosition + 1);
    }
    return currentPage;
}
function isNumeric(value) {
    var RegularExpression = null;
    RegularExpression = /(^\d\d*$)/;
    return RegularExpression.test(value);
}
function hasNumbersAndLetters(valueString){
    if( hasNumbers(valueString) && hasLetters(valueString) ){
        return true;
    }
    return false;
}
function hasNumbers(valueString){
    for( var i=0; i < valueString.length; i++ ){
        if( isNumeric(valueString.substr(i,1)) ){
            return true;
        }
    }
    return false;
}
function hasLetters(valueString){
    for( var i=0; i < valueString.length; i++ ){
        if( !isNumeric(valueString.substr(i,1)) ){
            return true;
        }
    }
    return false;
}
function isEmailAddress(value) {
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    return emailPattern.test(value);
}
function isValidBirthDate(value) {
    var today = null;
    var FifteenYearsAgoToday = null;
    var dob = null;

    today = new Date();
    dob = new Date(value);
    FifteenYearsAgoToday = new Date();
    FifteenYearsAgoToday = FifteenYearsAgoToday.setFullYear(today.getFullYear() - 15, today.getMonth(), today.getDay());
    if( !isNaN(dob) ){
        if (FifteenYearsAgoToday > dob) {
            return [true,dob.getMonth() + 1 + "/" + dob.getDate() + "/" + dob.getFullYear()];
        }
        else {
            return [false, "Date of birth must be more than 15 years ago (ex. 01/01/1960)."];
        }
    }
    else{
        return [false, "Please enter a valid date of birth (ex. 01/01/1960)."];
    }
}