﻿function addEventListener(domElement, eventName, closure) {
    try {
        domElement.addEventListener(eventName, closure, false);
    }
    catch (e) {
        domElement.attachEvent("on" + eventName, closure);
    }
}

function createOkText(fieldName, labelText, labelId) {

    var field = document.getElementById(fieldName);
    var node = document.createElement("span");
    node.setAttribute("id", labelId);
    node.className = "okText";
    node.innerHTML = labelText;
    field.parentNode.appendChild(node);

//    document.write( "<span  id=\"" + labelId +  "\" class=\"okText\">" + labelText + "</span>");
}
/*

function createBadText( fieldName, labelText, labelId) {
    document.write( "<span  id=\"" + labelId + "\" class=\"badText\">" + labelText + "</span>");
}*/



function createBadText(fieldName, labelText, labelId) {

    var field = document.getElementById(fieldName);
    var node = document.createElement("span");
    node.setAttribute("id", labelId);
    node.className = "badText";
    node.innerHTML = labelText;
    field.parentNode.appendChild(node);

    //    document.write( "<span  id=\"" + labelId +  "\" class=\"okText\">" + labelText + "</span>");
}


function createVerificationFlash(inputFieldId, okElementId, badElementId,  verificationFunction) {


    var ok = document.getElementById(okElementId);
    var bad = document.getElementById(badElementId);

    if (ok != null)
        ok.style.display = 'none';
    if(bad!=null)
        bad.style.display = 'none';

    var input = document.getElementById(inputFieldId);
    if (input["verifications"] == null) {
        addEventListener(input, "blur", new Function("validateField('" + inputFieldId + "');"));
        input["verifications"] = [];
    }
    input.verifications.push({ fn: verificationFunction, ok: okElementId, bad: badElementId });


}

function validateField(inputId) {
    var input = document.getElementById(inputId);
    var ok = true;
    var okElement;
    for (var i = 0; i < input["verifications"].length; ++i) {
        var data = input.verifications[i];
        var fn = data.fn;
        okElement = data.ok;
        var result = fn(input);
        if (result != null) {
            ok &= result;
            document.getElementById(data.bad).style.display = result ? "none" :  '';
        }
    }
    document.getElementById(okElement).style.display = ok ? '' : "none";
}

var VerificationFunctions = {};

VerificationFunctions.required = function(element) { return element.value != ""; }
VerificationFunctions.email = function(element) {
    if (element.value == "") {
        return null;
    }
    var xp = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    return xp.test(element.value);
}
VerificationFunctions.password = function(input) {
    if (input.value == '')
        return null;
    if (input.value.length < 4 || input.value.length > 12)
        return false;
    return true;
}