﻿addEvent(window, 'load', initForm); var highlight_array = new Array(); function initForm() { initializeFocus(); }

function initializeFocus() {
    fields = getElementsByClassName(document, "*", "field");
    for (i = 0; i < fields.length; i++) {
        if (fields[i].type == 'radio' || fields[i].type == 'checkbox' || fields[i].type == 'file') {
            fields[i].onclick = function () {
                clearSafariRadios();
                $(this).parents("li:first").addClass("focused");
            };

            fields[i].onfocus = function () {
                clearSafariRadios();
                $(this).parents("li:first").addClass("focused");
            };

            highlight_array.splice(highlight_array.length, 0, fields[i]);
        }

        else {
            fields[i].onfocus = function () {
                clearSafariRadios();
                $(this).parents("li:first").addClass("focused");
            };
            fields[i].onblur = function () {
                $(this).parents("li:first").removeClass("focused");

            };
        }
    }
}

function clearSafariRadios() {
    for (var i = 0; i < highlight_array.length; i++) {
        if (highlight_array[i].parentNode) {
            $(highlight_array[i]).parents("li:first").removeClass("focused");
        }
    }
}

function getElementsByClassName(oElm, strTagName, strClassName) {
    var arrElements = (strTagName == "*" && oElm.all) ? oElm.all : oElm.getElementsByTagName(strTagName); var arrReturnElements = new Array(); strClassName = strClassName.replace(/\-/g, "\\-"); var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)"); var oElement; for (var i = 0; i < arrElements.length; i++) { oElement = arrElements[i]; if (oRegExp.test(oElement.className)) { arrReturnElements.push(oElement); } }
    return (arrReturnElements)
}

function addEvent(obj, type, fn) {
    if (obj.attachEvent) { obj["e" + type + fn] = fn; obj[type + fn] = function () { obj["e" + type + fn](window.event) }; obj.attachEvent("on" + type, obj[type + fn]); }
    else { obj.addEventListener(type, fn, false); } 
}

// Validation
var oldValidatorUpdateDisplay;

function newValidatorUpdateDisplay(val) {
    if (document.getElementById(val.controltovalidate) != null) {
        // Find label through naming rule
        var erroredcontrol = document.getElementById(val.controltovalidate);
        var k, value;

        // Find out all validators associated
        var vals = new Array();
        for (k = 0; k < Page_Validators.length; k++) {
            if (Page_Validators[k].controltovalidate == val.controltovalidate)
                vals.push(Page_Validators[k]);
        }

        //Determine if some validator fails
        value = true;
        for (k = 0; k < vals.length; k++)
            value = (value && vals[k].isvalid);

        // Change label text color
        if (value) {
            //lbl.style.color ='black'; // normal color, black
            removeClassName(erroredcontrol.parentNode.parentNode, "error");
        }
        else {
            //lbl.style.color = 'red'; // error color, red
            addClassName(erroredcontrol.parentNode.parentNode, "error", true);

            //Requires an identifier into the <li> to show what tab it is assigned to...
            //var tab = erroredcontrol.parentNode.parentNode. + '_Tab';
            //addClassName(tab,"errortab",true);          
        }
    }
}

window.onload = function () {
    try {
        // hijack ValidatorUpdateDisplay() method
        oldValidatorUpdateDisplay = ValidatorUpdateDisplay;
        ValidatorUpdateDisplay = newValidatorUpdateDisplay;
    }
    catch (e) {
    }
}
