diff --git a/README.md b/README.md index 59cf3e8..052a85d 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ jQuery.my ========= -Below API description is not complete, see [jquerymy.com](http://jquerymy.com) for more detailed API, examples and list of compatible controls. +Below API description is not complete, see [jquerymy.com](https://jquerymy.com) for more detailed API, examples, and also for a list of all supported controls. * [__Get/set data__](#retrieving-and-updating-data) * [__Validation__](#validation) @@ -11,15 +11,15 @@ Below API description is not complete, see [jquerymy.com](http://jquerymy.com) f * [__Nested forms__](#nested-and-repeated-forms) * [__Styling forms__](#styling-forms) -__jquerymy is a plugin for complex reactive two-way data binding between DOM and nested JS state objects.__ +__jquerymy is a plugin for complex reactive two-way data binding between DOM and state objects.__ -jquerymy recognizes standard HTML controls as well as composite controls rendered by jQuery Mobile, nearly all jQuery UI widgets, Redactor, Ace, CodeMirror, Select2 and others. +jquerymy recognizes standard HTML controls as well as composite controls rendered by jQuery UI widgets, Redactor, Ace, CodeMirror, Select2 and other plugins. -jquerymy provides comprehensive validation, conditional formatting and dependencies resolution. Apps can be nested – each $.my instance can be used as control in a parent form, if any. +$.my provides comprehensive validation, conditional formatting and dependencies resolution. Apps can be nested – each $.my instance can be used as component of another $.my instance. jquerymy also incorporates simple template engine and modal dialog mechanics. -See [cloudwall.me](https://cloudwall.me) as an example of web-app platform built on top of $.my. Also good example of a very large jquerymy app is [Photon](https://github.com/ermouth/couch-photon), an unofficial administrative panel for CouchDB. +See [cloudwall.me](https://cloudwall.me) as an example of web-app platform built on top of $.my. Another example of a large $.my app is [Photon](https://github.com/ermouth/couch-photon), an unofficial administrative panel for CouchDB. Setup ----- @@ -39,21 +39,21 @@ Quick start ```js var person={}; var manifest = { - "data": { name:"", metrics:{ age:"" }}, - "init": function ($node, formRuntimeObj) { - $node.html( - '
' + - '' - ); - }, - "ui":{ - "#name": { bind: "name" }, - "#age" : { bind: "metrics.age" } - } + 'data': { name:'', metrics:{ age:'' }}, + 'init': function ($node, formRuntimeObj) { + $node.html( + '' + + '' + ); + }, + 'ui':{ + '#name': { bind: 'name' }, + '#age' : { bind: 'metrics.age' } + } }; // Init $.my -$("#form").my(manifest, person); -``` +$('#form').my(manifest, person); +``` Now form inputs are filled with init values and any interaction with controls immediately mutates `person` object. Dot notation of deep-level bindings is just syntax sugar. It also can be used with arrays in style like `someArray.1`. First param passed to $.my is denoted below as __manifest__. @@ -61,36 +61,36 @@ First param passed to $.my is denoted below as __manifest__. Retrieving and updating data ----- -__To get__ form data just read value of the `person` variable or read `$("#form").my("data")`. Second way is good if $.my was initialized without any init value passed. +__To get__ form data just read value of the `person` variable or read `$('#form').my('data')`. Second way is good if $.my was initialized without any init value passed. -__To put__ new data into already initialized instance of $.my call `$("#form").my("data", {name: "Mike"})`. Note you can update data partially. Form is redrawn and revalidated after applying new data . +__To put__ new data into already initialized instance of $.my call `$('#form').my('data', {name: 'Mike'})`. Note you can update data partially. Form is redrawn and revalidated after applying new data . More complex data bind ----- -The `.bind` field can be defined as a bi-directional function. It receives entire data object and new value as params. +The `.bind` property can be defined as a bi-directional function. It receives entire data object and new value as params. If `null` is passed function must only return value for DOM control, otherwise function must put value into data object and then return value for DOM. -So `bind` function implements both getter and setter – depending on value passed. +So the `bind` function implements both getter and setter depending on value passed. ```js -$("#form").my({ - ui:{ - "#name": "name", - "#age" : { - bind: function (data, value, $control) { - if (value != null) data.metrics.age = value; - return data.metrics.age = - (data.metrics.age + "").replace(/\D/g,""); - } - } - } +$('#form').my({ + ui:{ + '#name': 'name', + '#age' : { + bind: function (data, value, $control) { + if (value != null) data.metrics.age = value; + return data.metrics.age = + (data.metrics.age + '').replace(/\D/g,''); + } + } + } }, person); ``` -Note bind function in example won't allow to input anything than number. Pressing non-num key will do nothing with input, non-num chars are stripped immediately. +Note bind function in example does not allow to put anything than number. Pressing non-num key will does nothing with input, non-num chars are stripped immediately. -Third param `$control` is jQuery reference to the control being processed, it can be useful for navigating over form. Calling `$control.my("find", "#name")` returns `#name` control for example. +Third param `$control` is jQuery reference to the control being processed, it can be useful for navigating over form. Calling `$control.my('find', '#name')` returns `#name` control for example. Validation ----- @@ -103,18 +103,18 @@ If control is not interactive – we bind some data with `Form init failed
', + ru:'Ошибка инициализации формы
' + }, + + badInput:{en:"Invalid input", ru:"Неверное значение"}, + patternMismatch:{en:"Pattern mismatch", ru:"Не соответствует шаблону"}, + rangeOverflow:{en:"Over maximum", ru:"Больше максимума"}, + rangeUnderflow:{en:"Under minimum", ru:"Меньше минимума"}, + stepMismatch:{en:"Step mismatch", ru:"Не кратно шагу"}, + tooLong:{en:"Too long", ru:"Слишком длинно"}, + typeMismatch:{en:"Invalid type", ru:"Неверный тип"}, + valueMissing:{en:"Required", ru:"Обязательное поле"} + }, + + + // Different controls’ events to watch for + // ######################################################## + + events: { + ".hasDatepicker":"change.my check.my", + ".my-form,.my-tags":"change.my check.my", + ".ui-slider":"slide.my check.my", + "div.redactor_box textarea":"redactor.my check.my", + ".my-codemirror":"codemirror.my check.my", + ".ace_editor":"ace.my check.my", + ".my-form-list":"sortupdate.my check.my", + ".ui-sortable":"sortchange.my sortupdate.my check.my", + ".ui-draggable":"drag.my dragstop.my check.my", + "a, .pseudolink, input[type=button], button": "click.my", + "img, :radio, :checkbox": "click.my check.my", + "div.select2-container+input,div.select2-container+select,.select2-hidden-accessible":"change.my check.my input.my", + ".ui-buttonset,input, select, textarea": + "blur.my change.my check.my"+(navigator.appName.to(5)==="Micro"?" keyup.my":" input.my"), + "":"check.my" + }, + + // Functions retrieving container for different controls + // ######################################################## + + containers: { + "*[data-role='fieldcontain'] *":{ //jQuery Mobile + "input,textarea,select,button,:radio": function ($o) { + return $o.parents('[data-role="fieldcontain"]').eq(0); + } + }, + "div.redactor_box textarea":function ($o){ + return $o.parents('div.redactor_box').eq(0).parent(); + }, + ".my-tags,.hasDatepicker,.ui-widget,input,textarea,select,button" :{ + ".my-cleditor": function ($o) { + return $o.parents('div.cleditorMain').eq(0).parent(); + }, + "": function ($o) { + var p = $o[0].parentNode, t = p.nodeName; + if (/^(div|span|a|p|form|fieldset|li|ul|td|th|h\d)$/i.test(t)) return $(p); + else return $o.parents('div,span,a,p,form,fieldset,li,ul,td,th,h1,h2,h3,h4,h5,h6').eq(0); + } + }, + "": function ($o) {return $o;} + + }, + + // Disablers and enablers + // ######################################################## + + offon: { + //if x==true disables control else enables + '.ace_editor': function (x,$o) {ace.edit($o[0]).setReadOnly(x)}, + '.ui-selectable': function (x,$o) {_jquix($o,'selectable', x)}, + '.ui-slider': function (x,$o) {_jquix($o,'slider', x)}, + '.ui-draggable': function (x,$o) {_jquix($o,'draggable', x)}, + '.ui-buttonset': function (x,$o) {_jquix($o,'buttonset', x)}, + '.hasDatepicker': function (x,$o) {_jquix($o,'datepicker', x)}, + '.my-form': function (x,$o) {$o.my('disabled', !!x)}, + 'div.select2-container+input,div.select2-container+select': function (x,$o) {_jquix($o,'select2', x)}, + '.select2-hidden-accessible':function(x,$o){$o.prop('disabled',!!x)}, + '.my-cleditor': function (x,$o) { $o.cleditor()[0].disable(!!x)}, + '': function (x,$o) {$o.attr('disabled', !!x)} + }, + + // Destructors + // ######################################################## + destroy:{ + '.hasDatepicker': function ($o){$o.datepicker('destroy')}, + '.ui-slider': function ($o){$o.slider('destroy')}, + '.ui-sortable':{ + '.my-form-list':function ($o){ + $o.find('>.my-form').each(function(){$(this).my('remove')}); + $o.removeClass('my-form-list'); + $o.sortable('destroy'); + }, + '':function ($o){$o.sortable('destroy');} + }, + '.my-form-list': function ($o){ + $o.find('>.my-form').each(function(){$(this).my('remove')}); + }, + '.ui-draggable':function ($o){$o.draggable('destroy')}, + '.my-redactor-8':function ($o){ + $o.destroyEditor(); + $o.removeClass('my-redactor-8'); + }, + 'div.select2-container+input,div.select2-container+select,.select2-hidden-accessible':function ($o){$o.select2('destroy')}, + //'.select2-hidden-accessible': function($o){$o.destroy()}, + '.my-form': function ($o) {$o.my('remove')}, + 'textarea': { + '.my-codemirror': function ($o) { + $o[0].nextSibling.CodeMirror.toTextArea(); + $o.removeClass('my-codemirror'); + } + } + } + }; + + // Default values for .params section of manifest + // ######################################################## + + MY.params = { + container:function ($o) { + return _traverse($o, MY.containers)($o); + }, + change:N, + + // depth of dependencies resolver tree + recalcDepth: 2, + + // default delay of bind invocation + delay: 0, + + // if true form assumed unjsonned + strict: false, + + // delay of '); + } + var h = "", $s = $("style#my-modal-style-"+m.cid); + if (m.nose=="top" || m.nose=="bottom") { + h+='div.my-modal-'+m.cid+'.nose-'+m.nose+':before {left:' + + (m.pos.ox - m.pos.px + m.pos.ow/2 - m.pos.vx) + +'px!important;}'; + $s.text(h); + } + else if (m.nose=="left" || m.nose=="right") { + h+='div.my-modal-'+m.cid+'.nose-'+m.nose+':before {top:' + + (m.pos.oy - m.pos.py + m.pos.oh/2 - m.pos.vy) + +'px!important;}'; + $s.text(h); + } + } + } + else $m.css({ + left:"50%", + "margin-left":"-"+((m.width+padx)/2).round(0)+"px" + }); + + + if (m.screen) { + if (!m.global) $bg.css({ + top:0, left:0, position:"absolute", + width: $bg.parent().outerWidth()+'px', + height: $bg.parent().outerHeight()+'px', + display:"block", + background:isS(m.screen)? m.screen:'rgba(255,255,255,0.6)', + "z-index":m.z-1 + }); + else { + $bg.css({ + top:0, left:0, + width:"100%", height:"100%", + display:"block", + position:"fixed", + "z-index":m.z-1 + }); + if (isS(m.screen)) $bg.css({ + background:m.screen? m.screen:'rgba(18,41,72,0.88)' + }); + else $bg.css({ + background:m.screen?'rgba(18,41,72,0.88)':'' + }); + } + } + else if ($bg.length) $bg.hide(); + + if (m.height> m.pos.wh) { + $m.height(m.pos.wh-30); + $f.css({'overflow-y':'scroll'}); + } else { + $f.css({'overflow-y':''}); + } + + $m.animate({top: m.pos.vy+'px', opacity:'1'}, m.animate); + } + + // - - - - - - - - - - - - - - - - - - + + function _remove(){ + try { $f.my('remove'); } catch(e){} + try { + // root may not exist + $r.data('modals')[m.cid] = null; + } catch(e){} + $f.parent().off('.my').remove(); + if (_indom($bg)) $bg.off('.my'+ m.cid); + if (m.screen && _indom($bg)) { + (function(g){ + if (!g || !isOpen) $bg.hide(); + if (!!g && !isOpen) { + // repair screen color + $bg.css({background:'rgba(18,41,72,0.88)'}); + } + }).delay(50, m.global); // curry m.global + } + if (m.global) { + isOpen = false; + $(document.body).css({overflow:''}); + } + } + + // - - - - - - - - - - - - - - - - - - + + function _f(msg) { + try { done(null, null); } catch(e) {} + (function () { pi.reject(msg); }).delay(0); + } + + }; // -- end $.fn.modal + +})(jQuery); \ No newline at end of file diff --git a/Release/1.3/jquerymy-1.3.4.min.js b/Release/1.3/jquerymy-1.3.4.min.js new file mode 100644 index 0000000..db9196b --- /dev/null +++ b/Release/1.3/jquerymy-1.3.4.min.js @@ -0,0 +1,2 @@ +/*jQuery.my 1.3.4, (c) 2024 ermouth*/ +!function(x){var a="1.3.4",b=window.URL||window.webkitURL,c=!document.addEventListener,d=((window.navigator.language||window.navigator.userLanguage||"en")+"").split("-")[0].toLowerCase(),e="{yyyy}-{MM}-{dd}",f="{HH}:{mm}",g="object",h="data",i="array",j="string",k="function",l="change",m=/^this\./,n=Object.isArray,o=Object.isBoolean,p=Object.isString,q=Object.isObject,r=Object.isNumber,s=Object.isRegExp,t=Object.isFunction,u=function(x){return null!=x&&typeof x==g&&t(x.then)},v=U(x,"my.f.repo")?x.my.f.repo():{_src:{},_name:"Default manifest cache"},w=U(x,"my.f.restyles")?x.my.f.restyles():{},y=Object.merge,z=Object.clone,A=Object.keys,B=x.extend,C=x.Deferred,D=x.type,E=null,F=function(x){return null!=x},G=x.ajax,H=ax,I=Date.now,J=tx,K={vals:{".my-form":function(x,a){if(x&&x.my){var b=x.my(h);return Object.equal(b,a)?b:x.my(h,a,!0)}return a||E},".hasDatepicker":function(x,a){F(a)&&x.datepicker("setDate",""==a?a:Date.create(a));var b=x.datepicker("getDate");return b?b.format(e):""},".my-tags":function(x,a){return F(a)&&(p(a)||r(a)?x.tags(h,[a+""]):n(a)&&x.tags(h,a)),x.tags(h)},".ui-draggable":function(x,a){if(F(a)&&q(a)){var b={};isNaN(a.left)||(b.left=(+a.left).ceil(2)+"px"),isNaN(a.top)||(b.top=(+a.top).ceil(2)+"px"),(b.left||b.top)&&x.css(b)}var c=x.position();return{left:a&&!isNaN(a.left)?(+a.left).ceil(2):c.left.ceil(2),top:a&&!isNaN(a.top)?(+a.top).ceil(2):c.top.ceil(2)}},".my-form-list":function(a,b){var c,d,e,f,g,h=(a.data("formlist")||{}).generator||{},i=h.selector||">.my-form",j=!!h.merge,k=h.template||"",l=/\{/.test(k),m=h.hash||Y,o=h.id||Y,p=h.ext,q=h.delay||50,r="ui-sortable",s="."+r+"-placeholder",t=(a.is("."+r),!!a.children(s).length),u=[],v=[],w=I(),y=a.find(i);if(F(b)&&n(b)){if(t)return b;if(d=[],e={},y.each(function(a){var b,c=x(this),f=c.data("my");f&&(d.push(f.data),!j&&(b=c.data("formlist"))&&(e[b.oid]=f.data))}),!T(d,b,"==")){var z=[],A=[],B={},C={};for(v=[],c=0;cОшибка инициализации формы
'},badInput:{en:"Invalid input",ru:"Неверное значение"},patternMismatch:{en:"Pattern mismatch",ru:"Не соответствует шаблону"},rangeOverflow:{en:"Over maximum",ru:"Больше максимума"},rangeUnderflow:{en:"Under minimum",ru:"Меньше минимума"},stepMismatch:{en:"Step mismatch",ru:"Не кратно шагу"},tooLong:{en:"Too long",ru:"Слишком длинно"},typeMismatch:{en:"Invalid type",ru:"Неверный тип"},valueMissing:{en:"Required",ru:"Обязательное поле"}},events:{".hasDatepicker":"change.my check.my",".my-form,.my-tags":"change.my check.my",".ui-slider":"slide.my check.my","div.redactor_box textarea":"redactor.my check.my",".my-codemirror":"codemirror.my check.my",".ace_editor":"ace.my check.my",".my-form-list":"sortupdate.my check.my",".ui-sortable":"sortchange.my sortupdate.my check.my",".ui-draggable":"drag.my dragstop.my check.my","a, .pseudolink, input[type=button], button":"click.my","img, :radio, :checkbox":"click.my check.my","div.select2-container+input,div.select2-container+select,.select2-hidden-accessible":"change.my check.my input.my",".ui-buttonset,input, select, textarea":"blur.my change.my check.my"+("Micro"===navigator.appName.to(5)?" keyup.my":" input.my"),"":"check.my"},containers:{"*[data-role='fieldcontain'] *":{"input,textarea,select,button,:radio":function(x){return x.parents('[data-role="fieldcontain"]').eq(0)}},"div.redactor_box textarea":function(x){return x.parents("div.redactor_box").eq(0).parent()},".my-tags,.hasDatepicker,.ui-widget,input,textarea,select,button":{".my-cleditor":function(x){return x.parents("div.cleditorMain").eq(0).parent()},"":function(a){var b=a[0].parentNode,c=b.nodeName;return/^(div|span|a|p|form|fieldset|li|ul|td|th|h\d)$/i.test(c)?x(b):a.parents("div,span,a,p,form,fieldset,li,ul,td,th,h1,h2,h3,h4,h5,h6").eq(0)}},"":function(x){return x}},offon:{".ace_editor":function(x,a){ace.edit(a[0]).setReadOnly(x)},".ui-selectable":function(x,a){jx(a,"selectable",x)},".ui-slider":function(x,a){jx(a,"slider",x)},".ui-draggable":function(x,a){jx(a,"draggable",x)},".ui-buttonset":function(x,a){jx(a,"buttonset",x)},".hasDatepicker":function(x,a){jx(a,"datepicker",x)},".my-form":function(x,a){a.my("disabled",!!x)},"div.select2-container+input,div.select2-container+select":function(x,a){jx(a,"select2",x)},".select2-hidden-accessible":function(x,a){a.prop("disabled",!!x)},".my-cleditor":function(x,a){a.cleditor()[0].disable(!!x)},"":function(x,a){a.attr("disabled",!!x)}},destroy:{".hasDatepicker":function(x){x.datepicker("destroy")},".ui-slider":function(x){x.slider("destroy")},".ui-sortable":{".my-form-list":function(a){a.find(">.my-form").each(function(){x(this).my("remove")}),a.removeClass("my-form-list"),a.sortable("destroy")},"":function(x){x.sortable("destroy")}},".my-form-list":function(a){a.find(">.my-form").each(function(){x(this).my("remove")})},".ui-draggable":function(x){x.draggable("destroy")},".my-redactor-8":function(x){x.destroyEditor(),x.removeClass("my-redactor-8")},"div.select2-container+input,div.select2-container+select,.select2-hidden-accessible":function(x){x.select2("destroy")},".my-form":function(x){x.my("remove")},textarea:{".my-codemirror":function(x){x[0].nextSibling.CodeMirror.toTextArea(),x.removeClass("my-codemirror")}}}};K.params={container:function(x){return yx(x,K.containers)(x)},change:E,recalcDepth:2,delay:0,strict:!1,restyle:-1,locale:d,messages:Object.map(K.msg,function(x,a){return a[d]||a.en}),errorTip:".my-error-tip",errorCss:"my-error",animate:0,effect:function(x,a,b){if(a)return x.fadeIn(b);x.fadeOut(b)},remember:0,silent:!1,history:{},historyDelay:100,loader:function(x,a){var b=C(),c=H(x+"");return c?b.resolve(c):b.reject(null),b.promise()},ajaxTimeout:1e4},Date.prototype.toJSON=function(){return this.toISOString()},RegExp.prototype.toJSON=function(){return"new RegExp("+this.toString()+")"};var L={con:P,clone:function(x){return x.clone?x.clone():x},indom:R,jquix:jx,overlap:$,patch:Z,kickoff:_,sdbmCode:Y,tojson:Ax,fromjson:function(x){var a=JSON.parse(x);return Bx(a),a},unjson:function(x){return Bx(x),x},mask:nx,unmask:ox,getref:U,repo:function(){return v},restyles:function(){return w},blob2base64:function(x,a,b){var c=new FileReader;c.onload=function(){a(b?c.result:c.result.split(",")[1])},c.readAsDataURL(x)},base642blob:function(x,a,b){for(var c=atob(x),d=c.length,e=new ArrayBuffer(d),f=new Uint8Array(e),g=0;gОшибка инициализации формы
'},badInput:{en:"Invalid input",ru:"Неверное значение"},patternMismatch:{en:"Pattern mismatch",ru:"Не соответствует шаблону"},rangeOverflow:{en:"Over maximum",ru:"Больше максимума"},rangeUnderflow:{en:"Under minimum",ru:"Меньше минимума"},stepMismatch:{en:"Step mismatch",ru:"Не кратно шагу"},tooLong:{en:"Too long",ru:"Слишком длинно"},typeMismatch:{en:"Invalid type",ru:"Неверный тип"},valueMissing:{en:"Required",ru:"Обязательное поле"}},events:{".hasDatepicker":"change.my check.my",".my-form,.my-tags":"change.my check.my",".ui-slider":"slide.my check.my","div.redactor_box textarea":"redactor.my check.my",".my-codemirror":"codemirror.my check.my",".ace_editor":"ace.my check.my",".my-form-list":"sortupdate.my check.my",".ui-sortable":"sortchange.my sortupdate.my check.my",".ui-draggable":"drag.my dragstop.my check.my","a, .pseudolink, input[type=button], button":"click.my","img, :radio, :checkbox":"click.my check.my","div.select2-container+input,div.select2-container+select,.select2-hidden-accessible":"change.my check.my input.my",".ui-buttonset,input, select, textarea":"blur.my change.my check.my"+("Micro"===navigator.appName.to(5)?" keyup.my":" input.my"),"":"check.my"},containers:{"*[data-role='fieldcontain'] *":{"input,textarea,select,button,:radio":function(x){return x.parents('[data-role="fieldcontain"]').eq(0)}},"div.redactor_box textarea":function(x){return x.parents("div.redactor_box").eq(0).parent()},".my-tags,.hasDatepicker,.ui-widget,input,textarea,select,button":{".my-cleditor":function(x){return x.parents("div.cleditorMain").eq(0).parent()},"":function(a){var b=a[0].parentNode,c=b.nodeName;return/^(div|span|a|p|form|fieldset|li|ul|td|th|h\d)$/i.test(c)?x(b):a.parents("div,span,a,p,form,fieldset,li,ul,td,th,h1,h2,h3,h4,h5,h6").eq(0)}},"":function(x){return x}},offon:{".ace_editor":function(x,a){ace.edit(a[0]).setReadOnly(x)},".ui-selectable":function(x,a){jx(a,"selectable",x)},".ui-slider":function(x,a){jx(a,"slider",x)},".ui-draggable":function(x,a){jx(a,"draggable",x)},".ui-buttonset":function(x,a){jx(a,"buttonset",x)},".hasDatepicker":function(x,a){jx(a,"datepicker",x)},".my-form":function(x,a){a.my("disabled",!!x)},"div.select2-container+input,div.select2-container+select":function(x,a){jx(a,"select2",x)},".select2-hidden-accessible":function(x,a){a.prop("disabled",!!x)},".my-cleditor":function(x,a){a.cleditor()[0].disable(!!x)},"":function(x,a){a.attr("disabled",!!x)}},destroy:{".hasDatepicker":function(x){x.datepicker("destroy")},".ui-slider":function(x){x.slider("destroy")},".ui-sortable":{".my-form-list":function(a){a.find(">.my-form").each(function(){x(this).my("remove")}),a.removeClass("my-form-list"),a.sortable("destroy")},"":function(x){x.sortable("destroy")}},".my-form-list":function(a){a.find(">.my-form").each(function(){x(this).my("remove")})},".ui-draggable":function(x){x.draggable("destroy")},".my-redactor-8":function(x){x.destroyEditor(),x.removeClass("my-redactor-8")},"div.select2-container+input,div.select2-container+select,.select2-hidden-accessible":function(x){x.select2("destroy")},".my-form":function(x){x.my("remove")},textarea:{".my-codemirror":function(x){x[0].nextSibling.CodeMirror.toTextArea(),x.removeClass("my-codemirror")}}}};K.params={container:function(x){return yx(x,K.containers)(x)},change:E,recalcDepth:2,delay:0,strict:!1,restyle:-1,locale:d,messages:Object.map(K.msg,function(x,a){return a[d]||a.en}),errorTip:".my-error-tip",errorCss:"my-error",animate:0,effect:function(x,a,b){if(a)return x.fadeIn(b);x.fadeOut(b)},remember:0,silent:!1,history:{},historyDelay:100,loader:function(x,a){var b=C(),c=H(x+"");return c?b.resolve(c):b.reject(null),b.promise()},ajaxTimeout:1e4},Date.prototype.toJSON=function(){return this.toISOString()},RegExp.prototype.toJSON=function(){return"new RegExp("+this.toString()+")"};var L={con:P,clone:function(x){return x.clone?x.clone():x},indom:R,jquix:jx,overlap:$,patch:Z,kickoff:_,sdbmCode:Y,tojson:function(){var x="\t".repeat(10),a=JSON.stringify;return b.fill(void 0,0,void 0);function b(d,e,f){var g,h,i,j,l=0,m=e||0,o=x;switch(f&&p(f)&&(l=f.length,o=f.repeat(10)),(typeof d).substr(0,3)){case"str":return a(d).replace(/<\/scri/gi,"<\\u002fscri");case"num":return isFinite(d)?d+"":"null";case"boo":case"nul":return d+"";case"fun":return a(c(d.toString()).replace(/<\/scri/gi,"<\\u002fscri"));case"obj":if(!d)return"null";if(typeof d.toJSON===k)return b(d.toJSON(),m+(f?1:0),f);if(g=[],n(d)){for(h=0;hОшибка инициализации формы
'},badInput:{en:"Invalid input",ru:"Неверное значение"},patternMismatch:{en:"Pattern mismatch",ru:"Не соответствует шаблону"},rangeOverflow:{en:"Over maximum",ru:"Больше максимума"},rangeUnderflow:{en:"Under minimum",ru:"Меньше минимума"},stepMismatch:{en:"Step mismatch",ru:"Не кратно шагу"},tooLong:{en:"Too long",ru:"Слишком длинно"},typeMismatch:{en:"Invalid type",ru:"Неверный тип"},valueMissing:{en:"Required",ru:"Обязательное поле"}},events:{".hasDatepicker":"change.my check.my",".my-form,.my-tags":"change.my check.my",".ui-slider":"slide.my check.my","div.redactor_box textarea":"redactor.my check.my",".my-codemirror":"codemirror.my check.my",".ace_editor":"ace.my check.my",".my-form-list":"sortupdate.my check.my",".ui-sortable":"sortchange.my sortupdate.my check.my",".ui-draggable":"drag.my dragstop.my check.my","a, .pseudolink, input[type=button], button":"click.my","img, :radio, :checkbox":"click.my check.my","div.select2-container+input,div.select2-container+select,.select2-hidden-accessible":"change.my check.my input.my",".ui-buttonset,input, select, textarea":"blur.my change.my check.my"+("Micro"===navigator.appName.to(5)?" keyup.my":" input.my"),"":"check.my"},containers:{"*[data-role='fieldcontain'] *":{"input,textarea,select,button,:radio":function(x){return x.parents('[data-role="fieldcontain"]').eq(0)}},"div.redactor_box textarea":function(x){return x.parents("div.redactor_box").eq(0).parent()},".my-tags,.hasDatepicker,.ui-widget,input,textarea,select,button":{".my-cleditor":function(x){return x.parents("div.cleditorMain").eq(0).parent()},"":function(a){var b=a[0].parentNode,c=b.nodeName;return/^(div|span|a|p|form|fieldset|li|ul|td|th|h\d)$/i.test(c)?x(b):a.parents("div,span,a,p,form,fieldset,li,ul,td,th,h1,h2,h3,h4,h5,h6").eq(0)}},"":function(x){return x}},offon:{".ace_editor":function(x,a){ace.edit(a[0]).setReadOnly(x)},".ui-selectable":function(x,a){jx(a,"selectable",x)},".ui-slider":function(x,a){jx(a,"slider",x)},".ui-draggable":function(x,a){jx(a,"draggable",x)},".ui-buttonset":function(x,a){jx(a,"buttonset",x)},".hasDatepicker":function(x,a){jx(a,"datepicker",x)},".my-form":function(x,a){a.my("disabled",!!x)},"div.select2-container+input,div.select2-container+select":function(x,a){jx(a,"select2",x)},".select2-hidden-accessible":function(x,a){a.prop("disabled",!!x)},".my-cleditor":function(x,a){a.cleditor()[0].disable(!!x)},"":function(x,a){a.attr("disabled",!!x)}},destroy:{".hasDatepicker":function(x){x.datepicker("destroy")},".ui-slider":function(x){x.slider("destroy")},".ui-sortable":{".my-form-list":function(a){a.find(">.my-form").each(function(){x(this).my("remove")}),a.removeClass("my-form-list"),a.sortable("destroy")},"":function(x){x.sortable("destroy")}},".my-form-list":function(a){a.find(">.my-form").each(function(){x(this).my("remove")})},".ui-draggable":function(x){x.draggable("destroy")},".my-redactor-8":function(x){x.destroyEditor(),x.removeClass("my-redactor-8")},"div.select2-container+input,div.select2-container+select,.select2-hidden-accessible":function(x){x.select2("destroy")},".my-form":function(x){x.my("remove")},textarea:{".my-codemirror":function(x){x[0].nextSibling.CodeMirror.toTextArea(),x.removeClass("my-codemirror")}}}};K.params={container:function(x){return yx(x,K.containers)(x)},change:E,recalcDepth:2,delay:0,strict:!1,restyle:-1,locale:d,messages:Object.map(K.msg,function(x,a){return a[d]||a.en}),errorTip:".my-error-tip",errorCss:"my-error",animate:0,effect:function(x,a,b){if(a)return x.fadeIn(b);x.fadeOut(b)},remember:0,silent:!1,history:{},historyDelay:100,loader:function(x,a){var b=C(),c=H(x+"");return c?b.resolve(c):b.reject(null),b.promise()},ajaxTimeout:1e4},Date.prototype.toJSON=function(){return this.toISOString()},RegExp.prototype.toJSON=function(){return"new RegExp("+this.toString()+")"};var L={con:P,clone:function(x){return x.clone?x.clone():x},indom:R,jquix:jx,overlap:$,patch:Z,kickoff:_,sdbmCode:Y,tojson:Ax,fromjson:function(x){var a=JSON.parse(x);return Bx(a),a},unjson:function(x){return Bx(x),x},mask:nx,unmask:ox,getref:U,repo:function(){return v},restyles:function(){return w},blob2base64:function(x,a,b){var c=new FileReader;c.onload=function(){a(b?c.result:c.result.split(",")[1])},c.readAsDataURL(x)},base642blob:function(x,a,b){for(var c=atob(x),d=c.length,e=new ArrayBuffer(d),f=new Uint8Array(e),g=0;gОшибка инициализации формы
'},badInput:{en:"Invalid input",ru:"Неверное значение"},patternMismatch:{en:"Pattern mismatch",ru:"Не соответствует шаблону"},rangeOverflow:{en:"Over maximum",ru:"Больше максимума"},rangeUnderflow:{en:"Under minimum",ru:"Меньше минимума"},stepMismatch:{en:"Step mismatch",ru:"Не кратно шагу"},tooLong:{en:"Too long",ru:"Слишком длинно"},typeMismatch:{en:"Invalid type",ru:"Неверный тип"},valueMissing:{en:"Required",ru:"Обязательное поле"}},events:{".hasDatepicker":"change.my check.my",".my-form,.my-tags":"change.my check.my",".ui-slider":"slide.my check.my","div.redactor_box textarea":"redactor.my check.my",".my-codemirror":"codemirror.my check.my",".ace_editor":"ace.my check.my",".my-form-list":"sortupdate.my check.my",".ui-sortable":"sortchange.my sortupdate.my check.my",".ui-draggable":"drag.my dragstop.my check.my","a, .pseudolink, input[type=button], button":"click.my","img, :radio, :checkbox":"click.my check.my","div.select2-container+input,div.select2-container+select,.select2-hidden-accessible":"change.my check.my input.my",".ui-buttonset,input, select, textarea":"blur.my change.my check.my"+("Micro"===navigator.appName.to(5)?" keyup.my":" input.my"),"":"check.my"},containers:{"*[data-role='fieldcontain'] *":{"input,textarea,select,button,:radio":function(x){return x.parents('[data-role="fieldcontain"]').eq(0)}},"div.redactor_box textarea":function(x){return x.parents("div.redactor_box").eq(0).parent()},".my-tags,.hasDatepicker,.ui-widget,input,textarea,select,button":{".my-cleditor":function(x){return x.parents("div.cleditorMain").eq(0).parent()},"":function(a){var b=a[0].parentNode,c=b.nodeName;return/^(div|span|a|p|form|fieldset|li|ul|td|th|h\d)$/i.test(c)?x(b):a.parents("div,span,a,p,form,fieldset,li,ul,td,th,h1,h2,h3,h4,h5,h6").eq(0)}},"":function(x){return x}},offon:{".ace_editor":function(x,a){ace.edit(a[0]).setReadOnly(x)},".ui-selectable":function(x,a){jx(a,"selectable",x)},".ui-slider":function(x,a){jx(a,"slider",x)},".ui-draggable":function(x,a){jx(a,"draggable",x)},".ui-buttonset":function(x,a){jx(a,"buttonset",x)},".hasDatepicker":function(x,a){jx(a,"datepicker",x)},".my-form":function(x,a){a.my("disabled",!!x)},"div.select2-container+input,div.select2-container+select":function(x,a){jx(a,"select2",x)},".select2-hidden-accessible":function(x,a){a.prop("disabled",!!x)},".my-cleditor":function(x,a){a.cleditor()[0].disable(!!x)},"":function(x,a){a.attr("disabled",!!x)}},destroy:{".hasDatepicker":function(x){x.datepicker("destroy")},".ui-slider":function(x){x.slider("destroy")},".ui-sortable":{".my-form-list":function(a){a.find(">.my-form").each(function(){x(this).my("remove")}),a.removeClass("my-form-list"),a.sortable("destroy")},"":function(x){x.sortable("destroy")}},".my-form-list":function(a){a.find(">.my-form").each(function(){x(this).my("remove")})},".ui-draggable":function(x){x.draggable("destroy")},".my-redactor-8":function(x){x.destroyEditor(),x.removeClass("my-redactor-8")},"div.select2-container+input,div.select2-container+select,.select2-hidden-accessible":function(x){x.select2("destroy")},".my-form":function(x){x.my("remove")},textarea:{".my-codemirror":function(x){x[0].nextSibling.CodeMirror.toTextArea(),x.removeClass("my-codemirror")}}}};K.params={container:function(x){return yx(x,K.containers)(x)},change:E,recalcDepth:2,delay:0,strict:!1,restyle:-1,locale:d,messages:Object.map(K.msg,function(x,a){return a[d]||a.en}),errorTip:".my-error-tip",errorCss:"my-error",animate:0,effect:function(x,a,b){if(a)return x.fadeIn(b);x.fadeOut(b)},remember:0,silent:!1,history:{},historyDelay:100,loader:function(x,a){var b=C(),c=H(x+"");return c?b.resolve(c):b.reject(null),b.promise()},ajaxTimeout:1e4},Date.prototype.toJSON=function(){return this.toISOString()},RegExp.prototype.toJSON=function(){return"new RegExp("+this.toString()+")"};var L={con:P,clone:function(x){return x.clone?x.clone():x},indom:R,jquix:jx,overlap:$,patch:Z,kickoff:_,sdbmCode:Y,tojson:function(){var x="\t".repeat(10),a=JSON.stringify;return b.fill(void 0,0,void 0);function b(d,e,f){var g,h,i,j,l=0,m=e||0,o=x;switch(f&&p(f)&&(l=f.length,o=f.repeat(10)),(typeof d).substr(0,3)){case"str":return a(d).replace(/<\/scri/gi,"<\\u002fscri");case"num":return isFinite(d)?d+"":"null";case"boo":case"nul":return d+"";case"fun":return a(c(d.toString()).replace(/<\/scri/gi,"<\\u002fscri"));case"obj":if(!d)return"null";if(typeof d.toJSON===k)return b(d.toJSON(),m+(f?1:0),f);if(g=[],n(d)){for(h=0;hОшибка инициализации формы
'},badInput:{en:"Invalid input",ru:"Неверное значение"},patternMismatch:{en:"Pattern mismatch",ru:"Не соответствует шаблону"},rangeOverflow:{en:"Over maximum",ru:"Больше максимума"},rangeUnderflow:{en:"Under minimum",ru:"Меньше минимума"},stepMismatch:{en:"Step mismatch",ru:"Не кратно шагу"},tooLong:{en:"Too long",ru:"Слишком длинно"},typeMismatch:{en:"Invalid type",ru:"Неверный тип"},valueMissing:{en:"Required",ru:"Обязательное поле"}},events:{".hasDatepicker":"change.my check.my",".my-form,.my-tags":"change.my check.my",".ui-slider":"slide.my check.my","div.redactor_box textarea":"redactor.my check.my",".my-codemirror":"codemirror.my check.my",".ace_editor":"ace.my check.my",".my-form-list":"sortupdate.my check.my",".ui-sortable":"sortchange.my sortupdate.my check.my",".ui-draggable":"drag.my dragstop.my check.my","a, .pseudolink, input[type=button], button":"click.my","img, :radio, :checkbox":"click.my check.my","div.select2-container+input,div.select2-container+select,.select2-hidden-accessible":"change.my check.my input.my",".ui-buttonset,input, select, textarea":"blur.my change.my check.my"+("Micro"===navigator.appName.to(5)?" keyup.my":" input.my"),"":"check.my"},containers:{"*[data-role='fieldcontain'] *":{"input,textarea,select,button,:radio":function(x){return x.parents('[data-role="fieldcontain"]').eq(0)}},"div.redactor_box textarea":function(x){return x.parents("div.redactor_box").eq(0).parent()},".my-tags,.hasDatepicker,.ui-widget,input,textarea,select,button":{".my-cleditor":function(x){return x.parents("div.cleditorMain").eq(0).parent()},"":function(a){var b=a[0].parentNode,c=b.nodeName;return/^(div|span|a|p|form|fieldset|li|ul|td|th|h\d)$/i.test(c)?x(b):a.parents("div,span,a,p,form,fieldset,li,ul,td,th,h1,h2,h3,h4,h5,h6").eq(0)}},"":function(x){return x}},offon:{".ace_editor":function(x,a){ace.edit(a[0]).setReadOnly(x)},".ui-selectable":function(x,a){jx(a,"selectable",x)},".ui-slider":function(x,a){jx(a,"slider",x)},".ui-draggable":function(x,a){jx(a,"draggable",x)},".ui-buttonset":function(x,a){jx(a,"buttonset",x)},".hasDatepicker":function(x,a){jx(a,"datepicker",x)},".my-form":function(x,a){a.my("disabled",!!x)},"div.select2-container+input,div.select2-container+select":function(x,a){jx(a,"select2",x)},".select2-hidden-accessible":function(x,a){a.prop("disabled",!!x)},".my-cleditor":function(x,a){a.cleditor()[0].disable(!!x)},"":function(x,a){a.attr("disabled",!!x)}},destroy:{".hasDatepicker":function(x){x.datepicker("destroy")},".ui-slider":function(x){x.slider("destroy")},".ui-sortable":{".my-form-list":function(a){a.find(">.my-form").each(function(){x(this).my("remove")}),a.removeClass("my-form-list"),a.sortable("destroy")},"":function(x){x.sortable("destroy")}},".my-form-list":function(a){a.find(">.my-form").each(function(){x(this).my("remove")})},".ui-draggable":function(x){x.draggable("destroy")},".my-redactor-8":function(x){x.destroyEditor(),x.removeClass("my-redactor-8")},"div.select2-container+input,div.select2-container+select,.select2-hidden-accessible":function(x){x.select2("destroy")},".my-form":function(x){x.my("remove")},textarea:{".my-codemirror":function(x){x[0].nextSibling.CodeMirror.toTextArea(),x.removeClass("my-codemirror")}}}};K.params={container:function(x){return yx(x,K.containers)(x)},change:E,recalcDepth:2,delay:0,strict:!1,restyle:-1,locale:d,messages:Object.map(K.msg,function(x,a){return a[d]||a.en}),errorTip:".my-error-tip",errorCss:"my-error",animate:0,effect:function(x,a,b){if(a)return x.fadeIn(b);x.fadeOut(b)},remember:0,silent:!1,history:{},historyDelay:100,loader:function(x,a){var b=C(),c=H(x+"");return c?b.resolve(c):b.reject(null),b.promise()},ajaxTimeout:1e4},Date.prototype.toJSON=function(){return this.toISOString()},RegExp.prototype.toJSON=function(){return"new RegExp("+this.toString()+")"};var L={con:P,clone:function(x){return x.clone?x.clone():x},indom:R,jquix:jx,overlap:$,patch:Z,kickoff:_,sdbmCode:Y,tojson:Ax,fromjson:function(x){var a=JSON.parse(x);return Bx(a),a},unjson:function(x){return Bx(x),x},mask:nx,unmask:ox,getref:U,repo:function(){return v},restyles:function(){return w},blob2base64:function(x,a,b){var c=new FileReader;c.onload=function(){a(b?c.result:c.result.split(",")[1])},c.readAsDataURL(x)},base642blob:function(x,a,b){for(var c=atob(x),d=c.length,e=new ArrayBuffer(d),f=new Uint8Array(e),g=0;g