/**
 * Yii form widget.
 *
 * This is the JavaScript widget used by the yii\widgets\ActiveForm widget.
 *
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @since 2.0
 */ !function(t){t.fn.yiiActiveForm=function(i){return o[i]?o[i].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof i&&i?(t.error("Method "+i+" does not exist on jQuery.yiiActiveForm"),!1):o.init.apply(this,arguments)};var i,e={beforeValidate:"beforeValidate",afterValidate:"afterValidate",beforeValidateAttribute:"beforeValidateAttribute",afterValidateAttribute:"afterValidateAttribute",beforeSubmit:"beforeSubmit",ajaxBeforeSend:"ajaxBeforeSend",ajaxComplete:"ajaxComplete",afterInit:"afterInit"},a={encodeErrorSummary:!0,errorSummary:".error-summary",validateOnSubmit:!0,errorCssClass:"has-error",successCssClass:"has-success",validatingCssClass:"validating",ajaxParam:"ajax",ajaxDataType:"json",validationUrl:void 0,scrollToError:!0,scrollToErrorOffset:0,validationStateOn:"container"},r={id:void 0,name:void 0,container:void 0,input:void 0,error:".help-block",encodeError:!0,validateOnChange:!0,validateOnBlur:!0,validateOnType:!1,validationDelay:500,enableAjaxValidation:!1,validate:void 0,status:0,cancelled:!1,value:void 0,updateAriaInvalid:!0},n=function(e){i=t.Deferred(),e.data("yiiSubmitFinalizePromise",i.promise())},s=function(t){i&&(i.resolve(),i=void 0,t.removeData("yiiSubmitFinalizePromise"))},o={init:function(i,n){return this.each(function(){var s=t(this);if(!s.data("yiiActiveForm")){var l=t.extend({},a,n||{});void 0===l.validationUrl&&(l.validationUrl=s.attr("action")),t.each(i,function(e){i[e]=t.extend({value:F(s,this)},r,this),u(s,i[e])}),s.data("yiiActiveForm",{settings:l,attributes:i,submitting:!1,validated:!1,validate_only:!1,options:g(s)}),s.on("reset.yiiActiveForm",o.resetForm),l.validateOnSubmit&&(s.on("mouseup.yiiActiveForm keyup.yiiActiveForm",":submit",function(){s.data("yiiActiveForm").submitObject=t(this)}),s.on("submit.yiiActiveForm",o.submitForm));var d=t.Event(e.afterInit);s.trigger(d)}})},add:function(i){var e=t(this);i=t.extend({value:F(e,i)},r,i),e.data("yiiActiveForm").attributes.push(i),u(e,i)},remove:function(i){var e=t(this),a=e.data("yiiActiveForm").attributes,r=-1,n=void 0;return t.each(a,function(t){if(a[t].id==i)return r=t,n=a[t],!1}),r>=0&&(a.splice(r,1),l(e,n)),n},validateAttribute:function(i){var e=o.find.call(this,i);void 0!=e&&d(t(this),e,!0)},find:function(i){var e=t(this).data("yiiActiveForm").attributes,a=void 0;return t.each(e,function(t){if(e[t].id==i)return a=e[t],!1}),a},destroy:function(){return this.each(function(){t(this).off(".yiiActiveForm"),t(this).removeData("yiiActiveForm")})},data:function(){return this.data("yiiActiveForm")},validate:function(i){i&&(t(this).data("yiiActiveForm").submitting=!0);var a=t(this),r=a.data("yiiActiveForm"),n=!1,o={},u=h(),l=r.submitting;if(l){var d=t.Event(e.beforeValidate);if(a.trigger(d,[o,u]),!1===d.result){r.submitting=!1,s(a);return}}t.each(r.attributes,function(){this.$form=a;var i=j(a,this);if(i.toArray().reduce(function(i,e){return i&&t(e).is(":disabled")},!0))return!0;if(i.length&&"select"===i[0].tagName.toLowerCase()){var s=i[0].options,l=!s||!s.length,d=i.attr("required"),c=i.attr("multiple"),v=i.attr("size")||1;if(d&&!c&&1===parseInt(v,10)&&(l||s[0]&&""!==s[0].value&&""!==s[0].text))return!0}if(this.cancelled=!1,r.submitting||2===this.status||3===this.status){var f=o[this.id];void 0===f&&(f=[],o[this.id]=f);var h=t.Event(e.beforeValidateAttribute);a.trigger(h,[this,f,u]),!1!==h.result?(this.validate&&this.validate(this,F(a,this),f,u,a),this.enableAjaxValidation&&(n=!0)):this.cancelled=!0}}),t.when.apply(this,u).always(function(){for(var i in o)0===o[i].length&&delete o[i];if(n&&(t.isEmptyObject(o)||r.submitting)){var u=r.submitObject,d="&"+r.settings.ajaxParam+"="+a.attr("id");u&&u.length&&u.attr("name")&&(d+="&"+u.attr("name")+"="+u.attr("value")),t.ajax({url:r.settings.validationUrl,type:a.attr("method"),data:a.serialize()+d,dataType:r.settings.ajaxDataType,complete:function(t,i){a.trigger(e.ajaxComplete,[t,i])},beforeSend:function(t,i){a.trigger(e.ajaxBeforeSend,[t,i])},success:function(i){null!==i&&"object"==typeof i?(t.each(r.attributes,function(){(!this.enableAjaxValidation||this.cancelled)&&delete i[this.id]}),$(a,t.extend(o,i),l)):$(a,o,l)},error:function(){r.submitting=!1,s(a)}})}else r.submitting?window.setTimeout(function(){$(a,o,l)},200):$(a,o,l)})},submitForm:function(){var i=t(this),a=i.data("yiiActiveForm");if(!a.validated)return n(i),void 0!==a.settings.timer&&clearTimeout(a.settings.timer),a.submitting=!0,o.validate.call(i),!1;a.submitting=!1;var r=t.Event(e.beforeSubmit);return(i.trigger(r),!1===r.result)?(a.validated=!1,s(i),!1):(p(i),!0)},resetForm:function(){var i=t(this),e=i.data("yiiActiveForm");window.setTimeout(function(){t.each(e.attributes,function(){this.value=F(i,this),this.status=0;var t=i.find(this.container),a=j(i,this);("input"===e.settings.validationStateOn?a:t).removeClass(e.settings.validatingCssClass+" "+e.settings.errorCssClass+" "+e.settings.successCssClass),t.find(this.error).html("")}),i.find(e.settings.errorSummary).hide().find("ul").html("")},1)},updateMessages:function(i,e){var a=t(this),r=a.data("yiiActiveForm");t.each(r.attributes,function(){A(a,this,i)}),e&&C(a,i)},updateAttribute:function(i,e){var a=o.find.call(this,i);if(void 0!=a){var r={};r[i]=e,A(t(this),a,r)}}},u=function(i,e){var a=j(i,e);e.validateOnChange&&a.on("change.yiiActiveForm",function(){d(i,e,!1)}),e.validateOnBlur&&a.on("blur.yiiActiveForm",function(){(0==e.status||1==e.status)&&d(i,e,!0)}),e.validateOnType&&a.on("keyup.yiiActiveForm",function(a){-1===t.inArray(a.which,[16,17,18,37,38,39,40])&&e.value!==F(i,e)&&d(i,e,!1,e.validationDelay)})},l=function(t,i){j(t,i).off(".yiiActiveForm")},d=function(i,e,a,r){var n=i.data("yiiActiveForm");a&&(e.status=2),t.each(n.attributes,function(){c(this.value,F(i,this))||(this.status=2,a=!0)}),a&&(void 0!==n.settings.timer&&clearTimeout(n.settings.timer),n.settings.timer=window.setTimeout(function(){!(n.submitting||i.is(":hidden"))&&(t.each(n.attributes,function(){if(2===this.status){this.status=3;var t=i.find(this.container),e=j(i,this);("input"===n.settings.validationStateOn?e:t).addClass(n.settings.validatingCssClass)}}),o.validate.call(i))},r||200))},c=function(t,i){return t instanceof Object?v(t,i):Array.isArray(t)?f(t,i):t===i},v=function(t,i){if(!(t instanceof Object)||!(i instanceof Object))return!1;var e=Object.keys(t),a=Object.keys(i);if(e.length!==a.length)return!1;for(var r=0;r<e.length;r+=1)if(!i.hasOwnProperty(e[r])||t[e[r]]!==i[e[r]])return!1;return!0},f=function(t,i){if(!Array.isArray(t)||!Array.isArray(i)||t.length!==i.length)return!1;for(var e=0;e<t.length;e+=1)if(t[e]!==i[e])return!1;return!0},h=function(){var i=[];return i.add=function(i){this.push(new t.Deferred(i))},i},m=["action","target","method","enctype"],g=function(t){for(var i={},e=0;e<m.length;e++)i[m[e]]=t.attr(m[e]);return i},b=function(t,i){for(var e=0;e<m.length;e++){var a=i.attr("form"+m[e]);a&&t.attr(m[e],a)}},y=function(t){for(var i=t.data("yiiActiveForm"),e=0;e<m.length;e++)t.attr(m[e],i.options[m[e]]||null)},$=function(i,a,r){var n=i.data("yiiActiveForm");if(void 0===n)return!1;var o,u=[];if(t.each(n.attributes,function(){var t=r&&A(i,this,a)||!r&&_(i,this,a);(o=j(i,this)).is(":disabled")||this.cancelled||!t||u.push(this)}),i.trigger(e.afterValidate,[a,u]),r){if(C(i,a),u.length){if(n.settings.scrollToError){var l=t(document).height(),d=i.find(t.map(u,function(t){return t.input}).join(",")).first().closest(":visible").offset().top-n.settings.scrollToErrorOffset;d=d<0?0:d>l?l:d;var c=t(window).scrollTop();(d<c||d>c+t(window).height())&&t(window).scrollTop(d)}n.submitting=!1}else n.validated=!0,!n.validate_only&&(n.submitObject&&b(i,n.submitObject),i.submit(),n.submitObject&&y(i))}else t.each(n.attributes,function(){this.cancelled||2!==this.status&&3!==this.status||A(i,this,a)});s(i)},p=function(i){var e=i.data("yiiActiveForm").submitObject||i.find(":submit:first");if(e.length&&"submit"==e.attr("type")&&e.attr("name")){var a=t('input[type="hidden"][name="'+e.attr("name")+'"]',i);a.length?a.attr("value",e.attr("value")):t("<input>").attr({type:"hidden",name:e.attr("name"),value:e.attr("value")}).appendTo(i)}},A=function(i,a,r){var n=i.data("yiiActiveForm"),s=j(i,a),o=_(i,a,r);if(t.isArray(r[a.id])||(r[a.id]=[]),a.status=1,s.length){var u=i.find(a.container),l=u.find(a.error);x(i,a,o);var d="input"===n.settings.validationStateOn?s:u;o?(a.encodeError?l.text(r[a.id][0]):l.html(r[a.id][0]),d.removeClass(n.settings.validatingCssClass+" "+n.settings.successCssClass).addClass(n.settings.errorCssClass)):(l.empty(),d.removeClass(n.settings.validatingCssClass+" "+n.settings.errorCssClass+" ").addClass(n.settings.successCssClass)),a.value=F(i,a)}return i.trigger(e.afterValidateAttribute,[a,r[a.id]]),o},_=function(i,e,a){var r=j(i,e),n=!1;return t.isArray(a[e.id])||(a[e.id]=[]),r.length&&(n=a[e.id].length>0),n},C=function(i,e){var a=i.data("yiiActiveForm"),r=i.find(a.settings.errorSummary),n=r.find("ul").empty();r.length&&e&&(t.each(a.attributes,function(){if(t.isArray(e[this.id])&&e[this.id].length){var i=t("<li/>");a.settings.encodeErrorSummary?i.text(e[this.id][0]):i.html(e[this.id][0]),n.append(i)}}),r.toggle(n.find("li").length>0))},F=function(i,e){var a=j(i,e),r=a.attr("type");if("checkbox"!==r&&"radio"!==r)return a.val();var n=a.filter(":checked");if(n.length>1){var s=[];return n.each(function(i){s.push(t(n.get(i)).val())}),s}return n.length||(n=i.find('input[type=hidden][name="'+a.attr("name")+'"]')),n.val()},j=function(t,i){var e=t.find(i.input);return e.length&&"div"===e[0].tagName.toLowerCase()?e.find("input"):e},x=function(t,i,e){i.updateAriaInvalid&&t.find(i.input).attr("aria-invalid",e?"true":"false")}}(window.jQuery);