function Validator(frmname){this.formobj=document.forms[frmname];if(!this.formobj){alert("Brak obiektu: "+frmname);return;}
if(this.formobj.onsubmit){this.formobj.old_onsubmit=this.formobj.onsubmit;this.formobj.onsubmit=null;}
else{this.formobj.old_onsubmit=null;}
this.formobj.onsubmit=form_submit_handler;this.addValidation=add_validation;this.setAddnlValidationFunction=set_addnl_vfunction;this.clearAllValidations=clear_all_validations;}
function set_addnl_vfunction(functionname){this.formobj.addnlvalidation=functionname;}
function clear_all_validations(){for(var itr=0;itr<this.formobj.elements.length;itr++){this.formobj.elements[itr].validationset=null;}}
function form_submit_handler(){for(var itr=0;itr<this.elements.length;itr++){if(this.elements[itr].validationset&&!this.elements[itr].validationset.validate()){return false;}}
if(this.addnlvalidation){str=" var ret = "+this.addnlvalidation+"()";eval(str);if(!ret)return ret;}
return true;}
function add_validation(itemname,descriptor,errstr){if(!this.formobj){alert("Brak formularza.");return;}
var itemobj=this.formobj[itemname];if(!itemobj){alert("Brak pola o nazwie: "+itemname);return;}
if(!itemobj.validationset){itemobj.validationset=new ValidationSet(itemobj);}
itemobj.validationset.add(descriptor,errstr);}
function ValidationDesc(inputitem,desc,error){this.desc=desc;this.error=error;this.itemobj=inputitem;this.validate=vdesc_validate;}
function vdesc_validate(){if(!V2validateData(this.desc,this.itemobj,this.error)){this.itemobj.focus();return false;}
return true;}
function ValidationSet(inputitem){this.vSet=new Array();this.add=add_validationdesc;this.validate=vset_validate;this.itemobj=inputitem;}
function add_validationdesc(desc,error){this.vSet[this.vSet.length]=new ValidationDesc(this.itemobj,desc,error);}
function vset_validate(){for(var itr=0;itr<this.vSet.length;itr++){if(!this.vSet[itr].validate()){return false;}}
return true;}
function validateEmailv2(email){if(email.length<=0){return true;}
var splitted=email.match("^(.+)@(.+)$");if(splitted==null)return false;if(splitted[1]!=null){var regexp_user=/^\"?[\w-_\.]*\"?$/;if(splitted[1].match(regexp_user)==null)return false;}
if(splitted[2]!=null){var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;if(splitted[2].match(regexp_domain)==null){var regexp_ip=/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;if(splitted[2].match(regexp_ip)==null)return false;}
return true;}
return false;}
function V2validateData(strValidateStr,objValue,strError){var epos=strValidateStr.search("=");var command="";var cmdvalue="";if(epos>=0){command=strValidateStr.substring(0,epos);cmdvalue=strValidateStr.substr(epos+1);}
else{command=strValidateStr;}
switch(command){case"req":case"required":{if(eval(objValue.value.length)==0){alert(strError);return false;}
break;}
case"maxlength":case"maxlen":{if(objValue.value.length!=0){if(eval(objValue.value.length)>eval(cmdvalue)){alert(strError);return false;}}
break;}
case"minlength":case"minlen":{if(objValue.value.length!=0){if(eval(objValue.value.length)<eval(cmdvalue)){alert(strError);return false;}}
break;}
case"length":case"len":{if(eval(objValue.value.length)!=eval(cmdvalue)){alert(strError);return false;}
break;}
case"lt":case"lessthan":{if(isNaN(objValue.value)){alert(strError);return false;}
if(eval(objValue.value)>=eval(cmdvalue)){alert(strError);return false;}
break;}
case"eq":case"equal":{if(isNaN(objValue.value)){alert(strError);return false;}
if(eval(objValue.value)!=eval(cmdvalue)){alert(strError);return false;}
break;}
case"gt":case"greaterthan":{if(isNaN(objValue.value)){alert(strError);return false;}
if(eval(objValue.value)<=eval(cmdvalue)){alert(strError);return false;}
break;}
case"regexp":{if(objValue.value.length>0){if(!objValue.value.match(cmdvalue)){alert(strError);return false;}}
break;}
case"dontselect":{if(objValue.selectedIndex==null){alert(strError);return false;}
if(objValue.selectedIndex==eval(cmdvalue)){alert(strError);return false;}
break;}
case"checked":{if(objValue.checked==null){alert(strError);return false;}
if(objValue.checked==false){alert(strError);return false;}
break;}
case"alnum":case"alphanumeric":{var charpos=objValue.value.search("[^A-Za-z0-9ÊÓ¡¦£¯¬ÆÑêó±¶³¿¼æñ \-_]");if(objValue.value.length>0&&charpos>=0){alert(strError);return false;}
break;}
case"num":case"numeric":{var charpos=objValue.value.search("[^0-9]");if(objValue.value.length>0&&charpos>=0){alert(strError);return false;}
break;}
case"alphabetic":case"alpha":{var charpos=objValue.value.search("[^A-Za-zÊÓ¡¦£¯¬ÆÑêó±¶³¿¼æñ \-_]");if(objValue.value.length>0&&charpos>=0){alert(strError);return false;}
break;}
case"login":{var charpos=objValue.value.search("[^a-z0-9\-_]");if(objValue.value.length>0&&charpos>=0){alert(strError);return false;}
break;}
case"email":{if(!validateEmailv2(objValue.value)){alert(strError);return false;}
break;}
case"pass":case"password":{p1=document.getElementById("UserPassword");p2=document.getElementById("UserPassword2");if(p1.value!=p2.value){alert(strError);return false;}
break;}
case"passup":case"passwordupdate":{p1=document.getElementById("UserPassword").value;p2=document.getElementById("UserPassword2").value;p3=document.getElementById("UserPassword3").value;if(p1!=p2){alert('Podane has³a ró¿ni± siê.');return false;}
if((p1!="")&&(p3=="")){alert('Musisz podaæ stare has³o.');return false;}
if((p3!="")&&(p1=="")){alert('Musisz podaæ nowe has³o.');return false;}
break;}
case"censor":{if(objValue.value.length>0){if(objValue.value.toLowerCase().match(/kurw|huj|hój|pierdol|jebaæ|jebany|pierdal|cip|kutas|fiut|fiucie/)){alert(strError);return false;}}
break;}}
return true;}