Prado.Validation=Class.create();
Prado.Validation.Util=Class.create();
Prado.Validation.Util.toInteger=function(_1){
var _2=/^\s*[-\+]?\d+\s*$/;
if(_1.match(_2)==null){
return null;
}
var _3=parseInt(_1,10);
return (isNaN(_3)?null:_3);
};
Prado.Validation.Util.toDouble=function(_4,_5){
_5=undef(_5)?".":_5;
var _6=new RegExp("^\\s*([-\\+])?(\\d+)?(\\"+_5+"(\\d+))?\\s*$");
var m=_4.match(_6);
if(m==null){
return null;
}
var _8=m[1]+(m[2].length>0?m[2]:"0")+"."+m[4];
var _9=parseFloat(_8);
return (isNaN(_9)?null:_9);
};
Prado.Validation.Util.toCurrency=function(_a,_b,_c,_d){
_b=undef(_b)?",":_b;
_d=undef(_d)?".":_d;
_c=undef(_c)?2:_c;
var _e=new RegExp("^\\s*([-\\+])?(((\\d+)\\"+_b+")*)(\\d+)"+((_c>0)?"(\\"+_d+"(\\d{1,"+_c+"}))?":"")+"\\s*$");
var m=_a.match(_e);
if(m==null){
return null;
}
var _10=m[2]+m[5];
var _11=m[1]+_10.replace(new RegExp("(\\"+_b+")","g"),"")+((_c>0)?"."+m[7]:"");
var num=parseFloat(_11);
return (isNaN(num)?null:num);
};
Prado.Validation.Util.toDate=function(_13,_14){
_14=_14||"%m/%d/%Y";
var y=0;
var m=-1;
var d=0;
var a=_13.split(/\W+/);
var b=_14.match(/%./g);
var i=0,j=0;
var hr=0;
var min=0;
for(i=0;i<a.length;++i){
if(!a[i]){
continue;
}
switch(b[i]){
case "%d":
case "%e":
d=parseInt(a[i],10);
break;
case "%m":
m=parseInt(a[i],10)-1;
break;
case "%Y":
case "%y":
y=parseInt(a[i],10);
(y<100)&&(y+=(y>29)?1900:2000);
break;
case "%H":
case "%I":
case "%k":
case "%l":
hr=parseInt(a[i],10);
break;
case "%P":
case "%p":
if(/pm/i.test(a[i])&&hr<12){
hr+=12;
}
break;
case "%M":
min=parseInt(a[i],10);
break;
}
}
if(y!=0&&m!=-1&&d!=0){
var _1e=new Date(y,m,d,hr,min,0);
return (isObject(_1e)&&y==_1e.getFullYear()&&m==_1e.getMonth()&&d==_1e.getDate())?_1e.valueOf():null;
}
return null;
};
Prado.Validation.Util.trim=function(_1f){
if(undef(_1f)){
return "";
}
return _1f.replace(/^\s+|\s+$/g,"");
};
Prado.Validation.Util.focus=function(_20){
var obj=$(_20);
if(isObject(obj)&&isdef(obj.focus)){
setTimeout(function(){
obj.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(id){
Prado.Validation.forms.push($(id));
};
Prado.Validation.AddTarget=function(id,_24){
var _25=$(id);
Event.observe(_25,"click",function(){
Prado.Validation.ActiveTarget=_25;
Prado.Validation.CurrentTargetGroup=Prado.Validation.TargetGroups[id];
});
if(_24){
Prado.Validation.TargetGroups[id]=_24;
Prado.Validation.HasTargetGroup=true;
}
};
Prado.Validation.AddGroup=function(_26,_27){
_26.active=false;
_26.target=$(_26.target);
_26.validators=_27;
Prado.Validation.groups.push(_26);
Event.observe(_26.target,"click",Prado.Validation.UpdateActiveGroup);
};
Prado.Validation.UpdateActiveGroup=function(ev){
var _29=Prado.Validation.groups;
for(var i=0;i<_29.length;i++){
_29[i].active=(isdef(ev)&&_29[i].target==Event.element(ev));
}
Prado.Validation.IsGroupValidation=isdef(ev);
};
Prado.Validation.IsValid=function(_2b){
var _2c=true;
var _2d=Prado.Validation.validators;
for(var i=0;i<_2d.length;i++){
_2d[i].enabled=!_2d[i].control||undef(_2d[i].control.form)||_2d[i].control.form==_2b;
_2d[i].visible=Prado.Validation.IsGroupValidation?_2d[i].inActiveGroup():true;
if(Prado.Validation.HasTargetGroup){
if(_2d[i].group!=Prado.Validation.CurrentTargetGroup){
_2d[i].enabled=false;
}
}
_2c&=_2d[i].validate();
}
Prado.Validation.ShowSummary(_2b);
Prado.Validation.UpdateActiveGroup();
return _2c;
};
Prado.Validation.prototype={initialize:function(_2f,_30){
this.evaluateIsValid=_2f;
this.attr=undef(_30)?[]:_30;
this.message=$(_30.id);
this.control=$(_30.controltovalidate);
this.enabled=isdef(_30.enabled)?_30.enabled:true;
this.visible=isdef(_30.visible)?_30.visible:true;
this.group=isdef(_30.validationgroup)?_30.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 _31=this.attr.controlcssclass;
if(this.control&&isString(_31)&&_31.length>0){
Element.condClassName(this.control,_31,!this.isValid);
}
Prado.Validation.ShowSummary();
},setValid:function(_32){
this.isValid=_32;
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(_33,_34){
if(undef(_34)){
_34=Form.Element.getValue(this.control);
}
switch(_33){
case "Integer":
return Prado.Validation.Util.toInteger(_34);
case "Double":
case "Float":
return Prado.Validation.Util.toDouble(_34,this.attr.decimalchar);
case "Currency":
return Prado.Validation.Util.toCurrency(_34,this.attr.groupchar,this.attr.digits,this.attr.decimalchar);
case "Date":
return Prado.Validation.Util.toDate(_34,this.attr.dateformat);
}
return _34.toString();
},inActiveGroup:function(){
var _35=Prado.Validation.groups;
for(var i=0;i<_35.length;i++){
if(_35[i].active&&_35[i].validators.contains(this.attr.id)){
return true;
}
}
return false;
}};
Prado.Validation.Summary=Class.create();
Prado.Validation.Summary.prototype={initialize:function(_37){
this.attr=_37;
this.div=$(_37.id);
this.visible=false;
this.enabled=false;
this.group=isdef(_37.validationgroup)?_37.validationgroup:null;
Prado.Validation.summaries.push(this);
},show:function(_38){
var _39=_38||this.attr.refresh=="1";
var _3a=this.getMessages();
if(_3a.length<=0||!this.visible||!this.enabled){
if(_39){
Element.hide(this.div);
}
return;
}
if(Prado.Validation.HasTargetGroup){
if(Prado.Validation.CurrentTargetGroup!=this.group){
if(_39){
Element.hide(this.div);
}
return;
}
}
if(this.attr.showsummary!="False"&&_39){
this.div.style.display="block";
while(this.div.childNodes.length>0){
this.div.removeChild(this.div.lastChild);
}
new Insertion.Bottom(this.div,this.formatSummary(_3a));
}
if(_38){
window.scrollTo(this.div.offsetLeft-20,this.div.offsetTop-20);
}
var _3b=this;
if(_38&&this.attr.showmessagebox=="True"&&_39){
setTimeout(function(){
alert(_3b.formatMessageBox(_3a));
},20);
}
},getMessages:function(){
var _3c=Prado.Validation.validators;
var _3d=[];
for(var i=0;i<_3c.length;i++){
if(_3c[i].isValid==false&&isString(_3c[i].attr.errormessage)&&_3c[i].attr.errormessage.length>0){
_3d.push(_3c[i].attr.errormessage);
}
}
return _3d;
},formats:function(_3f){
switch(_3f){
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(_40){
var _41=this.formats(this.attr.displaymode);
var _42=isdef(this.attr.headertext)?this.attr.headertext+_41.header:"";
_42+=_41.first;
for(var i=0;i<_40.length;i++){
_42+=(_40[i].length>0)?_41.pre+_40[i]+_41.post:"";
}
_42+=_41.last;
return _42;
},formatMessageBox:function(_44){
var _45=isdef(this.attr.headertext)?this.attr.headertext+"\n":"";
for(var i=0;i<_44.length;i++){
switch(this.attr.displaymode){
case "List":
_45+=_44[i]+"\n";
break;
case "BulletList":
default:
_45+="  - "+_44[i]+"\n";
break;
case "SingleParagraph":
_45+=_44[i]+" ";
break;
}
}
return _45;
},inActiveGroup:function(){
var _47=Prado.Validation.groups;
for(var i=0;i<_47.length;i++){
if(_47[i].active&&_47[i].id==this.attr.group){
return true;
}
}
return false;
}};
Prado.Validation.ShowSummary=function(_49){
var _4a=Prado.Validation.summaries;
for(var i=0;i<_4a.length;i++){
if(isdef(_49)){
if(Prado.Validation.IsGroupValidation){
_4a[i].visible=_4a[i].inActiveGroup();
}else{
_4a[i].visible=undef(_4a[i].attr.group);
}
_4a[i].enabled=$(_4a[i].attr.form)==_49;
}
_4a[i].show(_49);
}
};
Prado.Validation.OnSubmit=function(ev){
if(typeof tinyMCE!="undefined"){
tinyMCE.triggerSave();
}
if(!Prado.Validation.ActiveTarget){
return true;
}
var _4d=Prado.Validation.IsValid(Event.element(ev)||ev);
if(Event.element(ev)&&!_4d){
Event.stop(ev);
}
Prado.Validation.ActiveTarget=null;
return _4d;
};
Prado.Validation.OnLoad=function(){
};
Prado.Validation.ValidateValidatorGroup=function(_4e){
var _4f=Prado.Validation.groups;
var _50=null;
for(var i=0;i<_4f.length;i++){
if(_4f[i].id==_4e){
_50=_4f[i];
Prado.Validation.groups[i].active=true;
Prado.Validation.CurrentTargetGroup=null;
Prado.Validation.IsGroupValidation=true;
}else{
Prado.Validation.groups[i].active=false;
}
}
if(_50){
return Prado.Validation.IsValid(_50.target.form);
}
return true;
};
Prado.Validation.ValidateValidationGroup=function(_52){
var _53=Prado.Validation.TargetGroups;
for(var id in _53){
if(_53[id]==_52){
var _55=$(id);
Prado.Validation.ActiveTarget=_55;
Prado.Validation.CurrentTargetGroup=_52;
Prado.Validation.IsGroupValidation=false;
return Prado.Validation.IsValid(_55.form);
}
}
return true;
};
Prado.Validation.ValidateNonGroup=function(_56){
if(Prado.Validation){
var _57=$(_56);
_57=_57||document.forms[0];
Prado.Validation.ActiveTarget=_57;
Prado.Validation.CurrentTargetGroup=null;
Prado.Validation.IsGroupValidation=false;
return Prado.Validation.IsValid(_57);
}
return true;
};
Event.OnLoad(Prado.Validation.OnLoad);

Prado.Validation.TRequiredFieldValidator=function(){
var _1=this.control.getAttribute("type");
if(_1=="file"){
return true;
}else{
var _2=Prado.Validation.Util.trim;
var a=_2(Form.Element.getValue(this.control));
var b=_2(this.attr.initialvalue);
return (a!=b);
}
};
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 a=Form.Element.getValue(a_el);
var b=Form.Element.getValue(b_el);
var c=Form.Element.getValue(c_el);
return (a>0&&b>0&&c>0);
};
Prado.Validation.TRegularExpressionValidator=function(){
var _8=Prado.Validation.Util.trim;
var _9=_8(Form.Element.getValue(this.control));
if(_9==""){
return true;
}
var rx=new RegExp(this.attr.validationexpression);
var _b=rx.exec(_9);
return (_b!=null&&_9==_b[0]);
};
Prado.Validation.TEmailAddressValidator=Prado.Validation.TRegularExpressionValidator;
Prado.Validation.TCustomValidator=function(){
var _c=isNull(this.control)?null:function(){
var _d=$(this.control);
if(isFunction(Form.Element.Serializers[_d.tagName.toLowerCase()])){
return $F(this.control);
}else{
return null;
}
};
var _e=this.attr.clientvalidationfunction;
eval("var validate = "+_e);
return validate&&isFunction(validate)?validate(this,_c):true;
};
Prado.Validation.TRangeValidator=function(){
var _f=Prado.Validation.Util.trim;
var _10=_f(Form.Element.getValue(this.control));
if(_10==""){
return true;
}
var _11=this.attr.minimumvalue;
var _12=this.attr.maximumvalue;
if(undef(_11)&&undef(_12)){
return true;
}
if(_11==""){
_11=0;
}
if(_12==""){
_12=0;
}
var _13=this.attr.type;
if(undef(_13)){
return (parseFloat(_10)>=parseFloat(_11))&&(parseFloat(_10)<=parseFloat(_12));
}
var min=this.convert(_13,_11);
var max=this.convert(_13,_12);
_10=this.convert(_13,_10);
return _10>=min&&_10<=max;
};
Prado.Validation.TCompareValidator=function(){
var _16=Prado.Validation.Util.trim;
var _17=_16(Form.Element.getValue(this.control));
if(_17.length==0){
return true;
}
var _18;
var _19=$(this.attr.controlhookup);
if(_19){
_18=_16(Form.Element.getValue(_19));
}else{
_18=isString(this.attr.valuetocompare)?this.attr.valuetocompare:"";
}
var _1a=Prado.Validation.TCompareValidator.compare;
var _1b=_1a.bind(this)(_17,_18);
if(_19){
var _1c=this.attr.controlcssclass;
if(isString(_1c)&&_1c.length>0){
Element.condClassName(_19,_1c,!_1b);
}
if(undef(this.observingComparee)){
Event.observe(_19,"change",this.validate.bind(this));
this.observingComparee=true;
}
}
return _1b;
};
Prado.Validation.TCompareValidator.compare=function(_1d,_1e){
var op1,op2;
if((op1=this.convert(this.attr.type,_1d))==null){
return false;
}
if(this.attr.operator=="DataTypeCheck"){
return true;
}
if((op2=this.convert(this.attr.type,_1e))==null){
return true;
}
switch(this.attr.operator){
case "NotEqual":
return (op1!=op2);
case "GreaterThan":
return (op1>op2);
case "GreaterThanEqual":
return (op1>=op2);
case "LessThan":
return (op1<op2);
case "LessThanEqual":
return (op1<=op2);
default:
return (op1==op2);
}
};
Prado.Validation.TRequiredListValidator=function(){
var min=undef(this.attr.min)?Number.NEGATIVE_INFINITY:parseInt(this.attr.min);
var max=undef(this.attr.max)?Number.POSITIVE_INFINITY:parseInt(this.attr.max);
var _23=document.getElementsByName(this.attr.selector);
if(_23.length<=0){
_23=document.getElementsBySelector(this.attr.selector);
}
if(_23.length<=0){
return true;
}
var _24=new Array();
if(isString(this.attr.required)&&this.attr.required.length>0){
_24=this.attr.required.split(/,\s* /);
}
var _25=true;
var _26=Prado.Validation.TRequiredListValidator;
switch(_23[0].type){
case "radio":
case "checkbox":
_25=_26.IsValidRadioList(_23,min,max,_24);
break;
case "select-multiple":
_25=_26.IsValidSelectMultipleList(_23,min,max,_24);
break;
}
var _27=this.attr.elementcssclass;
if(isString(_27)&&_27.length>0){
map(_23,function(_28){
condClass(_28,_27,!_25);
});
}
if(undef(this.observingRequiredList)){
Event.observe(_23,"change",this.validate.bind(this));
this.observingRequiredList=true;
}
return _25;
};
Prado.Validation.TRequiredListValidator.IsValidRadioList=function(_29,min,max,_2c){
var _2d=0;
var _2e=new Array();
for(var i=0;i<_29.length;i++){
if(_29[i].checked){
_2d++;
_2e.push(_29[i].value);
}
}
return Prado.Validation.TRequiredListValidator.IsValidList(_2d,_2e,min,max,_2c);
};
Prado.Validation.TRequiredListValidator.IsValidSelectMultipleList=function(_30,min,max,_33){
var _34=0;
var _35=new Array();
for(var i=0;i<_30.length;i++){
var _37=_30[i];
for(var j=0;j<_37.options.length;j++){
if(_37.options[j].selected){
_34++;
_35.push(_37.options[j].value);
}
}
}
return Prado.Validation.TRequiredListValidator.IsValidList(_34,_35,min,max,_33);
};
Prado.Validation.TRequiredListValidator.IsValidList=function(_39,_3a,min,max,_3d){
var _3e=true;
if(_3d.length>0){
if(_3a.length<_3d.length){
return false;
}
for(var k=0;k<_3d.length;k++){
_3e=_3e&&_3a.contains(_3d[k]);
}
}
return _3e&&_39>=min&&_39<=max;
};

