var ValidationDefaultOptions=function(){};ValidationDefaultOptions.prototype={onSubmit:true,stopOnFirst:false,immediate:false,focusOnError:true,useTitles:false,onFormValidate:function($,_){},onElementValidate:function($,_){}};var ValidatorDefaultOptions=function(){};ValidatorDefaultOptions.prototype={ignoreEmptyValue:true,depends:[]};Validator=Class.create();Validator.messageSource={};Validator.messageSource["en-us"]=[["validation-failed","Validation failed."],["required","This is a required field."],["validate-number","Please enter a valid number in this field."],["validate-digits","Please use numbers only in this field. please avoid spaces or other characters such as dots or commas."],["validate-alpha","Please use letters only (a-z) in this field."],["validate-alphanum","Please use only letters (a-z) or numbers (0-9) only in this field. No spaces or other characters are allowed."],["validate-email","Please enter a valid email address. For example fred@domain.com ."],["validate-url","Please enter a valid URL."],["validate-currency-dollar","Please enter a valid $ amount. For example $100.00 ."],["validate-one-required","Please select one of the above options."],["validate-integer","Please enter a valid integer in this field"],["validate-pattern","Validation failed."],["validate-ip","Please enter a valid IP address"],["min-value","min value is %s."],["max-value","max value is %s."],["min-length","min length is %s,current length is %s."],["max-length","max length is %s,current length is %s."],["int-range","Please enter integer value between %s and %s"],["float-range","Please enter number between %s and %s"],["length-range","Please enter value length between %s and %s,current length is %s"],["equals","Conflicting with above value."],["less-than","Input value must be less than above value."],["great-than","Input value must be great than above value."],["validate-date","Please use this date format: %s. For example %s."],["validate-selection","Please make a selection."],["validate-file",function(A,B,$,_){return ValidationUtils.format("Please enter file type in [%s]",[$.join(",")])}],["validate-id-number","Please enter a valid id number."],["validate-chinese","Please enter chinese"],["validate-phone","Please enter a valid phone number,current length is %s."],["validate-mobile-phone","Please enter a valid mobile phone,For example 13910001000.current length is %s."],["validate-zip","Please enter a valid zip code."],["validate-qq","Please enter a valid qq number"]];Validator.messageSource.en=Validator.messageSource["en-us"];Validator.messageSource["zh-cn"]=[["validation-failed","\u9a8c\u8bc1\u5931\u8d25."],["required","\u8bf7\u8f93\u5165\u503c."],["validate-number","\u8bf7\u8f93\u5165\u6709\u6548\u7684\u6570\u5b57."],["validate-digits","\u8bf7\u8f93\u5165\u6570\u5b57."],["validate-alpha","\u8bf7\u8f93\u5165\u82f1\u6587\u5b57\u6bcd."],["validate-alphanum","\u8bf7\u8f93\u5165\u82f1\u6587\u5b57\u6bcd\u6216\u662f\u6570\u5b57,\u5176\u5b83\u5b57\u7b26\u662f\u4e0d\u5141\u8bb8\u7684."],["validate-email","\u8bf7\u8f93\u5165\u6709\u6548\u7684\u90ae\u4ef6\u5730\u5740,\u5982 username@example.com."],["validate-url","\u8bf7\u8f93\u5165\u6709\u6548\u7684URL\u5730\u5740."],["validate-currency-dollar","Please enter a valid $ amount. For example $100.00 ."],["validate-one-required","\u5728\u4e0a\u9762\u9009\u9879\u81f3\u5c11\u9009\u62e9\u4e00\u4e2a."],["validate-integer","\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u6574\u6570"],["validate-pattern","\u8f93\u5165\u7684\u503c\u4e0d\u5339\u914d"],["validate-ip","\u8bf7\u8f93\u5165\u6b63\u786e\u7684IP\u5730\u5740"],["min-value","\u6700\u5c0f\u503c\u4e3a%s"],["max-value","\u6700\u5927\u503c\u4e3a%s"],["min-length","\u6700\u5c0f\u957f\u5ea6\u4e3a%s,\u5f53\u524d\u957f\u5ea6\u4e3a%s."],["max-length","\u6700\u5927\u957f\u5ea6\u4e3a%s,\u5f53\u524d\u957f\u5ea6\u4e3a%s."],["int-range","\u8f93\u5165\u503c\u5e94\u8be5\u4e3a %s \u81f3 %s \u7684\u6574\u6570"],["float-range","\u8f93\u5165\u503c\u5e94\u8be5\u4e3a %s \u81f3 %s \u7684\u6570\u5b57"],["length-range","\u8f93\u5165\u503c\u7684\u957f\u5ea6\u5e94\u8be5\u5728 %s \u81f3 %s \u4e4b\u95f4,\u5f53\u524d\u957f\u5ea6\u4e3a%s"],["equals","\u4e24\u6b21\u8f93\u5165\u4e0d\u4e00\u81f4,\u8bf7\u91cd\u65b0\u8f93\u5165"],["less-than","\u8bf7\u8f93\u5165\u5c0f\u4e8e\u524d\u9762\u7684\u503c"],["great-than","\u8bf7\u8f93\u5165\u5927\u4e8e\u524d\u9762\u7684\u503c"],["validate-date","\u8bf7\u8f93\u5165\u6709\u6548\u7684\u65e5\u671f,\u683c\u5f0f\u4e3a %s. \u4f8b\u5982:%s."],["validate-selection","\u8bf7\u9009\u62e9."],["validate-file",function(A,B,$,_){return ValidationUtils.format("\u6587\u4ef6\u7c7b\u578b\u5e94\u8be5\u4e3a[%s]\u5176\u4e2d\u4e4b\u4e00",[$.join(",")])}],["validate-id-number","\u8bf7\u8f93\u5165\u5408\u6cd5\u7684\u8eab\u4efd\u8bc1\u53f7\u7801"],["validate-chinese","\u8bf7\u8f93\u5165\u4e2d\u6587"],["validate-phone","\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u7535\u8bdd\u53f7\u7801,\u5982:010-29392929,\u5f53\u524d\u957f\u5ea6\u4e3a%s."],["validate-mobile-phone","\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7\u7801,\u5f53\u524d\u957f\u5ea6\u4e3a%s."],["validate-zip","\u8bf7\u8f93\u5165\u6709\u6548\u7684\u90ae\u653f\u7f16\u7801"],["validate-qq","\u8bf7\u8f93\u5165\u6709\u6548\u7684QQ\u53f7\u7801."]];ValidationUtils={isVisible:function(_){while(_&&_.tagName!="BODY"){if(!$(_).visible())return false;_=_.parentNode}return true},getReferenceForm:function($){while($&&$.tagName!="BODY"){if($.tagName=="FORM")return $;$=$.parentNode}return null},getInputValue:function(_){_=$(_);if(_.type.toLowerCase()=="file")return _.value;else return $F(_)},getElmID:function($){return $.id?$.id:$.name},format:function(B,$){$=$||[];ValidationUtils.assert($.constructor==Array,"ValidationUtils.format() arguement 'args' must is Array");var A=B;for(var _=0;_<$.length;_++)A=A.replace(/%s/,$[_]);return A},getArgumentsByClassName:function(C,D){if(!D||!C)return[];var E=new RegExp(C+"-(\\S+)"),$=D.match(E);if(!$)return[];var B=[];B.singleArgument=$[1];var A=$[1].split("-");for(var _=0;_<A.length;_++)if(A[_]==""){if(_+1<A.length)A[_+1]="-"+A[_+1]}else B.push(A[_]);return B},assert:function($,A){var _=A||("assert failed error,condition="+$);if(!$){alert(_);throw new Error(_)}else return $},isDate:function(E,A){var H="MM",C="dd",$="yyyy",D="^"+A.replace($,"\\d{4}").replace(H,"\\d{2}").replace(C,"\\d{2}")+"$";if(!new RegExp(D).test(E))return false;var _=E.substr(A.indexOf($),4),F=E.substr(A.indexOf(H),2),B=E.substr(A.indexOf(C),2),G=new Date(ValidationUtils.format("%s/%s/%s",[_,F,B]));return(parseInt(F,10)==(1+G.getMonth()))&&(parseInt(B,10)==G.getDate())&&(parseInt(_,10)==G.getFullYear())},fireSubmit:function(A){A=$(A);if(A.fireEvent){if(A.fireEvent("onsubmit"))A.submit()}else if(document.createEvent){var _=document.createEvent("HTMLEvents");_.initEvent("submit",false,true);A.dispatchEvent(_)}},getLanguage:function(){var $=null;if(typeof navigator.userLanguage=="undefined")$=navigator.language.toLowerCase();else $=navigator.userLanguage.toLowerCase();return $},getMessageSource:function(){var _=ValidationUtils.getLanguage(),$=Validator.messageSource["zh-cn"];if(Validator.messageSource[_])$=Validator.messageSource[_];return $}};Validator.messages={};ValidationUtils.getMessageSource().each(function($){Validator.messages[$[0]]=$[1]});Validator.prototype={initialize:function(A,_,$){this.options=Object.extend(new ValidatorDefaultOptions(),$||{});this._test=_?_:function($,_){return true};this._error=Validator.messages[A]?Validator.messages[A]:Validator.messages["validation-failed"];this.className=A;this._dependsTest=this._dependsTest.bind(this);this._getDependError=this._getDependError.bind(this)},_dependsTest:function(_,A){if(this.options.depends&&this.options.depends.length>0){var $=$A(this.options.depends).all(function($){return Validation.get($).test(_,A)});return $}return true},test:function(A,$){if(!this._dependsTest(A,$))return false;if(!$)$={};var _=(this.options.ignoreEmptyValue&&((A==null)||(A.length==0)));return _||this._test(A,$,ValidationUtils.getArgumentsByClassName(this.className,$.className),this)},_getDependError:function(A,B,_){var $=null;$A(this.options.depends).any(function(C){var D=Validation.get(C);if(!D.test(A,B)){$=D.error(A,B,_);return true}return false});return $},error:function(B,_,C){var A=this._getDependError(B,_,C);if(A!=null)return A;var $=ValidationUtils.getArgumentsByClassName(this.className,_.className),D=this._error;if(typeof D=="string"){if(B)$.push(B.length);D=ValidationUtils.format(this._error,$)}else if(typeof D=="function")D=D(B,_,$,this);else alert('property "_error" must type of string or function');if(!C)C=_.className.indexOf("useTitle")>=0;return C?((_&&_.title)?_.title:D):D}};var Validation=Class.create();Validation.prototype={initialize:function(A,_){this.options=Object.extend(new ValidationDefaultOptions(),_||{});this.form=$(A);var B=ValidationUtils.getElmID($(A));Validation.validations[B]=this;if(this.options.onSubmit)Event.observe(this.form,"submit",this.onSubmit.bind(this),false);if(this.options.immediate){var D=this.options.useTitles,C=this.options.onElementValidate;Form.getElements(this.form).each(function($){Event.observe($,"blur",function($){Validation.validateElement(Event.element($),{useTitle:D,onElementValidate:C})})})}},onSubmit:function($){if(!this.validate())Event.stop($)},validate:function(){var C=false,_=this.options.useTitles,A=this.options.onElementValidate;if(this.options.stopOnFirst)C=Form.getElements(this.form).all(function($){return Validation.validateElement($,{useTitle:_,onElementValidate:A})});else C=Form.getElements(this.form).collect(function($){return Validation.validateElement($,{useTitle:_,onElementValidate:A})}).all();if(!C&&this.options.focusOnError){var B=Form.getElements(this.form).findAll(function(_){return $(_).hasClassName("validation-failed")}).first();if(B.select)B.select();B.focus()}this.options.onFormValidate(C,this.form);return C},reset:function(){Form.getElements(this.form).each(Validation.reset)}};Object.extend(Validation,{validateElement:function(B,A){A=Object.extend({useTitle:false,onElementValidate:function($,_){}},A||{});B=$(B);var _=B.classNames();return _.all(function($){var _=Validation.test($,B,A.useTitle);A.onElementValidate(_,B);return _})},newErrorMsgAdvice:function(B,D,C){var _='<div class="validation-advice" id="advice-'+B+"-"+ValidationUtils.getElmID(D)+'" style="display:none">'+C+"</div>";switch(D.type.toLowerCase()){case"checkbox":case"radio":var A=D.parentNode;if(A)new Insertion.Bottom(A,_);else new Insertion.After(D,_);break;default:new Insertion.After(D,_)}_=$("advice-"+B+"-"+ValidationUtils.getElmID(D));return _},showErrorMsg:function(A,D,C){var D=$(D),B=Validation._getAdviceProp(A),_=Validation.getAdvice(A,D);if(!D[B])if(!_)_=Validation.newErrorMsgAdvice(A,D,C);if(_&&!_.visible())if(typeof Effect=="undefined")_.style.display="block";else new Effect.Appear(_,{duration:1});_.innerHTML=C;D[B]=true;D.removeClassName("validation-passed");D.addClassName("validation-failed")},showErrorMsgByValidator:function($,_,A){Validation.showErrorMsg($,_,Validation.get($).error(ValidationUtils.getInputValue(_),_,A))},hideErrorMsg:function(_,C){var C=$(C),A=Validation._getAdviceProp(_),B=Validation.getAdvice(_,C);if(B)if(typeof Effect=="undefined")B.hide();else new Effect.Fade(B,{duration:1});C[A]="";C.removeClassName("validation-failed");C.addClassName("validation-passed")},_getAdviceProp:function($){return"__advice"+$.camelize()},test:function(A,B,$){var _=Validation.get(A);if(ValidationUtils.isVisible(B)&&!_.test(ValidationUtils.getInputValue(B),B)){Validation.showErrorMsgByValidator(A,B,$);return false}else{Validation.hideErrorMsg(A,B);return true}},getAdvice:function(_,A){return $("advice-"+_+"-"+ValidationUtils.getElmID(A))||$("advice-"+ValidationUtils.getElmID(A))},reset:function(A){A=$(A);var _=A.classNames();_.each(function($){var B=Validation._getAdviceProp($);if(A[B]){var _=Validation.getAdvice($,A);_.hide();A[B]=""}A.removeClassName("validation-failed");A.removeClassName("validation-passed")})},add:function(C,A,B){var _={},$=A;if(A instanceof RegExp)$=function(C,$,_,B){return A.test(C)};_[C]=new Validator(C,$,B);Object.extend(Validation.methods,_)},addAllThese:function($){$A($).each(function($){Validation.add($[0],$[1],($.length>2?$[2]:{}))})},get:function(_){var A;for(var $ in Validation.methods){if(_==$){A=$;break}if(_.indexOf($)>=0)A=$}return Validation.methods[A]?Validation.methods[A]:new Validator()},$:function($){return Validation.validations[$]},methods:{},validations:{}});Validation.addAllThese([["required",function($){return!(($==null)||($.length==0)||/^[\s|\u3000]+$/.test($))},{ignoreEmptyValue:false}],["validate-number",function($){return(!isNaN($)&&!/^\s+$/.test($))}],["validate-digits",function($){return!/[^\d]/.test($)}],["validate-alphanum",function($){return!/\W/.test($)}],["validate-one-required",function(A,B){var $=B.parentNode,_=$.getElementsByTagName("INPUT");return $A(_).any(function($){return $F($)})},{ignoreEmptyValue:false}],["validate-digits",/^[\d]+$/],["validate-alphanum",/^[a-zA-Z0-9]+$/],["validate-alpha",/^[a-zA-Z]+$/],["validate-email",/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/],["validate-url",/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i],["validate-currency-dollar",/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/]]);Validation.addAllThese([["equals",function(A,B,$,_){return $F($[0])==A},{ignoreEmptyValue:false}],["less-than",function(A,B,$,_){if(Validation.get("validate-number").test(A)&&Validation.get("validate-number").test($F($[0])))return parseFloat(A)<parseFloat($F($[0]));return A<$F($[0])}],["great-than",function(A,B,$,_){if(Validation.get("validate-number").test(A)&&Validation.get("validate-number").test($F($[0])))return parseFloat(A)>parseFloat($F($[0]));return A>$F($[0])}],["min-length",function(A,B,$,_){return A.length>=parseInt($[0])}],["max-length",function(A,B,$,_){return A.length<=parseInt($[0])}],["validate-file",function(A,B,$,_){return $A($).any(function($){return new RegExp("\\."+$+"$","i").test(A)})}],["float-range",function(A,B,$,_){return(parseFloat(A)>=parseFloat($[0])&&parseFloat(A)<=parseFloat($[1]))},{depends:["validate-number"]}],["int-range",function(A,B,$,_){return(parseInt(A)>=parseInt($[0])&&parseInt(A)<=parseInt($[1]))},{depends:["validate-integer"]}],["length-range",function(A,B,$,_){return(A.length>=parseInt($[0])&&A.length<=parseInt($[1]))}],["max-value",function(A,B,$,_){return parseFloat(A)<=parseFloat($[0])},{depends:["validate-number"]}],["min-value",function(A,B,$,_){return parseFloat(A)>=parseFloat($[0])},{depends:["validate-number"]}],["validate-pattern",function(v,elm,args,metadata){return eval("("+args.singleArgument+".test(v))")}],["validate-ajax",function(D,B,C,A){var F=ValidationUtils.getReferenceForm(B),_=(F?Form.serialize(F):Form.Element.serialize(B));_+=ValidationUtils.format("&what=%s&value=%s",[B.name,encodeURIComponent(D)]);var E=new Ajax.Request(C.singleArgument,{parameters:_,asynchronous:false,method:"get"}),$=E.transport.responseText;if(""==$.strip())return true;A._error=$;return false}],["validate-dwr",function(v,elm,args,metadata){var result=false,callback=function($){if($)metadata._error=$;else result=true},call=args.singleArgument+"('"+v+"',callback)";DWREngine.setAsync(false);eval(call);DWREngine.setAsync(true);return result}],["validate-buffalo",function(A,C,D,_){var E=false,$=function($){if(replay.getResult())_._error=replay.getResult();else E=true};if(!BUFFALO_END_POINT)alert('not found "BUFFALO_END_POINT" variable');var B=new Buffalo(BUFFALO_END_POINT,false);B.remoteCall(D.singleArgument,A,$);return E}],["validate-date",function(A,C,$,B){var _=$.singleArgument||"yyyy-MM-dd";B._error=ValidationUtils.format(Validator.messages[B.className],[_,_.replace("yyyy","2006").replace("MM","03").replace("dd","12")]);return ValidationUtils.isDate(A,_)}],["validate-selection",function(A,B,$,_){return B.options?B.selectedIndex>0:!((A==null)||(A.length==0))}],["validate-integer",/^[-+]?[1-9]\d*$|^0$/],["validate-ip",/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/],["validate-id-number",function(G,E,F,B){if(!(/^\d{17}(\d|x)$/i.test(G)||/^\d{15}$/i.test(G)))return false;var $=parseInt(G.substr(0,2));if(($<11)||($>91))return false;var A=G.length==18?G:G.substr(0,6)+"19"+G.substr(6,15),D=A.substr(6,8);if(!ValidationUtils.isDate(D,"yyyyMMdd"))return false;if(G.length==18){G=G.replace(/x$/i,"a");var C=0;for(var _=17;_>=0;_--)C+=(Math.pow(2,_)%11)*parseInt(G.charAt(17-_),11);if(C%11!=1)return false}return true}],["validate-chinese",/^[\u4e00-\u9fa5]+$/],["validate-phone",/^((0[1-9]{3})?((0[12][0-9])?[-])?\d{6,8})([-]\d{3,5})?$/],["validate-mobile-phone",/(^0?[1][358][0-9]{9}$)/],["validate-zip",/^[1-9]\d{5}$/],["validate-qq",/^[1-9]\d{4,8}$/]]);Validation.autoBind=function(){var $=document.getElementsByClassName("required-validate");$A($).each(function($){var _=new Validation($,{immediate:true,useTitles:true,stopOnFirst:true});Event.observe($,"reset",function(){_.reset()},false)})};Event.observe(window,"load",Validation.autoBind,false)