-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathforminator.min.js
More file actions
executable file
·5 lines (5 loc) · 26.1 KB
/
forminator.min.js
File metadata and controls
executable file
·5 lines (5 loc) · 26.1 KB
1
2
3
4
5
// forminator version 0.3.4
// https://github.com/DubFriend/forminator
// (MIT) 16-06-2014
// Brian Detering <BDeterin@gmail.com> (http://www.briandetering.net/)
!function(a){"use strict";!function(a){var b,c=function(b){return a.isArray(b)},d=function(a){return!c(a)&&a instanceof Object},e=function(a){return a instanceof Function},f=function(a,b){for(var c in a)a.hasOwnProperty(c)&&b(a[c],c,a)},g=function(){var a,b={};for(a=0;a<arguments.length;a+=1)f(arguments[a],function(a,c){b[c]=a});return b},h=function(a,b){var d;return c(a)?(d=[],f(a,function(a,c,e){b(a,c,e)&&d.push(a)})):(d={},f(a,function(a,c,e){b(a,c,e)&&(d[c]=a)})),d},i=function(b,c){return a.inArray(c,b)},j=function(a,b){return h(a,function(a,c){return-1===i(b,c)})},k=function(a,b){return function(){(b||function(){}).apply(a,arguments)}},l=function(a){return/\[\]$/.test(a)},m=function(a,b){return a.substring(0,a.length-1)+b+"]"},n=function(b){var c={};return b.each(function(){var b=a(this).attr("name");b&&(c[b]||(c[b]=[]),c[b].push(a(this)))}),c},o=function(){return b.find('input[type="checkbox"], input[type="radio"], input[type="text"], input[type="hidden"], textarea, select')},p=function(a){var b=function(a){var b={};return f(a,function(a,e){!function g(a,e){d(e)||c(e)?f(e,function(b,c){g(a+"["+c+"]",b)}):b[a]=e}(e,a)}),b},e=function(){var a=n(o()),b={},c=function(a,c){var d=function(){return a.is('input[type="checkbox"]')||a.is('input[type="radio"]')},e=function(){return d()?a.is(":checked")?a.val():void 0:a.val()},f=e();(d()&&f||!d())&&(b[c]=f)};return f(a,function(a,b){l(b)?f(a,function(a,d){c(a,m(b,d))}):a.length>1?f(a,function(a){c(a,b)}):c(a[0],b)}),b};return a?b(a):e()},q=function(b){if(b){var c=b.match(/#@#.*#@#/gim);return c&&c[0]?(c=c[0].substring(3,c[0].length-3),c=a.parseJSON(c)):null}return null},r=function(a){return a?a.replace(/#@#.*#@#/gim,""):null},s=function(a,b){b.is('input[type="text"]')||b.is("select")||b.is('input[type="hidden"]')||b.is("textarea")?b.val(a):(b.is('input[type="checkbox"]')||b.is('input[type="radio"]'))&&(""===a||null===a?b.prop("checked",!1):b.filter('[value="'+a+'"]').prop("checked",!0))},t=function(c){c=c||b,c.find('input[type="file"]').each(function(){a(this).wrap("<form>").closest("form").get(0).reset(),a(this).unwrap()})},u=function(c){c=c||!1,o().not('input[type="hidden"]').each(function(){s("",a(this))}),c&&b.find('input[type="hidden"]').each(function(){s("",a(this))}),t()},v=function(a){return e(a)?a.apply({clear:u,clearFileInputs:t,set:function(a,c){s(c,b.find('[name="'+a+'"]'))},get:p},Array.prototype.slice.call(arguments,1)):void 0},w=function(a,b,c){var d=a.response,e=a.metaData,f=e&&e.status||d&&d.status||200;!f||f>=200&&300>f?v(b,d,e):v(c,d,e)},x=function(b,c){var d=q(b);return b=r(b),"json"===c.toLowerCase()&&(b=a.parseJSON(b)),{metaData:d,response:b}},y=function(c){var d=function(){var a=function(a,b){return l(a)?m(a,b):a},c=n(b.find('input[type="file"]')),d={};return f(c,function(b,c){f(b,function(b,e){d[a(c,e)]=b})}),d};b.submit(function(b){b.preventDefault();var e=A(c());if(!e.validate||e.validate()){var h=new FormData;f(e.data,function(a,b){h.append(b,a)}),f(d(),function(a,b){var c=a[0];c.files.length>0&&(1===c.files.length?h.append(b,c.files[0]):f(c.files,function(a,c){h.append(b+"["+c+"]",a)}))}),a.ajax(j(g(e,{processData:!1,contentType:!1,data:null,type:"POST",dataType:"text",beforeSend:function(a,b){b.xhr=function(){var a=new window.XMLHttpRequest;return a.upload.onprogress=k(this,e.onprogress),a.upload.onload=k(this,e.onload),a.upload.onerror=k(this,e.onerror),a.upload.onabort=k(this,e.onabort),a},b.data=h,v(e.beforeSend)},success:function(a){var b=x(a,e.dataType);w(b,e.success,e.error)},error:function(a){var b=x(a.responseText,e.dataType);v(e.error,b.response,b.metaData)},complete:function(a){var b=x(a.responseText,e.dataType);v(e.complete,b.response,b.metaData)}})),["$files","getData"])}})},z=function(c){b.submit(function(d){d.stopPropagation();var e=A(c());if(!e.validate||e.validate()){var g="file-ajax-id-"+(new Date).getTime();a("body").prepend('<iframe width="0" height="0" style="display:none;" name="'+g+'" id="'+g+'"/>');var h={};o().each(function(){var b=a(this).attr("name");b&&(h[b]=a(this))});var i=function(){f(h,function(a){a.removeAttr("name")})},j=function(){f(h,function(a,b){a.attr("name",b)})},k=a("#"+g);v(e.beforeSend),k.on("load",function(){var a=k.contents().find("body").html(),b=x(a,e.dataType);w(b,e.success,e.error),j(),m(),k.remove(),v(e.complete,b.response,b.metaData)}),i();var l=[];f(e.data,function(c,d){var e=a('<input type="hidden" name="'+d+'" value="'+c+'"/>');b.prepend(e),l.push(e)});var m=function(){f(l,function(a){a.remove()})};b.attr({target:g,action:e.url,method:"POST",enctype:"multipart/form-data"})}else d.preventDefault()})},A=function(a){return a.url=a.url||b.attr("action"),a.data=p(a.data),a},B=function(c,d){if(b=a(this),!b.is("form"))throw"selected element must be a form element";a.support.ajax&&"undefined"!=typeof FormData&&d!==!0?y(c):z(c)};B.clearFileInputs=t,a.fn.fileAjax=B,a.fileAjax=B}(jQuery);var b=function(){var a=function(a){return"string"==typeof a},b=function(a){return"[object Array]"===toString.call(a)},c=function(a){return!b(a)&&a instanceof Object},d=function(a){return"number"==typeof a},e=function(a){var b,c,d="";for(b=0;b<a.length;b+=1)switch(c=a.charAt(b)){case"<":d+="<";break;case">":d+=">";break;case"&":d+="&";break;case"/":d+="/";break;case'"':d+=""";break;case"'":d+="'";break;default:d+=c}return d},f=function(a){return a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")},g=32,h=function(i,j){var k,l,m,n;if(a(i))n=i.length,k="charForLoopStrategy"===j?e(i):"regexStrategy"===j?f(i):n>g?f(i):e(i);else if(d(i))k=i;else if(b(i))for(k=[],m=0;m<i.length;m+=1)k.push(h(i[m]));else if(c(i)){k={};for(l in i)i.hasOwnProperty(l)&&(k[l]=h(i[l]))}return k};return h}(),c=function(a){return a},d=function(b){return a.isArray(b)},e=function(a){return!d(a)&&a instanceof Object},f=function(a){return a instanceof Function},g=function(a){var b={};return p(a,function(a,c){b[a]=c}),b},h=function(a){return parseInt(a,10)},i=function(a,b){return function(){return a.apply(b,arguments)}},j=function(a){var b=Array.prototype.slice.call(arguments,1);return f(a)?function(){var c=Array.prototype.slice.call(arguments);return a.apply(null,b.concat(c))}:void 0},k=function(a){var b,c=[];for(b=0;b<a.length;b+=1)c.push(a[b]);return c},l=function(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0},m=function(b,c){return a.inArray(c,b)},n=function(a,b){return-1!==m(a,b)},o=function(b){return a.extend(!0,{},b)},p=function(a,b){for(var c in a)a.hasOwnProperty(c)&&b(a[c],c,a)},q=function(a,b){var c,d,e,f=[];for(void 0===b?(d=0,e=a-1):(d=a,e=b),c=d;e>=c;c+=1)f.push(c);return f},r=function(a){return a[a.length-1]},s=function(a,b){var c=[];return p(a,function(a,d,e){c.push(b(a,d,e))}),c},t=function(a,b,c){var d={};return p(a,function(a,e,f){e=c?c(e,a):e,d[e]=b(a,e,f)}),d},u=function(a,b,c){return d(a)?s(a,b):t(a,b,c)},v=function(a,b,c){return u(a,function(a){return a[b].apply(a,c||[])})},w=function(a){return s(a,function(a,b){return b})},x=function(a,b){var c;return d(a)?(c=[],p(a,function(a,d,e){b(a,d,e)&&c.push(a)})):(c={},p(a,function(a,d,e){b(a,d,e)&&(c[d]=a)})),c},y=function(){var a,b={};for(a=0;a<arguments.length;a+=1)p(arguments[a],function(a,c){b[c]=a});return b},z=function(a,b){return x(a,function(a,c){return-1!==m(b,c)})},A=function(a,b){return w(z(a,b)).length===b.length},B=function(a,b){return x(a,function(a,c){return-1===m(b,c)})},C=function(a){var b=Array.prototype.slice.call(arguments,1);return f(a)?a.apply(null,b):void 0},D=function(a,b,c){var d=null,e=!1;return function(){var f=this,g=arguments;null===d?(d=setTimeout(function(){(!c||e)&&b.apply(f,g),e=!1,d=null},a),c&&b.apply(f,g)):e=!0}},E=(function(){var a=0;return function(){return a+=1}}(),function(a){a=a||{};var b={};return a.publish=function(a,c){p(b[a],function(a){a(c)})},a.subscribe=function(a,c){b[a]=b[a]||[],b[a].push(c)},a.unsubscribe=function(a){p(b,function(b){var c=m(b,a);-1!==c&&b.splice(c,1)})},a}),F=function(){var a={},b=function(a){var b,c,d,e="",f="",g=function(){var b=-1!==a.indexOf("#"),c=-1!==a.indexOf("?"),d="";return c&&(d=a.split("?")[1]||"",b&&(d=d.split("#")[0]||"")),e=c?a.split("?")[0]||"":b?a.split("#")[0]||"":a,b&&(f=a.split("#")[1]||""),d?d.split("&"):[]},h=g(a),i={};for(d=0;d<h.length;d+=1)b=h[d].split("=")[0],c=h[d].split("=")[1],i[b]=c;return{url:e||"",hash:f||"",parameters:i}},c=function(a){var b=[];return p(a.parameters,function(c,d){b.push(d+"="+a.parameters[d])}),a.url+(b.length>0?"?"+b.join("&"):"")+(a.hash?"#"+a.hash:"")};return a.get=function(a){return b(a).parameters},a.set=function(a,d){var e=b(a);return e.parameters=y(e.parameters,d),c(e)},a}(),G=function(b,c,d){return a(b+(d?"-"+d:"")+(c?"-"+c:""))},H=j(G,".frm"),I=function(b){var c={},d=b.url,e=b.name,f=b.isHardREST||!1,g=b.fieldMap||{},h=b.uniquelyIdentifyingFields,i=b.deleteConfirmation,l=j(H,e),m=b.fieldValidators,n=function(a,b){return function(){var c=k(arguments);return b.length?a.apply(null,[b].concat(c)):void 0}};c.input={text:R,textarea:S,select:Q,radio:P,checkbox:N,file:O,button:M,hidden:T,range:U};var o=function(a){return u(V({$:a,factory:c}),function(a){return W({input:a})})};return c.form=n(function(a){return Y({$:a,ajax:J,validate:b.validate,url:d,mapOutputData:b.mapOutputData,isHardREST:f,inputs:o(a),fieldValidators:m})},l("")),c.list=n(function(a,b){return db({$:a,fieldMap:g,request:b,uniquelyIdentifyingFields:h,deleteConfirmation:i})},l("list")),c.newItemButton=n(function(a){return eb({$:a})},l("new")),c.request=function(){return bb({ajax:function(b){a.ajax(b)},url:d,isHardREST:f})},c.search=n(function(a,c){return Z({$:a,isInstantSearch:b.isInstantSearch===!1?!1:!0,request:c,inputs:o(a)})},l("search")),c.ordinator=n(function(a,c){return $({$:a,request:c,orderIcons:b.orderIcons})},l("ordinator")),c.paginator=function(a){return ab({name:e,request:a,gotoPage:c.gotoPage()})},c.gotoPage=n(function(a){return _({$:a,inputs:o(a)})},l("goto-page")),c},J=function(b,d){var f=function(){var a=d();return a.type=a.type||"POST",a.dataType=a.dataType?a.dataType.toLowerCase():"json",a},g=function(){var a=f();return a.data=u(a.data||{},c,function(a){return a.replace(/\[\]$/,"")}),a};b.find('input[type="file"]').length?b.fileAjax(g,!1):b.submit(function(b){b.preventDefault();var c=f();c.validate()&&a.ajax({url:c.url,type:c.type,data:c.data,dataType:c.dataType,beforeSend:c.beforeSend,success:function(a){e(a)&&(a.status<200||a.status>=300)?C(c.error,a):C(c.success,a)},error:function(a){C(c.error,"json"===c.dataType?a.responseJSON:a.responseText)},complete:function(a){C(c.complete,"json"===c.dataType?a.responseJSON:a.responseText)}})})},K=function(a){var b=E(),c=a.$;return b.getType=function(){throw'implement me (return type. "text", "radio", etc.)'},b.$=function(a){return a?c.find(a):c},b.disable=function(){b.$().prop("disabled",!0),b.publish("isEnabled",!1)},b.enable=function(){b.$().prop("disabled",!1),b.publish("isEnabled",!0)},b},L=function(a,b){var c=K(a,b);return c.get=function(){return c.$().val()},c.set=function(a){var b=c.get();b!==a&&(c.$().val(a),c.publish("change",c))},c.clear=function(){c.set("")},b.buildSetter=function(a){return function(b){var d=c.get();d!==b&&(a.call(c,b),c.publish("change",c))}},c},M=function(a){var b={},c=L(a,b);return c.getType=function(){return"button"},c},N=function(b){var c={},e=L(b,c);return e.getType=function(){return"checkbox"},e.get=function(){var b=[];return e.$().filter(":checked").each(function(){a(this).is(":checked")&&b.push(a(this).val())}),b},e.set=function(b){b=d(b)?b:[b];var c=e.get(),f=!1;c.length===b.length?p(c,function(a){-1===m(b,a)&&(f=!0)}):f=!0,f&&(e.$().each(function(){a(this).prop("checked",!1)}),p(b,function(a){e.$().filter('[value="'+a+'"]').prop("checked",!0)}),e.publish("change",b))},e.$().click(function(){e.publish("change",e),e.publish("validate",e)}),e},O=function(b){var c={},d=K(b,c);return d.getType=function(){return"file"},d.get=function(){return r(d.$().val().split("\\"))},d.clear=function(){a.fileAjax.clearFileInputs(d.$().parent())},d.$().change(function(){d.publish("change",d),d.publish("validate",d)}),d},P=function(a){var b={},c=L(a,b);return c.getType=function(){return"radio"},c.get=function(){return c.$().filter(":checked").val()||null},c.set=b.buildSetter(function(a){a?c.$().filter('[value="'+a+'"]').prop("checked",!0):c.$().prop("checked",!1)}),c.$().change(function(){c.publish("change",c),c.publish("validate",c)}),c},Q=function(a){var b={},c=L(a,b);return c.getType=function(){return"select"},c.$().change(function(){c.publish("change",c),c.publish("validate",c)}),c},R=function(a){var b={},c=L(a,b);return c.getType=function(){return"text"},c.$().keyup(D(300,function(){c.publish("change",c)})),c.$().blur(function(){c.publish("validate",c)}),c},S=function(a){var b={},c=L(a,b);return c.getType=function(){return"textarea"},c.$().keyup(D(300,function(){c.publish("change",c)})),c.$().blur(function(){c.publish("validate",c)}),c},T=function(a){var b={},c=L(a,b);return c.getType=function(){return"hidden"},c.$().keyup(function(){c.publish("change",c)}),c},U=function(a){var b={},c=L(a,b);return c.getType=function(){return"range"},c.$().change(function(){c.publish("change",c),c.publish("validate",c)}),c},V=function(b){var c=b.$,d=b.factory,e={},f=function(b,f,g){g=g||e,c.find(f).each(function(){var c=a(this).attr("name");g[c]=d.input[b]({$:a(this)})})};f("text",'input[type="text"]'),f("text",'input[type="password"]'),f("text",'input[type="email"]'),f("text",'input[type="url"]'),f("range",'input[type="range"]'),f("textarea","textarea"),f("select","select"),f("file",'input[type="file"]'),f("button",'input[type="button"], input[type="submit"]'),f("hidden",'input[type="hidden"]');var g=function(b,f){var g=[];c.find(f).each(function(){-1===m(g,a(this).attr("name"))&&g.push(a(this).attr("name"))}),p(g,function(a){e[a]=d.input[b]({$:c.find('input[name="'+a+'"]')})})};return g("radio",'input[type="radio"]'),g("checkbox",'input[type="checkbox"]'),e},W=function(a){var c={},d=a.input,e=d.$().closest(".frm-group"),f=e.find(".frm-feedback");return c.get=d.get||function(){},c.set=d.set||function(){},c.clear=d.clear||function(){},c.disable=d.disable,c.enable=d.enable,c.getType=d.getType,c.subscribe=d.subscribe,c.$=function(a){return a?e.find(a):e},c.setFeedback=function(a){c.$().removeClass("success"),c.$().addClass("error"),f.html(b(a||""))},c.clearFeedback=function(){c.$().removeClass("error"),f.html("")},c.setSuccess=function(a){c.$().removeClass("error"),c.$().addClass("success"),f.html(b(a||""))},c.clearSuccess=function(){c.$().removeClass("success"),f.html("")},c},X=function(a){var c=E(),d=a.$,f=d.find(".frm-global-feedback"),g=a.inputs||{};!function(){var a=!1,e=null;c.setGlobalFeedback=function(g){c.clearGlobalSuccess(),a||d.addClass("error"),g!==e&&f.html(b(g)),a=!0,e=g},c.clearGlobalError=function(){a&&d.removeClass("error"),e&&f.html(""),a=!1,e=null}}(),function(){var a=!1,e=null;c.setGlobalSuccess=function(g){c.clearFeedback(),a||d.addClass("success"),g!==e&&f.html(b(g)),a=!0,e=g},c.clearGlobalSuccess=function(){a&&d.removeClass("success"),e&&f.html(""),a=!1,e=null}}(),c.clearGlobalFeedback=function(){c.clearGlobalError(),c.clearGlobalSuccess()},c.setFeedback=function(a){a=a||{},c.clearFeedback(),p(z(g,w(a)),function(b,c){b.setFeedback(a[c])}),c.setGlobalFeedback(a.GLOBAL)},c.validate=a.validate||function(){return{}};var h=function(){var a=k(arguments);return x(g,function(b){return!n(a,b.getType())})},i=function(){var a=k(arguments);return x(g,function(b){return n(a,b.getType())})};return c.clearFeedback=function(){v(g,"clearFeedback"),c.clearGlobalFeedback()},c.clearSuccess=function(){v(g,"clearSuccess"),c.clearGlobalSuccess()},c.disable=function(){v(h("file"),"disable")},c.enable=function(){v(g,"enable")},c.get=function(){return v(h("file","button"),"get")},c.set=function(a,b){e(a)?p(a,function(a,b){c.set(b,a)}):g[a]&&g[a].set(b)},c.clear=function(a){a=a||{};var b=a.isClearHidden?["button"]:["button","hidden"];v(h.apply(null,b),"clear")},function(){var a=c.get();c.reset=function(){v(i("file"),"clear"),c.set(o(a))}}(),c},Y=function(a){var b=X(a),d=a.inputs||{},f=a.ajax,h=a.url||a.$.attr("action"),i=a.isHardREST,j=a.mapOutputData||c,k={get:"GET",update:"PUT",create:"POST","delete":"DELETE"},m=g(k)[a.$.attr("method")]||"",n={},o=function(){return m?F.set(h,y(i?{}:{action:m},n)):h},q=a.fieldValidators||{},r=function(){return m?k[m]:""};return b.setAction=function(a){m=a},b.setParameters=function(a){if(!e(a))throw"parameters must be an object";n=a},f(a.$,function(){return{url:o(),type:i?r():"POST",dataType:"json",data:j(b.get()),validate:function(){var a=b.validate(b.get());return l(a)?!0:(b.setFeedback(a),b.publish("error",{data:a,action:m}),!1)},onprogress:function(a){b.publish("onprogress",{data:a,action:m})},beforeSend:function(){b.disable(),b.publish("beforeSend",{action:m})},success:function(a){a=a||{},b.setGlobalSuccess(a.successMessage),b.publish("success",{data:a,action:m})},error:function(a){b.setFeedback(a),b.publish("error",{data:a,action:m})},complete:function(a){b.enable(),b.publish("complete",{data:a,action:m})}}}),p(d,function(a,b){a.subscribe("validate",function(){var c=null;q[b]&&(c=q[b](a.get())),c&&(c.isSuccess?a.setSuccess(c.message||""):a.setFeedback(c.message||""))})}),b},Z=function(a){var b=X(a),c=a.$,d=a.request,e=a.isInstantSearch,f=a.inputs,g=function(){d.setFilter(b.get()),d.setPage(1),d.search()};return c.submit(function(a){a.preventDefault(),g()}),e&&p(f,function(a){a.subscribe("change",g)}),b},$=function(b){var c={},d=b.$,e=b.request,f=b.orderIcons||{neutral:"↕",ascending:"↑",descending:"↓"},g=function(){var b={};return d.find("[data-field]").each(function(){var c=a(this);b[c.data("field")]=function(){var a={},b=c.is("[data-order]")?c:c.find("[data-order]"),d=b.data("order")||"neutral";return a.set=function(a){b.data("order",a),b.html(f[a]),d=a},a.get=function(){return d},a.next=function(){var b=["ascending","descending"],c=b[(m(b,d)+1)%b.length];a.set(c)},a}()}),b}();return d.find("[data-field]").click(function(b){b.preventDefault();var c=a(this).data("field");v(B(g,[c]),"set",["neutral"]),g[c].next(),e.setOrder(u(v(g,"get"),function(a){return"neutral"===a?"":a})),e.setPage(1),e.search()}),c},_=function(a){var b=X(a),c=a.$;return c.submit(function(a){a.preventDefault(),b.publish("submit",b.get())}),b.show=function(){c.show()},b.hide=function(){c.hide()},b},ab=function(c){var d={},e=c.name,f=c.request,g=c.gotoPage,i=y({noPage:"Must enter a page number.",notAnInteger:"Must enter valid page number.",nonPositiveNumber:"Page number must be positive.",pageNumberOutOfBounds:"Page number cannot exceed the total number of pages."},c.errorMessages||{}),j=a(".frm-number-of-pages-"+e),k=a(".frm-number-of-results-"+e),m=a(".frm-page-numbers-"+e),n=(a(".frm-goto-page-"+e),a(".frm-previous-"+e)),o=a(".frm-next-"+e),s=m.find(".frm-next-"+e),t=function(a){return a.is("data-number")?a:a.find("[data-number]")},u=h(t(m.find(".frm-number-container.selected")).data("number"))||1,w=h(j.html())||u,z=h(k.html())||null,A=function(){var b=a(m.find(".frm-number-container")[0]).clone();return b.removeClass("selected"),t(b).html("").data("number",""),b}(),B=function(a){a=h(a),a!==w&&(j.html(b(a)),w=a)},C=function(a){a=h(a),a!==z&&(k.html(b(a)),z=a)},D=function(){for(var a=q(u-3,u+3);a[0]<1;)a.shift(),a.push(r(a)+1);for(;!l(a)&&r(a)>w;)a.pop();for(;a.length<7&&a[0]>1;)a.unshift(a[0]-1);return a},E=function(a){u=a,f.setPage(a),f.search()},F=function(a){var c={},d=a.$,e=d.find("[data-number]"),f=a.pageNumber||h(e.data("number"));return c.set=function(a){a=h(a),f!==a&&(e.html(b(a)),f=a)},c.get=function(){return f},c.setSelected=function(){d.addClass("selected")},c.clearSelected=function(){d.removeClass("selected")},c.destroy=function(){d.remove()},e.html(b(f)),d.click(function(a){a.preventDefault(),E(f)}),c},G=function(){return G=[],m.find(".frm-number-container").each(function(){G.push(F({$:a(this)}))}),G}(),H=function(a){var b=x(G,function(b){return b.get()===a});return l(b)?null:b[0]},I=function(){v(G,"clearSelected");var a=H(u);a&&a.setSelected()},J=function(){var a=0;for(p(D(),function(b){if(G[a])G[a].set(b);else{var c=A.clone();s.length?c.insertBefore(s):m.append(c),G[a]=F({pageNumber:b,$:c})}a+=1});G[a];)G[a].destroy(),G.splice(a,1);I()};return d.show=function(){g&&g.show(),m.show(),n.show(),o.show()},d.hide=function(){g&&g.hide(),m.hide(),n.hide(),o.hide()},d.validate=function(a,b){var c={},d=h(a.page);return a.page?isNaN(d)?c.page=i.notAnInteger:0>=d?c.page=i.nonPositiveNumber:d>b&&(c.page=i.pageNumberOutOfBounds):c.page=i.noPage,c},f.subscribe("success",function(a){a=a||{};var b=a.data;(0===h(b.numberOfPages)||b.numberOfPages)&&B(b.numberOfPages),b.numberOfResults&&C(b.numberOfResults),J()}),f.subscribe("setPage",function(a){u=a}),g&&g.subscribe("submit",function(a){var b=d.validate(a,w);l(b)?(g.clearFeedback(),g.reset(),E(h(a.page))):g.setFeedback(b)}),n.click(function(a){a.preventDefault(),l(d.validate({page:u-1},w))&&E(u-1)}),o.click(function(a){a.preventDefault(),l(d.validate({page:u+1},w))&&E(u+1)}),d},bb=function(a){var b=E(),e=a.ajax,f=a.url,g=a.isHardREST,h={},i=function(){return F.set(f,x(h||{},function(a){return d(a)?a.length:a||0===a}))},j=function(a){h=y(h,a)};return b.setOrder=function(a){j(u(a,c,function(a){return"order_"+(d(a)?a.join(","):a)}))},b.setFilter=function(a){j(u(a,c,function(a){return"filter_"+(d(a)?a.join(","):a)}))},b.setPage=function(a){j({page:a}),b.publish("setPage",a)},b.search=function(){e({type:"GET",url:i(),dataType:"json",success:function(a){b.publish("success",{data:a,action:"get"})},error:function(a){b.publish("error",{data:a.responseJSON,action:"get"})},complete:function(a){b.publish("complete",{data:a.responseJSON,action:"get"})}})},b["delete"]=function(a){e({type:g?"DELETE":"POST",url:F.set(f,y(a.uniquelyIdentifyingFields,g?{}:{action:"delete"})),dataType:"json",success:function(c){a.success(c),b.publish("success",{data:c,action:"delete"})},error:function(c){C(a.error,c.responseJSON),b.publish("error",{data:c.responseJSON,action:"delete"})},complete:function(c){C(a.complete,c.responseJSON),b.publish("complete",{data:c.responseJSON,action:"delete"})}})},b},cb=function(e){var f=E(),g=e.$self,h=e.fieldMap||{},i=function(a){return d(a)?a.join(", "):a},j=function(a){var c=b(a);p(c,function(a,b){g.find('[data-field="'+b+'"]').html(h[b]?h[b](a,c):i(a))})},k=function(){var b=function(a){return/^\[.*\]$/.test(a)?u(a.replace(/^\[/,"").replace(/\]$/,"").split(","),function(a){return a.replace(/^\s*/,"").replace(/\s*$/,"")}):a},c={};return g.find("[data-field]").each(function(){c[a(this).data("field")]=b(a(this).data("value"))||""}),c},l=k();return j(l),f.get$=function(){return g},f.set=function(a){var b=u(a,c,function(a){return n(w(l),a+"[]")?a+"[]":a}),d=x(b,function(a,b){return"undefined"==typeof l[b]?!1:l[b]!==a});return l=y(l,d),j(d),f},f.hardSet=function(a){f.clear(),f.set(a)},f.clear=function(){return g.find("[data-field]").html(""),g.find("[data-value]").attr("data-value",""),l=u(l,function(){return""}),f},f.destroy=function(){g.remove()},f.get=function(){return o(l)},f.addSelectedClass=function(){g.addClass("selected")},f.removeSelectedClass=function(){g.removeClass("selected")},g.dblclick(function(){f.publish("selected",f)}),g.find(".frm-edit-item").click(function(){f.publish("selected",f)}),g.find(".frm-delete-item").click(function(){f.publish("delete",f)}),f},db=function(b){var c=E(),f=b.$,g=b.fieldMap||{},h=b.deleteConfirmation,i=b.uniquelyIdentifyingFields,j=b.request,k=function(){var a=f.find(".frm-list-item:first-child").clone(),b=cb({$self:a,fieldMap:g});return b.clear(),a}(),l=function(a){a.subscribe("selected",function(){c.setSelectedClass(a),c.publish("selected",a)});var b=function(){var b=z(a.get(),i);j["delete"]({uniquelyIdentifyingFields:b,success:function(){c.remove(a),c.publish("deleted",a)}})};return a.subscribe("delete",function(){if(h)h(b);else{var a=confirm("Are you sure you want to delete this item?");a&&b()}}),a},n=function(){var b=[];return f.find(".frm-list-item").each(function(){b.push(l(cb({$self:a(this),fieldMap:g})))}),b}();return c.setSelectedClass=function(a){c.clearSelectedClass(),a.addSelectedClass()},c.clearSelectedClass=function(){v(n,"removeSelectedClass")},c.set=function(a){var b=[];p(a,function(a,c){var d;n[c]?n[c].hardSet(a):(d=k.clone(),b.push(d),n[c]=l(cb({$self:d,fieldMap:g})),n[c].set(a))}),f.append(b),n.length>a.length&&v(n.splice(a.length,n.length-a.length),"destroy")},c.remove=function(a){-1!==m(n,a)&&n.splice(m(n,a),1),a.destroy()},c.prepend=function(a){var b=k.clone(),c=l(cb({$self:b,fieldMap:g}));return c.set(a),n.unshift(c),f.prepend(b),c},j.subscribe("success",function(a){if("get"===a.action){a=a||{};var b=a.data;c.set(e(b)&&d(b.results)?b.results:[])}}),c},eb=function(a){var b=E(),c=a.$;return c.click(function(){b.publish("click")}),b},fb={};fb.init=function(b){var c={};b.validate=i(b.validate,c);var d=b.name,e=b.uniquelyIdentifyingFields,g=I(b),j=g.form(),k=g.newItemButton(),l=g.request(),m=g.list(l),n=(g.search(l),g.ordinator(l),g.paginator(l)),p=null,q=null,r=function(a){f(a)&&a.apply(c,Array.prototype.slice.call(arguments,1))},s=function(a,c){a&&a.subscribe(c,function(a){r(b[c],a.data,a.action)})};c.reset=function(){j&&(j.reset(),m&&j.setAction("create")),m&&m.clearSelectedClass(),q=null,p=null},c.clearFormFeedback=function(){j&&(j.clearFeedback(),j.clearSuccess())},c.setFormParameters=function(a){j&&j.setParameters(a)},c.getFormData=function(){return o(j.get())},m&&j&&(j.setAction("create"),m.subscribe("selected",function(a){j.set(a.get()),j.setAction("update"),q=a,c.clearFormFeedback(),r(b.selected,a.get$())}),j.subscribe("beforeSend",function(){p=j.get()}),j.subscribe("success",function(a){a=a||{};var b=a.data||{};q&&p?q.set(p):p&&(q=m.prepend(y(p,b.fields||{})),m.setSelectedClass(q)),c.reset()}),k&&k.subscribe("click",function(){c.reset(),c.clearFormFeedback()})),j&&!m&&j.subscribe("success",function(a){var b=a&&a.data||{};j.set(b.fields||{}),e&&A(j.get(),e)&&j.setAction("update")});var t=a(".frm-no-results-"+d);return m&&(m.subscribe("deleted",function(a){q===a&&c.reset()}),l.subscribe("success",function(a){a=a||{};var b=a.data?a.data.results||[]:[],d=a.data?h(a.data.numberOfPages):0;c.reset(),0!==b.length?t.hide():"get"===a.action&&t.show(),n&&(d>1?n.show():"get"===a.action&&n.hide())})),s(j,"onprogress"),s(j,"success"),s(j,"error"),s(j,"complete"),s(l,"success"),s(l,"error"),s(l,"complete"),c},window.forminator=fb}(jQuery);