String.prototype.Replace = function(strFind, strRep) {
    return this.split(strFind).join(strRep);
};
   
function validate(frm)
{
	var isMatch = false;
	for(var i=0;i < frm.elements.length;i++)
	{
	    if(frm.elements[i].getAttribute("validationRule"))
	    {
		    var re = new RegExp(frm.elements[i].getAttribute("validationRule"));
		    if (frm.elements[i].value.match(re)) {
		        isMatch = true;
		        removeClassName(frm.elements[i], "input_fail");
		    } else {
		        alert(frm.elements[i].getAttribute("validationMessage"));
		        addClassName(frm.elements[i], "input_fail");
		    try{
			    frm.elements[i].focus();
		    }
		    catch(e){
			    //unable to set focus to element
		    }
		    isMatch = false;
		    break;
		    }
	    }
	}
	return isMatch;
}

function hasValidation(el)
{
    if(el.title.indexOf("|") > -1)
        return true;
    else
        return false;
}

function getValidation(el, pos)
{
    if(el.title.indexOf("|") == -1)
        return "";
    var aValidation = el.title.split("|");
    if(aValidation.length < 2)
        return "";
    return aValidation[pos];
}

function setValidation(el, name, value)
{
    el.setAttribute(name, value);
}

function setupValidation()
{
    if(!document.forms)return;
    var el;
    for(var i=0; i < document.forms.length; i++)
    {
        for(var f=0; f < document.forms[i].elements.length; f++)
        {
            el = document.forms[i].elements[f];
            if(hasValidation(el))
            {
                setValidation(el, "validationMessage", getValidation(el, 0));
                setValidation(el, "validationRule", getValidation(el, 1));
                el.title = getValidation(el, 0);
            }
        }
    }
}

function addEvent(obj, evt, fn){ 
 if (obj.addEventListener){ 
    obj.addEventListener(evt, fn, true); 
    return true; 
 } else if (obj.attachEvent){ 
    var r = obj.attachEvent("on" + evt, fn); 
    return r; 
 } else { 
    return false; 
 } 
}

function addClassName(el, className)
{
    el.className = el.className.indexOf(className) > -1 ? el.className : el.className + " " + className;
}

function removeClassName(el, className)
{
    el.className = el.className.replace(className, "");
}

function announce()
{
    var aPairs = window.location.search.split("&");
    if(aPairs.length == 0)return;
    for(var i=0; i < aPairs.length; i++)
    {
        var aPair = aPairs[i].split("=");
        if(aPair.length > 1)
        {
            if(aPair[0] == "formMessage")
            {
                alert(decodeURIComponent(aPair[1]).Replace("\\n","\n"));
                return;   
            }
        }
    }
}

function __sfh(oForm) {
    try {
        var sForm = flattenForm(oForm);
        var fEl = document.createElement("input");
        fEl.type = "hidden";
        fEl.name = "formHTML";
        var newEl = oForm.appendChild(fEl);
        newEl.value = sForm;
    }
    catch (e) { }
    return true;
}

var __currentForm;
function flattenForm(oForm) {
    __currentForm = oForm;
    var cForm = oForm.cloneNode(true);
    for (var i = 0; i < cForm.childNodes.length; i++) {
        elProcess(cForm.childNodes[i]);
    }
    return cForm.innerHTML;
}

function elProcess(oEl) {
    for (var i = 0; i < oEl.childNodes.length; i++) {
        elProcess(oEl.childNodes[i]);
    }
    if (oEl.nodeType == 1) {
        if (oEl.tagName.toUpperCase() != "SCRIPT") {
            if (";SELECT;INPUT;TEXTAREA;".indexOf(";" + oEl.tagName.toUpperCase() + ";") > -1) {
                var tn = document.createElement("b");
                tn.innerHTML = flatten(oEl) + " ";
                var pEl = oEl.parentNode;
                pEl.replaceChild(tn, oEl);
            }
        }
        else {
            var tn = document.createElement("br");
            var pEl = oEl.parentNode;
            pEl.replaceChild(tn, oEl);
        }
    }
}


function flatten(oEl) {
    e = __currentForm.elements[oEl.name];
    if (e == null)
        return "";
    if (e.type == "select-one") {
        return e.options[e.selectedIndex].value;
    }
    if (e.type == "select-multiple") {
        var s = "";
        for (var j = 0; j < e.length; j++) {
            if (e.options[j].selected == true) {
                s += e.options[j].value + "<br />";
            }
        }
        return s;
    }
    if (e.type == "checkbox") {
        return e.checked == true ? "Yes" : "No";
    }
    if (e.type == "radio") {
        return e.checked == true ? "Yes" : "No";
    }
    if (e.type == "button") {
        return "";
    }
    if (e.type == "submit") {
        return "";
    }
    if (e.type == "hidden") {
        return e.value;
    }
    if (e.type == "text") {
        return e.value;
    }
    if (e.type == "password") {
        return e.value;
    }
    if (e.tagName == "TEXTAREA") {
        return e.value;
    }
    return "";
}

$(document).ready(function() {
        setupValidation();
        announce();
});
