Prado.Validation=Class.create();Prado.Validation.Util=Class.create();Prado.Validation.Util.toInteger=function(B){var C=/^\s*[-\+]?\d+\s*$/;if(B.match(C)==null){return null}var A=parseInt(B,10);return(isNaN(A)?null:A)};Prado.Validation.Util.toDouble=function(E,D){D=undef(D)?".":D;var F=new RegExp("^\\s*([-\\+])?(\\d+)?(\\"+D+"(\\d+))?\\s*$");var B=E.match(F);if(B==null){return null}var A=B[1]+(B[2].length>0?B[2]:"0")+"."+B[4];var C=parseFloat(A);return(isNaN(C)?null:C)};Prado.Validation.Util.toCurrency=function(H,G,B,I){G=undef(G)?",":G;I=undef(I)?".":I;B=undef(B)?2:B;var E=new RegExp("^\\s*([-\\+])?(((\\d+)\\"+G+")*)(\\d+)"+((B>0)?"(\\"+I+"(\\d{1,"+B+"}))?":"")+"\\s*$");var D=H.match(E);if(D==null){return null}var A=D[2]+D[5];var C=D[1]+A.replace(new RegExp("(\\"+G+")","g"),"")+((B>0)?"."+D[7]:"");var F=parseFloat(C);return(isNaN(F)?null:F)};Prado.Validation.Util.toDate=function(K,J){J=J||"%m/%d/%Y";var G=0;var B=-1;var F=0;var I=K.split(/\W+/);var H=J.match(/%./g);var E=0,D=0;var L=0;var C=0;for(E=0;E<I.length;++E){if(!I[E]){continue}switch(H[E]){case"%d":case"%e":F=parseInt(I[E],10);break;case"%m":B=parseInt(I[E],10)-1;break;case"%Y":case"%y":G=parseInt(I[E],10);(G<100)&&(G+=(G>29)?1900:2000);break;case"%H":case"%I":case"%k":case"%l":L=parseInt(I[E],10);break;case"%P":case"%p":if(/pm/i.test(I[E])&&L<12){L+=12}break;case"%M":C=parseInt(I[E],10);break}}if(G!=0&&B!=-1&&F!=0){var A=new Date(G,B,F,L,C,0);return(isObject(A)&&G==A.getFullYear()&&B==A.getMonth()&&F==A.getDate())?A.valueOf():null}return null};Prado.Validation.Util.trim=function(A){if(undef(A)){return""}return A.replace(/^\s+|\s+$/g,"")};Prado.Validation.Util.focus=function(A){var B=$(A);if(isObject(B)&&isdef(B.focus)){setTimeout(function(){B.focus()},100)}return false};Prado.Validation.validators=[];Prado.Validation.forms=[];Prado.Validation.summaries=[];Prado.Validation.groups=[];Prado.Validation.TargetGroups={};Prado.Validation.CurrentTargetGroup=null;Prado.Validation.HasTargetGroup=false;Prado.Validation.ActiveTarget=null;Prado.Validation.IsGroupValidation=false;Prado.Validation.AddForm=function(A){Prado.Validation.forms.push($(A))};Prado.Validation.AddTarget=function(C,B){var A=$(C);Event.observe(A,"click",function(){Prado.Validation.ActiveTarget=A;Prado.Validation.CurrentTargetGroup=Prado.Validation.TargetGroups[C]});if(B){Prado.Validation.TargetGroups[C]=B;Prado.Validation.HasTargetGroup=true}};Prado.Validation.AddGroup=function(B,A){B.active=false;B.target=$(B.target);B.validators=A;Prado.Validation.groups.push(B);Event.observe(B.target,"click",Prado.Validation.UpdateActiveGroup)};Prado.Validation.UpdateActiveGroup=function(C){var A=Prado.Validation.groups;for(var B=0;B<A.length;B++){A[B].active=(isdef(C)&&A[B].target==Event.element(C))}Prado.Validation.IsGroupValidation=isdef(C)};Prado.Validation.IsValid=function(D){var C=true;var A=Prado.Validation.validators;for(var B=0;B<A.length;B++){A[B].enabled=true;A[B].visible=Prado.Validation.IsGroupValidation?A[B].inActiveGroup():true;if(Prado.Validation.HasTargetGroup){if(A[B].group!=Prado.Validation.CurrentTargetGroup){A[B].enabled=false}}C&=A[B].validate()}Prado.Validation.ShowSummary(D);Prado.Validation.UpdateActiveGroup();return C};Prado.Validation.prototype={initialize:function(B,A){this.evaluateIsValid=B;this.attr=undef(A)?[]:A;this.message=$(A.id);this.control=$(A.controltovalidate);this.enabled=isdef(A.enabled)?A.enabled:true;this.visible=isdef(A.visible)?A.visible:true;this.group=isdef(A.validationgroup)?A.validationgroup:null;this.isValid=true;Prado.Validation.validators.push(this);if(this.evaluateIsValid){this.evaluateIsValid.bind(this)}},validate:function(){if(this.visible&&this.enabled&&this.evaluateIsValid){this.isValid=this.evaluateIsValid()}else{this.isValid=true}this.observe();this.update();return this.isValid},update:function(){if(this.attr.display=="Dynamic"){this.isValid?Element.hide(this.message):Element.show(this.message)}if(this.message){this.message.style.visibility=this.isValid?"hidden":"visible"}var A=this.attr.controlcssclass;if(this.control&&isString(A)&&A.length>0){Element.condClassName(this.control,A,!this.isValid)}Prado.Validation.ShowSummary()},setValid:function(A){this.isValid=A;this.update()},observe:function(){if(undef(this.observing)){if(this.control&&this.control.form){Event.observe(this.control,"blur",this.validate.bind(this))}this.observing=true}},convert:function(A,B){if(undef(B)){B=Form.Element.getValue(this.control)}switch(A){case"Integer":return Prado.Validation.Util.toInteger(B);case"Double":case"Float":return Prado.Validation.Util.toDouble(B,this.attr.decimalchar);case"Currency":return Prado.Validation.Util.toCurrency(B,this.attr.groupchar,this.attr.digits,this.attr.decimalchar);case"Date":return Prado.Validation.Util.toDate(B,this.attr.dateformat)}return B.toString()},inActiveGroup:function(){var A=Prado.Validation.groups;for(var B=0;B<A.length;B++){if(A[B].active&&A[B].validators.contains(this.attr.id)){return true}}return false}};Prado.Validation.Summary=Class.create();Prado.Validation.Summary.prototype={initialize:function(A){this.attr=A;this.div=$(A.id);this.visible=false;this.enabled=false;this.group=isdef(A.validationgroup)?A.validationgroup:null;Prado.Validation.summaries.push(this)},show:function(D){var B=D||this.attr.refresh=="1";var C=this.getMessages();if(C.length<=0||!this.visible||!this.enabled){if(B){Element.hide(this.div)}return}if(Prado.Validation.HasTargetGroup){if(Prado.Validation.CurrentTargetGroup!=this.group){if(B){Element.hide(this.div)}return}}if(this.attr.showsummary!="False"&&B){this.div.style.display="block";while(this.div.childNodes.length>0){this.div.removeChild(this.div.lastChild)}new Insertion.Bottom(this.div,this.formatSummary(C))}if(D){window.scrollTo(this.div.offsetLeft-20,this.div.offsetTop-20)}var A=this;if(D&&this.attr.showmessagebox=="True"&&B){setTimeout(function(){alert(A.formatMessageBox(C))},20)}},getMessages:function(){var A=Prado.Validation.validators;var C=[];for(var B=0;B<A.length;B++){if(A[B].isValid==false&&isString(A[B].attr.errormessage)&&A[B].attr.errormessage.length>0){C.push(A[B].attr.errormessage)}}return C},formats:function(A){switch(A){case"List":return{header:"<br />",first:"",pre:"",post:"<br />",last:""};case"SingleParagraph":return{header:" ",first:"",pre:"",post:" ",last:"<br />"};case"BulletList":default:return{header:"",first:"<ul>",pre:"<li>",post:"</li>",last:"</ul>"}}},formatSummary:function(C){var D=this.formats(this.attr.displaymode);var A=isdef(this.attr.headertext)?this.attr.headertext+D.header:"";A+=D.first;for(var B=0;B<C.length;B++){A+=(C[B].length>0)?D.pre+C[B]+D.post:""}A+=D.last;return A},formatMessageBox:function(C){var A=isdef(this.attr.headertext)?this.attr.headertext+"\n":"";for(var B=0;B<C.length;B++){switch(this.attr.displaymode){case"List":A+=C[B]+"\n";break;case"BulletList":default:A+="  - "+C[B]+"\n";break;case"SingleParagraph":A+=C[B]+" ";break}}return A},inActiveGroup:function(){var A=Prado.Validation.groups;for(var B=0;B<A.length;B++){if(A[B].active&&A[B].id==this.attr.group){return true}}return false}};Prado.Validation.ShowSummary=function(C){var A=Prado.Validation.summaries;for(var B=0;B<A.length;B++){if(isdef(C)){if(Prado.Validation.IsGroupValidation){A[B].visible=A[B].inActiveGroup()}else{A[B].visible=undef(A[B].attr.group)}A[B].enabled=$(A[B].attr.form)==C}A[B].show(C)}};Prado.Validation.OnSubmit=function(B){if(typeof tinyMCE!="undefined"){tinyMCE.triggerSave()}if(!Prado.Validation.ActiveTarget){return true}var A=Prado.Validation.IsValid(Event.element(B)||B);if(Event.element(B)&&!A){Event.stop(B)}Prado.Validation.ActiveTarget=null;Prado.Validation.CurrentTargetGroup=null;return A};Prado.Validation.OnLoad=function(){for(var A=0;A<Prado.Validation.forms.length;A++){form=Prado.Validation.forms[A];Event.observe(form,"submit",Prado.Validation.OnSubmit)}};Prado.Validation.ValidateValidatorGroup=function(C){var A=Prado.Validation.groups;var D=null;for(var B=0;B<A.length;B++){if(A[B].id==C){D=A[B];Prado.Validation.groups[B].active=true;Prado.Validation.CurrentTargetGroup=null;Prado.Validation.IsGroupValidation=true}else{Prado.Validation.groups[B].active=false}}if(D){return Prado.Validation.IsValid(D.target.form)}return true};Prado.Validation.ValidateValidationGroup=function(B){var A=Prado.Validation.TargetGroups;for(var D in A){if(A[D]==B){var C=$(D);Prado.Validation.ActiveTarget=C;Prado.Validation.CurrentTargetGroup=B;Prado.Validation.IsGroupValidation=false;return Prado.Validation.IsValid(C.up("form"))}}return true};Prado.Validation.ValidateNonGroup=function(B){if(Prado.Validation){var A=$(B);A=A||document.forms[0];Prado.Validation.ActiveTarget=A;Prado.Validation.CurrentTargetGroup=null;Prado.Validation.IsGroupValidation=false;return Prado.Validation.IsValid(A)}return true};Event.OnLoad(Prado.Validation.OnLoad);Prado.Validation.TRequiredFieldValidator=function(){var D=this.control.getAttribute("type");if(D=="file"){return true}else{var B=Prado.Validation.Util.trim;var C=B(Form.Element.getValue(this.control));var A=B(this.attr.initialvalue);return(C!=A)}};Prado.Validation.EviaDateSelectValidator=function(){this.customcontrol=this.attr.controltovalidate;a_el=$(this.customcontrol+"-Cyear");b_el=$(this.customcontrol+"-Cmonth");c_el=$(this.customcontrol+"-Cday");var B=Form.Element.getValue(a_el);var A=Form.Element.getValue(b_el);if(!isNull(c_el)){var C=Form.Element.getValue(c_el)}else{var C=1}return(B>0&&A>0&&C>0)};Prado.Validation.TRegularExpressionValidator=function(){var A=Prado.Validation.Util.trim;var C=A(Form.Element.getValue(this.control));if(C==""){return true}var D=new RegExp(this.attr.validationexpression);var B=D.exec(C);return(B!=null&&C==B[0])};Prado.Validation.TEmailAddressValidator=Prado.Validation.TRegularExpressionValidator;Prado.Validation.TCustomValidator=function(){var value=isNull(this.control)?null:function(){var element=$(this.control);if(isFunction(Form.Element.Serializers[element.tagName.toLowerCase()])){return $F(this.control)}else{return null}};var func=this.attr.clientvalidationfunction;eval("var validate = "+func);return validate&&isFunction(validate)?validate(this,value):true};Prado.Validation.TRangeValidator=function(){var B=Prado.Validation.Util.trim;var G=B(Form.Element.getValue(this.control));if(G==""){return true}var F=this.attr.minimumvalue;var D=this.attr.maximumvalue;if(undef(F)&&undef(D)){return true}if(F==""){F=0}if(D==""){D=0}var C=this.attr.type;if(undef(C)){return(parseFloat(G)>=parseFloat(F))&&(parseFloat(G)<=parseFloat(D))}var E=this.convert(C,F);var A=this.convert(C,D);G=this.convert(C,G);return G>=E&&G<=A};Prado.Validation.TCompareValidator=function(){var A=Prado.Validation.Util.trim;var F=A(Form.Element.getValue(this.control));if(F.length==0){return true}var B;var E=$(this.attr.controlhookup);if(E){B=A(Form.Element.getValue(E))}else{B=isString(this.attr.valuetocompare)?this.attr.valuetocompare:""}var D=Prado.Validation.TCompareValidator.compare;var G=D.bind(this)(F,B);if(E){var C=this.attr.controlcssclass;if(isString(C)&&C.length>0){Element.condClassName(E,C,!G)}if(undef(this.observingComparee)){Event.observe(E,"change",this.validate.bind(this));this.observingComparee=true}}return G};Prado.Validation.TCompareValidator.compare=function(B,A){var D,C;if((D=this.convert(this.attr.type,B))==null){return false}if(this.attr.operator=="DataTypeCheck"){return true}if((C=this.convert(this.attr.type,A))==null){return true}switch(this.attr.operator){case"NotEqual":return(D!=C);case"GreaterThan":return(D>C);case"GreaterThanEqual":return(D>=C);case"LessThan":return(D<C);case"LessThanEqual":return(D<=C);default:return(D==C)}};Prado.Validation.TRequiredListValidator=function(){var D=undef(this.attr.min)?Number.NEGATIVE_INFINITY:parseInt(this.attr.min);var A=undef(this.attr.max)?Number.POSITIVE_INFINITY:parseInt(this.attr.max);var F=document.getElementsByName(this.attr.selector);if(F.length<=0){F=document.getElementsBySelector(this.attr.selector)}if(F.length<=0){return true}var H=new Array();if(isString(this.attr.required)&&this.attr.required.length>0){H=this.attr.required.split(/,\s* /)}var G=true;var C=Prado.Validation.TRequiredListValidator;switch(F[0].type){case"radio":case"checkbox":G=C.IsValidRadioList(F,D,A,H);break;case"select-multiple":G=C.IsValidSelectMultipleList(F,D,A,H);break}var E=this.attr.elementcssclass;if(isString(E)&&E.length>0){map(F,function(I){condClass(I,E,!G)})}if(undef(this.observingRequiredList)){for(var B=0;B<F.length;B++){Event.observe(F[B],"change",this.validate.bind(this))}this.observingRequiredList=true}return G};Prado.Validation.TRequiredListValidator.IsValidRadioList=function(F,D,A,G){var E=0;var B=new Array();for(var C=0;C<F.length;C++){if(F[C].checked){E++;B.push(F[C].value)}}return Prado.Validation.TRequiredListValidator.IsValidList(E,B,D,A,G)};Prado.Validation.TRequiredListValidator.IsValidSelectMultipleList=function(A,C,F,E){var G=0;var I=new Array();for(var D=0;D<A.length;D++){var H=A[D];for(var B=0;B<H.options.length;B++){if(H.options[B].selected){G++;I.push(H.options[B].value)}}}return Prado.Validation.TRequiredListValidator.IsValidList(G,I,C,F,E)};Prado.Validation.TRequiredListValidator.IsValidList=function(D,C,E,A,G){var F=true;if(G.length>0){if(C.length<G.length){return false}for(var B=0;B<G.length;B++){F=F&&C.contains(G[B])}}return F&&D>=E&&D<=A};
