function validateGetValueOf(o) {
        var value="";
        if(typeof(o)=="object") {
                switch(o.type) {
                        case "select":
                                var i=o.options.SelectedIndex;
                                value=(i!=-1) ? o.options[i].value : "";
                                break;
                        case "chackbox":
                        case "radio":
                        case "input":
                        case "textarea":
                        case "file":
                        default:
                                return o.value;
                }
        }
        return value;
}

function hasAttribute(attribute) {
        var has=this.getAttribute(attribute);
        return (has==null) ? false : true;
}
function validate() {
    var str = "";
    var min_reqs=max_reqs=null;
    if(!document.getElementsByTagName) {
        return false;
    }

    var forms = document.getElementsByTagName('form');
        for(var f=0; f<forms.length;f++) {
                var e=forms[f].elements;
            for(var i = 0; i < e.length; i++) {
                        if(!e[i].hasAttribute) e[i].hasAttribute=hasAttribute;
                        if(!e[i].hasAttribute('pattern')) continue;
                var pattern = new RegExp(e[i].getAttribute('pattern'));
                var value = validateGetValueOf(e[i]);
                if (pattern != '/null/') {
                                var offendingChar = value.match(pattern);
                                if(offendingChar == null) {
                                        str+= (e[i].hasAttribute('errorMsg')) ?
                                                e[i].getAttribute('errorMsg') + "\n" :
                                                "Parse error in form ! --"+e[i].name+"\n";
                                        e[i].setAttribute('class','inputError');
                                        continue;
                                }
                                min_reqs= (e[i].hasAttribute('min')) ? e[i].getAttribute('min') : "";
                                max_reqs= (e[i].hasAttribute('max')) ? e[i].getAttribute('max') : "";
                                if(typeof(e[min_reqs])=="object")
                                        min_reqs=validateGetValueOf(e[min_reqs]);
                                if(typeof(e[max_reqs])=="object")
                                        min_reqs=validateGetValueOf(e[max_reqs]);
                                if(min_reqs!="") min_reqs=parseFloat(min_reqs);
                                if(max_reqs!="") max_reqs=parseFloat(max_reqs);
                                if ((min_reqs!="" && value < min_reqs) ||
                                        (max_reqs!="" && value > max_reqs)) {
                                                str+= (e[i].hasAttribute('MinMaxerrorMsg')) ?
                                                         e[i].getAttribute('MinMaxerrorMsg') + "\n" :
                                                        "Parse error in form : "+e[i].name +": "+min_reqs+"<="+value+"<="+max_reqs+"\n";
                                        e[i].setAttribute('class','inputError');
                                }
                        }
                }
    }
    if (str != "" && str!=null) {
        alert(str);
        return false;
    } else {
        return true;
    }
}


