
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]));
                return;   
            }
        }
    }
}


addEvent(window, 'load', setupValidation); 
addEvent(window, 'load', announce); 