if(typeof pln=='undefined'){alert("class_nvi_form_panel\nThis file required the PLN Javascript Library(pln.js)and it need to be loaded before this file.");}else if(typeof nvi=='undefined'){alert("class_nvi_form_panel\nThis file required the NVI CORE(nvi.core.js)and it need to be loaded before this file.");}else if(typeof class_nvi_basic_panel=='undefined'){alert("class_nvi_form_panel\nThis file required the Class Nvi Basic Panel and it need to be loaded before this file.");}else{function class_nvi_form_panel(){var _formContainerPrefix='nvi_modules_form_container_';var _sendingData=false;var _ajaxSubmission=false;var _enableFormSubmission=true;var _byPassValidation=false;var _submitBackup;var _host=this;this.__constructor=function(id){void __super.__constructor(id);};this.toString=function(){return "Nvi Form Panel Class";};this.initialize=function(){var form=this.getElement();if(pln.isHtmlElement(form)){_submitBackup=form.submit;form.submit=function(){if(form.onsubmit()){try{return _submitBackup.apply(form,[]);}catch(error){try{_submitBackup();}catch(error){}}}};form.onsubmit=function(){void nvi.eventManager.dispatchEvent(_host.getId(),nvi.eventManager.events.__triggered);if(_byPassValidation){_byPassValidation=false;return true;}if(_enableFormSubmission){var formDataObject=getFormData();if(formDataObject.canSubmit){_sendingData=true;return _host.updateView(_host.getSharedRessources(formDataObject.data));}else{void nvi.eventManager.dispatchEvent(_host.getId(),nvi.eventManager.events.__failed);return false;}}else{return false;}};}void __super.initialize();};this.terminate=function(){void __super.terminate();};this.deleteInstance=function(){void this.terminate();void __super.deleteInstance();};function getFormData(validateInput){var validateInput=pln.isBoolean(validateInput)?validateInput:true;var canSubmit=true;var form=_host.getElement();if(pln.isHtmlElement(form)){if(form.nodeName.toLowerCase()!='form')return null;var inputCollection={};for(var i=0;i<form.elements.length;i++){var item=form.elements[i];var name=item.name;var id=item.id;var key=!pln.isEmpty(id)?id:!pln.isEmpty(name)?name:null;if(pln.isString(key)){var instance=nvi.panelManager.getInstance(key);if(pln.isObject(instance)){var value=instance.getValue();var type=instance.getType();var validated=!validateInput?true:instance.validate();if(!validated){canSubmit=false;}else{var result;if(type=='checkbox'||type=='radio'){result={value:value,checked:instance.isChecked()};}else{result=value;}if(!pln.isset(inputCollection[name])){inputCollection[name]=result;}else{if(pln.isArray(inputCollection[name])){void inputCollection[name].push(result);}else{var current=inputCollection[name];inputCollection[name]=[];void inputCollection[name].push(current);void inputCollection[name].push(result);}}}}else{var result;if(item.type.toLowerCase()=='checkbox'||item.type.toLowerCase()=='radio'){result={value:item.value,checked:item.checked};}else{result=item.value;}if(!pln.isset(inputCollection[name])){inputCollection[name]=result;}else{if(pln.isArray(inputCollection[name])){void inputCollection[name].push(result);}else{var current=inputCollection[name];inputCollection[name]=[];void inputCollection[name].push(current);void inputCollection[name].push(result);}}}}}return{data:inputCollection,canSubmit:canSubmit};}return{data:null,canSubmit:false};};this.onUpdatedView=function(success,serverData,message){if(!_sendingData){_sendingData=false;void this.initialize();}else{if(serverData.status!='invalid_validation'){void nvi.eventManager.dispatchEvent(_host.getId(),nvi.eventManager.events.__success);}}};this.updateView=function(data){if(_ajaxSubmission){void nvi.panelManager.updateView(this.getId(),data);return false;}else{return true;}};this.enableAjaxSubmission=function(enable){if(pln.isBoolean(enable))_ajaxSubmission=enable;};this.enableFormSubmission=function(enable){if(pln.isBoolean(enable))_enableFormSubmission=enable;};this.getSharedRessources=function(data){var params=pln.isset(data)?data:getFormData().data;params.complementaryData=this.getComplementaryDataObject();return{type:'form',id:this.getId(),parameters:params};};this.submit=function(){this.getElement().submit();};this.submitWithoutValidation=function(){_byPassValidation=true;};};class_nvi_form_panel.extend=class_nvi_basic_panel;}
