var Form,Input,InputError,FormRuleAction,FormRuleCommand,FormRuleOperator;!function(t){var i;t.fn.FORM=function(e){var n;return i[e]?i[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?(void 0===(n=t(this).data("form"))&&(n=new Form(this)),void 0!==n[e]?n[e].apply(n,Array.prototype.slice.call(arguments,1)):t.error("Метод с именем "+e+" не существует для jQuery.FORM")):i.init.apply(this,arguments)},i={init:function(i={}){var e;return 1===t(this).length?new Form(this,i):(e=[],t(this).each(function(){return e.push(new Form(this,i))}),e)},setPrepareValidate:function(t){return Form.globalPrepareValidate=t},setGlobalGood:function(t){return Form.globalGood=t},setGlobalBad:function(t){return Form.globalBad=t},setGlobalJSON:function(t){return Form.globalJSON=t},setGlobalOptions:function(t){return Form.globalOptions=t}}}(jQuery),Form=function(){class Form{constructor(t,i){this.container=t,this.init_data=i,this.container=$(this.container),this.isInited()||(this.container.on("destroyed",this.destroy.bind(this)),this.init(this.init_data))}init(t={}){var i,e;return this.container.data("form_inited",!0),this.container.data("form",this),null==this.inputActionWithParent&&(this.inputActionWithParent=null!=(i=t.inputActionWithParent)?i:null!=(e=Form.globalOptions.inputActionWithParent)&&e),this.initInputs(null!=t?t.inputs:void 0),this.checkRules(),this.initActions()}isInited(){return!0===this.container.data("form_inited")}destroy(){var t,i,e,n,r;for(r=[],i=0,e=(n=this.getInputs()).length;i0?(u.bad[i.getName()]=r,u.success=!1,void 0!==t.bad?"function"==typeof t.bad&&t.bad(i,s):Form.globalBad(i,s)):(u.good[i.getName()]=r,void 0!==t.good?"function"==typeof t.good&&t.good(i,s):Form.globalGood(i,s));return u.success?"function"==typeof t.success&&t.success(u):"function"==typeof t.fail&&t.fail(u),u}getInputs(t={}){var i;return i=[],$("[data-input]",this.container).each(function(){var e;return e=Input.init($(this)),null!=(null!=t?t[e.getName()]:void 0)&&e.initData(t[e.getName()]),i.push(e)}),i}json(){var t,i,e,n,r,s;if(null!=Form.globalJSON)s=Form.globalJSON(this.container);else for(s={},i=0,e=(r=this.getInputs()).length;i"}render(){return this.$input=$(this.toString())}isVisible(){return this.$wrap.is(":visible")}checkErrors(t){return t}validate(){var t;return t={errors:[]},this.isEmpty()?(t.isEmpty=!0,(this.isErrorWhenEmpty||this.required)&&(t.errorEmptyText=InputError.errorEmptyText,t.errors.push(InputError.errorEmptyText))):t=this.checkErrors(t),t}isEmpty(){return!1}}return t.prototype.errorEmptyText="Не должно быть пустым",t.prototype.name="",t.prototype.isErrorWhenEmpty=!1,t.prototype.rules=null,t.prototype.required=!1,t.prototype.isRadio=!1,t.prototype.isCheckbox=!1,t._data_input="_data_input",t}.call(this),InputError=function(){class t{}return t.errorEmptyText="Не должно быть пустым",t.errorEmailInvalid="Некорректный email",t}.call(this),FormRuleCommand=function(){class t{}return t.OR="or",t.AND="and",t.IN="in",t.IS="is",t.ON="on",t}.call(this),FormRuleOperator=function(){class t{}return t.EQUAL="=",t}.call(this),FormRuleAction=function(){class t{}return t.HIDE="hide",t.SHOW="show",t.FUNCTION="function",t}.call(this),FormRuleOperator=function(){class t{}return t.CHANGE="change",t}.call(this),Input.Text=class extends Input{constructor(t=null,i={}){super(t,i)}isEmpty(){return 0===$.trim(this.value()).length}},Input.Email=function(){class t extends Input.Text{testMail(t){return this.mail.test(t)}checkErrors(t){var i;return i=(i=this.value()).replace(/ /g,""),this.testMail(i)||(t.isEmailInvalid=!0,t.errorEmailInvalid=InputError.errorEmailInvalid,t.errors.push(InputError.errorEmailInvalid)),t}}return t.prototype.mail=/^([A-Za-z0-9_-]+\.)*[A-Za-z0-9_-]+@[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)*\.[A-Za-z]{2,6}$/,t}.call(this),Input.Int=class extends Input.Text{format(){var t;return t=this.value(),t=parseInt(t),isNaN(t)&&(t=0),this.$input.val(t)}},Input.Hidden=class extends Input{},Input.Select=class extends Input{initInput(){return"SELECT"===this.$wrap[0].tagName?this.$input=this.$wrap:this.$input=$("select:eq(0)",this.$wrap),this.$input.on("change",this.triggerChange.bind(this))}isEmpty(){return""===this.value()}},Input.Select_ajax=class extends Input.Select{isEmpty(){return null===this.value()||void 0===this.value}},Input.Checkbox=function(){class t extends Input{initInput(){return"INPUT"===this.$wrap[0].tagName?this.$input=this.$wrap:this.$input=$("input[type=checkbox]:eq(0)",this.$wrap),this.$input.on("change",this.triggerChange.bind(this))}value(t){return null!=t&&this.$input.val(t),this.checked()?this.$input.val():0}checked(){return this.$input.is(":checked")}isEmpty(){return null===this.value()}}return t.prototype.isCheckbox=!0,t}.call(this),Input.Textarea=class extends Input{initInput(){return"TEXTAREA"===this.$wrap[0].tagName?this.$input=this.$wrap:this.$input=$("textarea:eq(0)",this.$wrap),this.$input.on("change",this.triggerChange.bind(this))}isEmpty(){return""===this.value()}},Input.Image=class extends Input{initInput(){return this.$input=$("input[type=hidden]:eq(0)",this.$wrap),this.$input.on("change",this.triggerChange.bind(this))}static value(t){return void 0!==t?this.$input.val(t):this.$input.val()}isEmpty(){return""===this.value()}},Input.Radio=function(){class t extends Input{initInput(){return"INPUT"===this.$wrap[0].tagName?this.$input=this.$wrap:this.$input=$("input[type=radio]:eq(0)",this.$wrap),this.$input.on("change",this.triggerChange.bind(this))}value(t){return null!=t&&this.$input.val(t),this.checked()?this.$input.val():null}checked(){return this.$input.is(":checked")}isEmpty(){return null===this.value()}}return t.prototype.isRadio=!0,t}.call(this),Input.Date=class extends Input.Text{},Input.Video=class extends Input{initInput(){return this.$input=$("input[type=hidden]:eq(0)",this.$wrap),this.$input.on("change",this.triggerChange.bind(this))}static value(t){return void 0!==t?this.$input.val(t):this.$input.val()}isEmpty(){return""===this.value()}},Input.Datetime=class extends Input.Text{value(t){var i;return void 0!==t?this.$input.val(t):(i=Date.parse(this.$input.val())/1e3,isNaN(i)&&(i=0),i)}},Input.Float=class extends Input.Text{format(){var t;return t=this.value(),t=parseFloat(t),isNaN(t)&&(t=0),this.$input.val(t)}value(t){var i;return i=void 0!==t?t:this.$input.val(),i=parseFloat(i),isNaN(i)&&(i=0),this.$input.val(i),i}},Input.Tinymce=class extends Input{getNodeId(){return this.$wrap.attr("data-input-tinymce")}value(t){return void 0!==t?tinymce.get(this.getNodeId()).setContent(t):tinymce.get(this.getNodeId()).getContent()}};