﻿var btnLogIn;
var txtEmailAddress;
var txtPassword;

window.onload = function() {
    initializeVariables();
    attachEvents();
    initializeView();
}

function attachEvents() {
    if (navigator.appVersion.indexOf("MSIE") == -1) {
        Event.observe(document, "keypress", document_onKeyPress);
        Event.observe(txtEmailAddress, "keypress", formElement_onKeyPress);
        Event.observe(txtPassword, "keypress", formElement_onKeyPress);
        Event.observe(btnLogin, "keypress", formElement_onKeyPress);
    }
    else {
        Event.observe(document, "keydown", document_onKeyDown);
    }
    Event.observe(document, "keyup", document_onKeyUp);
    Event.observe(txtEmailAddress, "change", document_onKeyUp);
    Event.observe(txtPassword, "change", document_onKeyUp);
    Event.observe(txtEmailAddress, "mousemove", document_onKeyUp);
    Event.observe(txtPassword, "mousemove", document_onKeyUp);
    Event.observe(document, "mouseover", document_onChange);
}

function initializeVariables() {
    var aInputs = $$("input");
    var oInput;
    var sId;
    for (var iInput = 0; iInput < aInputs.length; iInput++) {
        oInput = aInputs[iInput];
        sId = oInput.identify();
        if (sId.indexOf("txtEmail") != -1) {
            txtEmailAddress = oInput;
        }
        else if (sId.indexOf("txtPassword") != -1) {
            txtPassword = oInput;
        }
        else if (sId.indexOf("btnSubmit") != -1) {
            btnLogin = oInput;
        }
    }
}

function initializeView() {
	btnLogin.disabled = txtEmailAddress.value.length == 0 && txtPassword.value.length == 0;
}

function document_onChange(event) {
    if (!btnLogin.disabled) return;
    var bDisabled = false;
    var oPage_Validator;
    for (var iPage_Validator = 0; iPage_Validator < Page_Validators.length; iPage_Validator++) {
        oPage_Validator = Page_Validators[iPage_Validator];
        if (oPage_Validator.id.indexOf("Required") != -1) {
            ValidatorValidate(oPage_Validator);
            if (!oPage_Validator.isvalid) {
                bDisabled = true;
                break;
            }
        }
    }

    btnLogin.disabled = bDisabled;
}

function document_onKeyPress(event) {
    Page_ValidationActive = false;
}

function document_onKeyDown(event) {
    var iKeyCode = event.which ? event.which : event.keyCode;
    if (iKeyCode == 13) {
        var oElement = Event.element(event);
        if (oElement == txtEmailAddress || oElement == txtPassword || oElement == btnLogin) {
            Event.stop(event);
            btnLogin.click();
        }
        else
            Page_ValidationActive = false;
    }
}

function document_onKeyUp(event) {
    var oElement = Event.element(event);
    if (oElement == txtEmailAddress || oElement == txtPassword) {
        var bDisabled = false;
        var oPage_Validator;
        for (var iPage_Validator = 0; iPage_Validator < Page_Validators.length; iPage_Validator++) {
            oPage_Validator = Page_Validators[iPage_Validator];
            if (oPage_Validator.id.indexOf("Required") != -1) {
                ValidatorValidate(oPage_Validator);
                if (!oPage_Validator.isvalid) {
                    bDisabled = true;
                    break;
                }
            }
        }
        
        btnLogin.disabled = bDisabled;
    }
}

function formElement_onKeyPress(event) {
    var iKeyCode = event.which;
    if (iKeyCode == 13) {
        Event.stop(event);
        var oElement = Event.element(event);
        if ((oElement == btnLogin || oElement == txtPassword) && oElement.value.length > 0) {
            btnLogin.click();
        }
    }
}