var TagSelector=new Class({Implements:[Options],options:{lineClass:"tagdiv",titleClass:"tagtitle",listClass:"taglist",selectClass:"tagon",data:null,split:" "},initialize:function(A,C,B){this.setOptions(B);this.holder=$(C);this.input=$(A);if(!this.holder||!this.input){this.init=$empty;return this}this.input.addEvent("keyup",function(){this.checkTagsForRemove()}.bind(this));this.inited=false;if(this.options.data){this.init(this.options.data)}return this},init:function(H){var B=this,A=function(){var I=this.get("html").trim();B.changeTag(I,B.checkTag(I));return false};if(H){this.clearTag();var G,D=this.prepareInputedTags();for(var C=0;C<H.length;C++){var E=new Element("div").addClass(this.options.lineClass).inject(this.holder);var F=new Element("span").set("html",H[C].name+":").addClass(this.options.titleClass).inject(E);G=new Element("span").addClass(this.options.listClass).inject(E);H[C].tags.each(function(I){if(I!=""){var J=new Element("a").set("href","#").set("html",I).set("rel","nofollow").addEvent("click",A).inject(G);if(D.contains(I)){J.addClass(B.options.selectClass)}}})}}this.tagSpans=this.holder.getElements((this.options.listClass?"."+this.options.listClass+" ":"")+"a");if(!H){this.tagSpans.each(function(I){I.addEvent("click",A)})}this.inited=true;return this},prepareInputedTags:function(){return this.input.value==""?[]:this.input.value.trim().replace(/\s+|　+/g," ").split(this.options.split).map(function(A){return A.trim()})},checkTagsForRemove:function(){if(this.inited){var A=this.prepareInputedTags();this.tagSpans.each(function(B){A.contains(B.get("html"))?B.addClass(this.options.selectClass):B.removeClass(this.options.selectClass)}.bind(this))}return this},changeTag:function(B,A){this.tagSpans.each(function(C){if(C.get("html").trim()==B){if(A){C.addClass(this.options.selectClass)}else{C.removeClass(this.options.selectClass)}}}.bind(this))},checkTag:function(B){var A=this.prepareInputedTags();if(A.contains(B)){this.input.value=A.erase(B).join(this.options.split);return false}else{this.input.value=this.input.value.trim()+(A.length?this.options.split:"")+B;return true}},clearTag:function(){this.holder.empty();return this}});var FormFieldChain=new Class({Implements:[Options],options:{autoSubmit:true},initialize:function(A,B){this.setOptions(B);this.chainList=A.map(function(E){return $(E)});for(var C=0;C<A.length;C++){var D=C!=this.chainList.length-1?this.chainList[C+1]:this.chainList[0];this.chainList[C].addEvent("keydown",function(E){var E=new Event(E);if(E.code==9){this.focus();E.stop()}}.bind(D))}if(this.options.autoSubmit){this.chainList[this.chainList.length-2].addEvent("keydown",function(E){var E=new Event(E);if(E.code==13){this.chainList[this.chainList.length-1].fireEvent("click",E)}}.bind(this))}return this}});var TextAreaLimit=new Class({Implements:[Options,Events],options:{onLimitSuccess:$empty,onLimitExceeded:$empty,limit:[0,2000],pattern:"可输入num字",exceededPattern:"很抱歉,输入不符合要求"},initialize:function(A,C,B){this.setOptions(B);this.target=$(A);this.limit=this.options.limit;this.pattern=this.options.pattern.split("num");var D=this.limit[1]-this.target.value.length;this.info=$(C).set("html",(D<0)?this.options.exceededPattern:this.pattern[0]+"<span>"+D+"</span>"+this.pattern[1]);this.shortEnough=(D>=0&&this.target.value.length>=this.limit[0])?true:false;this.target.addEvent("keyup",this.check.bind(this));this.target.addEvent("blur",this.setBlurStyle.bind(this));this.target.addEvent("focus",this.setFocusStyle.bind(this));return this},check:function(){var A=this.limit[1]-this.target.value.length;if(A>=0&&this.target.value.length>=this.limit[0]){this.info.set("html",this.pattern[0]+"<span>"+A+"</span>"+this.pattern[1]);this.shortEnough=true;this.fireEvent("limitSuccess")}else{(A>=0)?this.info.set("html",this.pattern[0]+"<span>"+A+"</span>"+this.pattern[1]):this.info.set("html",this.options.exceededPattern);this.shortEnough=false;this.fireEvent("limitExceeded")}return this.shortEnough},setBlurStyle:function(){if(!this.shortEnough){this.info.set("style","color:#cc0000")}},setFocusStyle:function(){this.info.erase("style")},reset:function(){setTimeout(function(){this.check();this.setFocusStyle();return this}.bind(this),10)}});var Fvalid={};Fvalid.Base=new Class({Implements:[Options,Events],options:{checkNoneClass:"fv-def",checkOkClass:"fv-ok",checkErrClass:"fv-err",bangClass:"fv-bang",useFx:false,fxOptions:{},criterias:[],errMsg:[],msgHolder:false,msg:null,vid:null,bangs:null,onChecked:$empty},initialize:function(A){this.setOptions(A);this.bangs=this.options.bangs;this.msgHolder=$(this.options.msgHolder);this.msg=this.options.msg;(this.options.useFx)?this.fx=new Fx.Tween(this.msgHolder,$merge({property:"opacity",duration:200},this.options.fxOptions)):this.fx=null;if(this.msgHolder){this.fx?this.fx.set(0):this.msgHolder.setStyle("visibility","hidden");this.msgHolder.className=this.options.checkNoneClass}if(this.msgHolder&&this.msgHolder.get("html")){this.msgHolder.className=this.options.checkErrClass;(this.fx)?this.fx.set(1):this.msgHolder.setStyle("visibility","visible")}else{if(this.msgHolder&&this.msg){this.msgHolder.set("text",this.msg[0]);(this.fx)?this.fx.set(1):this.msgHolder.setStyle("visibility","visible")}}if(this.options.vid&&$(this.options.vid)!=null){if($(this.options.vid).tagName.toLowerCase()=="select"){$(this.options.vid).addEvent("change",this.check.bind(this))}$(this.options.vid).addEvent("blur",this.check.bind(this))}this.buildCriteria();return this},buildCriteria:function(){return this},check:function(){var result=true;for(var i=0;i<this.options.criterias.length;i++){if(!eval(this.options.criterias[i])){if(this.msgHolder){this._setError(i)}result=false;if(this.bangs){this.fireEvent("checked",[result,this.bangs[0]])}return result}}if(this.msgHolder){this._setOk()}if(this.bangs){this.fireEvent("checked",[result,this.bangs[0]])}return result},_setError:function(A){this.resetBangs();this.setMsg(this.options.errMsg[A],this.options.checkErrClass,this.msg?"msg":"open");if(this.bangs){this.bangs.each(function(B){$(B).addClass(this.options.bangClass)}.bind(this))}return this},_setOk:function(){this.resetBangs();this.setMsg(this.msg?this.msg[1]:"",this.options.checkOkClass,this.msg?"msg":"close");return this},setError:function(B,A){var A=A||true;this.resetBangs();this.setMsg(B,this.options.checkErrClass,this.msg?"msg":A?"open":"close");if(this.bangs){this.bangs.each(function(C){$(C).addClass(this.options.bangClass)}.bind(this))}return this},setOk:function(B,A){var A=A||false;this.resetBangs();this.setMsg(B,this.options.checkOkClass,this.msg?"msg":A?"open":"close");return this},setMsg:function(C,B,A){this.msgHolder.className=B;this.msgHolder.set("text",C);switch(A){case"open":(this.fx)?this.fx.start(1):this.msgHolder.setStyle("visibility","visible");break;case"close":(this.fx)?this.fx.start(0):this.msgHolder.setStyle("visibility","hidden");break;case"msg":break}},resetBangs:function(){if(this.bangs){this.bangs.each(function(A){$(A).removeClass(this.options.bangClass)}.bind(this))}return this},reset:function(){this.resetBangs();this.setMsg(this.msg?this.msg[0]:"",this.options.checkNoneClass,this.msg?"open":"close")}});Fvalid.TextAreaCheck=new Class({Extends:Fvalid.Base,buildCriteria:function(){this.textareaLimit=new TextAreaLimit(this.options.textarea,this.options.infoEle,this.options.textareaOptions);return this},check:function(){var A=this.textareaLimit.check();if(this.bangs){this.fireEvent("checked",[A,this.bangs[0]])}return A},reset:function(){this.resetBangs();this.textareaLimit.reset();return this}});Fvalid.Advanced=new Class({Extends:Fvalid.Base,check:function(){var result=true;for(var i=0;i<this.options.criterias.length;i++){if(!eval(this.options.criterias[i])){result=false;if(this.bangs){this.fireEvent("checked",[result,this.bangs[0]])}return result}}if(this.bangs){this.fireEvent("checked",[result,this.bangs[0]])}return result}});var Fvalidator=new Class({initialize:function(B){this.checkerSets={};this.bangAt=[];for(var A in B){B[A].check.onChecked=this.addToBang.bind(this);switch(B[A].type){case"textarea":this[A]=this.checkerSets[A]=new Fvalid.TextAreaCheck(B[A].check);break;case"advanced":this[A]=this.checkerSets[A]=new Fvalid.Advanced(B[A].check);break;case"base":default:this[A]=this.checkerSets[A]=new Fvalid.Base(B[A].check)}}if(!window.windowScroll){windowScroll=new Fx.Scroll(window)}return this},add:function(A){if($type(A)!="object"){return false}$H(A).each(function(C,B){C.addEvent("checked",this.addToBang.bind(this));this[B]=this.checkerSets[B]=C},this);return this},remove:function(A){if(!this[A]){return false}delete this[A];delete this.checkerSets[A];return this},checkAll:function(){this.bangAt=this.bangAt.empty();var A=true;for(var B in this.checkerSets){if(!this.checkerSets[B].check()){A=false}}if((this.bangAt=this.bangAt.clean())&&this.bangAt.length){windowScroll.toElement(this.bangAt[0])}return A},reset:function(){for(var A in this.checkerSets){this.checkerSets[A].reset()}},addToBang:function(A,B){if(!A){this.bangAt.include(B)}else{this.bangAt.erase(B)}}});var TextLengthLimit=new Class({Implements:[Options,Events],options:{errorClass:"fv-err",defClass:"fv-def",min:50,max:2000,minMsg:"你还需要输入num个字",maxMag:"你最多只能输入max个字，多写num个",msg:"你还可以输入num个字",invalidCharsRegExp:/[\.。，,；：;:@~～!！#￥$＠\-=·+*?？＠_*%#、\r\n\s]/g,initCheck:false},initialize:function(A,C,B){this.setOptions(B);this.target=$(A);this.info=$(C);this.info.className=this.options.defClass;this.info.setStyle("visibility","visible");this.target.addEvent("keyup",this.check.bind(this));if(this.options.initCheck){this.reset()}return this},check:function(){var C=false;var B=this.target.value.length;var A=this.target.value.replace(this.options.invalidCharsRegExp,"").length;if(A<this.options.min){this.setInfo(this.options.minMsg,true,this.options.min-A)}else{if(B>this.options.max){this.setInfo(this.options.maxMag,true,B-this.options.max)}else{C=true;this.setInfo(this.options.msg,false,this.options.max-B)}}return C},reset:function(){setTimeout(function(){this.check();return this}.bind(this),10)},setInfo:function(C,B,A){C=C.replace("min","<span>"+this.options.min+"</span>");C=C.replace("max","<span>"+this.options.max+"</span>");C=C.replace("num","<span>"+A+"</span>");this.info.className=B?this.options.errorClass:this.options.defClass;this.info.set("html",C)}});Fvalid.TextLengthLimit=new Class({Extends:Fvalid.Base,buildCriteria:function(){var A=this.options.opt||{};A.origClassName=this.origClassName;this.textLengthLimit=new TextLengthLimit(this.options.vid,this.options.msgHolder,A);return this},check:function(){var A=this.textLengthLimit.check();if(this.bangs){this.fireEvent("checked",[A,this.bangs[0]])}return A},reset:function(){this.resetBangs();this.textLengthLimit.reset();return this}});if(!window.DP){var DP={}}if(!DP.Form){DP.Form={}}DP.Form.InputFilter=new Class({Implements:Options,options:{periodical:100,delay:10,modifiers:"i",type:"filter",onlyFocus:true,onStart:$empty},initialize:function(A,C,B){A=$(A);if(!A||!C){return }this.setOptions(B);switch($type(C)){case"string":C=new RexExp(C,this.options.modifiers);case"regexp":var D=C;if(this.options.type==="filter"){C=function(F){return !D.test(F)}}else{C=function(F){return D.test(F)}}break;case"function":C=C.bind(this);break;default:return }this.input=A;this.filter=C;this.value="";this.check=this.check.bind(this);if(this.options.onlyFocus){var E=this;A.addEvents({focus:function(){E.checkOn=true},blur:function(){E.checkOn=false}})}else{E.checkOn=true}this.options.onStart!==$empty&&this.options.onStart.run(A,this);this.observer=new Observer(A,this.check,{periodical:this.options.periodical,delay:this.options.delay});this._check(this.input.get("value"))},_check:function(A){if(this.value===A){return }if(this.filter(A)){this.value=A}this.observer.setValue(this.value)},check:function(A){this.checkOn&&this._check(A)}});DP.Form.PlaceHolder=new Class({});DP.Form.Checker=new Class({Implements:Options,options:{errClass:"err-input"},initialize:function(B,C,F,D,A){B=$(B);C=$(C);if(!B||!F.length){return }this.input=B;this.errHolder=C;this.criteria=F;this.msg=D.filter(function(G){return G});var E=this;this.input.addEvent("blur",function(){E.check(A)})},check:function(B){var D=true,C=0,A=this.criteria.length,G,E=this.input.get("value"),F;for(;C<A;++C){G=this.criteria[C];if(!G(E)){F=this.msg[C];!B&&this.errHolder&&(F?this.errHolder.removeClass("Hide").set("text",F):this.errHolder.addClass("Hide"));this.input.addClass(this.options.errClass);D=false;break}}if(D){this.errHolder&&this.errHolder.addClass("Hide");this.input.removeClass(this.options.errClass)}return D}});(function(A){function B(E,D){if($type(E)!=="array"){return }D=$splat(D);var C=D.length;if(C){E.reverse();while(C){E.push(D[--C])}E.reverse()}return E}A.Form.html5=new Class({Implements:Options,options:{enter:true,spliter:","},initialize:function(D,E){D=$(D);var C=D.getElements("input"),F=D.getElements("textarea");if(!D){return }if(!C.length&&!F.length){this.check=$lambda(true);return this}this.container=D;this.module=E||{};this.inputs=C.concat(F);this.init()},init:function(){var G=[],I=0,J=this.inputs.length,N,D,K=new Hash(),E,F,C,H,L,M;for(;I<J;++I){N=this.inputs[I];D=N.get("name");E=this.module[D]||{};F=E.errMsg||{};C=N.get("valid");H=[];L=[];if(E.filter){new A.Form.InputFilter(N,E.filter,E.fileterOptions||{})}if(C&&C.indexOf("required")!==-1){H.push(function(P){return P!=""});L.push(F.required||F.normal)}if(N.match("textarea")){var O=Number(N.get("maxlength"));if(O){new A.Form.InputFilter(N,function(P){return String(P).length<O},{type:"function"})}}M=$(E.errHolder)||this.container.getElement("[for="+D+"]");H=H.concat(E.criteria||[]);L=L.concat(F.criteria||[]);H.length&&G.push(new A.Form.Checker(N,M,H,L));if(!K.has(D)){K.set(D,{inputs:this.container.getElements("[name="+D+"]"),type:N.get("type")})}}this.checks=G;this.items=K},check:function(){return this.checks.every(function(C){return C.check()})},getValue:function(){var C={},D=this.options.spliter;this.items.each(function(F,E){var G;switch(F.type){case"radio":(function(){var K=0,I=F.inputs,H=I.length,J;for(;K<H;++K){J=I[K];if(J.checked){G=J.get("value");break}}})();break;case"checkbox":(function(){var L=0,I=F.inputs,H=I.length,K,J=[];for(;L<H;++L){K=I[L];if(K.checked){J.push(K.get("value"))}}G=J.join(D)})();break;default:G=F.inputs.map(function(H){return H.get("value")}).join(D)}C[E]=G});return C},getQuery:function(){return new Hash(this.getValue()).toQueryString()},clean:function(){var E=0,C=this.inputs.length,D,F;for(;E<C;++E){D=this.inputs[E];F=D.get("type");switch(F){case"checkbox":case"radio":D.set("checked",false);break;default:D.set("value","")}}}})})(DP);