SFT.Form=function(){var objArgs={};switch(arguments.length){case 1:objArgs=arguments[0];break;case 2:objArgs=arguments[1];objArgs.form=arguments[0];break;}this.objArgs=objArgs;SFT.Form.SUPERconstructor.call(this,objArgs);};SFT.Form.id="SFT.Form";SFT.inherit(SFT.Form,SFT.Widget);SFT.Form.prototype.init=function(objArgs){this.config.form=null;this.config.statusImgPos="beforeField";this.config.showErrors=null;this.config.showErrorsOnSubmit=true;this.config.submitErrorFunc=this.submitErrorFunc;this.config.submitValidFunc=null;this.config.asyncSubmitFunc=null;this.config.strict=false;this.config.asyncTheme=true;this.config.ajaxDebugFunc=null;this.config.dropDownTheme="default";this.config.hideUntilThemeLoaded=false;this.config.themePath=SFT.contextPath+SFT.getTheme().formCssPath;SFT.Form.SUPERclass.init.call(this,objArgs);if(typeof(this.config.form)=="string"){this.container=document.getElementById(this.config.form);}else{if(typeof(this.config.form)=="object"){this.container=this.config.form;}}if(this.container==null||this.container.nodeName.toLowerCase()!="form"){SFT.Log({description:"Couldn't find form"});return null;}SFT.Utils.createProperty(this.container,"sftForm",this);SFT.Utils.addDestroyOnUnload(this,"container");SFT.Utils.addDestroyOnUnload(this.container,"sftForm");this.changeHandlers=[];var self=this;var oldOnSubmit=this.container.onsubmit||function(){return true;};if(typeof(this.config.asyncSubmitFunc)=="function"){this.container.onsubmit=function(ev){return self.asyncSubmit(ev)&&oldOnSubmit();};}else{this.container.onsubmit=function(ev){return self.submit(ev)&&oldOnSubmit();};}SFT.Utils.addDestroyOnUnload(this.container,"onsubmit");this.container.onreset=function(){setTimeout(function(){self.reset();},1);};SFT.Utils.addDestroyOnUnload(this.container,"onreset");var focusedFlag=false;};SFT.Form.prototype.reInit=function(){};SFT.Form.prototype.setAction=function(action){this.container.action=action;};SFT.Form.prototype.asyncSubmit=function(ev){try{FCKEditorManager.bindEditorValue(this.container);}catch(e){}if(this.container.enctype=="multipart/form-data"){this.container.submit();return false;}var self=this;if(this.processing==true){return false;}if(this.config.showErrorsOnSubmit&&typeof(this.config.submitErrorFunc)=="function"&&!this.submit()){return false;}var arrContent=[];var objFormElements=this.container.elements;for(var iElm=0;iElm<objFormElements.length;iElm++){var formEl=objFormElements[iElm];if(formEl.name&&!formEl.disabled){if(formEl.nodeName.toLowerCase()=="input"&&(formEl.type.toLowerCase()=="radio"||formEl.type.toLowerCase()=="checkbox")&&!formEl.checked){continue;}if(formEl.type.toLowerCase()=="select-multiple"){for(var j=0;j<objFormElements[iElm].options.length;j++){if(objFormElements[iElm].options[j].selected){arrContent.push(objFormElements[iElm].name+"="+encodeURIComponent(objFormElements[iElm].options[j].value));}}continue;}arrContent.push(objFormElements[iElm].name+"="+encodeURIComponent(objFormElements[iElm].value));}}var strUrl=this.container.action;if(!strUrl){return false;}var strMethod=this.container.method.toUpperCase();var strContent=arrContent.join("&");if(strMethod===""||strMethod=="GET"||strMethod=="HEAD"){strUrl+="?"+strContent;strContent=null;}this.container.sftFormProcessing=true;self.toggleSubmits(true);if(this.config.ajaxDebugFunc){this.config.ajaxDebugFunc("-----------------------");this.config.ajaxDebugFunc("Sending request for AJAX submit form.");this.config.ajaxDebugFunc(strMethod+" "+strUrl);this.config.ajaxDebugFunc("Query: "+strContent);}SFT.Transport.fetch({url:strUrl,method:strMethod,contentType:this.container.encoding,content:strContent,onLoad:function(objText){if(self.config.ajaxDebugFunc){self.config.ajaxDebugFunc("Response received: "+objText.responseText);}self.processing=false;self.toggleSubmits(false);var objResponse=SFT.Transport.parseJson({strJson:objText.responseText});if(objResponse==null){return null;}if(objResponse){if(objResponse.success){self.config.asyncSubmitFunc(objResponse.callbackArgs);}else{if(self.config.showErrorsOnSubmit){var arrFieldErrors=[];var boolFocusSet=false;if(objResponse.fieldErrors){for(var strFieldName in objResponse.fieldErrors){for(var iElm=0;iElm<objFormElements.length;iElm++){var objField=objFormElements[iElm];if(objField.name&&objField.name==strFieldName){arrFieldErrors.push({field:objField,errorMessage:objResponse.fieldErrors[strFieldName],validator:""});if(!boolFocusSet){var funcOnFocus=objField.onfocus;objField.onfocus=null;objField.focus();objField.select();var objFocusField=objField;setTimeout(function(){objFocusField.onfocus=funcOnFocus;},0);boolFocusSet=true;}if(objField.sftFormField!=null){objField.sftFormField.setImageStatus("INVALID");}break;}}}}if(typeof(self.config.submitErrorFunc)=="function"){self.config.submitErrorFunc({serverSide:true,generalError:objResponse.generalError||"",fieldErrors:arrFieldErrors});}}}}else{if(self.config.showErrorsOnSubmit&&typeof(self.config.submitErrorFunc)=="function"){self.config.submitErrorFunc({serverSide:true,generalError:"No response"});}}},onError:function(objError){self.processing=false;var strError="";if(objError.errorCode){strError+=objError.errorCode+" ";}strError+=objError.errorDescription;if(self.config.ajaxDebugFunc){self.config.ajaxDebugFunc("Error response received: "+strError);}self.toggleSubmits(false);if(self.config.showErrorsOnSubmit&&typeof(self.config.submitErrorFunc)=="function"){self.config.submitErrorFunc({serverSide:true,generalError:strError});}}});return false;};SFT.Form.prototype.toggleSubmits=function(disable){var inputs=this.container.getElementsByTagName("input");for(var ii=0;ii<inputs.length;ii++){if(inputs[ii].type=="submit"){inputs[ii].disabled=disable==true;}}};SFT.Form.prototype.reset=function(){for(var ii=0;ii<this.container.elements.length;ii++){var field=this.container.elements[ii].sftFormField;if(field!=null){var fieldValue=field.getValue();if(fieldValue!=null&&fieldValue.length!=0){field.setValue(fieldValue);field.firstRun=false;}else{field.setValue("");field.firstRun=true;}field.blur();}}this.runChangeHandlers();};SFT.Form.prototype.submit=function(){if(typeof(this.config.submitValidFunc)=="function"){this.config.submitValidFunc();}return true;};SFT.Form.prototype.submitErrorFunc=function(objErrors){var message=objErrors.generalError+"\n";if(objErrors.fieldErrors&&objErrors.fieldErrors.length){for(var ii=0;ii<objErrors.fieldErrors.length;ii++){message+=(ii+1)+": \u5b57\u6bb5 "+objErrors.fieldErrors[ii].field.name+" "+objErrors.fieldErrors[ii].errorMessage+"\n";}message=message.substr(0,message.length-1);objErrors.fieldErrors[0].field.focus();}alert(message);};SFT.Form.prototype.runChangeHandlers=function(){};



