YAHOO.namespace("extension");(function(){String.prototype.trim=function(){return this.replace(/(^[\s]*)|([\s]*$)/g,"")};String.prototype.ByteCount=function(){txt=this.replace(/([\u0391-\uFFE5])/ig,"11");var N=txt.length;return N};var l={email:/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,cnPhone:/^(\d{3,4}-)\d{7,8}(-\d{1,6})?$/,cnMobile:/^1[3,5,8]\d{9}$/,yid:/^[a-z][a-z_0-9]{3,}(@yahoo\.cn)?$/,date:/^\d{4}\-[01]?\d\-[0-3]?\d$|^[01]\d\/[0-3]\d\/\d{4}$|^\d{4}年[01]?\d月[0-3]?\d[日号]$/,integer:/^-?([1-9]\d*|0)$/,number:/^-?([1-9][0-9]*(\.[0-9]+)?([eE][+-][1-9][0-9]*)?|0?\.[0-9]+([eE][+-][1-9][0-9]*)?|0)$/,alpha:/^[a-zA-Z]+$/,alphaNum:/^[a-zA-Z0-9_]+$/,urls:/^(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,chinese:/^[\u2E80-\uFE4F]+$/,postal:/^[0-9]{6}$/},K={bHideSuccess:false,sImgBase:"http://pic.dq3c.cn/js/global/validator/",sLoadingImgSrc:"dqc_validate_icon_loading.gif",sSuccessImgSrc:"dqc_validate_icon_ok.gif",sFailImgSrc:"dqc_validate_icon_error.gif",sInlineErrorTag:"em",sIptWrapper:"dqc-validate-wrapper",sInlineErrorClass:"dqc-validate-notice",sErrorActiveClass:"active",sErrorHideClass:"hide",sInputErrorClass:"dqc-validate-input-error",sNotRequiredClass:"dqc-validate-not-required",sNeededClass:"dqc-validate-needed",sDateClass:"dqc-validate-date",sPhoneClass:"dqc-validate-phone",sMobileClass:"dqc-validate-mobile",sYidClass:"dqc-validate-yid",sIntClass:"dqc-validate-int",sNumberClass:"dqc-validate-number",sAlphaClass:"dqc-validate-alpha",sAlphaNumClass:"dqc-validate-alphanum",sEmailClass:"dqc-validate-email",sUrlClass:"dqc-validate-url",sChineseClass:"dqc-validate-chinese",sPostalClass:"dqc-validate-postal"},B={sDateClass:{mask:l.date},sPhoneClass:{mask:l.cnPhone},sMobileClass:{mask:l.cnMobile},sNotRequiredClass:{required:false},sYidClass:{mask:l.yid},sIntClass:{mask:l.integer},sNumberClass:{mask:l.number},sAlphaClass:{mask:l.alpha},sAlphaNumClass:{mask:l.alphaNum},sEmailClass:{mask:l.email},sUrlClass:{mask:l.urls},sChineseClass:{mask:l.chinese},sPostalClass:{mask:l.postal}},G={sDateClass:"date",sPhoneClass:"cnphone",sMobileClass:"cnmobile",sYidClass:"yid",sIntClass:"integer",sNumberClass:"number",sAlphaClass:"alpha",sAlphaNumClass:"alphanum",sEmailClass:"email",sUrlClass:"urls",sChineseClass:"chinese",sPostalClass:"postal"},A=200,E=1501,L=1502,t=1503,u=1504,p=1505,J=1506,c=1507,b=1508,n=1509,j=1510,q=1511,M=1512,v=1513,I={200:"成功",1501:"%s不能为空",1502:"%s不能超过%s个字符，1个汉字为2个字符",1503:"%s不能小于%s个字符，1个汉字为2个字符",1504:"%s不能超过最大值%s",1505:"%s不能小于最小值%s",1506:"%s不符合指定格式",1507:"%s输入不符合要求",1508:"%s",1509:"请求服务器端验证失败，请稍后重试",1510:"请至少选择一项",1511:"您的选择项不符合要求",1512:"以上选项不能都为空",1513:"两次输入的值不一致"},a=YAHOO.util,e=YAHOO.lang,h=a.Dom,g=a.Event,d=a.Selector,i=a.Connect,f=e.JSON,y=["tips","domDiv","alert"],w=function(Q,N,P){var O=h.get(Q);if(O===null||N){O=d?d.query(Q,N,P):[]}if(!e.isArray(O)){O=[O]}return O},x=function(O,N,P){N.success=N.success?N.success:function(Q){alert("Success!\nServer returns:"+Q.responseText)};N.failure=N.failure?N.failure:function(Q){alert("Ajax request Failed!")};N.timeout=N.timeout?N.timeout:5000;i.asyncRequest("get",O,N)},F=function(Q,P){for(var O=0,N=Q.length;O<N;O++){P(Q[O],O)}},s=function(N,P,O){F(O,function(R,Q){P=N(P,R,Q)});return P},r=function(O,N){var P=[];F(O,function(R,Q){P[Q]=N(R)});return P},o=function(O,N){return e.isObject(O)&&((!N&&(O==window||O==document))||O.nodeType==1)},k=function(Q,O,N){var P=false;F(O,function(S,R){if(S===Q||(!N&&S==Q)){P===false&&(P=[]);P[P.length]=R}});return P},H=function(O){var N={};O=e.isArray(O)?O:[O];F(O,function(Q){var P=w(Q)[0];if(P&&(typeof P.value!="undefined")){N[Q]=P.value}else{if(P&&P.innerHTML){N[Q]=P.innerHTML}else{N[Q]=null}}});return N},C=function(O){var N=1;while(arguments[N]){O=O.replace(/%s/,arguments[N++])}return O},z=function(P,Q){var O={};for(var N in P){O[N]=P[N]}for(var N in Q){O[N]=Q[N]}return O},D=function(N,O,Q){var P=A;switch(N){case"required":if(O&&Q.trim()===""){P=E}break;case"maxLength":if(Q.trim().ByteCount()>O){P=L}break;case"minLength":if(Q.trim().ByteCount()<O){P=t}break;case"maxValue":if(Q>O){P=u}break;case"minValue":if(Q<O){P=p}break;case"mask":if(!O.test(Q)){P=J}break;case"value":if(O!==Q){P=c}break}return P},m=function(O,P,R,Q,N){this.iCode=O;this.sTemplate=N||I[O];this.vRuleValue=P;this.sName=R;this.oDomInput=Q};m.prototype.sErrorTag=K.sInlineErrorTag;m.prototype.sErrorClass=K.sInlineErrorClass;m.prototype.sActiveClass=K.sErrorActiveClass;m.prototype.sHideClass=K.sErrorHideClass;m.prototype.toString=function(){return C(this.sTemplate,this.sName,this.vRuleValue)};m.prototype._getTipsDom=function(){var O=this.sErrorTag,P=this.sErrorClass,N=K.sIptWrapper;var Q=this.oDomInput.parentNode;while(Q&&Q!=document.body){if(h.hasClass(Q,N)){break}Q=Q.parentNode}oExistingTips=w(O+"."+P,Q,true)[0];if(!o(oExistingTips)){oExistingTips=document.createElement(O);h.addClass(oExistingTips,P);K.bHideSuccess&&h.addClass(oExistingTips,this.sHideClass);Q.appendChild(oExistingTips)}return oExistingTips};m.prototype.showTips=function(){var N=this._getTipsDom();if(this.iCode!=A){N.innerHTML=this.toString();h.addClass(N,this.sActiveClass)}else{N.innerHTML='<img src="'+K.sImgBase+K.sSuccessImgSrc+'" />';h.removeClass(N,this.sActiveClass)}};m.prototype.showLoading=function(){var N=this._getTipsDom();N.innerHTML='<img src="'+K.sImgBase+K.sLoadingImgSrc+'" />'};YAHOO.extension.validator=function(O,Q){Q=Q||{};var P=this;this.sForm=O;this.oForm=null;if(O){var S=w(O);this.oForm=o(S[0])?S[0]:(o(document.forms[O])?document.forms[O]:null)}if(this.oForm!=null){var R=w("input, textarea",this.oForm),N=w("select",this.oForm),T=R;F(N,function(U){T[T.length]=U});this.aInputs=T;if(Q.onSubmit!==false){g.on(this.oForm,"submit",this._hSubmit,P,true)}}this.bCheckOnBlur=false;if(Q.checkOnBlur!==false){g.on(R,"blur",this._hOnBlur,P,true);g.on(R,"focus",this._hClearTip,P,true);g.on(N,"change",this._hOnBlur,P,true);this.bCheckOnBlur=true}this.oRules={};this.iNoticeType=0;Q.notifyType!==undefined&&this.setNoticeType(Q.notifyType);this.stopOnFirst=Q.stopOnFirst===true?true:false;K.sImgBase=Q.imageBase||K.sImgBase;K.bHideSuccess=Q.hideSuccess||K.bHideSuccess};YAHOO.extension.validator.prototype={_addRule:function(S,O){var N=this,R=this.oRules[S],Q=function(T,U){return typeof T=="undefined"?U:z(T,U)};R=Q(R,O);this.oRules[S]=R;if(R.group){var P=r(R.group,function(T){return T});P[P.length]=S;F(R.group,function(U){var T;N.oRules[U]||(N.oRules[U]={});T=N.oRules[U].group||[];F(P,function(V){if(V!=U){k(V,T)||(T[T.length]=V)}});N.oRules[U].group=T})}},_ajaxCheck:function(P,S,Q){var R=new m(A,"","",Q),O=this.oRules[Q.name]&&this.oRules[Q.name].errorMessage,N={success:function(W){var T,U;try{T=f.parse(W.responseText)}catch(V){}if(T){if(T.code==A){U=new m(A,"","",Q)}else{U=new m(b,"",T.message,Q,O)}}else{U=new m(n,"","",Q,O)}U.showTips()},failure:function(){var T=new m(n,"","",Q,O);T.showTips()}};R.showLoading();x(P+encodeURI(S),N)},_check:function(R,N){var P=true,Q;for(var O in N){Q=D(O,N[O],R);if(Q!=A){P=new m(Q,N[O]);break}}P=P===true?(new m(A)):P;return P},_checkByName:function(T,V,Y){V=V===false?false:true;Y=Y===false?false:true;var W,O,R,P,Q,U,X,Z=this,O=(this.oForm&&this.oForm[T])||w(T)[0];if(O[0]&&O.type===undefined){Q=O;O=Q[0]}U=O.type.toLowerCase();X=O.tagName.toLowerCase();W=this._getRuleFromInput(O);if(W.ignore){return false}if(W.required===false&&O.value===""){return false}if(W.equal){var N=this.oForm[W.equal]||w(W.equal)[0];if(O.value!==N.value){return new m(v,"","",O)}}if(!O){return false}this.clearNotice(Q||O);if(U=="radio"||U=="checkbox"){P=this._checkRadio(Q||[O],W)}else{if(X=="select"){P=this._checkSelect(O,W)}else{R=O.value||"";if(W.ajax){V&&this._ajaxCheck(W.ajax,R,O);return true}P=this._check(R,W)}}if(Y&&P.iCode==E&&W.alter){var S=this._checkByName(W.alter,true,false);if(typeof S=="object"&&S.iCode==E){return new m(M,"","",S.oDomInput)}return S}P.sName=W.desc||O.title||O.alt||T;W.errorMessage&&(P.sTemplate=W.errorMessage);P.oDomInput=O;return P},_checkRadio:function(R,P){var O=false,Q=A,N=false;F(R,function(S){if(S.checked===true){O=true}else{if(h.hasClass(S,K.sNeededClass)){N=true}}});if(P.required&&!O){Q=j}else{if(N){Q=q}}return new m(Q)},_checkSelect:function(P,O){var Q=P.selectedIndex,N=P[Q].value;return this._check(N,O)},_getRuleFromInput:function(S){var R={required:true},Q=S.name,O=this.oRules[Q]||{},N=O.predefined||[];e.isArray(N)||(N=[N]);for(var P in B){if(h.hasClass(S,K[P])||k(G[P],N)){R=z(R,B[P])}}if(this.oRules[Q]){R=z(R,this.oRules[Q])}return R},_hOnBlur:function(O){g.stopEvent(O);var N=g.getTarget(O);if(N.type!="submit"&&N.type!="image"&&N.type!="button"&&N.type!="hidden"){this._validateInput(N)}},_hClearTip:function(P){g.stopEvent(P);var N=g.getTarget(P),O=this._getRuleFromInput(N);if(!O.ignore&&this.iNoticeType==0&&N.type!="submit"&&N.type!="image"&&N.type!="button"&&N.type!="hidden"){this.clearNotice(N)}},_hKeyup:function(O){g.stopEvent(O);var N=g.getTarget(O);if(N.type!="submit"){this._validateInput(N,true,false)}},_hSubmit:function(N){this._validateForm(N)},_notifyInput:function(N){h.addClass(N,K.sInputErrorClass)},_normalizeInput:function(N){h.removeClass(N,K.sInputErrorClass)},_triggerNotice:function(P){var O=this.iNoticeType,Q=this,S=y[O]?y[O]:y[0];switch(S){case"tips":F(P,function(T){T.showTips&&T.showTips();T.iCode!=A&&Q._notifyInput(T.oDomInput)});break;case"domDiv":break;case"alert":var N=r(P,function(T){T.iCode!=A&&Q._notifyInput(T.oDomInput);return T.toString()}),R=N.join("，\n");alert(R);break}},_validateForm:function(R){var O,T=[],V=this,Q=false,U=[],N=[],P;O=this.aInputs;s(function(W,ab,Z){var aa=ab.type.toLowerCase();if(W||aa=="submit"||aa=="button"||aa=="image"||aa=="hidden"){return W}var Y=ab.name,X;if(k(Y,N)){return W}if(aa=="radio"||aa=="checkbox"){if(k(Y,U)){return W}else{U[U.length]=Y}}X=V._checkByName(Y);T[T.length]=X;if(typeof X=="object"&&X.iCode!=A){typeof R=="object"&&g.stopEvent(R);P=P||X.oDomInput;if(V.stopOnFirst){V._triggerNotice(T);return true}if(V.oRules[Y]&&V.oRules[Y].group){F(V.oRules[Y].group,function(ac){N[N.length]=ac})}}},Q,O);this._triggerNotice(T);var S=h.getY(P);S=S||100;window.scrollTo(0,S-100);this.bCheckOnBlur||P.focus()},_validateInput:function(T,S,R){S=S===false?false:true;R=R===false?false:true;var O=this,Q=T.name,P=this._checkByName(Q,R),N=this.oRules[Q]?this.oRules[Q].group:false;if(typeof P=="object"){if(P.iCode==A){if(S&&N){S=s(function(U,V){U&&F(O.aInputs,function(W){if(V==W.name){U=O._validateInput(W,false)}});return U},S,N)}S&&this._triggerNotice([P]);return true}else{this._triggerNotice([P])}}return false},addRules:function(P){var N=true,O=this;for(var Q in P){if(!O._addRule(Q,P[Q])){N=false}}return N},clearAll:function(){this.clearNotice(this.aInputs)},clearNotice:function(O){var N=this,P=function(R){N._normalizeInput(R);var Q=w(K.sInlineErrorTag+"."+K.sInlineErrorClass,R.parentNode,true)[0];if(o(Q)){Q.innerHTML="";h.removeClass(Q,K.sErrorActiveClass)}};e.isArray(O)||(O=[O]);F(O,P)},setNoticeType:function(N){var O=k(N,y);if(O){this.iNoticeType=O[0];O=true}return O},validate:function(){this._validateForm(false)}}})();