!function(a){"use strict";var b=function(a){return a},c=function(b){return a.isArray(b)},d=function(a){return!c(a)&&a instanceof Object},g=function(b,c){return a.inArray(c,b)},h=function(a,b){return g(a,b)!==-1},i=function(a,b){for(var c in a)a.hasOwnProperty(c)&&b(a[c],c,a)},j=function(a){return a[a.length-1]},k=function(a){return Array.prototype.slice.call(a)},l=function(){var a={};return i(k(arguments),function(b){i(b,function(b,c){a[c]=b})}),a},m=function(a,b){var c=[];return i(a,function(a,d,e){c.push(b(a,d,e))}),c},n=function(a,b,c){var d={};return i(a,function(a,e,f){e=c?c(e,a):e,d[e]=b(a,e,f)}),d},o=function(a,b,d){return c(a)?m(a,b):n(a,b,d)},p=function(a,b){return o(a,function(a){return a[b]})},q=function(a,b){var d;return c(a)?(d=[],i(a,function(a,c,e){b(a,c,e)&&d.push(a)})):(d={},i(a,function(a,c,e){b(a,c,e)&&(d[c]=a)})),d},r=function(a,b,c){return o(a,function(a,d){return a[b].apply(a,c||[])})},t=function(a){a=a||{};var b={};return a.publish=function(a,c){i(b[a],function(a){a(c)})},a.subscribe=function(a,c){b[a]=b[a]||[],b[a].push(c)},a.unsubscribe=function(a){i(b,function(b){var c=g(b,a);c!==-1&&b.splice(c,1)})},a};!function(a){var b=function(a,b){var c=t(),d=a.$;return c.getType=function(){throw'implement me (return type. "text", "radio", etc.)'},c.$=function(a){return a?d.find(a):d},c.disable=function(){c.$().prop("disabled",!0),c.publish("isEnabled",!1)},c.enable=function(){c.$().prop("disabled",!1),c.publish("isEnabled",!0)},b.equalTo=function(a,b){return a===b},b.publishChange=function(){var a;return function(d,e){var f=c.get();b.equalTo(f,a)||c.publish("change",{e:d,domElement:e}),a=f}}(),c},e=function(a,c){var d=b(a,c);return d.get=function(){return d.$().val()},d.set=function(a){d.$().val(a)},d.clear=function(){d.set("")},c.buildSetter=function(a){return function(b){a.call(d,b)}},d},f=function(a,b){a=c(a)?a:[a],b=c(b)?b:[b];var d=!0;return a.length!==b.length?d=!1:i(a,function(a){h(b,a)||(d=!1)}),d},k=function(a){var b={},c=e(a,b);return c.getType=function(){return"button"},c.$().on("change",function(a){b.publishChange(a,this)}),c},l=function(b){var d={},g=e(b,d);return g.getType=function(){return"checkbox"},g.get=function(){var b=[];return g.$().filter(":checked").each(function(){b.push(a(this).val())}),b},g.set=function(b){b=c(b)?b:[b],g.$().each(function(){a(this).prop("checked",!1)}),i(b,function(a){g.$().filter('[value="'+a+'"]').prop("checked",!0)})},d.equalTo=f,g.$().change(function(a){d.publishChange(a,this)}),g},m=function(a){var b={},c=x(a,b);return c.getType=function(){return"email"},c},n=function(c){var d={},e=b(c,d);return e.getType=function(){return"file"},e.get=function(){return j(e.$().val().split("\\"))},e.clear=function(){this.$().each(function(){a(this).wrap("