var FormValidate=Class.create();FormValidate.prototype={initialize:function (p){this.params=p;for(i=0;i<p.length;i++){var e=p[i];if(this.isRequired(e))$(e.label).addClassName('required');}this.erList=new Array();this.errClass='validateError';},checkSpecialCharacter:function(v,chkSpecial){if(!chkSpecial) return false;var p=new RegExp("[^A-Za-z_ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿĀāĂăĄąĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥħĨĩĪīĬĭĮįİıĲĳĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňŉŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽž0-9.\\'\\.\\-]","g");patmatch=p.test(v);return patmatch;},checkText:function(id,required,chkSpecial,minL,maxL){if(minL<0) minL=0;if(required&&minL<1) minL=1;var v=$F(id);if(required){if(v==null||v==undefined)return false;else{if(v.length<minL)return false;if(v.length>maxL)return false;if(this.checkSpecialCharacter(v,chkSpecial))return false;}}else{if(v!=null&&v!=undefined&&v.length>0){if(v.length>maxL)return false;if(this.checkSpecialCharacter(v,chkSpecial))return false;}}return true;},checkNumber:function(id,required,onlyInt,minV,maxV){var v=$F(id);if(required||v.length>0){if(v==undefined||v==null||isNaN(v)||v!=parseFloat(v))return false;else{if(onlyInt&&(parseInt(v)!=v||v.indexOf('.')!=-1)) return false;if(v<minV) return false;if(v>maxV) return false;}}return true;},checkEmail:function(id,required){var v=$F(id);var moreExt=new Array("info","aero","museum","name");if(required||v.length>0){var p=new RegExp("^(\\w|-|\\.)+@(\\w|-|\\.)+\\.[a-z]{2,3}$","i");pMatch=p.test(v);if(pMatch)return true;else{for(var i=0;i<moreExt.length;i++){p.compile("^(\\w|-|\\.)+@(\\w|-|\\.)+\\." + moreExt[i] +"$");pMatch=p.test(v);if(pMatch)return true;}}return false;}return true;},checkDate:function(idD,idM,idY){var vD=$F(idD);var vM=$F(idM);var vY=$F(idY);var v=vD+'/'+vM+'/'+vY;var re= /(\d{1,2})(-|\/)+(\d{1,2})(-|\/)+(\d{4}|\d{2})/;if(!re.test(v))return false;var res=null;if(v.match(/\-/)!=null)res=v.split(/\-/);elseres=v.split(/\//);if(res!=null){if(res.length!=3) return false;var d=new Date(vY,vM-1,vD);if(d.getDate()!=vD||d.getMonth()!=vM-1||d.getFullYear()!=vY) return false;return true;}return false;},checkCompare:function (e){if(e.idCompare==null||e.idCompare==undefined) return true;if($F(e.id)!=$F(e.idCompare)) return false;return true;},checkOption:function (id){if($(id).selectedIndex>0) return true;return false;},isRequired:function (e){if(e.required==null||e.required==undefined) return true;return e.required;},min:function (e){if(e.min==null||e.min==undefined) return Number.MIN_VALUE;return e.min;},max:function (e){if(e.max==null||e.max==undefined) return Number.MAX_VALUE;return e.max;},setError:function (e){var t=this;t.valid=false;t.erList.push(e.message);try {if(!$(e.label).hasClassName(t.errClass)) $(e.label).addClassName(t.errClass)if(e.type=='date'){if(!$(e.idD).hasClassName(t.errClass)) $(e.idD).addClassName(t.errClass)if(!$(e.idM).hasClassName(t.errClass)) $(e.idM).addClassName(t.errClass)if(!$(e.idY).hasClassName(t.errClass)) $(e.idY).addClassName(t.errClass)}elseif(!$(e.id).hasClassName(t.errClass)) $(e.id).addClassName(t.errClass)}catch(e){};},setErrorCompare:function (e){var t=this;t.valid=false;t.erList.push(e.messageCompare);try {if(!$(e.label).hasClassName(t.errClass)) $(e.label).addClassName(t.errClass)if(!$(e.id).hasClassName(t.errClass)) $(e.id).addClassName(t.errClass)if(!$(e.idCompare).hasClassName(t.errClass)) $(e.idCompare).addClassName(t.errClass)if(!$(e.labelCompare).hasClassName(t.errClass)) $(e.labelCompare).addClassName(t.errClass)}catch(e){};},cleanError:function (e){var t=this;try{if($(e.label).hasClassName(t.errClass)) $(e.label).removeClassName(t.errClass)if(e.type=='date'){if($(e.idD).hasClassName(t.errClass)) $(e.idD).removeClassName(t.errClass)if($(e.idM).hasClassName(t.errClass)) $(e.idM).removeClassName(t.errClass)if($(e.idY).hasClassName(t.errClass)) $(e.idY).removeClassName(t.errClass)}elseif($(e.id).hasClassName(t.errClass)) $(e.id).removeClassName(t.errClass)}catch(e){};},addErrorMessage:function (msg){this.erList.push(msg);},setErrorClass:function (id){if(!$(id).hasClassName(this.errClass)) $(id).addClassName(this.errClass)},resetErrorClass:function (id){if($(id).hasClassName(this.errClass)) $(id).removeClassName(this.errClass)},setErrorState:function (){this.valid=false;},getValidationStatus:function (){return this.valid;},getValidationErrorList:function (){var el=this.erList;if(el==null||el==undefined||el.length==0) return '';var t='<ul>';for (i=0;i<el.length;i++)t +='<li>'+el[i]+'</li>';t+='</ul>';return t;},validate:function (){var t=this;var p=t.params;t.valid=true;t.erList=new Array();for(i=0;i<p.length;i++){var e=p[i];switch (e.type){case 'text':{if(!t.checkText(e.id,t.isRequired(e),true,t.min(e),t.max(e))) t.setError(e)else if(!t.checkCompare(e)) t.setErrorCompare(e)elset.cleanError(e);}break;case 'any-text':{if(!t.checkText(e.id,t.isRequired(e),false,t.min(e),t.max(e))) t.setError(e)else if(!t.checkCompare(e)) t.setErrorCompare(e)elset.cleanError(e);}break;case 'int':{if(!t.checkNumber(e.id,t.isRequired(e),true,t.min(e),t.max(e))) t.setError(e)else if(!t.checkCompare(e)) t.setErrorCompare(e)elset.cleanError(e);}break;case 'number':{if(!t.checkNumber(e.id,t.isRequired(e),false,t.min(e),t.max(e))) t.setError(e)else if(!t.checkCompare(e)) t.setErrorCompare(e)elset.cleanError(e);}break;case 'date':{if(t.isRequired(e)&&(!t.checkDate(e.idD,e.idM,e.idY))) t.setError(e)else if(!t.checkCompare(e)) t.setErrorCompare(e)elset.cleanError(e);}break;case 'email':{if(!t.checkEmail(e.id,t.isRequired(e))) t.setError(e)else if(!t.checkCompare(e)) t.setErrorCompare(e)elset.cleanError(e);}break;case 'option':{if(t.isRequired(e)&&(!t.checkOption(e.id))) t.setError(e)elset.cleanError(e);}break;case 'check':{if(!t.isRequired(e)){if($F(e.id)==null) t.setError(e)elset.cleanError(e)}elset.cleanError(e);}break;}}return t.valid;}}

