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 `
` element for exa #### RegExp validation ```js -$("#form").my({ - ui:{ - "#name": { - bind: "name", - check:/^[a-z]{10}$/i, - error:"10 latin chars" // Optional - }, - "#age": { bind: "metrics.age" } - } +$('#form').my({ + ui:{ + '#name': { + bind: 'name', + check:/^[a-z]{10}$/i, + error:'10 latin chars' // Optional + }, + '#age': { bind: 'metrics.age' } + } }); ``` -If user puts something other than 10-letter combination into `#name` input, `class` attribute of the parent `
` is set to `.my-error`. +If user puts something different than 10-letter combination into `#name` input, the `class` attribute of the parent `
` is set to `.my-error`. #### Validating with function Validator function receives same params as `.bind` but executed before bind. Validator must return error message string – or empty string if value is ok. @@ -122,70 +122,70 @@ Validator function receives same params as `.bind` but executed before bind. Val Unlike `.bind` validator is never called with `value` equal to `null`, it always receives real value. ```js -$("#form").my({ - data:{/*...*/}, - init: function ($node){/*...*/}, - ui:{ - "#name": { - "bind": "name", - "check": function (data, value, $control) { - if (value.length > 20) return "Too long name"; - if (!/^[a-z]+$/.test(value)) return "Only letters allowed"; - return ""; - } - }, - "#age": "age" - } +$('#form').my({ + data:{/*...*/}, + init: function ($node){/*...*/}, + ui:{ + '#name': { + 'bind': 'name', + 'check': function (data, value, $control) { + if (value.length > 20) return 'Too long name'; + if (!/^[a-z]+$/.test(value)) return 'Only letters allowed'; + return ''; + } + }, + '#age': 'age' + } }); ``` Messages returned by validator are put into DOM element with class `.my-error-tip`, which must be located inside the control’s container. So to make messages visible you must explicitly add this element into html. If no such element found error message will be added as `title` attribute to the control itself. If the control has own `title`, its value is stashed until error corrected. ```html
- - + +
-``` +``` #### Checking entire form has no errors -`$("#form").my("errors")` returns an object, which keys are invalid fields, and values are error messages. If all fields are ok, `{}` is returned. If form has children forms, their errors are mapped to appropriate branch. +`$('#form').my('errors')` returns an object which keys are invalid fields, and values are error messages. If all fields are ok, `{}` is returned. If form has children forms, their errors are mapped to appropriate branch. -To spot whether entire data is valid call `$("#form").my("valid")`, which returns `true` is everything is ok. - +To spot whether entire data is valid call `$('#form').my('valid')`, which returns `true` is everything is ok. + Dependencies ----- Let it be a form that calculates product of two values. We need to recalculate product each time any of factors changes. ```js -$("#form").my({ - data:{ num1:"10", num2:"1.5" }, - init: function ($node){/*...*/}, - ui:{ - "#factor1": "num1", - "#factor2": "num2", - "#product": { - bind: function (data) { - return data.num1 * data.num2; - }, - watch: "#factor1,#factor2" //shorthand for ["#factor1", "#factor2"] - } - } +$('#form').my({ + data:{ num1:'10', num2:'1.5' }, + init: function ($node){/*...*/}, + ui:{ + '#factor1': 'num1', + '#factor2': 'num2', + '#product': { + bind: function (data) { + return data.num1 * data.num2; + }, + watch: '#factor1,#factor2' //shorthand for ['#factor1', '#factor2'] + } + } }); ``` Product is not mapped to data – `.bind` function does not save anything. It only returns value to put in `#product` DOM element. Every time `#factor1` or `#factor2` receive input `#product` is recalculated. There is another syntax to define dependencies. ```js -$("#form").my({ - ui:{ - "#factor1": { - bind: "num1", - recalc: "#product" - }, - "#factor2": "num2", - "#product": { - bind: function (data) {return data.num1 * data.num2}, - watch: "#factor2" - } - } +$('#form').my({ + ui:{ + '#factor1': { + bind: 'num1', + recalc: '#product' + }, + '#factor2': 'num2', + '#product': { + bind: function (data) {return data.num1 * data.num2}, + watch: '#factor2' + } + } }); ``` It behaves the same way. Note that `.recalc` is processed prior to `.watch`. So if a field depends on some other fields via both `.recalc` and `.watch` attributes, recalcs go first. @@ -197,24 +197,24 @@ Conditional formatting and disabling $.my can apply different classes depending on data object state. ```js -$("#form").my({ - ui:{ - "#name": { - bind: "name", - recalc: "#age", - css: { - "orange":/^.{10}$/ - } - }, - "#age": { - bind: "age", - css:{ - ":disabled": function (data, value) { - return data.name.length == 0; - } - } - } - } +$('#form').my({ + ui:{ + '#name': { + bind: 'name', + recalc: '#age', + css: { + 'orange':/^.{10}$/ + } + }, + '#age': { + bind: 'age', + css:{ + ':disabled': function (data, value) { + return data.name.length == 0; + } + } + } + } }); ``` Here if `#name` is exactly 10 chars, its container will receive class `orange`. If value doesn't match regexp then class `orange` is removed. @@ -228,19 +228,19 @@ Init functions #### Preparing form during initialization ```js -$("#form").my({ - data: { range: [30, 70] }, - init: function ($node) { - $node.html('') - }, - ui:{ - "#range": { - init: function ($control) { - $control.slider(range: true, min: 0, max: 100); - }, - bind: "range" - } - } +$('#form').my({ + data: { range: [30, 70] }, + init: function ($node) { + $node.html('') + }, + ui:{ + '#range': { + init: function ($control) { + $control.slider(range: true, min: 0, max: 100); + }, + bind: 'range' + } + } }); ``` Here we apply jQuery.UI Slider plugin over `#range` control. Data attribute `range` will receive array of two values – slider start and stop. On start control will be set to 30–70 range. @@ -251,28 +251,28 @@ Certainly HTML carcass itself can be generated using `init` function, placed as To become async `.init` function must return promise of any sort (so-called ‘then-able’). Initialization sequence continues when the promise is resolved. If app promise is rejected, entire sequence also fails. ```js -$("#form") +$('#form') .my({ - data: { name:"" }, - init: function ($node, runtime) { - var promise = $.ajax({ - url:"http://some.url" - }).then(function (res) { - // We received response, gen form HTML - $node.html('') - // Assume res is string, mount default data - runtime.data.name = res; - }); - - return promise; - }, - ui:{"#name": "name"} + data: { name:'' }, + init: function ($node, runtime) { + var promise = $.ajax({ + url:'http://some.url' + }).then(function (res) { + // We received response, gen form HTML + $node.html('') + // Assume res is string, mount default data + runtime.data.name = res; + }); + + return promise; + }, + ui:{'#name': 'name'} }) .then(function (data){ - // Do something when form init finished + // Do something when form init finished }) .fail(function(errMessage) { - // Do something if init failed + // Do something if init failed }); ``` jQuery AJAX implementation returns promise, so we may return `$.ajax` result directly. When data is received promise is resolved and initialization continues. When it is finished, promise returned by $.my is resolved with form’s `.data`. @@ -282,53 +282,53 @@ Nested and repeated forms Each DOM node which was instantiated with $.my can act as a single control for some parent $.my form. DOM node `#child` is instantiated with own manifest in example. ```js -$("#form") +$('#form') .my({ - data: { name:"" , child:{}}, - init: function ($node, runtime) { - //Draw HTML - }, - ui:{ - "#name": "name", - "#child" :{ - bind:"child", - check:true, //ensures child’s errors invalidate parent - manifest:{ - data:{/* child’s data struct */}, - init:{/* child’s init, can be async */}, - ui:{ /* child’s ui */} - } - } - } + data: { name:'' , child:{}}, + init: function ($node, runtime) { + //Draw HTML + }, + ui:{ + '#name': 'name', + '#child' :{ + bind:'child', + check:true, //ensures child’s errors invalidate parent + manifest:{ + data:{/* child’s data struct */}, + init:{/* child’s init, can be async */}, + ui:{ /* child’s ui */} + } + } + } }) ```` __To build list of nested forms__ just bind it with array. Below example builds list of similar array elements. ```js -$("#form") +$('#form') .my({ - data: { name:"" , child:[ /* array of elts */]}, - init: function ($node, runtime) { - //Draw HTML - }, - ui:{ - "#name": "name", - "#child" :{ - bind:"child", - check:true, - list:'
', //optional - init: function ($list) { //optional - // Makes list items sortable by drag - // and drop, jQuery UI plugin required - $list.sortable(); - }, - manifest:{ - data:{/* child’s data struct */}, - init:{/* child’s init, can be async */}, - ui:{ /* child’s ui */} - }, - - } - } + data: { name:'' , child:[ /* array of elts */]}, + init: function ($node, runtime) { + //Draw HTML + }, + ui:{ + '#name': 'name', + '#child' :{ + bind:'child', + check:true, + list:'
', //optional + init: function ($list) { //optional + // Makes list items sortable by drag + // and drop, jQuery UI plugin required + $list.sortable(); + }, + manifest:{ + data:{/* child’s data struct */}, + init:{/* child’s init, can be async */}, + ui:{ /* child’s ui */} + }, + + } + } }) ```` @@ -340,32 +340,33 @@ $.my understands many types of controls and automatically selects appropriate ev But sometimes you need no realtime response – in case of buttons or links for example. Bind function must be executed only when button is really clicked, not while initializing. ```js -$("#form").my({ - ui:{ - "#button": { - bind: function (data, value) { - if (value != null) { - //do something - } - }, - events: "click,dblclick" - } - } +$('#form').my({ + ui:{ + '#button': { + bind: function (data, value) { + if (value != null) { + //do something + } + }, + events: 'click,dblclick' + } + } }); ``` The `events` attribute here defines that bind executed after click or doubleclick events on `#button` element. Note `.bind` returns `undefined` here – this syntax allows us to keep control's content intact. + #### Delays There are several cases bind function must have kind of an anti-jitter. If control is jQuery.UI Slider or conventional HTML5 `` it’s reasonable to exec `.bind` when slider stops. Complex bind function executed every pixel slider moves can be real CPU and RAM hog. ```js -$("#form").my({ - ui:{ - "#slider": { - bind: function (data, val) { /* do somth*/ }, - delay: 150 - } - } +$('#form').my({ + ui:{ + '#slider': { + bind: function (data, val) { /* do somth*/ }, + delay: 150 + } + } }); ``` In this example `.bind` starts only after last event within 150ms. If change events are raised more often then one in 150ms, they are supressed. See [live demo](http://jquerymy.com/s/delay078.html) – its much more clear than description. @@ -376,24 +377,24 @@ Reusable code snippets Some functions or fields inside manifest can contain code with matching fragments. It can be same regexps for different fields, or some dictionaries used here and there etc. They can be stored at manifest's root and acessed from `ui` section members by reference. ```js -$("#form").my({ - NumCheck:/^\d+$/, - ForbiddenPasswords:["123","qwerty"], - ui:{ - "#num": { - bind: "num", - check: "NumCheck" - }, - "#pwd":{ - bind:"password", - check: function (data, value) { - var pwdList = this.ForbiddenPasswords; - if (pwdList.indexOf(value) == -1) return "Too simple password!"; - return ""; - } - } - }, - SomeFunction: function () { // this points to runtime manifest } +$('#form').my({ + NumCheck:/^\d+$/, + ForbiddenPasswords:['123','qwerty'], + ui:{ + '#num': { + bind: 'num', + check: 'NumCheck' + }, + '#pwd':{ + bind: 'password', + check: function (data, value) { + var pwdList = this.ForbiddenPasswords; + if (pwdList.indexOf(value) == -1) return 'Too simple password!'; + return ''; + } + } + }, + SomeFunction: function () { // bound, this points to the runtime } }); ``` Not only checks but every function defined in `.ui` section receives `this` pointing to runtime manifest. Functions located on the first level of manifest (`SomeFunction` in example above) also receive `this` pointing to runtime. @@ -402,59 +403,59 @@ Not only checks but every function defined in `.ui` section receives `this` poin Manifest delivery ----- -There is buil-in method to convert manifest with functions and regexps into conventional JSON. It's useful for on-demand manifest delivery using ajax calls. `$.my.tojson(manifest)` -returns correct JSON-encoded string with all functions and regexps converted to strings. +There is built-in method to convert manifest with functions and regexps into conventional JSON. It’s useful for on-demand manifest delivery using ajax calls. `$.my.tojson(manifest)` returns correct JSON-encoded string with all functions and regexps converted to strings. -This approach is used in CouchDB to store internal functions as JSON docs. It's quite simple and straightforward. +This approach is used in CouchDB to store internal functions as JSON docs. It’s quite simple and straightforward. ``` $.my.tojson({ - a:function(){}, - b:/./ + a:function(){}, + b:/./ }) >> '{"a":"function (){}", "b":"new RegExp(/./)"}' -``` +``` Method `$.my.fromjson(someJSON)` unwinds encoded functions and regexps into full-featured code. -There is no need to decipher encoded manifests before passing them to $.my – they are unwinded automatically. +There is no need to decipher encoded manifests before passing them to $.my – they are unwound automatically. Styling forms ----- -Manifest can contain `style` property that defines hierarchy of css rules for form instance. Some rules can be static and other calculated according to form’s init data. +Manifest can have `style` property which defines hierarchy of css rules for a form instance. Rules can be both static and dynamic, recalculated on window resize or by command. + ```javascript { - id:"ManifestId", - data:{...}, - init function(){...}, - ui:{...}, - style:{ - " .red": "color:#c02", - " .item":{ - " .name": "font-size:110%", - " .user": function ($form, form) { - if ($form.width()<500) return "display:none"; - return "font-size:80%"; - } - }, - " h2,h3":{ - "": "font-weight:bold" - ".light": "font-weight:normal", - ">img.icon": "width:24px;" - } - } + id: 'ManifestId', + data: {...}, + init: function(){...}, + ui: {...}, + style: { + ' .red': 'color:#c02', + ' .item':{ + ' .name': 'font-size:110%', + ' .user': function ($form, form) { + if ($form.width() < 500) return 'display:none'; + return 'font-size:80%'; + } + }, + ' h2,h3':{ + '': 'font-weight:bold' + '.light': 'font-weight:normal', + '>img.icon': 'width:24px;' + } + } } ``` Syntax is more or less straightforward. Note spaces before most rules. Above example will be rendered in two ` ``` @@ -471,20 +472,20 @@ Settings Below parameters of $.my instance can be tuned for an entire form: ```js var manifest = { - params:{ - delay: 0, //global anti-jitter delay, can be overriden - depth: 2, //depth of chained/looped recalc resolution - errorTip: ".my-error-tip", //jQuery selector for error msg - errorCss: "my-error" //class to mark invalid controls - }, - data: {...}, - init: function ($form) {...}, - ui:{...} + params:{ + delay: 0, //global anti-jitter delay, can be overriden + depth: 2, //depth of chained/looped recalc resolution + errorTip: '.my-error-tip', //jQuery selector for error msg + errorCss: 'my-error' //class to mark invalid controls + }, + data: {...}, + init: function ($form) {...}, + ui:{...} }; ``` Full set of settings is quite long, they are listed and explained at [jquerymy.com/api.html](http://jquerymy.com/api.html#CW-settings) Compatibility ----- -Works fine on IE9+ and other browsers. IE8 is also supported, but apps require thorough testing +Works fine on IE11+ and other browsers. Earlier IE are also supported, but apps require thorough testing and optimizations to avoid lags. diff --git a/Release/1.3/jquerymy-1.3.4.js b/Release/1.3/jquerymy-1.3.4.js new file mode 100644 index 0000000..d31e279 --- /dev/null +++ b/Release/1.3/jquerymy-1.3.4.js @@ -0,0 +1,4880 @@ +/* + * jQuery.my 1.3.4 + * Requires jQuery 2.0+, SugarJS 1.3.9-1.4.x + * + * — async functions support + * — fixed issues derived from lgtm static analysis + * — unsortable items are no more deleted from bound array + * — $.my.f.tojson generates prettier output, also + * received 3rd arg (obj, tabChars, maxLineLength) + * + * More details at jquerymy.com + * + * (c) @ermouth, thanks @carpogoryanin, @ftescht + * 2024-01-04 + */ + +;(function ($) { + + var _version = '1.3.4'; + + // Some shortcuts and constants + var TMP, lang = 'en', + wURL = window.URL || window.webkitURL, + ie8 = !document.addEventListener, + + Lang = ((window.navigator.language || window.navigator.userLanguage || 'en')+'').split('-')[0].toLowerCase(), + + d8 = '{yyyy}-{MM}-{dd}', + h24= '{HH}:{mm}', + Ob = 'object', + Da = 'data', + Ar = 'array', + St = 'string', + Fu = 'function', + Ch = 'change', + rthis = /^this\./, + + isA = Object.isArray, + isB = Object.isBoolean, + isS = Object.isString, + isO = Object.isObject, + isN = Object.isNumber, + isR = Object.isRegExp, + isF = Object.isFunction, + isP = function (a) { + // detects promise + return null != a && typeof a == Ob && isF(a.then); + }, + + forms = _getref($, 'my.f.repo') ? $.my.f.repo() : {_src:{}, _name:'Default manifest cache'}, + restyles = _getref($, 'my.f.restyles') ? $.my.f.restyles() : {}, + + Merge = Object.merge, + Clone = Object.clone, + Keys = Object.keys, + $E = $.extend, + $D = $.Deferred, + T = $.type, + + N = null, + n = function (o) {return o !== null && o !== undefined}, + + // Configurables using $.my[fname](newHandler) + // like $.my.ajax(newGlobalAjaxHandlerFunction) + + _ajax = $.ajax, + _cache = _localCache, + _now = Date.now, + _require = _localRequire; + + //######################################################## + // Storage of rules defined by cascading selectors + // very similar to css. Leafs are processors + // or processing rules for this type of node + + var MY = { + + //getter and setter functions for different types of nodes + + vals: { + + '.my-form': function ($o, v) { + //object is jQuery.my instance + if ($o && $o.my ) { + var d = $o.my(Da); + return Object.equal(d,v) ? d : $o.my(Da, v, true); + } + else return v || N; + }, + + '.hasDatepicker':function ($o,v) { + //object has jQ UI datepicker + if(n(v)) $o.datepicker('setDate', v=='' ? v : Date.create(v)); + var date = $o.datepicker('getDate'); + return (date ? date.format(d8) : ''); + }, + + '.my-tags': function ($o,v) { + //object is jQ tags control + if (n(v)) { + if (isS(v) || isN(v)) $o.tags(Da,[v + '']); + else if (isA(v)) $o.tags(Da, v); + } + return $o.tags(Da); + }, + + '.ui-draggable': (function ($o,v) { + //object is jQ UI draggable + if (n(v) && isO(v)) { + var c = {}; + if (!isNaN(v.left)) c.left = (+v.left).ceil(2) + 'px'; + if (!isNaN(v.top)) c.top = (+v.top).ceil(2) + 'px'; + if (c.left || c.top) $o.css(c); + } + var p = $o.position(); + return { + left: v && !isNaN(v.left) ? (+v.left).ceil(2) : p.left.ceil(2), + top: v && !isNaN(v.top) ? (+v.top).ceil(2) : p.top.ceil(2) + }; + }), + + '.my-form-list': (function ($o,list) { + //object is list of forms + var i, old, xold, mod, eq, //ctr = 0, + $n, $drag, + od = $o.data('formlist')||{}, + gen = od.generator||{}, + itemSel = gen.selector || '>.my-form', + merge = !!gen.merge, + tmpl = gen.template || '
', + tmplIsVar = /\{/.test(tmpl), + hasher = gen.hash || _sdbm, + ider = gen.id || _sdbm, + extHasher = gen.ext, + delay = gen.delay || 50, + sP = 'ui-sortable', + sPlc= '.'+sP+'-placeholder', + sortable = $o.is('.'+sP), + sorting = !!$o.children(sPlc).length, + result=[], + redraw = [], + now = _now(); + + // sortable hides unmovable items, so we can’t use option/items. 1.3.3 + //var $c = sortable ? $o.find($o.sortable('option', 'items')) : $o.find(itemSel); + var $c = $o.find(itemSel); + + if (n(list) && isA(list)) { + //return list passed if dragging taking place + if (sorting) return list; + // first we must estimate + // if putting new data over old + // changes anything + old = []; + xold = {}; + $c.each(function (i) { + var $x = $(this), xd = $x.data('my'), dd; + if (xd) { + old.push(xd.data); + if (!merge && (dd = $x.data('formlist'))) xold[dd.oid] = xd.data; + } + }); + + //fast compare + eq = _aeq(old, list, '=='); + + if (!eq){ + // We possibly have new data, hash it + var hash=[], oid = [], xoid = {}, present={}; + + redraw = []; + + // Build id <-> idx and hashes + for (i=0; i 1.4*delay) + || now - gen.stamp > 100 + || !gen.stashed + || (gen.stashed.length !== $c.length-(sorting?1:0)) + ) { + + if (sorting) $drag = $o.find('>.'+sP+'-helper'); + var ri = 0; + $c.each(function (idx, elt) { + var $x = $(elt), xd, xf, chash, dirty = false; + if (!sorting || !$x.hasClass(sP+'-helper')) { + if (sorting && $x.hasClass(sP + '-placeholder')) $x = $drag; + xd = $x.data("my"); + xf = $x.data("formlist"); + if (xd && xf) { + result.push(xd.data); + if (ri != xf.index) { + xf.index = ri; + dirty = !0; + } + if (extHasher) { + chash = hasher(xd.data, ri)+""; + if (chash !== xf.hash) { + xf.hash = chash; + dirty = !0; + } + } + ri += 1; + if (dirty) redraw.push($x); + } + } + }); + for (i=0;i-1) { + var $x = $o.eq(pos); + if (!$x.is(':checked')) { + $x.prop('checked', true); + if (jqcheck) $x.checkboxradio('refresh'); + } + } else if (!jqcheck) $o.each(function(){$(this).prop('checked',false)}); + } + if (pos==-1) for (var ind=0; ind<$o.length; ind++) { + if ($o.eq(ind).is(':checked')) pos=ind; + } + return pos!=-1 ? $o.eq(pos).val() : ''; + }, + + ':checkbox': function ($o, v0) { + //checkbox + var v = v0, a = []; + if (n(v)) { + if (!isA(v)) v = [v0]; + var jqcheck = !!$o.eq(0).checkboxradio; + $o.each(function(ind) { + var $x = $(this), val = $x.val(), on = $x.is(":checked"); + if (v.indexOf(val)!=-1) { + a.push(val); + if (!on) $x.prop('checked', true); + } else if (on) $x.prop('checked', false); + if (jqcheck) $x.checkboxradio('refresh'); + }); + } else { + $o.each(function(){ + var $x = $(this); + if ($x.is(':checked')) a.push($x.val()); + }); + } + return a; + } + }), + + 'select': ({ + '.ui-slider-switch': function ($o, v) { + //on-off in jQ Mobile + if (n(v)) { + $o.val(v + ''); + $o.slider('refresh'); + } + }, + 'div.select2-container+select':{ + '[multiple]': function ($o, v) { + if (n(v)) $o.select2('val', isA(v) ? v : [v]); + return $o.select2('val'); + }, + '':function ($o, v) { + if (n(v)) $o.select2('val', v + ''); + return $o.select2('val'); + } + }, + '.select2-hidden-accessible':{ + // select2 v4 + '[multiple]': function ($o, v) { + if (n(v) && JSON.stringify(v) !== JSON.stringify($o.select2('val'))) { + $o.val(isA(v) ? v : [v]).trigger('change.select2'); + } + return $o.select2('val'); + }, + '':function ($o, v) { + if (n(v)) $o.val(v + '').trigger('change.select2'); + return $o.val(); + } + }, + '[multiple]': function ($o, v) { + if (n(v)) { + $o.val(v, []); + if ($o.selectmenu && ($o.data('uiSelectmenu') || $o.data('selectmenu'))) $o.selectmenu('refresh', true); + //the only way to check if we have jQ UI selectmenu() attached + } + return $o.val()||[]; + }, + '': function ($o, v) { + if (n(v)) { + $o.val(v + ''); + if ($o.selectmenu && ($o.data('uiSelectmenu') || $o.data('selectmenu'))) $o.selectmenu('refresh', true); + } + } + }), + + 'textarea': ({ + // textarea or rich editor over + '.my-cleditor':function ($o,v) { + if(n(v)) $o.val(v).cleditor()[0].updateFrame(); + return $o.val(); + }, + 'div.redactor_box textarea,.redactor': function ($o,v) { + var r9 = $o.hasClass('my-redactor-9'); + if(n(v)) { + if(r9) $o.redactor('set', v); + else $o.setCode(v, false); + return v; + } + return r9 ? $o.redactor('get') : $o.getCode(); + }, + '.my-codemirror':function ($o,v){ + if (n(v)) { + $o[0].nextSibling.CodeMirror.setValue(v); + return v; + } + return $o[0].nextSibling.CodeMirror.getValue(); + }, + '':function ($o,v) {if(n(v)) $o.val(v + '');} + }), + + 'fieldset,form,section,footer,aside,.my-container': (function ($o, v) { + //object is class-manageable container, + //value is an array of css rules + var clist = _slice($o[0], 0).sort(), + list = v; + if (n(v)) { + if (isS(v)) list = v.split(/[,\s]+/).compact(true); + if (isA(list)) { + list.sort(); + if (list.join(" ")!==clist.join(" ")) { + $o.attr("css", list.join(" ")); + clist = list; + } + } + } + return clist; + }), + + 'div,span': ({ + '.ui-slider':function ($o, v){ + if(n(v)) $o.slider('option', $o.slider('option', 'values') ? 'values' : 'value', f.clone(v)); + return f.clone($o.slider('option', 'values') || $o.slider('option', 'value') || 0); + }, + '.ui-buttonset': function ($o, v) { + //jQ UI buttonset () + if (!n(v)) { + var jor = $o.find(':radio:checked'); + if (jor.length && jor.button) return jor.val() || jor.button('option', 'label') ; + } else if (v == '') { + var jon = N; + $o.find(':radio').each(function () { + jon= ($(this).val() || $(this).button('option', 'label'))==v ? $(this) : jon ; + }); + if (jon) { + jon.attr('checked', true); + $o.buttonset('refresh'); + return v; + } + } + $o.find(':radio:checked').attr('checked',false); + $o.buttonset('refresh'); + return ''; + }, + '.ace_editor':function ($o,v) { + if(n(v)) ace.edit($o[0]).setValue(v); + return ace.edit($o[0]).getValue(v); + }, + '': function ($o,v) { + if(n(v)) $o.html(v); + return $o.html(); + } + }), + + 'a,p,li,td,th,h1,h2,h3,h4,h5,h6,pre,code':function ($o,v) { + if(n(v)) $o.html(v); + return $o.html(); + }, + 'img':function ($o,v) { + if (n(v)) $o.attr('src', v); + return $o.attr('src') || ''; + }, + '':function ($o,v) { + if (n(v)) $o.html(v); + return $o.html() || $o.text() || ($o.val() + '') || ''; + } + }, + + + //messages + //######################################################## + + msg:{ + "":{en:"Invalid input", ru:"Неверное значение"}, + + formError:{en:"Form error",ru:"Ошибка формы"}, + initFailed:{ + en:'

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;c1.4*q||w-h.stamp>100||!h.stashed||h.stashed.length!==y.length-(t?1:0)){t&&(g=a.find(">."+r+"-helper"));var D=0;for(y.each(function(a,b){var c,d,e,f=x(b),h=!1;t&&f.hasClass(r+"-helper")||(t&&f.hasClass(r+"-placeholder")&&(f=g),c=f.data("my"),d=f.data("formlist"),c&&d&&(u.push(c.data),D!=d.index&&(d.index=D,h=!0),p&&(e=m(c.data,D)+"")!==d.hash&&(d.hash=e,h=!0),D+=1,h&&v.push(f)))}),c=0;c-1){var e=a.eq(c);e.is(":checked")||(e.prop("checked",!0),d&&e.checkboxradio("refresh"))}else d||a.each(function(){x(this).prop("checked",!1)})}if(-1==c)for(var f=0;fForm 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:"Обязательное поле"}},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$/.test(k.list)?f=k.list:h=k.list||h,!f){var l=">*"==h?x(a[0].children):xx(a,h,!0);f="
",l.length&&(f=x(f).append(l.eq(0).clone(!0)).html(),l.eq(0).remove())}a.data("formlist")||a.data("formlist",{}),a.data("formlist").generator={manifest:g,delay:(k.delay||j.delay||10)/1.3,template:f,selector:h,parent:v,bind:k.bind,merge:t(k.merge)?k.merge.bind(v):!!k.merge&&$,hash:t(k.hash)?k.hash.bind(v):p(k.hash)?D.fill(void 0,k.hash):n(k.hash)?F.fill(void 0,k.hash.slice(0)):null,id:t(k.id)?k.id.bind(v):p(k.id)?D.fill(void 0,k.id):n(k.id)?F.fill(void 0,k.id.slice(0)):null,ext:!(!k.id&&!k.hash),stamp:0},a.on("insert.my",function(a,b){a.stopPropagation();var c={what:void 0,where:0};null==b?c.where=1e6:q(b)?y(c,b):(p(b)||r(b))&&(c.where=b),x(a.target).my("insert",c.where,c.what)}),a.on("remove.my",function(a){a.stopPropagation(),x(a.target).my("remove")})}else try{b=ux.call(a,bx(v,g),q(e)?e:void 0)}catch(x){A("$.my subform init of "+d+" failed: "+x.message,x.stack)}}u(b)?b.then(G,function(x,a){A("Init of subform "+d+" failed with error: "+x,a)}):G()}function A(x,a){O(x,a),o&&o.reject(x,a)}function D(x,a){var b=U(x,a)||"";return"string"==typeof b?b:Y(b)}function F(x,a){return Y(nx(x,a))}function G(){a.each(function(){var e,g,m,n=x(this),o=n[0].nodeName,p=!1;if("TEXTAREA"==o&&(g=(m=n[0].nextSibling)&&m.CodeMirror?m.CodeMirror:null)&&n.addClass("my-codemirror"),e=k.events||yx(n,K.events),n.hasClass("my-form")?B(n.data("my"),{dui:k,root:b,selector:d,dparams:j,devents:e,ddata:i.data,container:j.container(n),derrors:i.errors,single:!0}):(n.data("my",{events:e,selector:d,initial:f,previous:f,root:b,container:j.container(n),id:i.id,ui:k,data:i.data,params:j,errors:i.errors,single:1==w}),c._update=k.delay?zx.debounce(k.delay):E,p=!0),p)if(n.cleditor&&n.parent().hasClass("cleditorMain")){var q=n.cleditor()[0];if(q&&q.$frame&&q.$frame[0]){n.addClass("my-cleditor"),B(n.data("my"),{container:j.container(n)});var r,s=function(x){n.val(x).trigger(l)},t=Number.random(1e5,1e6-1);x(q.$frame[0]).attr("id","cleditCool"+t),r=document.frames?document.frames["cleditCool"+t].document:x("#cleditCool"+t)[0].contentWindow.document;var u=x(r).find("body");x(r).on("keyup.my",function(){s(x(this).find("body").html())}),n.parent().find("div.cleditorToolbar").on("click.my mouseup.my",function(){s(u.html())}),x("body").on("click","div.cleditorPopup",function(){s(u.html())})}}else if("TEXTAREA"==o&&n.parent().hasClass("redactor_box")){var v,y="my-redactor-9";try{v=n.getEditor(),y="my-redactor-8"}catch(x){v=n.redactor("getEditor")}v&&(n.addClass(y),v.on("input.my keyup.my blur.my",function(x){x.trigger("redactor")}.fill(n)))}else n.hasClass("ace_editor")?ace.edit(a[0]).on(l,function(x){x.trigger("ace")}.fill(n)):g&&g.on(l,function(x){x.trigger("codemirror")}.fill(n));n.my()._changed=hx.debounce(h),n.my()._recalc=sx.debounce(h),n.on(e,function(x){x.type==l&&x.stopPropagation(),p&&(i.locktill=I()+c.delay),n.my()._changed(n,b,c,j)}),/check(\.my)?/.test(e+"")||n.on("check.my",function(x){return n.my()._changed(n,b,c,j,!0),!1}),p||n.off("redraw.my"),n.on("recalc.my, redraw.my",function(x){x.stopPropagation(),n.my()._recalc(n,b,c,j)})}),o&&o.resolve()}}function gx(a,b){q(b)&&b.channel&&b.message&&xx(a,".my-listen-"+Y(b.channel),!0).each(function(){var a,c,d=x(this),e=d.data("my");if(e&&e.ui.listen&&t(e.ui.listen[b.channel])){a=e.ui.listen[b.channel];try{c=a.call(e.manifest||e.root.my().manifest,e.data,b.message,d)}catch(x){O("Listener failed",x.message,x.stack)}void 0!==c&&(null===c?d.trigger("check"):c&&d.trigger("recalc"))}})}function hx(x,a,b,c,d){var e,f=x.data("my");f&&(f.disabled?f.ddata||zx(x,E,b.recalcDepth||c.recalcDepth):(lx(f.ddata||f.data,f.dparams||f.params),d||(e=f.single?x:xx(a,f.selector)),zx(x,d?E:kx(e,E),b.recalcDepth||c.recalcDepth),c.change&&c.change.call(x)))}function ix(a,b,c){var d=c.compact(),e=d.replace(/:disabled/g,""),f=e!==d,g="self:"==e.substr(0,5);return g&&(e=e.replace(/^self:/g,"")),b.each(function(){var c=x(this),d=c.my();(!g&&d?d.container:c).toggleClass(e,!!a),f&&void 0!==d&&!!a!=!!d.disabled&&(c.my().disabled=!!a,d._disable||(c.my()._disable=yx(b,K.offon).fill(void 0,b)),d._disable(!!a))}),b}function jx(x,a,b){return x[a](b?"disable":"enable")}function kx(x,a){var b,c,d=x.data("myval");return d||(c=yx(x,K.vals),t(c)&&(void 0===(b=c(x,E))?x.data("myval",function(x,a){return E!=a&&c(x,a),x.val()}.fill(x,void 0)):x.data("myval",c.fill(x,void 0))),d=x.data("myval")),t(d)?(((b=d())!==a&&(0==a||0==b)||b!=a||q(a))&&(b=d(a)),b):E}function lx(x,a,b,c){var d,e,f,g,h,i,j,k,m,n=a;if(!q(n)||isNaN(g=n.remember)||!q(d=n.history))return E;if(q(x)&&g){if(i=z(x,!0),j=I(),(f=A(d).sort()).length&&(j-f.last()=2*g){for(m={},e=g;e<2*g;e++)m[f[e]]=d[f[e]];a.history=m}return c||n.form.trigger(l),n.history[f.last()]}if(!isNaN(x)||x===E){if((h=parseInt(x)||0)<0)return E;if(h>=(f=A(d).sort()).length&&(h=f.length-1),k=z(n.history[f[f.length-h-1]],!0),b){for(m={},e=0;e-1))&&(d=f[e[h]]={});return x}function qx(x,a,b){var c=q(a)?a:null,d=b||(c?c.params:null)||{delay:0},e={css:!0,check:!0,manifest:!0,list:!0,hash:!0,id:!0},f=/\s?[,;]\s?/,g=/,\s*|\s+/g;if(d.normalized)return x;for(var h,l,o=A(x||{}),p=[],r=0;r-1&&!w[k]&&(w[k]=function(){lx(!0)}.debounce(r.restyle)),ax.data("my").restyle=lx.fill(!0).debounce(0)),ax.data("my").localStyle=D,a||ax.addClass("my-restyle"))}function c(x,a){var b="\n",c=/@keyframes/,d=!1,e=b+x.map(function(x){return/^\s*@/.test(x)||"}"==x?(c.test(x)?d=!0:"}"==x&&(d=!1),x):((d?"":"."+a)+x).replace(/\s+/g," ")}).join(b)+b;return'"}}function nx(){var x,a,c=!0;if(a=dx(G),p(a))yx("Error decoding base64 to local Blob/URL",a),c=!1;else{if(b)for(x=0;x*").clone();try{F=rx(G,s.init,ax,s)}catch(x){return yx(p(x)?x:x.message,x.stack),ax}}if(u(F)?F.then(function(){sx()},function(x,a){yx(x,a)}):sx(),!R){if(!ax.my())return yx("Internal error initializing controls.",""),ax;ax.data("my").initial=B(!0,{},I),x.mobile&&x.mobile.changePage(x.mobile.activePage)}}function sx(){var x={},a=Object.keys(o),b=a.length;function c(a){R||(x[a]=kx(xx(ax,a),E),(b-=1)<1&&tx(x))}b<1?ux():(ax.addClass(T),a.forEach(function(x){if(!R){var a=xx(ax,x),b=fx(a,ax,o[x],x);_[x]=a,u(b)?b.then(c.fill(x)).fail(function(a,b){yx("Error building "+x+", "+a,b)}):R||c(x)}}))}function tx(x){A(o).forEach(function(a){if(!R){var b,c=o[a],d=_[a];if(d.length){c.listen&&(N[a]=d.eq(0));try{null===(b=ex(I,null,c,d))&&null!=x[a]&&ex(I,x[a],c,d)}catch(x){O("Transient fail linking "+a+' of form $(".my-form-'+k+'")',x.message,x.stack)}try{null!=b&&kx(d,b),d.eq(0).trigger("check.my")}catch(x){yx("Error linking "+a,x.message)}}}}),R||ux()}function ux(){ax.removeClass(T),ax.on("recalc.my, redraw.my",function(x){x.stopPropagation(),ax.my("redraw")}),$=null,Q.resolve(I)}function yx(x,a){var b;if(R=!0,O("Form "+j+" failed to initialize.",x,a),Object.keys(_).forEach(function(x){delete _[x]}),ax.removeClass(T),b=S(x,a),p(b)||q(b)&&b.jquery?ax.html(b):!0===b&&ax.html($),r.silent)Q.resolve(I);else{if(!ax.my().ddata){if(ax.removeData("my"),ax.removeClass("my-form"),z)if("1"==z.data("count"))try{z.remove()}catch(x){}else z.data("count",z.data("count")-1);if(D)try{delete w[k],D.remove()}catch(x){}}Q.reject("Form "+j+" failed to initialize: "+x,a)}}}function vx(x,a){var b=[],c=[],d=a;return q(d)&&q(d.style)?(e(a.style,"",b,c),[b,c]):"";function e(b,c,d,g){var h,i,j,k,l=b,m=/@/.test(c),o=c.split("@")[0],r=t(l);if(m&&(r?g:d).push("@"+c.split("@")[1].trim()+" {"),p(l)&&(/[\r\n]/.test(l)||l.split("}",3).length>2?l=L.css2json(l):d.push(o+(/\{/.test(l)?l:"{"+l+"}"))),n(l)&&l.length)for(h=0;hc&&null!=h&&!i)return b=h,c=f,void 0;i&&e(x,h,f+1)}}),null==b&&null!=a[""]&&!q(a[""])&&f>c&&(b=a[""],c=f)}}function zx(x,a,b){var c,d,e,f,g,h,i,j,k,l=!1,m=!1,n=x,o=n.my(),q="";if(o){if(h=o.selector,(i=o.root).hasClass("my-form-init"))return{};if(j=xx(i,h),(l=x.hasClass("my-form"))?(c=x,d=o.ddata,e=o.dui,f=o.dparams):(c=o.container,d=o.data,e=o.ui,f=o.params),e.bind!=E){if(g=F(a)?a:kx(j,ex(d,E,e,j)),E!=e.check){q="Unknown error";try{q=Gx(d,g,e,j)}catch(x){O("Error "+x.message+" in .check validator for "+h,i,x.stack)}}var r=f.errorCss,u="ui-state-error";try{E!=a&&(g=kx(j,ex(d,a,e,j)))}catch(x){q=f.messages.formError||"Error"}if(E!=e.check)if(m=x.hasClass("my-form-list"),""==q&&(l||m||c.hasClass(r)))l?o.derrors[h]="":o.errors[h]="",c.removeClass(r),c.attr("title")&&c.attr("title",""),l||m||f.effect(xx(c,f.errorTip),!1,f.animate/2),n.removeClass(u),xx(n,".ui-widget").removeClass(u);else if(q){if(l)o.derrors[h]=q;else if(m)o.errors[h]=q;else{c.addClass(r),o.errors[h]=q;var v=xx(c,f.errorTip);v.length?f.effect(v.addClass(r).html(p(q)?q:"Error"),!0,f.animate):c.attr("title",(p(q)?q:"Error").stripTags())}n.hasClass("hasDatepicker")&&(n.is("input")?n.addClass(u):xx(n,".ui-widget").addClass(u)),n.hasClass("ui-slider")&&n.addClass(u)}}var w=a==E?g:a;e.css&&A(e.css).forEach(function(x){var a=e.css[x];s(a)?ix(a.test(w),j,x):t(a)&&ix(a.call(i.my().manifest,d,w,j),j,x)});var y,z,C=e.recalc,D=[],G={};if(b&&e.recalc&&i.my()){for(k=i.my().ui,y=0;y0&&(c.maxWidth=b);var d=cx(c.maxWidth)?_(c.maxWidth,8,1e4):80,e=bx(c.keyGap)?c.keyGap:" ",f=xx(e),g=bx(c.valueGap)?c.valueGap:" ",h=xx(g),i=c.tabSubst,j=bx(c.tabChars)?c.tabChars:"",k=/\t/.test(j+g+e),l=j.length,m=xx(j),n=!!c.allowFns,o=(c.untabFns,!!c.allowJS),p=!!c.alignJS,q="",r=[],s="",t=x,u=N(x),v=0,w=0,y=null,z=null,A=null,B="",C=0,D=0;if(!S(u))return null==u?void 0:P(O(x,null," ").replace(/,\n\s*/g,",").replace(/\n(\s)*/g,""));L(u);for(var E=r.length-1;E>0;E--)r[r[E].up].ctr+=1;var F;for(E=1;E-1&&G.lvl>1&&r[G.up].ctr>1&&(G.len+=d));for(E=r.length-1;E>0;E--)r[r[E].up].len+=r[E].len;var G,H,I,J=Array(r.length);for(E=0;E=I)}return(r=r.reduce(function(x,a){return null!==a&&x.push(a),x},[])).forEach(function(x,a){J[x.i]=a,a&&(x.up=J[x.up],x.i=a)}),q=Z(j,w+1),K(0),s;function K(x,a){a=!!a;var b,g=r[x],h=x+1,i="";if(s+=(a||!x?"":R(g.lvl))+(null!==g.key?g.key+":"+e:"")+g.val,!a&&g.lvl&&g.len<=d-(g.lvl-D)*m)for(var j=1;r[h]&&r[h].up>=x;h++)S((b=r[h]).t)&&(j+=1),s+=(null!==b.key?b.key+":"+e:"")+T(b,-j);else if("o"==g.t)for(;r[h]&&r[h].up==x;h++)if(b=r[h],a&&!b.t)c.chain?(s+=r[b.up].ctr>1||h-b.up==2?R(b.lvl):"",s+=b.val,D&&1==r[b.up].ctr&&h-b.up>2&&(D-=1)):s+=R(b.lvl)+b.val;else if(S(b.t))if(c.chain&&1==g.ctr&&b.lvl>1){var k=1;for(j=0;1==r[h-k].ctr&&k<=D+1&&!r[h-k].br;k++)j+=null==r[h-k].key?1:r[h-k].key.length+f+2;(j+=b.key.length+f+2+(b.lvl-k+1)*m)<=d-l?(D+=1,h=K(h,a=!0)):(D&&(r[h-1].br=!0),h=K(h,a=!1))}else h=K(h);else s+=R(b.lvl)+(null!==b.key?b.key+":"+e:"")+T(b);else if("a"==g.t)for(;r[h]&&r[h].up==x;h++)(b=r[h]).t&&!S(b.t)?b.br?(s+=i+R(b.lvl)+T(b),i=""):i.length?'"<'==b.val.substr(0,2)||xx(i)+b.len>d+1?(s+=i,i=R(b.lvl)+b.val):i+=b.val:i=R(b.lvl)+b.val:b.t?(s+=i,i="",h=K(h)):(s+=i+R(b.lvl)+b.val,i="");return h-1}function L(x){u=x,C=null==A?1:A.length+4+f,B="o"==x?"{":"[";M();y=r.length-1,v+=1;for(var a=y,b=z=u,c=t,d="o"==x?Object.keys(c):c,e=d.length,g=0;g-1}function Y(x){return Object.prototype.toString.call(x)}function Z(x,a){for(var b="",c=0;c-1?"":l;case"s":return b==h?"":l;case"o":return h[b]?"":l;case"b":return d.hasClass("my-form-list")?(f=d.data("listSrc")||d.data("my").listSrc||">*",g={},i=0,(">*"==f?x(d[0].children):xx(d,f,!0)).each(function(a){var b=x(this);b.hasClass("ui-sortable-placeholder")||(b.data("my")&&!b.my("valid")&&(g[i]=b.my("errors")),i+=1)}),g):d.hasClass("my-form")&&h?d.my("valid")?"":d.my("errors"):""}return j.formError||"Error"}return""}}(jQuery),function(x){var a=x.extend,b="string",c="function",d=Object.isArray,e=(Object.isBoolean,Object.isString),f=Object.isObject,g=(Object.isNumber,Object.isRegExp,Object.isFunction,Object.keys),h='',inp:h+'text" {ext}/>',sli:h+'range" {ext}/>',dat:h+'date" {ext}/>',btn:h+'button" {ext}/>',pwd:h+'password" {ext}/>',but:"",div:"
{txt}
",spn:"{txt}",sel:"",mul:'',txt:"",err:' {txt}',msg:'
{txt}
',val:function(x){if(!d(x.vals))return"";var b=a({style:"",css:""},x);return b.txt=x.vals.reduce(function(x,a){return x+""+a+" "}," "),'{txt}'.assign(b)},"":"<{_tag} {ext}>{txt}"},txt:{sel:function(x){if(!x.vals)return"";var a=k(x.vals);return g(a).reduce(function(x,b){return x+'"},"")}},params:{styles:{num:"width:30%;",dat:"width:30%;",inp:"width:100%",pwd:"width:100%",txt:"width:100%;max-width:100%;min-height:1px;word-break:break-word;",err:"display:none",msg:"display:none"},alias:{number:"num",date:"dat",slider:"sli",textarea:"txt",input:"inp",span:"spn",select:"select",vals:"val"},row:"",rowTag:"div",rowCss:"my-row",label:"",labelTag:"span",labelCss:"my-label"},defaults:{id:"",class:"",style:"",placeholder:"",value:"",rows:1},attnames:{css:"class",plc:"placeholder",val:"value",txt:"",vals:"",tip:"title"}};function j(x,h,j){if(e(h))return x+h;if(f(h))return a(!0,j,h),x;if(d(h)&&h.length>1&&e(h[1])){for(var k,l,m,n,o,p,q,r=h[0],s="",t=1;t'+(r?"<"+j.labelTag+' class="'+j.labelCss+'" '+(j.label?'style="display:inline-block;width:'+j.label+";margin-left:-"+j.label+'" ':"")+">"+r+"":"")+s+""),x+s}return x}function k(x){var a=x;if(e(a)&&(a=a.split(/[\s,]/).compact(!0)),d(a)){for(var b={},c=0;c

',ui:{"img:eq(0)":"img",h4:{bind:"text",css:{hide:function(x,a){return!a}}}}},data:{img:m.attr("src"),text:l},esc:!0,screen:!0,width:d||n,focus:!1,global:!0,z:"1995"},c));else if(k(b)&&b.manifest)f(a,b,c);else{if(!j(b))return null;f(a,{source:"html",manifest:{init:function(x){x.html(this.HTML)},HTML:b,ui:{"div:eq(0)":function(){}}},data:{},esc:!0,focus:!1,width:d},c)}return a}c.modal=function(a,b,c){var f,g={},h=x(d),j=h.find(">.my-modal-proxy"),k={global:!0,screen:!0,done:m(b)?b:void 0,z:"1995"};return i(a)||null==a?j.modal(a):(f=x.Deferred(),o(g,a,k,c)?e?f.reject("Locked").promise():(j.length||(j=x('
').prependTo(h)).css({position:"absolute",top:"0",left:"0",margin:"0",padding:"0",width:"1px",height:"0"}),j.modal(g)):f.reject("Invalid data").promise())},c.modal.loading=function(a){x(d).find(">.my-modal").toggleClass("my-modal-loading",!!a)},c.modal.parent=function(a){if(!a||!x(a).length)return x(d);d=a},c.modal.parentBack=function(b){if(!b||!x(b).length)return x(a||d);a=b},c.modal.visible=function(){return!!e},x.my||(x.my={}),x.my.modal=c.modal,x.fn.modal=function(c,n,p){if(b){if(void 0===c&&void 0===n&&void 0===p)return b.call(this);if(k(c)&&(c.hasOwnProperty("backdrop")||c.hasOwnProperty("keyborad")||c.hasOwnProperty("show")))return b.call(this,c,n);if(j(c)&&/^(toggle|show|hide|handleUpdate)$/.test(c))return b.call(this,c,n)}var q,r,s,t,u,v,w=x.Deferred(),y={},z=this,A=0,B=m(n)?n:function(){return!1},C=k(c)?c:{},D=z.data("modal");if(f(z,w.promise()),D){if(null==c||i(c))return E(c),z;if(C)return I("Locked"),z}return z.is(":visible")?(C=o(y,c,{}))?C.global&&e?(I("Locked"),z):((D=f({type:"DOM",source:"manifest",form:null,modal:null,root:null,bgroot:null,caller:z,manifest:{},data:{},global:!1,screen:!1,drag:!1,focus:!0,close:!0,silent:!0,esc:!1,enter:!1,bound:!1,hardClose:!0,nose:"",width:p||300,height:null,x:"0",y:"0",z:"1901",background:"white",css:"",animate:200},C,{promise:w.promise(),cid:Number.random(268435456,4294967295).toString(16)})).done=m(D.done)?D.done:B,j(D.align)&&D.align&&(D.x=(D.align.match(/(left|right):\-?\d+(\.\d+)?(%|px)?/g)||["0"])[0],D.y=(D.align.match(/(top|bottom):\-?\d+(\.\d+)?(%|px)?/g)||["0"])[0]),D.width=1*(x.my.f.getref(j(D.manifest)?x.my.cache(D.manifest):D.manifest,"params.width")||D.width),D.type="DOM",z.hasClass("my-form")?(D.type="form",D.root=D.root||z):z.data("my")?(D.type="control",D.root=D.root||z.my().root):(D.root=D.root||z.parents(".my-form").eq(0),D.root.length||(D.root=x(d))),D.global?(D.root=x(d),D.bgroot=x(a||d)):D.bgroot=D.bgroot?x(D.bgroot):D.root,(s=D.root).data("modals")||s.data("modals",{}),F(),q=x('
'),D.root.find(">.my-modal").length?q.insertAfter(D.root.find(">.my-modal").last()):q.prependTo(D.root),q.addClass("my-modal-"+D.cid),A=q.outerWidth(),q.hide(),q.html('
'),r=q.find(".my-modal-form"),D.close&&x(j(D.close)?D.close:'
×
').prependTo(q).on("click.my",function(){E(D.hardClose)}).css({"z-index":("+"===(D.z+"").to(1)?"+":"")+(1*D.z+1)}),t=D.bgroot.find(">.my-modal-screen"),D.screen&&(t.length||(t=x('').prependTo(D.bgroot)),D.esc&&t.on("click.my"+D.cid,function(){z.modal(!0)}),t.toggleClass("my-modal-screen-global",!!D.global)),z.data("modal",D),D.silent&&q.on("change.my",function(){return!1}),q.css({display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto"}),D.global?q.css({position:"fixed",left:"50%",top:D.pos.vy+"px",display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto","margin-left":"-"+((D.width+A)/2).round(0)+"px"}):q.css({position:"absolute",left:D.pos.vx+"px",top:D.pos.vy+"px",display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto"}),r.my(D.manifest,D.data).then(function(){var a,b,c;if(f(D,{form:r,bg:t,cancel:function(){E(!0)},commit:function(){E()}}),q.data("modal",D),D.height=q.outerHeight(),"manifest"!==D.source&&(D.width=q.width()),F(),q.css({top:D.pos.vy+"px"}),G(!0),q.removeClass("my-modal-init"),s.data("modals")[D.cid]=D,g[D.cid]=w,r.on("commit.my",function(){return D.commit.delay(30),!1}).on("cancel.my",function(){return D.cancel.delay(30),!1}),q.on("layout.my",function(){G()}.debounce(30)),D.global&&(e=z,x(document.body).css({overflow:"hidden"})),D.global||!D.esc&&!D.enter||r.on("keydown.my",function(a){var b=a.keyCode;return 27==b&&D.esc?(D.cancel(),!1):13==b&&D.enter&&!x(a.target).is("textarea")?(D.commit.delay(50),!1):void 0}),!0===D.focus?(b=!1,c=D.manifest.ui,Object.keys(c||{}).forEach(function(x){if(!b){var a=r.find(x);a.length&&a.is("input, textarea, button")&&(b=!0,a.focus())}})):j(D.focus)&&r.find(D.focus).focus(),(a=r.find("img").filter(function(){return""!=x(this).attr("src")})).length){var d=function(){"manifest"!==D.source&&q.css({width:"auto"}),G()}.after(a.length);a.each(function(){x(this).bind("load",d)})}D.drag&&x.fn.draggable&&(j(D.drag)?q.draggable({handle:D.drag}):q.draggable(),D.nose&&q.on("dragstart.my",function(){q.removeClass("nose-"+D.nose)})),q.on("mousedown.my",function(a){var b=[],c=x(a.currentTarget),d=c.parent(),e=+c.css("z-index"),f=e;d.length&&(d.find(">.my-modal").each(function(c,d){var g=+x(d).css("z-index")||0;d!=a.currentTarget&&g>=e&&b.push([g,x(d)]),g>f&&(f=g)}),b.forEach(function(x){x[1].css("z-index",x[0]-1+"")}),c.css("z-index",f+""))}),w.notify("Ready")}).fail(function(x){try{H()}catch(x){}z.data("modal",null),w.reject(x)}),z):(I("Invalid data"),z):(I("Object must be visible"),z);function E(x){if(r=D.form,t=D.bg,s=D.root,B=D.done,u=r.my("data"),v=!1,x){try{B.call(r.my("manifest"),null,null)}catch(x){}try{h(r)&&H()}catch(x){}if(h(z)&&z.removeData("modal"),g[D.cid])try{g[D.cid].reject("Cancelled")}catch(x){}delete g[D.cid],D=null}else{try{v=B.call(r.my("manifest"),r.my("valid")?null:r.my("errors"),u)}catch(x){}if(!v){try{h(r)&&H()}catch(x){}h(z)&&z.removeData("modal"),function(){if(g[D.cid])try{g[D.cid].resolve(u)}catch(x){}delete g[D.cid],D=null}.delay(0)}}}function F(){var a,b,c=window,d=!!D.global,e=s.offset(),f=z.offset(),g=s.scrollTop();D.pos={px:e.left,py:e.top,pw:s.outerWidth(),ph:s.outerHeight(),ox:f.left,oy:f.top,ow:z.outerWidth(),oh:z.outerHeight(),ww:b,wh:a};var h=1*(D.x.match(/\-?\d+(\.\d+)?/)||[0])[0],i=1*(D.y.match(/\-?\d+(\.\d+)?/)||[0])[0],j=D.x.has("left")?-1:D.x.has("right")?1:0,k=D.y.has("top")?-1:D.y.has("bottom")?1:0,m=D.pos.ox+D.pos.ow/2-D.pos.px,n=D.pos.oy+D.pos.oh/2-D.pos.py;if(d&&(D.pos.wh=a=c.innerHeight||x(c).height(),D.pos.ww=b=c.innerWidth||x(c).width(),m=b/2,n=a/2.5),h=D.x.has("%")?D.pos.ow/100*h:h,i=D.y.has("%")?D.pos.oh/100*i:i,D.pos.pix=m,D.pos.piy=n,m=m+j*(D.pos.ow/2)+h*(j>0?-1:1)-(D.width+A)*(j+1)/2,d?(n=(a-D.height-20)/3)<10&&(n=10):n=n+k*(D.pos.oh/2)+i*(k>0?-1:1)-(D.height||0)*(k+1)/2,m=m.round(1),n=(n+g).round(1),D.pos.vx=m,D.pos.vy=n,!1!==D.bound&&!D.global){var o=(l(D.bound)?D.bound:0).clamp(-100,100);D.pos.pw-2*oD.pos.pw-o?D.pos.vx=D.pos.pw-o-D.width-A:D.pos.vxD.pos.ph-o?D.pos.vy=D.pos.ph-o-D.height:D.pos.vy');var b="",c=x("style#my-modal-style-"+D.cid);"top"==D.nose||"bottom"==D.nose?(b+="div.my-modal-"+D.cid+".nose-"+D.nose+":before {left:"+(D.pos.ox-D.pos.px+D.pos.ow/2-D.pos.vx)+"px!important;}",c.text(b)):"left"!=D.nose&&"right"!=D.nose||(b+="div.my-modal-"+D.cid+".nose-"+D.nose+":before {top:"+(D.pos.oy-D.pos.py+D.pos.oh/2-D.pos.vy)+"px!important;}",c.text(b))}D.screen?D.global?(t.css({top:0,left:0,width:"100%",height:"100%",display:"block",position:"fixed","z-index":D.z-1}),j(D.screen)?t.css({background:D.screen?D.screen:"rgba(18,41,72,0.88)"}):t.css({background:D.screen?"rgba(18,41,72,0.88)":""})):t.css({top:0,left:0,position:"absolute",width:t.parent().outerWidth()+"px",height:t.parent().outerHeight()+"px",display:"block",background:j(D.screen)?D.screen:"rgba(255,255,255,0.6)","z-index":D.z-1}):t.length&&t.hide(),D.height>D.pos.wh?(q.height(D.pos.wh-30),r.css({"overflow-y":"scroll"})):r.css({"overflow-y":""}),q.animate({top:D.pos.vy+"px",opacity:"1"},D.animate)}function H(){try{r.my("remove")}catch(x){}try{s.data("modals")[D.cid]=null}catch(x){}r.parent().off(".my").remove(),h(t)&&t.off(".my"+D.cid),D.screen&&h(t)&&function(x){x&&e||t.hide(),x&&!e&&t.css({background:"rgba(18,41,72,0.88)"})}.delay(50,D.global),D.global&&(e=!1,x(document.body).css({overflow:""}))}function I(x){try{B(null,null)}catch(x){}(function(){w.reject(x)}).delay(0)}}}(jQuery); \ No newline at end of file diff --git a/Release/jquery.my.last.js b/Release/jquery.my.last.js index e3724fb..db9196b 100644 --- a/Release/jquery.my.last.js +++ b/Release/jquery.my.last.js @@ -1,2 +1,2 @@ -/*jQuery.my 1.3.3, (c) 2023 ermouth*/ -!function(x){var a="1.3.3",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;c1.4*q||w-h.stamp>100||!h.stashed||h.stashed.length!==y.length-(t?1:0)){t&&(g=a.find(">."+r+"-helper"));var D=0;for(y.each(function(a,b){var c,d,e,f=x(b),h=!1;t&&f.hasClass(r+"-helper")||(t&&f.hasClass(r+"-placeholder")&&(f=g),c=f.data("my"),d=f.data("formlist"),c&&d&&(u.push(c.data),D!=d.index&&(d.index=D,h=!0),p&&(e=m(c.data,D)+"")!==d.hash&&(d.hash=e,h=!0),D+=1,h&&v.push(f)))}),c=0;c-1){var e=a.eq(c);e.is(":checked")||(e.prop("checked",!0),d&&e.checkboxradio("refresh"))}else d||a.each(function(){x(this).prop("checked",!1)})}if(-1==c)for(var f=0;fForm 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:"Обязательное поле"}},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$/.test(k.list)?f=k.list:h=k.list||h,!f){var l=">*"==h?x(a[0].children):xx(a,h,!0);f="
",l.length&&(f=x(f).append(l.eq(0).clone(!0)).html(),l.eq(0).remove())}a.data("formlist")||a.data("formlist",{}),a.data("formlist").generator={manifest:g,delay:(k.delay||j.delay||10)/1.3,template:f,selector:h,parent:v,bind:k.bind,merge:t(k.merge)?k.merge.bind(v):!!k.merge&&$,hash:t(k.hash)?k.hash.bind(v):p(k.hash)?D.fill(void 0,k.hash):n(k.hash)?F.fill(void 0,k.hash.slice(0)):null,id:t(k.id)?k.id.bind(v):p(k.id)?D.fill(void 0,k.id):n(k.id)?F.fill(void 0,k.id.slice(0)):null,ext:!(!k.id&&!k.hash),stamp:0},a.on("insert.my",function(a,b){a.stopPropagation();var c={what:void 0,where:0};null==b?c.where=1e6:q(b)?y(c,b):(p(b)||r(b))&&(c.where=b),x(a.target).my("insert",c.where,c.what)}),a.on("remove.my",function(a){a.stopPropagation(),x(a.target).my("remove")})}else try{b=ux.call(a,bx(v,g),q(e)?e:void 0)}catch(x){A("$.my subform init of "+d+" failed: "+x.message,x.stack)}}u(b)?b.then(G,function(x,a){A("Init of subform "+d+" failed with error: "+x,a)}):G()}function A(x,a){O(x,a),o&&o.reject(x,a)}function D(x,a){var b=U(x,a)||"";return"string"==typeof b?b:Y(b)}function F(x,a){return Y(nx(x,a))}function G(){a.each(function(){var e,g,m,n=x(this),o=n[0].nodeName,p=!1;if("TEXTAREA"==o&&(g=(m=n[0].nextSibling)&&m.CodeMirror?m.CodeMirror:null)&&n.addClass("my-codemirror"),e=k.events||yx(n,K.events),n.hasClass("my-form")?B(n.data("my"),{dui:k,root:b,selector:d,dparams:j,devents:e,ddata:i.data,container:j.container(n),derrors:i.errors,single:!0}):(n.data("my",{events:e,selector:d,initial:f,previous:f,root:b,container:j.container(n),id:i.id,ui:k,data:i.data,params:j,errors:i.errors,single:1==w}),c._update=k.delay?zx.debounce(k.delay):E,p=!0),p)if(n.cleditor&&n.parent().hasClass("cleditorMain")){var q=n.cleditor()[0];if(q&&q.$frame&&q.$frame[0]){n.addClass("my-cleditor"),B(n.data("my"),{container:j.container(n)});var r,s=function(x){n.val(x).trigger(l)},t=Number.random(1e5,1e6-1);x(q.$frame[0]).attr("id","cleditCool"+t),r=document.frames?document.frames["cleditCool"+t].document:x("#cleditCool"+t)[0].contentWindow.document;var u=x(r).find("body");x(r).on("keyup.my",function(){s(x(this).find("body").html())}),n.parent().find("div.cleditorToolbar").on("click.my mouseup.my",function(){s(u.html())}),x("body").on("click","div.cleditorPopup",function(){s(u.html())})}}else if("TEXTAREA"==o&&n.parent().hasClass("redactor_box")){var v,y="my-redactor-9";try{v=n.getEditor(),y="my-redactor-8"}catch(x){v=n.redactor("getEditor")}v&&(n.addClass(y),v.on("input.my keyup.my blur.my",function(x){x.trigger("redactor")}.fill(n)))}else n.hasClass("ace_editor")?ace.edit(a[0]).on(l,function(x){x.trigger("ace")}.fill(n)):g&&g.on(l,function(x){x.trigger("codemirror")}.fill(n));n.my()._changed=hx.debounce(h),n.my()._recalc=sx.debounce(h),n.on(e,function(x){x.type==l&&x.stopPropagation(),p&&(i.locktill=I()+c.delay),n.my()._changed(n,b,c,j)}),/check(\.my)?/.test(e+"")||n.on("check.my",function(x){return n.my()._changed(n,b,c,j,!0),!1}),p||n.off("redraw.my"),n.on("recalc.my, redraw.my",function(x){x.stopPropagation(),n.my()._recalc(n,b,c,j)})}),o&&o.resolve()}}function gx(a,b){q(b)&&b.channel&&b.message&&xx(a,".my-listen-"+Y(b.channel),!0).each(function(){var a,c,d=x(this),e=d.data("my");if(e&&e.ui.listen&&t(e.ui.listen[b.channel])){a=e.ui.listen[b.channel];try{c=a.call(e.manifest||e.root.my().manifest,e.data,b.message,d)}catch(x){O("Listener failed",x.message,x.stack)}void 0!==c&&(null===c?d.trigger("check"):c&&d.trigger("recalc"))}})}function hx(x,a,b,c,d){var e,f=x.data("my");f&&(f.disabled?f.ddata||zx(x,E,b.recalcDepth||c.recalcDepth):(lx(f.ddata||f.data,f.dparams||f.params),d||(e=f.single?x:xx(a,f.selector)),zx(x,d?E:kx(e,E),b.recalcDepth||c.recalcDepth),c.change&&c.change.call(x)))}function ix(a,b,c){var d=c.compact(),e=d.replace(/:disabled/g,""),f=e!==d,g="self:"==e.substr(0,5);return g&&(e=e.replace(/^self:/g,"")),b.each(function(){var c=x(this),d=c.my();(!g&&d?d.container:c).toggleClass(e,!!a),f&&void 0!==d&&!!a!=!!d.disabled&&(c.my().disabled=!!a,d._disable||(c.my()._disable=yx(b,K.offon).fill(void 0,b)),d._disable(!!a))}),b}function jx(x,a,b){return x[a](b?"disable":"enable")}function kx(x,a){var b,c,d=x.data("myval");return d||(c=yx(x,K.vals),t(c)&&(void 0===(b=c(x,E))?x.data("myval",function(x,a){return E!=a&&c(x,a),x.val()}.fill(x,void 0)):x.data("myval",c.fill(x,void 0))),d=x.data("myval")),t(d)?(((b=d())!==a&&(0==a||0==b)||b!=a||q(a))&&(b=d(a)),b):E}function lx(x,a,b,c){var d,e,f,g,h,i,j,k,m,n=a;if(!q(n)||isNaN(g=n.remember)||!q(d=n.history))return E;if(q(x)&&g){if(i=z(x,!0),j=I(),(f=A(d).sort()).length&&(j-f.last()=2*g){for(m={},e=g;e<2*g;e++)m[f[e]]=d[f[e]];a.history=m}return c||n.form.trigger(l),n.history[f.last()]}if(!isNaN(x)||x===E){if((h=parseInt(x)||0)<0)return E;if(h>=(f=A(d).sort()).length&&(h=f.length-1),k=z(n.history[f[f.length-h-1]],!0),b){for(m={},e=0;e-1))&&(d=f[e[h]]={});return x}function qx(x,a,b){var c=q(a)?a:null,d=b||(c?c.params:null)||{delay:0},e={css:!0,check:!0,manifest:!0,list:!0,hash:!0,id:!0},f=/\s?[,;]\s?/,g=/,\s*|\s+/g;if(d.normalized)return x;for(var h,l,o=A(x||{}),p=[],r=0;r-1&&!w[k]&&(w[k]=function(){lx(!0)}.debounce(r.restyle)),ax.data("my").restyle=lx.fill(!0).debounce(0)),ax.data("my").localStyle=D,a||ax.addClass("my-restyle"))}function c(x,a){var b="\n",c=/@keyframes/,d=!1,e=b+x.map(function(x){return/^\s*@/.test(x)||"}"==x?(c.test(x)?d=!0:"}"==x&&(d=!1),x):((d?"":"."+a)+x).replace(/\s+/g," ")}).join(b)+b;return'"}}function nx(){var x,a,c=!0;if(a=dx(G),p(a))yx("Error decoding base64 to local Blob/URL",a),c=!1;else{if(b)for(x=0;x*").clone();try{F=rx(G,s.init,ax,s)}catch(x){return yx(p(x)?x:x.message,x.stack),ax}}if(u(F)?F.then(function(){sx()},function(x,a){yx(x,a)}):sx(),!R){if(!ax.my())return yx("Internal error initializing controls.",""),ax;ax.data("my").initial=B(!0,{},I),x.mobile&&x.mobile.changePage(x.mobile.activePage)}}function sx(){var x={},a=Object.keys(o),b=a.length;function c(a){R||(x[a]=kx(xx(ax,a),E),(b-=1)<1&&tx(x))}b<1?ux():(ax.addClass(T),a.forEach(function(x){if(!R){var a=xx(ax,x),b=fx(a,ax,o[x],x);_[x]=a,u(b)?b.then(c.fill(x)).fail(function(a,b){yx("Error building "+x+", "+a,b)}):R||c(x)}}))}function tx(x){A(o).forEach(function(a){if(!R){var b,c=o[a],d=_[a];if(d.length){c.listen&&(N[a]=d.eq(0));try{null===(b=ex(I,null,c,d))&&null!=x[a]&&ex(I,x[a],c,d)}catch(x){O("Transient fail linking "+a+' of form $(".my-form-'+k+'")',x.message,x.stack)}try{null!=b&&kx(d,b),d.eq(0).trigger("check.my")}catch(x){yx("Error linking "+a,x.message)}}}}),R||ux()}function ux(){ax.removeClass(T),ax.on("recalc.my, redraw.my",function(x){x.stopPropagation(),ax.my("redraw")}),$=null,Q.resolve(I)}function yx(x,a){var b;if(R=!0,O("Form "+j+" failed to initialize.",x,a),Object.keys(_).forEach(function(x){delete _[x]}),ax.removeClass(T),b=S(x,a),p(b)||q(b)&&b.jquery?ax.html(b):!0===b&&ax.html($),r.silent)Q.resolve(I);else{if(!ax.my().ddata){if(ax.removeData("my"),ax.removeClass("my-form"),z)if("1"==z.data("count"))try{z.remove()}catch(x){}else z.data("count",z.data("count")-1);if(D)try{delete w[k],D.remove()}catch(x){}}Q.reject("Form "+j+" failed to initialize: "+x,a)}}}function vx(x,a){var b=[],c=[],d=a;return q(d)&&q(d.style)?(e(a.style,"",b,c),[b,c]):"";function e(b,c,d,g){var h,i,j,k,l=b,m=/@/.test(c),o=c.split("@")[0],r=t(l);if(m&&(r?g:d).push("@"+c.split("@")[1].trim()+" {"),p(l)&&(/[\r\n]/.test(l)||l.split("}",3).length>2?l=L.css2json(l):d.push(o+(/\{/.test(l)?l:"{"+l+"}"))),n(l)&&l.length)for(h=0;hc&&null!=h&&!i)return b=h,c=f,void 0;i&&e(x,h,f+1)}}),null==b&&null!=a[""]&&!q(a[""])&&f>c&&(b=a[""],c=f)}}function zx(x,a,b){var c,d,e,f,g,h,i,j,k,l=!1,m=!1,n=x,o=n.my(),q="";if(o){if(h=o.selector,(i=o.root).hasClass("my-form-init"))return{};if(j=xx(i,h),(l=x.hasClass("my-form"))?(c=x,d=o.ddata,e=o.dui,f=o.dparams):(c=o.container,d=o.data,e=o.ui,f=o.params),e.bind!=E){if(g=F(a)?a:kx(j,ex(d,E,e,j)),E!=e.check){q="Unknown error";try{q=Hx(d,g,e,j)}catch(x){O("Error "+x.message+" in .check validator for "+h,i,x.stack)}}var r=f.errorCss,u="ui-state-error";try{E!=a&&(g=kx(j,ex(d,a,e,j)))}catch(x){q=f.messages.formError||"Error"}if(E!=e.check)if(m=x.hasClass("my-form-list"),""==q&&(l||m||c.hasClass(r)))l?o.derrors[h]="":o.errors[h]="",c.removeClass(r),c.attr("title")&&c.attr("title",""),l||m||f.effect(xx(c,f.errorTip),!1,f.animate/2),n.removeClass(u),xx(n,".ui-widget").removeClass(u);else if(q){if(l)o.derrors[h]=q;else if(m)o.errors[h]=q;else{c.addClass(r),o.errors[h]=q;var v=xx(c,f.errorTip);v.length?f.effect(v.addClass(r).html(p(q)?q:"Error"),!0,f.animate):c.attr("title",(p(q)?q:"Error").stripTags())}n.hasClass("hasDatepicker")&&(n.is("input")?n.addClass(u):xx(n,".ui-widget").addClass(u)),n.hasClass("ui-slider")&&n.addClass(u)}}var w=a==E?g:a;e.css&&A(e.css).forEach(function(x){var a=e.css[x];s(a)?ix(a.test(w),j,x):t(a)&&ix(a.call(i.my().manifest,d,w,j),j,x)});var y,z,C=e.recalc,D=[],G={};if(b&&e.recalc&&i.my()){for(k=i.my().ui,y=0;y-1?"":l;case"s":return b==h?"":l;case"o":return h[b]?"":l;case"b":return d.hasClass("my-form-list")?(f=d.data("listSrc")||d.data("my").listSrc||">*",g={},i=0,(">*"==f?x(d[0].children):xx(d,f,!0)).each(function(a){var b=x(this);b.hasClass("ui-sortable-placeholder")||(b.data("my")&&!b.my("valid")&&(g[i]=b.my("errors")),i+=1)}),g):d.hasClass("my-form")&&h?d.my("valid")?"":d.my("errors"):""}return j.formError||"Error"}return""}}(jQuery),function(x){var a=x.extend,b="string",c="function",d=Object.isArray,e=(Object.isBoolean,Object.isString),f=Object.isObject,g=(Object.isNumber,Object.isRegExp,Object.isFunction,Object.keys),h='',inp:h+'text" {ext}/>',sli:h+'range" {ext}/>',dat:h+'date" {ext}/>',btn:h+'button" {ext}/>',pwd:h+'password" {ext}/>',but:"",div:"
{txt}
",spn:"{txt}",sel:"",mul:'',txt:"",err:' {txt}',msg:'
{txt}
',val:function(x){if(!d(x.vals))return"";var b=a({style:"",css:""},x);return b.txt=x.vals.reduce(function(x,a){return x+""+a+" "}," "),'{txt}'.assign(b)},"":"<{_tag} {ext}>{txt}"},txt:{sel:function(x){if(!x.vals)return"";var a=k(x.vals);return g(a).reduce(function(x,b){return x+'"},"")}},params:{styles:{num:"width:30%;",dat:"width:30%;",inp:"width:100%",pwd:"width:100%",txt:"width:100%;max-width:100%;min-height:1px;word-break:break-word;",err:"display:none",msg:"display:none"},alias:{number:"num",date:"dat",slider:"sli",textarea:"txt",input:"inp",span:"spn",select:"select",vals:"val"},row:"",rowTag:"div",rowCss:"my-row",label:"",labelTag:"span",labelCss:"my-label"},defaults:{id:"",class:"",style:"",placeholder:"",value:"",rows:1},attnames:{css:"class",plc:"placeholder",val:"value",txt:"",vals:"",tip:"title"}};function j(x,h,j){if(e(h))return x+h;if(f(h))return a(!0,j,h),x;if(d(h)&&h.length>1&&e(h[1])){for(var k,l,m,n,o,p,q,r=h[0],s="",t=1;t'+(r?"<"+j.labelTag+' class="'+j.labelCss+'" '+(j.label?'style="display:inline-block;width:'+j.label+";margin-left:-"+j.label+'" ':"")+">"+r+"":"")+s+""),x+s}return x}function k(x){var a=x;if(e(a)&&(a=a.split(/[\s,]/).compact(!0)),d(a)){for(var b={},c=0;c

',ui:{"img:eq(0)":"img",h4:{bind:"text",css:{hide:function(x,a){return!a}}}}},data:{img:m.attr("src"),text:l},esc:!0,screen:!0,width:d||n,focus:!1,global:!0,z:"1995"},c));else if(k(b)&&b.manifest)f(a,b,c);else{if(!j(b))return null;f(a,{source:"html",manifest:{init:function(x){x.html(this.HTML)},HTML:b,ui:{"div:eq(0)":function(){}}},data:{},esc:!0,focus:!1,width:d},c)}return a}c.modal=function(a,b,c){var f,g={},h=x(d),j=h.find(">.my-modal-proxy"),k={global:!0,screen:!0,done:m(b)?b:void 0,z:"1995"};return i(a)||null==a?j.modal(a):(f=x.Deferred(),o(g,a,k,c)?e?f.reject("Locked").promise():(j.length||(j=x('
').prependTo(h)).css({position:"absolute",top:"0",left:"0",margin:"0",padding:"0",width:"1px",height:"0"}),j.modal(g)):f.reject("Invalid data").promise())},c.modal.loading=function(a){x(d).find(">.my-modal").toggleClass("my-modal-loading",!!a)},c.modal.parent=function(a){if(!a||!x(a).length)return x(d);d=a},c.modal.parentBack=function(b){if(!b||!x(b).length)return x(a||d);a=b},c.modal.visible=function(){return!!e},x.my||(x.my={}),x.my.modal=c.modal,x.fn.modal=function(c,n,p){if(b){if(void 0===c&&void 0===n&&void 0===p)return b.call(this);if(k(c)&&(c.hasOwnProperty("backdrop")||c.hasOwnProperty("keyborad")||c.hasOwnProperty("show")))return b.call(this,c,n);if(j(c)&&/^(toggle|show|hide|handleUpdate)$/.test(c))return b.call(this,c,n)}var q,r,s,t,u,v,w=x.Deferred(),y={},z=this,A=0,B=m(n)?n:function(){return!1},C=k(c)?c:{},D=z.data("modal");if(f(z,w.promise()),D){if(null==c||i(c))return E(c),z;if(C)return I("Locked"),z}return z.is(":visible")?(C=o(y,c,{}))?C.global&&e?(I("Locked"),z):((D=f({type:"DOM",source:"manifest",form:null,modal:null,root:null,bgroot:null,caller:z,manifest:{},data:{},global:!1,screen:!1,drag:!1,focus:!0,close:!0,silent:!0,esc:!1,enter:!1,bound:!1,hardClose:!0,nose:"",width:p||300,height:null,x:"0",y:"0",z:"1901",background:"white",css:"",animate:200},C,{promise:w.promise(),cid:Number.random(268435456,4294967295).toString(16)})).done=m(D.done)?D.done:B,j(D.align)&&D.align&&(D.x=(D.align.match(/(left|right):\-?\d+(\.\d+)?(%|px)?/g)||["0"])[0],D.y=(D.align.match(/(top|bottom):\-?\d+(\.\d+)?(%|px)?/g)||["0"])[0]),D.width=1*(x.my.f.getref(j(D.manifest)?x.my.cache(D.manifest):D.manifest,"params.width")||D.width),D.type="DOM",z.hasClass("my-form")?(D.type="form",D.root=D.root||z):z.data("my")?(D.type="control",D.root=D.root||z.my().root):(D.root=D.root||z.parents(".my-form").eq(0),D.root.length||(D.root=x(d))),D.global?(D.root=x(d),D.bgroot=x(a||d)):D.bgroot=D.bgroot?x(D.bgroot):D.root,(s=D.root).data("modals")||s.data("modals",{}),F(),q=x('
'),D.root.find(">.my-modal").length?q.insertAfter(D.root.find(">.my-modal").last()):q.prependTo(D.root),q.addClass("my-modal-"+D.cid),A=q.outerWidth(),q.hide(),q.html('
'),r=q.find(".my-modal-form"),D.close&&x(j(D.close)?D.close:'
×
').prependTo(q).on("click.my",function(){E(D.hardClose)}).css({"z-index":("+"===(D.z+"").to(1)?"+":"")+(1*D.z+1)}),t=D.bgroot.find(">.my-modal-screen"),D.screen&&(t.length||(t=x('').prependTo(D.bgroot)),D.esc&&t.on("click.my"+D.cid,function(){z.modal(!0)}),t.toggleClass("my-modal-screen-global",!!D.global)),z.data("modal",D),D.silent&&q.on("change.my",function(){return!1}),q.css({display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto"}),D.global?q.css({position:"fixed",left:"50%",top:D.pos.vy+"px",display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto","margin-left":"-"+((D.width+A)/2).round(0)+"px"}):q.css({position:"absolute",left:D.pos.vx+"px",top:D.pos.vy+"px",display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto"}),r.my(D.manifest,D.data).then(function(){var a,b,c;if(f(D,{form:r,bg:t,cancel:function(){E(!0)},commit:function(){E()}}),q.data("modal",D),D.height=q.outerHeight(),"manifest"!==D.source&&(D.width=q.width()),F(),q.css({top:D.pos.vy+"px"}),G(!0),q.removeClass("my-modal-init"),s.data("modals")[D.cid]=D,g[D.cid]=w,r.on("commit.my",function(){return D.commit.delay(30),!1}).on("cancel.my",function(){return D.cancel.delay(30),!1}),q.on("layout.my",function(){G()}.debounce(30)),D.global&&(e=z,x(document.body).css({overflow:"hidden"})),D.global||!D.esc&&!D.enter||r.on("keydown.my",function(a){var b=a.keyCode;return 27==b&&D.esc?(D.cancel(),!1):13==b&&D.enter&&!x(a.target).is("textarea")?(D.commit.delay(50),!1):void 0}),!0===D.focus?(b=!1,c=D.manifest.ui,Object.keys(c||{}).forEach(function(x){if(!b){var a=r.find(x);a.length&&a.is("input, textarea, button")&&(b=!0,a.focus())}})):j(D.focus)&&r.find(D.focus).focus(),(a=r.find("img").filter(function(){return""!=x(this).attr("src")})).length){var d=function(){"manifest"!==D.source&&q.css({width:"auto"}),G()}.after(a.length);a.each(function(){x(this).bind("load",d)})}D.drag&&x.fn.draggable&&(j(D.drag)?q.draggable({handle:D.drag}):q.draggable(),D.nose&&q.on("dragstart.my",function(){q.removeClass("nose-"+D.nose)})),q.on("mousedown.my",function(a){var b=[],c=x(a.currentTarget),d=c.parent(),e=+c.css("z-index"),f=e;d.length&&(d.find(">.my-modal").each(function(c,d){var g=+x(d).css("z-index")||0;d!=a.currentTarget&&g>=e&&b.push([g,x(d)]),g>f&&(f=g)}),b.forEach(function(x){x[1].css("z-index",x[0]-1+"")}),c.css("z-index",f+""))}),w.notify("Ready")}).fail(function(x){try{H()}catch(x){}z.data("modal",null),w.reject(x)}),z):(I("Invalid data"),z):(I("Object must be visible"),z);function E(x){if(r=D.form,t=D.bg,s=D.root,B=D.done,u=r.my("data"),v=!1,x){try{B.call(r.my("manifest"),null,null)}catch(x){}try{h(r)&&H()}catch(x){}if(h(z)&&z.removeData("modal"),g[D.cid])try{g[D.cid].reject("Cancelled")}catch(x){}delete g[D.cid],D=null}else{try{v=B.call(r.my("manifest"),r.my("valid")?null:r.my("errors"),u)}catch(x){}if(!v){try{h(r)&&H()}catch(x){}h(z)&&z.removeData("modal"),function(){if(g[D.cid])try{g[D.cid].resolve(u)}catch(x){}delete g[D.cid],D=null}.delay(0)}}}function F(){var a,b,c=window,d=!!D.global,e=s.offset(),f=z.offset(),g=s.scrollTop();D.pos={px:e.left,py:e.top,pw:s.outerWidth(),ph:s.outerHeight(),ox:f.left,oy:f.top,ow:z.outerWidth(),oh:z.outerHeight(),ww:b,wh:a};var h=1*(D.x.match(/\-?\d+(\.\d+)?/)||[0])[0],i=1*(D.y.match(/\-?\d+(\.\d+)?/)||[0])[0],j=D.x.has("left")?-1:D.x.has("right")?1:0,k=D.y.has("top")?-1:D.y.has("bottom")?1:0,m=D.pos.ox+D.pos.ow/2-D.pos.px,n=D.pos.oy+D.pos.oh/2-D.pos.py;if(d&&(D.pos.wh=a=c.innerHeight||x(c).height(),D.pos.ww=b=c.innerWidth||x(c).width(),m=b/2,n=a/2.5),h=D.x.has("%")?D.pos.ow/100*h:h,i=D.y.has("%")?D.pos.oh/100*i:i,D.pos.pix=m,D.pos.piy=n,m=m+j*(D.pos.ow/2)+h*(j>0?-1:1)-(D.width+A)*(j+1)/2,d?(n=(a-D.height-20)/3)<10&&(n=10):n=n+k*(D.pos.oh/2)+i*(k>0?-1:1)-(D.height||0)*(k+1)/2,m=m.round(1),n=(n+g).round(1),D.pos.vx=m,D.pos.vy=n,!1!==D.bound&&!D.global){var o=(l(D.bound)?D.bound:0).clamp(-100,100);D.pos.pw-2*oD.pos.pw-o?D.pos.vx=D.pos.pw-o-D.width-A:D.pos.vxD.pos.ph-o?D.pos.vy=D.pos.ph-o-D.height:D.pos.vy');var b="",c=x("style#my-modal-style-"+D.cid);"top"==D.nose||"bottom"==D.nose?(b+="div.my-modal-"+D.cid+".nose-"+D.nose+":before {left:"+(D.pos.ox-D.pos.px+D.pos.ow/2-D.pos.vx)+"px!important;}",c.text(b)):"left"!=D.nose&&"right"!=D.nose||(b+="div.my-modal-"+D.cid+".nose-"+D.nose+":before {top:"+(D.pos.oy-D.pos.py+D.pos.oh/2-D.pos.vy)+"px!important;}",c.text(b))}D.screen?D.global?(t.css({top:0,left:0,width:"100%",height:"100%",display:"block",position:"fixed","z-index":D.z-1}),j(D.screen)?t.css({background:D.screen?D.screen:"rgba(18,41,72,0.88)"}):t.css({background:D.screen?"rgba(18,41,72,0.88)":""})):t.css({top:0,left:0,position:"absolute",width:t.parent().outerWidth()+"px",height:t.parent().outerHeight()+"px",display:"block",background:j(D.screen)?D.screen:"rgba(255,255,255,0.6)","z-index":D.z-1}):t.length&&t.hide(),D.height>D.pos.wh?(q.height(D.pos.wh-30),r.css({"overflow-y":"scroll"})):r.css({"overflow-y":""}),q.animate({top:D.pos.vy+"px",opacity:"1"},D.animate)}function H(){try{r.my("remove")}catch(x){}try{s.data("modals")[D.cid]=null}catch(x){}r.parent().off(".my").remove(),h(t)&&t.off(".my"+D.cid),D.screen&&h(t)&&function(x){x&&e||t.hide(),x&&!e&&t.css({background:"rgba(18,41,72,0.88)"})}.delay(50,D.global),D.global&&(e=!1,x(document.body).css({overflow:""}))}function I(x){try{B(null,null)}catch(x){}(function(){w.reject(x)}).delay(0)}}}(jQuery); \ No newline at end of file +/*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;c1.4*q||w-h.stamp>100||!h.stashed||h.stashed.length!==y.length-(t?1:0)){t&&(g=a.find(">."+r+"-helper"));var D=0;for(y.each(function(a,b){var c,d,e,f=x(b),h=!1;t&&f.hasClass(r+"-helper")||(t&&f.hasClass(r+"-placeholder")&&(f=g),c=f.data("my"),d=f.data("formlist"),c&&d&&(u.push(c.data),D!=d.index&&(d.index=D,h=!0),p&&(e=m(c.data,D)+"")!==d.hash&&(d.hash=e,h=!0),D+=1,h&&v.push(f)))}),c=0;c-1){var e=a.eq(c);e.is(":checked")||(e.prop("checked",!0),d&&e.checkboxradio("refresh"))}else d||a.each(function(){x(this).prop("checked",!1)})}if(-1==c)for(var f=0;fForm 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:"Обязательное поле"}},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$/.test(k.list)?f=k.list:h=k.list||h,!f){var l=">*"==h?x(a[0].children):xx(a,h,!0);f="
",l.length&&(f=x(f).append(l.eq(0).clone(!0)).html(),l.eq(0).remove())}a.data("formlist")||a.data("formlist",{}),a.data("formlist").generator={manifest:g,delay:(k.delay||j.delay||10)/1.3,template:f,selector:h,parent:v,bind:k.bind,merge:t(k.merge)?k.merge.bind(v):!!k.merge&&$,hash:t(k.hash)?k.hash.bind(v):p(k.hash)?D.fill(void 0,k.hash):n(k.hash)?F.fill(void 0,k.hash.slice(0)):null,id:t(k.id)?k.id.bind(v):p(k.id)?D.fill(void 0,k.id):n(k.id)?F.fill(void 0,k.id.slice(0)):null,ext:!(!k.id&&!k.hash),stamp:0},a.on("insert.my",function(a,b){a.stopPropagation();var c={what:void 0,where:0};null==b?c.where=1e6:q(b)?y(c,b):(p(b)||r(b))&&(c.where=b),x(a.target).my("insert",c.where,c.what)}),a.on("remove.my",function(a){a.stopPropagation(),x(a.target).my("remove")})}else try{b=ux.call(a,bx(v,g),q(e)?e:void 0)}catch(x){A("$.my subform init of "+d+" failed: "+x.message,x.stack)}}u(b)?b.then(G,function(x,a){A("Init of subform "+d+" failed with error: "+x,a)}):G()}function A(x,a){O(x,a),o&&o.reject(x,a)}function D(x,a){var b=U(x,a)||"";return"string"==typeof b?b:Y(b)}function F(x,a){return Y(nx(x,a))}function G(){a.each(function(){var e,g,m,n=x(this),o=n[0].nodeName,p=!1;if("TEXTAREA"==o&&(g=(m=n[0].nextSibling)&&m.CodeMirror?m.CodeMirror:null)&&n.addClass("my-codemirror"),e=k.events||yx(n,K.events),n.hasClass("my-form")?B(n.data("my"),{dui:k,root:b,selector:d,dparams:j,devents:e,ddata:i.data,container:j.container(n),derrors:i.errors,single:!0}):(n.data("my",{events:e,selector:d,initial:f,previous:f,root:b,container:j.container(n),id:i.id,ui:k,data:i.data,params:j,errors:i.errors,single:1==w}),c._update=k.delay?zx.debounce(k.delay):E,p=!0),p)if(n.cleditor&&n.parent().hasClass("cleditorMain")){var q=n.cleditor()[0];if(q&&q.$frame&&q.$frame[0]){n.addClass("my-cleditor"),B(n.data("my"),{container:j.container(n)});var r,s=function(x){n.val(x).trigger(l)},t=Number.random(1e5,1e6-1);x(q.$frame[0]).attr("id","cleditCool"+t),r=document.frames?document.frames["cleditCool"+t].document:x("#cleditCool"+t)[0].contentWindow.document;var u=x(r).find("body");x(r).on("keyup.my",function(){s(x(this).find("body").html())}),n.parent().find("div.cleditorToolbar").on("click.my mouseup.my",function(){s(u.html())}),x("body").on("click","div.cleditorPopup",function(){s(u.html())})}}else if("TEXTAREA"==o&&n.parent().hasClass("redactor_box")){var v,y="my-redactor-9";try{v=n.getEditor(),y="my-redactor-8"}catch(x){v=n.redactor("getEditor")}v&&(n.addClass(y),v.on("input.my keyup.my blur.my",function(x){x.trigger("redactor")}.fill(n)))}else n.hasClass("ace_editor")?ace.edit(a[0]).on(l,function(x){x.trigger("ace")}.fill(n)):g&&g.on(l,function(x){x.trigger("codemirror")}.fill(n));n.my()._changed=hx.debounce(h),n.my()._recalc=sx.debounce(h),n.on(e,function(x){x.type==l&&x.stopPropagation(),p&&(i.locktill=I()+c.delay),n.my()._changed(n,b,c,j)}),/check(\.my)?/.test(e+"")||n.on("check.my",function(x){return n.my()._changed(n,b,c,j,!0),!1}),p||n.off("redraw.my"),n.on("recalc.my, redraw.my",function(x){x.stopPropagation(),n.my()._recalc(n,b,c,j)})}),o&&o.resolve()}}function gx(a,b){q(b)&&b.channel&&b.message&&xx(a,".my-listen-"+Y(b.channel),!0).each(function(){var a,c,d=x(this),e=d.data("my");if(e&&e.ui.listen&&t(e.ui.listen[b.channel])){a=e.ui.listen[b.channel];try{c=a.call(e.manifest||e.root.my().manifest,e.data,b.message,d)}catch(x){O("Listener failed",x.message,x.stack)}void 0!==c&&(null===c?d.trigger("check"):c&&d.trigger("recalc"))}})}function hx(x,a,b,c,d){var e,f=x.data("my");f&&(f.disabled?f.ddata||zx(x,E,b.recalcDepth||c.recalcDepth):(lx(f.ddata||f.data,f.dparams||f.params),d||(e=f.single?x:xx(a,f.selector)),zx(x,d?E:kx(e,E),b.recalcDepth||c.recalcDepth),c.change&&c.change.call(x)))}function ix(a,b,c){var d=c.compact(),e=d.replace(/:disabled/g,""),f=e!==d,g="self:"==e.substr(0,5);return g&&(e=e.replace(/^self:/g,"")),b.each(function(){var c=x(this),d=c.my();(!g&&d?d.container:c).toggleClass(e,!!a),f&&void 0!==d&&!!a!=!!d.disabled&&(c.my().disabled=!!a,d._disable||(c.my()._disable=yx(b,K.offon).fill(void 0,b)),d._disable(!!a))}),b}function jx(x,a,b){return x[a](b?"disable":"enable")}function kx(x,a){var b,c,d=x.data("myval");return d||(c=yx(x,K.vals),t(c)&&(void 0===(b=c(x,E))?x.data("myval",function(x,a){return E!=a&&c(x,a),x.val()}.fill(x,void 0)):x.data("myval",c.fill(x,void 0))),d=x.data("myval")),t(d)?(((b=d())!==a&&(0==a||0==b)||b!=a||q(a))&&(b=d(a)),b):E}function lx(x,a,b,c){var d,e,f,g,h,i,j,k,m,n=a;if(!q(n)||isNaN(g=n.remember)||!q(d=n.history))return E;if(q(x)&&g){if(i=z(x,!0),j=I(),(f=A(d).sort()).length&&(j-f.last()=2*g){for(m={},e=g;e<2*g;e++)m[f[e]]=d[f[e]];a.history=m}return c||n.form.trigger(l),n.history[f.last()]}if(!isNaN(x)||x===E){if((h=parseInt(x)||0)<0)return E;if(h>=(f=A(d).sort()).length&&(h=f.length-1),k=z(n.history[f[f.length-h-1]],!0),b){for(m={},e=0;e-1))&&(d=f[e[h]]={});return x}function qx(x,a,b){var c=q(a)?a:null,d=b||(c?c.params:null)||{delay:0},e={css:!0,check:!0,manifest:!0,list:!0,hash:!0,id:!0},f=/\s?[,;]\s?/,g=/,\s*|\s+/g;if(d.normalized)return x;for(var h,l,o=A(x||{}),p=[],r=0;r-1&&!w[k]&&(w[k]=function(){lx(!0)}.debounce(r.restyle)),ax.data("my").restyle=lx.fill(!0).debounce(0)),ax.data("my").localStyle=D,a||ax.addClass("my-restyle"))}function c(x,a){var b="\n",c=/@keyframes/,d=!1,e=b+x.map(function(x){return/^\s*@/.test(x)||"}"==x?(c.test(x)?d=!0:"}"==x&&(d=!1),x):((d?"":"."+a)+x).replace(/\s+/g," ")}).join(b)+b;return'"}}function nx(){var x,a,c=!0;if(a=dx(G),p(a))yx("Error decoding base64 to local Blob/URL",a),c=!1;else{if(b)for(x=0;x*").clone();try{F=rx(G,s.init,ax,s)}catch(x){return yx(p(x)?x:x.message,x.stack),ax}}if(u(F)?F.then(function(){sx()},function(x,a){yx(x,a)}):sx(),!R){if(!ax.my())return yx("Internal error initializing controls.",""),ax;ax.data("my").initial=B(!0,{},I),x.mobile&&x.mobile.changePage(x.mobile.activePage)}}function sx(){var x={},a=Object.keys(o),b=a.length;function c(a){R||(x[a]=kx(xx(ax,a),E),(b-=1)<1&&tx(x))}b<1?ux():(ax.addClass(T),a.forEach(function(x){if(!R){var a=xx(ax,x),b=fx(a,ax,o[x],x);_[x]=a,u(b)?b.then(c.fill(x)).fail(function(a,b){yx("Error building "+x+", "+a,b)}):R||c(x)}}))}function tx(x){A(o).forEach(function(a){if(!R){var b,c=o[a],d=_[a];if(d.length){c.listen&&(N[a]=d.eq(0));try{null===(b=ex(I,null,c,d))&&null!=x[a]&&ex(I,x[a],c,d)}catch(x){O("Transient fail linking "+a+' of form $(".my-form-'+k+'")',x.message,x.stack)}try{null!=b&&kx(d,b),d.eq(0).trigger("check.my")}catch(x){yx("Error linking "+a,x.message)}}}}),R||ux()}function ux(){ax.removeClass(T),ax.on("recalc.my, redraw.my",function(x){x.stopPropagation(),ax.my("redraw")}),$=null,Q.resolve(I)}function yx(x,a){var b;if(R=!0,O("Form "+j+" failed to initialize.",x,a),Object.keys(_).forEach(function(x){delete _[x]}),ax.removeClass(T),b=S(x,a),p(b)||q(b)&&b.jquery?ax.html(b):!0===b&&ax.html($),r.silent)Q.resolve(I);else{if(!ax.my().ddata){if(ax.removeData("my"),ax.removeClass("my-form"),z)if("1"==z.data("count"))try{z.remove()}catch(x){}else z.data("count",z.data("count")-1);if(D)try{delete w[k],D.remove()}catch(x){}}Q.reject("Form "+j+" failed to initialize: "+x,a)}}}function vx(x,a){var b=[],c=[],d=a;return q(d)&&q(d.style)?(e(a.style,"",b,c),[b,c]):"";function e(b,c,d,g){var h,i,j,k,l=b,m=/@/.test(c),o=c.split("@")[0],r=t(l);if(m&&(r?g:d).push("@"+c.split("@")[1].trim()+" {"),p(l)&&(/[\r\n]/.test(l)||l.split("}",3).length>2?l=L.css2json(l):d.push(o+(/\{/.test(l)?l:"{"+l+"}"))),n(l)&&l.length)for(h=0;hc&&null!=h&&!i)return b=h,c=f,void 0;i&&e(x,h,f+1)}}),null==b&&null!=a[""]&&!q(a[""])&&f>c&&(b=a[""],c=f)}}function zx(x,a,b){var c,d,e,f,g,h,i,j,k,l=!1,m=!1,n=x,o=n.my(),q="";if(o){if(h=o.selector,(i=o.root).hasClass("my-form-init"))return{};if(j=xx(i,h),(l=x.hasClass("my-form"))?(c=x,d=o.ddata,e=o.dui,f=o.dparams):(c=o.container,d=o.data,e=o.ui,f=o.params),e.bind!=E){if(g=F(a)?a:kx(j,ex(d,E,e,j)),E!=e.check){q="Unknown error";try{q=Gx(d,g,e,j)}catch(x){O("Error "+x.message+" in .check validator for "+h,i,x.stack)}}var r=f.errorCss,u="ui-state-error";try{E!=a&&(g=kx(j,ex(d,a,e,j)))}catch(x){q=f.messages.formError||"Error"}if(E!=e.check)if(m=x.hasClass("my-form-list"),""==q&&(l||m||c.hasClass(r)))l?o.derrors[h]="":o.errors[h]="",c.removeClass(r),c.attr("title")&&c.attr("title",""),l||m||f.effect(xx(c,f.errorTip),!1,f.animate/2),n.removeClass(u),xx(n,".ui-widget").removeClass(u);else if(q){if(l)o.derrors[h]=q;else if(m)o.errors[h]=q;else{c.addClass(r),o.errors[h]=q;var v=xx(c,f.errorTip);v.length?f.effect(v.addClass(r).html(p(q)?q:"Error"),!0,f.animate):c.attr("title",(p(q)?q:"Error").stripTags())}n.hasClass("hasDatepicker")&&(n.is("input")?n.addClass(u):xx(n,".ui-widget").addClass(u)),n.hasClass("ui-slider")&&n.addClass(u)}}var w=a==E?g:a;e.css&&A(e.css).forEach(function(x){var a=e.css[x];s(a)?ix(a.test(w),j,x):t(a)&&ix(a.call(i.my().manifest,d,w,j),j,x)});var y,z,C=e.recalc,D=[],G={};if(b&&e.recalc&&i.my()){for(k=i.my().ui,y=0;y0&&(c.maxWidth=b);var d=cx(c.maxWidth)?_(c.maxWidth,8,1e4):80,e=bx(c.keyGap)?c.keyGap:" ",f=xx(e),g=bx(c.valueGap)?c.valueGap:" ",h=xx(g),i=c.tabSubst,j=bx(c.tabChars)?c.tabChars:"",k=/\t/.test(j+g+e),l=j.length,m=xx(j),n=!!c.allowFns,o=(c.untabFns,!!c.allowJS),p=!!c.alignJS,q="",r=[],s="",t=x,u=N(x),v=0,w=0,y=null,z=null,A=null,B="",C=0,D=0;if(!S(u))return null==u?void 0:P(O(x,null," ").replace(/,\n\s*/g,",").replace(/\n(\s)*/g,""));L(u);for(var E=r.length-1;E>0;E--)r[r[E].up].ctr+=1;var F;for(E=1;E-1&&G.lvl>1&&r[G.up].ctr>1&&(G.len+=d));for(E=r.length-1;E>0;E--)r[r[E].up].len+=r[E].len;var G,H,I,J=Array(r.length);for(E=0;E=I)}return(r=r.reduce(function(x,a){return null!==a&&x.push(a),x},[])).forEach(function(x,a){J[x.i]=a,a&&(x.up=J[x.up],x.i=a)}),q=Z(j,w+1),K(0),s;function K(x,a){a=!!a;var b,g=r[x],h=x+1,i="";if(s+=(a||!x?"":R(g.lvl))+(null!==g.key?g.key+":"+e:"")+g.val,!a&&g.lvl&&g.len<=d-(g.lvl-D)*m)for(var j=1;r[h]&&r[h].up>=x;h++)S((b=r[h]).t)&&(j+=1),s+=(null!==b.key?b.key+":"+e:"")+T(b,-j);else if("o"==g.t)for(;r[h]&&r[h].up==x;h++)if(b=r[h],a&&!b.t)c.chain?(s+=r[b.up].ctr>1||h-b.up==2?R(b.lvl):"",s+=b.val,D&&1==r[b.up].ctr&&h-b.up>2&&(D-=1)):s+=R(b.lvl)+b.val;else if(S(b.t))if(c.chain&&1==g.ctr&&b.lvl>1){var k=1;for(j=0;1==r[h-k].ctr&&k<=D+1&&!r[h-k].br;k++)j+=null==r[h-k].key?1:r[h-k].key.length+f+2;(j+=b.key.length+f+2+(b.lvl-k+1)*m)<=d-l?(D+=1,h=K(h,a=!0)):(D&&(r[h-1].br=!0),h=K(h,a=!1))}else h=K(h);else s+=R(b.lvl)+(null!==b.key?b.key+":"+e:"")+T(b);else if("a"==g.t)for(;r[h]&&r[h].up==x;h++)(b=r[h]).t&&!S(b.t)?b.br?(s+=i+R(b.lvl)+T(b),i=""):i.length?'"<'==b.val.substr(0,2)||xx(i)+b.len>d+1?(s+=i,i=R(b.lvl)+b.val):i+=b.val:i=R(b.lvl)+b.val:b.t?(s+=i,i="",h=K(h)):(s+=i+R(b.lvl)+b.val,i="");return h-1}function L(x){u=x,C=null==A?1:A.length+4+f,B="o"==x?"{":"[";M();y=r.length-1,v+=1;for(var a=y,b=z=u,c=t,d="o"==x?Object.keys(c):c,e=d.length,g=0;g-1}function Y(x){return Object.prototype.toString.call(x)}function Z(x,a){for(var b="",c=0;c-1?"":l;case"s":return b==h?"":l;case"o":return h[b]?"":l;case"b":return d.hasClass("my-form-list")?(f=d.data("listSrc")||d.data("my").listSrc||">*",g={},i=0,(">*"==f?x(d[0].children):xx(d,f,!0)).each(function(a){var b=x(this);b.hasClass("ui-sortable-placeholder")||(b.data("my")&&!b.my("valid")&&(g[i]=b.my("errors")),i+=1)}),g):d.hasClass("my-form")&&h?d.my("valid")?"":d.my("errors"):""}return j.formError||"Error"}return""}}(jQuery),function(x){var a=x.extend,b="string",c="function",d=Object.isArray,e=(Object.isBoolean,Object.isString),f=Object.isObject,g=(Object.isNumber,Object.isRegExp,Object.isFunction,Object.keys),h='',inp:h+'text" {ext}/>',sli:h+'range" {ext}/>',dat:h+'date" {ext}/>',btn:h+'button" {ext}/>',pwd:h+'password" {ext}/>',but:"",div:"
{txt}
",spn:"{txt}",sel:"",mul:'',txt:"",err:' {txt}',msg:'
{txt}
',val:function(x){if(!d(x.vals))return"";var b=a({style:"",css:""},x);return b.txt=x.vals.reduce(function(x,a){return x+""+a+" "}," "),'{txt}'.assign(b)},"":"<{_tag} {ext}>{txt}"},txt:{sel:function(x){if(!x.vals)return"";var a=k(x.vals);return g(a).reduce(function(x,b){return x+'"},"")}},params:{styles:{num:"width:30%;",dat:"width:30%;",inp:"width:100%",pwd:"width:100%",txt:"width:100%;max-width:100%;min-height:1px;word-break:break-word;",err:"display:none",msg:"display:none"},alias:{number:"num",date:"dat",slider:"sli",textarea:"txt",input:"inp",span:"spn",select:"select",vals:"val"},row:"",rowTag:"div",rowCss:"my-row",label:"",labelTag:"span",labelCss:"my-label"},defaults:{id:"",class:"",style:"",placeholder:"",value:"",rows:1},attnames:{css:"class",plc:"placeholder",val:"value",txt:"",vals:"",tip:"title"}};function j(x,h,j){if(e(h))return x+h;if(f(h))return a(!0,j,h),x;if(d(h)&&h.length>1&&e(h[1])){for(var k,l,m,n,o,p,q,r=h[0],s="",t=1;t'+(r?"<"+j.labelTag+' class="'+j.labelCss+'" '+(j.label?'style="display:inline-block;width:'+j.label+";margin-left:-"+j.label+'" ':"")+">"+r+"":"")+s+""),x+s}return x}function k(x){var a=x;if(e(a)&&(a=a.split(/[\s,]/).compact(!0)),d(a)){for(var b={},c=0;c

',ui:{"img:eq(0)":"img",h4:{bind:"text",css:{hide:function(x,a){return!a}}}}},data:{img:m.attr("src"),text:l},esc:!0,screen:!0,width:d||n,focus:!1,global:!0,z:"1995"},c));else if(k(b)&&b.manifest)f(a,b,c);else{if(!j(b))return null;f(a,{source:"html",manifest:{init:function(x){x.html(this.HTML)},HTML:b,ui:{"div:eq(0)":function(){}}},data:{},esc:!0,focus:!1,width:d},c)}return a}c.modal=function(a,b,c){var f,g={},h=x(d),j=h.find(">.my-modal-proxy"),k={global:!0,screen:!0,done:m(b)?b:void 0,z:"1995"};return i(a)||null==a?j.modal(a):(f=x.Deferred(),o(g,a,k,c)?e?f.reject("Locked").promise():(j.length||(j=x('
').prependTo(h)).css({position:"absolute",top:"0",left:"0",margin:"0",padding:"0",width:"1px",height:"0"}),j.modal(g)):f.reject("Invalid data").promise())},c.modal.loading=function(a){x(d).find(">.my-modal").toggleClass("my-modal-loading",!!a)},c.modal.parent=function(a){if(!a||!x(a).length)return x(d);d=a},c.modal.parentBack=function(b){if(!b||!x(b).length)return x(a||d);a=b},c.modal.visible=function(){return!!e},x.my||(x.my={}),x.my.modal=c.modal,x.fn.modal=function(c,n,p){if(b){if(void 0===c&&void 0===n&&void 0===p)return b.call(this);if(k(c)&&(c.hasOwnProperty("backdrop")||c.hasOwnProperty("keyborad")||c.hasOwnProperty("show")))return b.call(this,c,n);if(j(c)&&/^(toggle|show|hide|handleUpdate)$/.test(c))return b.call(this,c,n)}var q,r,s,t,u,v,w=x.Deferred(),y={},z=this,A=0,B=m(n)?n:function(){return!1},C=k(c)?c:{},D=z.data("modal");if(f(z,w.promise()),D){if(null==c||i(c))return E(c),z;if(C)return I("Locked"),z}return z.is(":visible")?(C=o(y,c,{}))?C.global&&e?(I("Locked"),z):((D=f({type:"DOM",source:"manifest",form:null,modal:null,root:null,bgroot:null,caller:z,manifest:{},data:{},global:!1,screen:!1,drag:!1,focus:!0,close:!0,silent:!0,esc:!1,enter:!1,bound:!1,hardClose:!0,nose:"",width:p||300,height:null,x:"0",y:"0",z:"1901",background:"white",css:"",animate:200},C,{promise:w.promise(),cid:Number.random(268435456,4294967295).toString(16)})).done=m(D.done)?D.done:B,j(D.align)&&D.align&&(D.x=(D.align.match(/(left|right):\-?\d+(\.\d+)?(%|px)?/g)||["0"])[0],D.y=(D.align.match(/(top|bottom):\-?\d+(\.\d+)?(%|px)?/g)||["0"])[0]),D.width=1*(x.my.f.getref(j(D.manifest)?x.my.cache(D.manifest):D.manifest,"params.width")||D.width),D.type="DOM",z.hasClass("my-form")?(D.type="form",D.root=D.root||z):z.data("my")?(D.type="control",D.root=D.root||z.my().root):(D.root=D.root||z.parents(".my-form").eq(0),D.root.length||(D.root=x(d))),D.global?(D.root=x(d),D.bgroot=x(a||d)):D.bgroot=D.bgroot?x(D.bgroot):D.root,(s=D.root).data("modals")||s.data("modals",{}),F(),q=x('
'),D.root.find(">.my-modal").length?q.insertAfter(D.root.find(">.my-modal").last()):q.prependTo(D.root),q.addClass("my-modal-"+D.cid),A=q.outerWidth(),q.hide(),q.html('
'),r=q.find(".my-modal-form"),D.close&&x(j(D.close)?D.close:'
×
').prependTo(q).on("click.my",function(){E(D.hardClose)}).css({"z-index":("+"===(D.z+"").to(1)?"+":"")+(1*D.z+1)}),t=D.bgroot.find(">.my-modal-screen"),D.screen&&(t.length||(t=x('').prependTo(D.bgroot)),D.esc&&t.on("click.my"+D.cid,function(){z.modal(!0)}),t.toggleClass("my-modal-screen-global",!!D.global)),z.data("modal",D),D.silent&&q.on("change.my",function(){return!1}),q.css({display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto"}),D.global?q.css({position:"fixed",left:"50%",top:D.pos.vy+"px",display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto","margin-left":"-"+((D.width+A)/2).round(0)+"px"}):q.css({position:"absolute",left:D.pos.vx+"px",top:D.pos.vy+"px",display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto"}),r.my(D.manifest,D.data).then(function(){var a,b,c;if(f(D,{form:r,bg:t,cancel:function(){E(!0)},commit:function(){E()}}),q.data("modal",D),D.height=q.outerHeight(),"manifest"!==D.source&&(D.width=q.width()),F(),q.css({top:D.pos.vy+"px"}),G(!0),q.removeClass("my-modal-init"),s.data("modals")[D.cid]=D,g[D.cid]=w,r.on("commit.my",function(){return D.commit.delay(30),!1}).on("cancel.my",function(){return D.cancel.delay(30),!1}),q.on("layout.my",function(){G()}.debounce(30)),D.global&&(e=z,x(document.body).css({overflow:"hidden"})),D.global||!D.esc&&!D.enter||r.on("keydown.my",function(a){var b=a.keyCode;return 27==b&&D.esc?(D.cancel(),!1):13==b&&D.enter&&!x(a.target).is("textarea")?(D.commit.delay(50),!1):void 0}),!0===D.focus?(b=!1,c=D.manifest.ui,Object.keys(c||{}).forEach(function(x){if(!b){var a=r.find(x);a.length&&a.is("input, textarea, button")&&(b=!0,a.focus())}})):j(D.focus)&&r.find(D.focus).focus(),(a=r.find("img").filter(function(){return""!=x(this).attr("src")})).length){var d=function(){"manifest"!==D.source&&q.css({width:"auto"}),G()}.after(a.length);a.each(function(){x(this).bind("load",d)})}D.drag&&x.fn.draggable&&(j(D.drag)?q.draggable({handle:D.drag}):q.draggable(),D.nose&&q.on("dragstart.my",function(){q.removeClass("nose-"+D.nose)})),q.on("mousedown.my",function(a){var b=[],c=x(a.currentTarget),d=c.parent(),e=+c.css("z-index"),f=e;d.length&&(d.find(">.my-modal").each(function(c,d){var g=+x(d).css("z-index")||0;d!=a.currentTarget&&g>=e&&b.push([g,x(d)]),g>f&&(f=g)}),b.forEach(function(x){x[1].css("z-index",x[0]-1+"")}),c.css("z-index",f+""))}),w.notify("Ready")}).fail(function(x){try{H()}catch(x){}z.data("modal",null),w.reject(x)}),z):(I("Invalid data"),z):(I("Object must be visible"),z);function E(x){if(r=D.form,t=D.bg,s=D.root,B=D.done,u=r.my("data"),v=!1,x){try{B.call(r.my("manifest"),null,null)}catch(x){}try{h(r)&&H()}catch(x){}if(h(z)&&z.removeData("modal"),g[D.cid])try{g[D.cid].reject("Cancelled")}catch(x){}delete g[D.cid],D=null}else{try{v=B.call(r.my("manifest"),r.my("valid")?null:r.my("errors"),u)}catch(x){}if(!v){try{h(r)&&H()}catch(x){}h(z)&&z.removeData("modal"),function(){if(g[D.cid])try{g[D.cid].resolve(u)}catch(x){}delete g[D.cid],D=null}.delay(0)}}}function F(){var a,b,c=window,d=!!D.global,e=s.offset(),f=z.offset(),g=s.scrollTop();D.pos={px:e.left,py:e.top,pw:s.outerWidth(),ph:s.outerHeight(),ox:f.left,oy:f.top,ow:z.outerWidth(),oh:z.outerHeight(),ww:b,wh:a};var h=1*(D.x.match(/\-?\d+(\.\d+)?/)||[0])[0],i=1*(D.y.match(/\-?\d+(\.\d+)?/)||[0])[0],j=D.x.has("left")?-1:D.x.has("right")?1:0,k=D.y.has("top")?-1:D.y.has("bottom")?1:0,m=D.pos.ox+D.pos.ow/2-D.pos.px,n=D.pos.oy+D.pos.oh/2-D.pos.py;if(d&&(D.pos.wh=a=c.innerHeight||x(c).height(),D.pos.ww=b=c.innerWidth||x(c).width(),m=b/2,n=a/2.5),h=D.x.has("%")?D.pos.ow/100*h:h,i=D.y.has("%")?D.pos.oh/100*i:i,D.pos.pix=m,D.pos.piy=n,m=m+j*(D.pos.ow/2)+h*(j>0?-1:1)-(D.width+A)*(j+1)/2,d?(n=(a-D.height-20)/3)<10&&(n=10):n=n+k*(D.pos.oh/2)+i*(k>0?-1:1)-(D.height||0)*(k+1)/2,m=m.round(1),n=(n+g).round(1),D.pos.vx=m,D.pos.vy=n,!1!==D.bound&&!D.global){var o=(l(D.bound)?D.bound:0).clamp(-100,100);D.pos.pw-2*oD.pos.pw-o?D.pos.vx=D.pos.pw-o-D.width-A:D.pos.vxD.pos.ph-o?D.pos.vy=D.pos.ph-o-D.height:D.pos.vy');var b="",c=x("style#my-modal-style-"+D.cid);"top"==D.nose||"bottom"==D.nose?(b+="div.my-modal-"+D.cid+".nose-"+D.nose+":before {left:"+(D.pos.ox-D.pos.px+D.pos.ow/2-D.pos.vx)+"px!important;}",c.text(b)):"left"!=D.nose&&"right"!=D.nose||(b+="div.my-modal-"+D.cid+".nose-"+D.nose+":before {top:"+(D.pos.oy-D.pos.py+D.pos.oh/2-D.pos.vy)+"px!important;}",c.text(b))}D.screen?D.global?(t.css({top:0,left:0,width:"100%",height:"100%",display:"block",position:"fixed","z-index":D.z-1}),j(D.screen)?t.css({background:D.screen?D.screen:"rgba(18,41,72,0.88)"}):t.css({background:D.screen?"rgba(18,41,72,0.88)":""})):t.css({top:0,left:0,position:"absolute",width:t.parent().outerWidth()+"px",height:t.parent().outerHeight()+"px",display:"block",background:j(D.screen)?D.screen:"rgba(255,255,255,0.6)","z-index":D.z-1}):t.length&&t.hide(),D.height>D.pos.wh?(q.height(D.pos.wh-30),r.css({"overflow-y":"scroll"})):r.css({"overflow-y":""}),q.animate({top:D.pos.vy+"px",opacity:"1"},D.animate)}function H(){try{r.my("remove")}catch(x){}try{s.data("modals")[D.cid]=null}catch(x){}r.parent().off(".my").remove(),h(t)&&t.off(".my"+D.cid),D.screen&&h(t)&&function(x){x&&e||t.hide(),x&&!e&&t.css({background:"rgba(18,41,72,0.88)"})}.delay(50,D.global),D.global&&(e=!1,x(document.body).css({overflow:""}))}function I(x){try{B(null,null)}catch(x){}(function(){w.reject(x)}).delay(0)}}}(jQuery); \ No newline at end of file diff --git a/bower.json b/bower.json index 14ef82b..4722957 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "jquerymy", - "version": "1.3.3", + "version": "1.3.4", "description": "A lightweight jQuery plugin for complex reactive two-way DOM-JSON data binding.", "main": "./jquerymy.js", "authors": [ diff --git a/jquerymy.js b/jquerymy.js index b353e33..d31e279 100644 --- a/jquerymy.js +++ b/jquerymy.js @@ -1,20 +1,22 @@ /* - * jQuery.my 1.3.3 + * jQuery.my 1.3.4 * Requires jQuery 2.0+, SugarJS 1.3.9-1.4.x * * — async functions support * — fixed issues derived from lgtm static analysis * — unsortable items are no more deleted from bound array + * — $.my.f.tojson generates prettier output, also + * received 3rd arg (obj, tabChars, maxLineLength) * * More details at jquerymy.com * * (c) @ermouth, thanks @carpogoryanin, @ftescht - * 2023-04-29 + * 2024-01-04 */ ;(function ($) { - var _version = '1.3.3'; + var _version = '1.3.4'; // Some shortcuts and constants var TMP, lang = 'en', @@ -734,67 +736,9 @@ patch: _patch, kickoff: _kickoff, sdbmCode: _sdbm, - tojson: (function() { - function f(n){return n < 10 ? '0' + n : n;} - var tabs= '\t'.repeat(10), - fj = JSON.stringify; - - return s4.fill(undefined,0,undefined); - - // - - - - - - - - - - - - - - - - - - - - - - - - - function s4 (w, ctab0, tab){ - var tl=0, a, i, k, v, ctab = ctab0 || 0, xt = tabs; - if (tab && isS(tab)) { - tl = tab.length; - xt = tab.repeat(10); - } - switch((typeof w).substr(0,3)){ - case 'str': return fj(w).replace(/<\/scri/ig, '<\\u002fscri'); - case 'num': return isFinite(w) ? '' + (w + '') + '' : 'null'; - case 'boo': case'nul' : return w + ''; - case 'fun': return fj( - _cleanFn(w.toString()) - .replace(/<\/scri/ig, '<\\u002fscri') - ); - case 'obj': - if (!w) return 'null'; - if (typeof w.toJSON === Fu) return s4(w.toJSON(),ctab+(tab?1:0),tab); - a = []; - if (isA(w)){ - for (i = 0; i < w.length; i += 1) a.push(s4(w[i], ctab + (tab?1:0), tab) || 'null'); - return'['+a.join(','+(tab ? '\n' + xt.to(ctab * tl + tl) : ''))+']'; - } - if (w + '' == '[object Object]') { - for (k in w) { - if (w.hasOwnProperty(k)) { - v = s4(w[k], ctab + (tab ? 1 : 0), tab); - if (v) a.push((tab?'\n' + xt.to(ctab * tl + tl) : '') + s4(k, ctab + (tab ? 1 : 0), tab) + ': ' + v); - } - }; - } - return '{'+a.join(',')+(tab ? '\n' + xt.to(ctab*tl) : '')+'}'; - } - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - function _cleanFn(s) { - var splitter = /\)([\s\n\r\t]+?|\/{1,10}.*?\*\/|\/\/[^\n\r]{0,200}[\n\r]){0,20}?\{/, - a = s.split(splitter,1), - a0 = a[0], - isAsync = a0.to(5)=='async', - head = a0.from(isAsync ? 14 : 8).replace(/[\s\n\r\t]+?|\/{1,10}.*?\*\/|\/\/[^\n\r]{0,200}[\n\r]/g,'') + ')', - tail = '{' + s.from(a0.length).replace(splitter,'').replace(/}[^}]+$/,'}'); - return ((isAsync ? 'async ':'')+'function ' + head).replace(/function\sanonymous/,'function ') + ' ' + tail; - } - - })(), - + tojson: _tojson, fromjson: function (s) {var obj = JSON.parse(s); _unjson(obj); return obj;}, - unjson: function(obj) {_unjson(obj); return obj;}, - mask: _mask, unmask: _unmask, getref: _getref, @@ -2804,7 +2748,7 @@ // 1.2.0, add .my property if (!ie8) { - Object.defineProperty(manifest, "my", { + Object.defineProperty(manifest, 'my', { get:function(){ if (null == myf) myf = _thismy ($root); return myf; @@ -2820,8 +2764,8 @@ if (isS(manifest.error)) { ehandler = function (msg,err) { return manifest.error.assign($E({ - message:msg+"", - err:err+"" + message: msg+'', + err: err+'' }, manifest)); }; } else if (isF(data.error)) { @@ -2891,8 +2835,8 @@ $locstyle = $('style#' + formClass); } - $root.data("my").localStyle = $locstyle; - if (!onlyLocals) $root.addClass("my-restyle"); + $root.data('my').localStyle = $locstyle; + if (!onlyLocals) $root.addClass('my-restyle'); } function html(styles, prefixCss) { @@ -3363,6 +3307,355 @@ } //======================================= + +function _tojson(obj, x, y) { + // Converts obj to string, understands function leaves + // Use: _tojson(obj) or _tojson(obj,opts) or _tojson(obj, tabString, maxWidth) + var opts = _merge({ + maxWidth: 80, // Max width to collapse + tabChars: '', // Single tab entry, string + keyGap: ' ', // Gap between : and value + valueGap: ' ', // Gap after value (and comma if eny) + chain: true, // Collapse ladders of props + tinyObjLen: 12, // Max width of inlined obj/array + tabSubst: ' ', // System \t equivalent in spaces + allowFns: true, // Allow functions as leaves + allowJS: false, // Output functions and regexps as native js + alignJS: true, // Tabulate JS functions if .allowJS==true + }, _t(x) == 'o' ? x : {}); + if (isS(x)) opts.tabChars = x; + if (isN(y) && y > 0) opts.maxWidth = y; + + var mw = isN(opts.maxWidth) ? _clamp(opts.maxWidth,8,1e4) : 80, + ks = isS(opts.keyGap) ? opts.keyGap : ' ', + ksl = _len(ks), + vs = isS(opts.valueGap) ? opts.valueGap : ' ', + vsl = _len(vs), + tab0 = opts.tabSubst, + tab = isS(opts.tabChars) ? opts.tabChars : '', + hastabs = /\t/.test(tab+vs+ks), + tabl = tab.length, + tl = _len(tab), + jsfns = !!opts.allowFns, + jsuntab = !!opts.untabFns, + jsok = !!opts.allowJS, + jsalign = !!opts.alignJS, + tabs = ''; + + var a = [], + s = '', + curr = obj, + t = _t(obj), + lvl = 0, + maxlvl = 0, + up = null, + upt = null, + key = null, + val = '', + len = 0, + mov = 0; + + if (!_it(t)) return t==null ? void 0 : _js(_j(obj,null,' ').replace(/,\n\s*/g,',').replace(/\n(\s)*/g,'')); + + // Parse JSON to a[] list + _putList(t); + + // Collate counters + for (var i = a.length-1; i>0; i--) a[a[i].up].ctr+= 1; + + // Add commas, fix length, detect max level + for (var ai, ai1, i=1; i-1 && ai.lvl>1 && a[ai.up].ctr>1) ai.len+=mw; + } + } + + // Collate lengths + for (var i = a.length-1; i>0; i--) a[a[i].up].len+= a[i].len; + + // Flatten tiny objects/arrays + for (var ai, aii, bi = Array(a.length), j, i = 0; i= j); + } + } + // ....then compact and update references + a = a.reduce(function(a,b){if (b!==null) a.push(b); return a;},[]); + a.forEach(function(e,i){ + bi[e.i] = i; + if (!i) return; + e.up = bi[e.up]; + e.i=i; + }); + + // Build tabs combo and render a[]->s + tabs = _repeat(tab, maxlvl+1); + _render(0); + + return s; + + // - - - - + + function _render(j, notab){ + var notab = !!notab, r = a[j], i = j + 1, line = '', ai; + + // Opening bracket + s+= (notab || !j ? '' : _tab(r.lvl)) + (r.key!==null ? r.key+':'+ks : '') + r.val; + + // Render small arr/obj as a single string + if (!notab && r.lvl && r.len <= mw - (r.lvl - mov)*tl) { + for (var dx = 1; a[i] && a[i].up >= j; i++) { + ai = a[i]; + if (_it(ai.t)) dx+=1; + s+= (ai.key!==null ? ai.key+':'+ks : '') + _jsval(ai, -dx); + } + } + // Render object + else if (r.t == 'o') { + for (; a[i] && a[i].up == j; i++) { + ai = a[i]; + // ... Special case closing bracket + if (notab && !ai.t) { + if (!opts.chain) s+= _tab(ai.lvl) + ai.val; + else { + s+= a[ai.up].ctr > 1 || (i - ai.up == 2) ? _tab(ai.lvl) : ''; + s+= ai.val; + if (mov && a[ai.up].ctr == 1 && i - ai.up > 2) mov -= 1; + } + } + // Primitive type child + else if (!_it(ai.t)) { + s+= _tab(ai.lvl) + (ai.key!==null ? ai.key+':'+ks : '') + _jsval(ai); + } + // ... Iterable child + else { + // ...special case: single child object + if (opts.chain && r.ctr == 1 && ai.lvl > 1) { + // Count preceding keys length + for (var n = 1, dx = 0; a[i-n].ctr==1 && n <= mov+1 && !a[i-n].br; n++) { + dx+= a[i-n].key==null ? 1 : a[i-n].key.length + ksl + 2; + } + // ...add current length + dx+= ai.key.length + ksl + 2 + (ai.lvl - n + 1) * tl; + if (dx <= mw - tabl) { + mov += 1; + i = _render(i, notab = true); + } + else { + if (mov) a[i-1].br = true; // set breakpoint + i = _render(i, notab = false); + } + } + // ... generic obj/arr child + else i = _render(i); + } + } + } + // Render array + else if (r.t == 'a') { + for (; a[i] && a[i].up == j; i++) { + ai = a[i]; + if (ai.t && !_it(ai.t)) { + if (ai.br) { + s+= line + _tab(ai.lvl) + _jsval(ai); + line = ''; + } + else if (!line.length) line = _tab(ai.lvl) + ai.val; + else if (ai.val.substr(0,2)=='"<' || _len(line) + ai.len > mw+1) { + s+= line; + line = _tab(ai.lvl) + ai.val; + } + else line += ai.val; + } + else if (!ai.t) { + s+= line + _tab(ai.lvl) + ai.val; + line = ''; + } + else { + s+= line; + line = ''; + i = _render(i); + } + } + } + // Return current a[] pointer + return i-1; + } + + // - - - - - + + function _putList(T){ + t = T; + len = key == null ? 1 : key.length + 4 + ksl; + val = T=='o' ? '{' : '['; + var root = _put(); + up = a.length - 1; + upt = t; + lvl += 1; + var xup = up, xupt = upt, self = curr, + k = T=='o' ? Object.keys(self) : self, + l = k.length; + for (var i=0; i-1} + function _prot(a){return Object.prototype.toString.call(a)} + function _repeat(a,n){var s=''; for(var i=0;i.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;c1.4*q||w-h.stamp>100||!h.stashed||h.stashed.length!==y.length-(t?1:0)){t&&(g=a.find(">."+r+"-helper"));var D=0;for(y.each(function(a,b){var c,d,e,f=x(b),h=!1;t&&f.hasClass(r+"-helper")||(t&&f.hasClass(r+"-placeholder")&&(f=g),c=f.data("my"),d=f.data("formlist"),c&&d&&(u.push(c.data),D!=d.index&&(d.index=D,h=!0),p&&(e=m(c.data,D)+"")!==d.hash&&(d.hash=e,h=!0),D+=1,h&&v.push(f)))}),c=0;c-1){var e=a.eq(c);e.is(":checked")||(e.prop("checked",!0),d&&e.checkboxradio("refresh"))}else d||a.each(function(){x(this).prop("checked",!1)})}if(-1==c)for(var f=0;fForm 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:"Обязательное поле"}},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$/.test(k.list)?f=k.list:h=k.list||h,!f){var l=">*"==h?x(a[0].children):xx(a,h,!0);f="
",l.length&&(f=x(f).append(l.eq(0).clone(!0)).html(),l.eq(0).remove())}a.data("formlist")||a.data("formlist",{}),a.data("formlist").generator={manifest:g,delay:(k.delay||j.delay||10)/1.3,template:f,selector:h,parent:v,bind:k.bind,merge:t(k.merge)?k.merge.bind(v):!!k.merge&&$,hash:t(k.hash)?k.hash.bind(v):p(k.hash)?D.fill(void 0,k.hash):n(k.hash)?F.fill(void 0,k.hash.slice(0)):null,id:t(k.id)?k.id.bind(v):p(k.id)?D.fill(void 0,k.id):n(k.id)?F.fill(void 0,k.id.slice(0)):null,ext:!(!k.id&&!k.hash),stamp:0},a.on("insert.my",function(a,b){a.stopPropagation();var c={what:void 0,where:0};null==b?c.where=1e6:q(b)?y(c,b):(p(b)||r(b))&&(c.where=b),x(a.target).my("insert",c.where,c.what)}),a.on("remove.my",function(a){a.stopPropagation(),x(a.target).my("remove")})}else try{b=ux.call(a,bx(v,g),q(e)?e:void 0)}catch(x){A("$.my subform init of "+d+" failed: "+x.message,x.stack)}}u(b)?b.then(G,function(x,a){A("Init of subform "+d+" failed with error: "+x,a)}):G()}function A(x,a){O(x,a),o&&o.reject(x,a)}function D(x,a){var b=U(x,a)||"";return"string"==typeof b?b:Y(b)}function F(x,a){return Y(nx(x,a))}function G(){a.each(function(){var e,g,m,n=x(this),o=n[0].nodeName,p=!1;if("TEXTAREA"==o&&(g=(m=n[0].nextSibling)&&m.CodeMirror?m.CodeMirror:null)&&n.addClass("my-codemirror"),e=k.events||yx(n,K.events),n.hasClass("my-form")?B(n.data("my"),{dui:k,root:b,selector:d,dparams:j,devents:e,ddata:i.data,container:j.container(n),derrors:i.errors,single:!0}):(n.data("my",{events:e,selector:d,initial:f,previous:f,root:b,container:j.container(n),id:i.id,ui:k,data:i.data,params:j,errors:i.errors,single:1==w}),c._update=k.delay?zx.debounce(k.delay):E,p=!0),p)if(n.cleditor&&n.parent().hasClass("cleditorMain")){var q=n.cleditor()[0];if(q&&q.$frame&&q.$frame[0]){n.addClass("my-cleditor"),B(n.data("my"),{container:j.container(n)});var r,s=function(x){n.val(x).trigger(l)},t=Number.random(1e5,1e6-1);x(q.$frame[0]).attr("id","cleditCool"+t),r=document.frames?document.frames["cleditCool"+t].document:x("#cleditCool"+t)[0].contentWindow.document;var u=x(r).find("body");x(r).on("keyup.my",function(){s(x(this).find("body").html())}),n.parent().find("div.cleditorToolbar").on("click.my mouseup.my",function(){s(u.html())}),x("body").on("click","div.cleditorPopup",function(){s(u.html())})}}else if("TEXTAREA"==o&&n.parent().hasClass("redactor_box")){var v,y="my-redactor-9";try{v=n.getEditor(),y="my-redactor-8"}catch(x){v=n.redactor("getEditor")}v&&(n.addClass(y),v.on("input.my keyup.my blur.my",function(x){x.trigger("redactor")}.fill(n)))}else n.hasClass("ace_editor")?ace.edit(a[0]).on(l,function(x){x.trigger("ace")}.fill(n)):g&&g.on(l,function(x){x.trigger("codemirror")}.fill(n));n.my()._changed=hx.debounce(h),n.my()._recalc=sx.debounce(h),n.on(e,function(x){x.type==l&&x.stopPropagation(),p&&(i.locktill=I()+c.delay),n.my()._changed(n,b,c,j)}),/check(\.my)?/.test(e+"")||n.on("check.my",function(x){return n.my()._changed(n,b,c,j,!0),!1}),p||n.off("redraw.my"),n.on("recalc.my, redraw.my",function(x){x.stopPropagation(),n.my()._recalc(n,b,c,j)})}),o&&o.resolve()}}function gx(a,b){q(b)&&b.channel&&b.message&&xx(a,".my-listen-"+Y(b.channel),!0).each(function(){var a,c,d=x(this),e=d.data("my");if(e&&e.ui.listen&&t(e.ui.listen[b.channel])){a=e.ui.listen[b.channel];try{c=a.call(e.manifest||e.root.my().manifest,e.data,b.message,d)}catch(x){O("Listener failed",x.message,x.stack)}void 0!==c&&(null===c?d.trigger("check"):c&&d.trigger("recalc"))}})}function hx(x,a,b,c,d){var e,f=x.data("my");f&&(f.disabled?f.ddata||zx(x,E,b.recalcDepth||c.recalcDepth):(lx(f.ddata||f.data,f.dparams||f.params),d||(e=f.single?x:xx(a,f.selector)),zx(x,d?E:kx(e,E),b.recalcDepth||c.recalcDepth),c.change&&c.change.call(x)))}function ix(a,b,c){var d=c.compact(),e=d.replace(/:disabled/g,""),f=e!==d,g="self:"==e.substr(0,5);return g&&(e=e.replace(/^self:/g,"")),b.each(function(){var c=x(this),d=c.my();(!g&&d?d.container:c).toggleClass(e,!!a),f&&void 0!==d&&!!a!=!!d.disabled&&(c.my().disabled=!!a,d._disable||(c.my()._disable=yx(b,K.offon).fill(void 0,b)),d._disable(!!a))}),b}function jx(x,a,b){return x[a](b?"disable":"enable")}function kx(x,a){var b,c,d=x.data("myval");return d||(c=yx(x,K.vals),t(c)&&(void 0===(b=c(x,E))?x.data("myval",function(x,a){return E!=a&&c(x,a),x.val()}.fill(x,void 0)):x.data("myval",c.fill(x,void 0))),d=x.data("myval")),t(d)?(((b=d())!==a&&(0==a||0==b)||b!=a||q(a))&&(b=d(a)),b):E}function lx(x,a,b,c){var d,e,f,g,h,i,j,k,m,n=a;if(!q(n)||isNaN(g=n.remember)||!q(d=n.history))return E;if(q(x)&&g){if(i=z(x,!0),j=I(),(f=A(d).sort()).length&&(j-f.last()=2*g){for(m={},e=g;e<2*g;e++)m[f[e]]=d[f[e]];a.history=m}return c||n.form.trigger(l),n.history[f.last()]}if(!isNaN(x)||x===E){if((h=parseInt(x)||0)<0)return E;if(h>=(f=A(d).sort()).length&&(h=f.length-1),k=z(n.history[f[f.length-h-1]],!0),b){for(m={},e=0;e-1))&&(d=f[e[h]]={});return x}function qx(x,a,b){var c=q(a)?a:null,d=b||(c?c.params:null)||{delay:0},e={css:!0,check:!0,manifest:!0,list:!0,hash:!0,id:!0},f=/\s?[,;]\s?/,g=/,\s*|\s+/g;if(d.normalized)return x;for(var h,l,o=A(x||{}),p=[],r=0;r-1&&!w[k]&&(w[k]=function(){lx(!0)}.debounce(r.restyle)),ax.data("my").restyle=lx.fill(!0).debounce(0)),ax.data("my").localStyle=D,a||ax.addClass("my-restyle"))}function c(x,a){var b="\n",c=/@keyframes/,d=!1,e=b+x.map(function(x){return/^\s*@/.test(x)||"}"==x?(c.test(x)?d=!0:"}"==x&&(d=!1),x):((d?"":"."+a)+x).replace(/\s+/g," ")}).join(b)+b;return'"}}function nx(){var x,a,c=!0;if(a=dx(G),p(a))yx("Error decoding base64 to local Blob/URL",a),c=!1;else{if(b)for(x=0;x*").clone();try{F=rx(G,s.init,ax,s)}catch(x){return yx(p(x)?x:x.message,x.stack),ax}}if(u(F)?F.then(function(){sx()},function(x,a){yx(x,a)}):sx(),!R){if(!ax.my())return yx("Internal error initializing controls.",""),ax;ax.data("my").initial=B(!0,{},I),x.mobile&&x.mobile.changePage(x.mobile.activePage)}}function sx(){var x={},a=Object.keys(o),b=a.length;function c(a){R||(x[a]=kx(xx(ax,a),E),(b-=1)<1&&tx(x))}b<1?ux():(ax.addClass(T),a.forEach(function(x){if(!R){var a=xx(ax,x),b=fx(a,ax,o[x],x);_[x]=a,u(b)?b.then(c.fill(x)).fail(function(a,b){yx("Error building "+x+", "+a,b)}):R||c(x)}}))}function tx(x){A(o).forEach(function(a){if(!R){var b,c=o[a],d=_[a];if(d.length){c.listen&&(N[a]=d.eq(0));try{null===(b=ex(I,null,c,d))&&null!=x[a]&&ex(I,x[a],c,d)}catch(x){O("Transient fail linking "+a+' of form $(".my-form-'+k+'")',x.message,x.stack)}try{null!=b&&kx(d,b),d.eq(0).trigger("check.my")}catch(x){yx("Error linking "+a,x.message)}}}}),R||ux()}function ux(){ax.removeClass(T),ax.on("recalc.my, redraw.my",function(x){x.stopPropagation(),ax.my("redraw")}),$=null,Q.resolve(I)}function yx(x,a){var b;if(R=!0,O("Form "+j+" failed to initialize.",x,a),Object.keys(_).forEach(function(x){delete _[x]}),ax.removeClass(T),b=S(x,a),p(b)||q(b)&&b.jquery?ax.html(b):!0===b&&ax.html($),r.silent)Q.resolve(I);else{if(!ax.my().ddata){if(ax.removeData("my"),ax.removeClass("my-form"),z)if("1"==z.data("count"))try{z.remove()}catch(x){}else z.data("count",z.data("count")-1);if(D)try{delete w[k],D.remove()}catch(x){}}Q.reject("Form "+j+" failed to initialize: "+x,a)}}}function vx(x,a){var b=[],c=[],d=a;return q(d)&&q(d.style)?(e(a.style,"",b,c),[b,c]):"";function e(b,c,d,g){var h,i,j,k,l=b,m=/@/.test(c),o=c.split("@")[0],r=t(l);if(m&&(r?g:d).push("@"+c.split("@")[1].trim()+" {"),p(l)&&(/[\r\n]/.test(l)||l.split("}",3).length>2?l=L.css2json(l):d.push(o+(/\{/.test(l)?l:"{"+l+"}"))),n(l)&&l.length)for(h=0;hc&&null!=h&&!i)return b=h,c=f,void 0;i&&e(x,h,f+1)}}),null==b&&null!=a[""]&&!q(a[""])&&f>c&&(b=a[""],c=f)}}function zx(x,a,b){var c,d,e,f,g,h,i,j,k,l=!1,m=!1,n=x,o=n.my(),q="";if(o){if(h=o.selector,(i=o.root).hasClass("my-form-init"))return{};if(j=xx(i,h),(l=x.hasClass("my-form"))?(c=x,d=o.ddata,e=o.dui,f=o.dparams):(c=o.container,d=o.data,e=o.ui,f=o.params),e.bind!=E){if(g=F(a)?a:kx(j,ex(d,E,e,j)),E!=e.check){q="Unknown error";try{q=Hx(d,g,e,j)}catch(x){O("Error "+x.message+" in .check validator for "+h,i,x.stack)}}var r=f.errorCss,u="ui-state-error";try{E!=a&&(g=kx(j,ex(d,a,e,j)))}catch(x){q=f.messages.formError||"Error"}if(E!=e.check)if(m=x.hasClass("my-form-list"),""==q&&(l||m||c.hasClass(r)))l?o.derrors[h]="":o.errors[h]="",c.removeClass(r),c.attr("title")&&c.attr("title",""),l||m||f.effect(xx(c,f.errorTip),!1,f.animate/2),n.removeClass(u),xx(n,".ui-widget").removeClass(u);else if(q){if(l)o.derrors[h]=q;else if(m)o.errors[h]=q;else{c.addClass(r),o.errors[h]=q;var v=xx(c,f.errorTip);v.length?f.effect(v.addClass(r).html(p(q)?q:"Error"),!0,f.animate):c.attr("title",(p(q)?q:"Error").stripTags())}n.hasClass("hasDatepicker")&&(n.is("input")?n.addClass(u):xx(n,".ui-widget").addClass(u)),n.hasClass("ui-slider")&&n.addClass(u)}}var w=a==E?g:a;e.css&&A(e.css).forEach(function(x){var a=e.css[x];s(a)?ix(a.test(w),j,x):t(a)&&ix(a.call(i.my().manifest,d,w,j),j,x)});var y,z,C=e.recalc,D=[],G={};if(b&&e.recalc&&i.my()){for(k=i.my().ui,y=0;y-1?"":l;case"s":return b==h?"":l;case"o":return h[b]?"":l;case"b":return d.hasClass("my-form-list")?(f=d.data("listSrc")||d.data("my").listSrc||">*",g={},i=0,(">*"==f?x(d[0].children):xx(d,f,!0)).each(function(a){var b=x(this);b.hasClass("ui-sortable-placeholder")||(b.data("my")&&!b.my("valid")&&(g[i]=b.my("errors")),i+=1)}),g):d.hasClass("my-form")&&h?d.my("valid")?"":d.my("errors"):""}return j.formError||"Error"}return""}}(jQuery),function(x){var a=x.extend,b="string",c="function",d=Object.isArray,e=(Object.isBoolean,Object.isString),f=Object.isObject,g=(Object.isNumber,Object.isRegExp,Object.isFunction,Object.keys),h='',inp:h+'text" {ext}/>',sli:h+'range" {ext}/>',dat:h+'date" {ext}/>',btn:h+'button" {ext}/>',pwd:h+'password" {ext}/>',but:"",div:"
{txt}
",spn:"{txt}",sel:"",mul:'',txt:"",err:' {txt}',msg:'
{txt}
',val:function(x){if(!d(x.vals))return"";var b=a({style:"",css:""},x);return b.txt=x.vals.reduce(function(x,a){return x+""+a+" "}," "),'{txt}'.assign(b)},"":"<{_tag} {ext}>{txt}"},txt:{sel:function(x){if(!x.vals)return"";var a=k(x.vals);return g(a).reduce(function(x,b){return x+'"},"")}},params:{styles:{num:"width:30%;",dat:"width:30%;",inp:"width:100%",pwd:"width:100%",txt:"width:100%;max-width:100%;min-height:1px;word-break:break-word;",err:"display:none",msg:"display:none"},alias:{number:"num",date:"dat",slider:"sli",textarea:"txt",input:"inp",span:"spn",select:"select",vals:"val"},row:"",rowTag:"div",rowCss:"my-row",label:"",labelTag:"span",labelCss:"my-label"},defaults:{id:"",class:"",style:"",placeholder:"",value:"",rows:1},attnames:{css:"class",plc:"placeholder",val:"value",txt:"",vals:"",tip:"title"}};function j(x,h,j){if(e(h))return x+h;if(f(h))return a(!0,j,h),x;if(d(h)&&h.length>1&&e(h[1])){for(var k,l,m,n,o,p,q,r=h[0],s="",t=1;t'+(r?"<"+j.labelTag+' class="'+j.labelCss+'" '+(j.label?'style="display:inline-block;width:'+j.label+";margin-left:-"+j.label+'" ':"")+">"+r+"":"")+s+""),x+s}return x}function k(x){var a=x;if(e(a)&&(a=a.split(/[\s,]/).compact(!0)),d(a)){for(var b={},c=0;c

',ui:{"img:eq(0)":"img",h4:{bind:"text",css:{hide:function(x,a){return!a}}}}},data:{img:m.attr("src"),text:l},esc:!0,screen:!0,width:d||n,focus:!1,global:!0,z:"1995"},c));else if(k(b)&&b.manifest)f(a,b,c);else{if(!j(b))return null;f(a,{source:"html",manifest:{init:function(x){x.html(this.HTML)},HTML:b,ui:{"div:eq(0)":function(){}}},data:{},esc:!0,focus:!1,width:d},c)}return a}c.modal=function(a,b,c){var f,g={},h=x(d),j=h.find(">.my-modal-proxy"),k={global:!0,screen:!0,done:m(b)?b:void 0,z:"1995"};return i(a)||null==a?j.modal(a):(f=x.Deferred(),o(g,a,k,c)?e?f.reject("Locked").promise():(j.length||(j=x('
').prependTo(h)).css({position:"absolute",top:"0",left:"0",margin:"0",padding:"0",width:"1px",height:"0"}),j.modal(g)):f.reject("Invalid data").promise())},c.modal.loading=function(a){x(d).find(">.my-modal").toggleClass("my-modal-loading",!!a)},c.modal.parent=function(a){if(!a||!x(a).length)return x(d);d=a},c.modal.parentBack=function(b){if(!b||!x(b).length)return x(a||d);a=b},c.modal.visible=function(){return!!e},x.my||(x.my={}),x.my.modal=c.modal,x.fn.modal=function(c,n,p){if(b){if(void 0===c&&void 0===n&&void 0===p)return b.call(this);if(k(c)&&(c.hasOwnProperty("backdrop")||c.hasOwnProperty("keyborad")||c.hasOwnProperty("show")))return b.call(this,c,n);if(j(c)&&/^(toggle|show|hide|handleUpdate)$/.test(c))return b.call(this,c,n)}var q,r,s,t,u,v,w=x.Deferred(),y={},z=this,A=0,B=m(n)?n:function(){return!1},C=k(c)?c:{},D=z.data("modal");if(f(z,w.promise()),D){if(null==c||i(c))return E(c),z;if(C)return I("Locked"),z}return z.is(":visible")?(C=o(y,c,{}))?C.global&&e?(I("Locked"),z):((D=f({type:"DOM",source:"manifest",form:null,modal:null,root:null,bgroot:null,caller:z,manifest:{},data:{},global:!1,screen:!1,drag:!1,focus:!0,close:!0,silent:!0,esc:!1,enter:!1,bound:!1,hardClose:!0,nose:"",width:p||300,height:null,x:"0",y:"0",z:"1901",background:"white",css:"",animate:200},C,{promise:w.promise(),cid:Number.random(268435456,4294967295).toString(16)})).done=m(D.done)?D.done:B,j(D.align)&&D.align&&(D.x=(D.align.match(/(left|right):\-?\d+(\.\d+)?(%|px)?/g)||["0"])[0],D.y=(D.align.match(/(top|bottom):\-?\d+(\.\d+)?(%|px)?/g)||["0"])[0]),D.width=1*(x.my.f.getref(j(D.manifest)?x.my.cache(D.manifest):D.manifest,"params.width")||D.width),D.type="DOM",z.hasClass("my-form")?(D.type="form",D.root=D.root||z):z.data("my")?(D.type="control",D.root=D.root||z.my().root):(D.root=D.root||z.parents(".my-form").eq(0),D.root.length||(D.root=x(d))),D.global?(D.root=x(d),D.bgroot=x(a||d)):D.bgroot=D.bgroot?x(D.bgroot):D.root,(s=D.root).data("modals")||s.data("modals",{}),F(),q=x('
'),D.root.find(">.my-modal").length?q.insertAfter(D.root.find(">.my-modal").last()):q.prependTo(D.root),q.addClass("my-modal-"+D.cid),A=q.outerWidth(),q.hide(),q.html('
'),r=q.find(".my-modal-form"),D.close&&x(j(D.close)?D.close:'
×
').prependTo(q).on("click.my",function(){E(D.hardClose)}).css({"z-index":("+"===(D.z+"").to(1)?"+":"")+(1*D.z+1)}),t=D.bgroot.find(">.my-modal-screen"),D.screen&&(t.length||(t=x('').prependTo(D.bgroot)),D.esc&&t.on("click.my"+D.cid,function(){z.modal(!0)}),t.toggleClass("my-modal-screen-global",!!D.global)),z.data("modal",D),D.silent&&q.on("change.my",function(){return!1}),q.css({display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto"}),D.global?q.css({position:"fixed",left:"50%",top:D.pos.vy+"px",display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto","margin-left":"-"+((D.width+A)/2).round(0)+"px"}):q.css({position:"absolute",left:D.pos.vx+"px",top:D.pos.vy+"px",display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto"}),r.my(D.manifest,D.data).then(function(){var a,b,c;if(f(D,{form:r,bg:t,cancel:function(){E(!0)},commit:function(){E()}}),q.data("modal",D),D.height=q.outerHeight(),"manifest"!==D.source&&(D.width=q.width()),F(),q.css({top:D.pos.vy+"px"}),G(!0),q.removeClass("my-modal-init"),s.data("modals")[D.cid]=D,g[D.cid]=w,r.on("commit.my",function(){return D.commit.delay(30),!1}).on("cancel.my",function(){return D.cancel.delay(30),!1}),q.on("layout.my",function(){G()}.debounce(30)),D.global&&(e=z,x(document.body).css({overflow:"hidden"})),D.global||!D.esc&&!D.enter||r.on("keydown.my",function(a){var b=a.keyCode;return 27==b&&D.esc?(D.cancel(),!1):13==b&&D.enter&&!x(a.target).is("textarea")?(D.commit.delay(50),!1):void 0}),!0===D.focus?(b=!1,c=D.manifest.ui,Object.keys(c||{}).forEach(function(x){if(!b){var a=r.find(x);a.length&&a.is("input, textarea, button")&&(b=!0,a.focus())}})):j(D.focus)&&r.find(D.focus).focus(),(a=r.find("img").filter(function(){return""!=x(this).attr("src")})).length){var d=function(){"manifest"!==D.source&&q.css({width:"auto"}),G()}.after(a.length);a.each(function(){x(this).bind("load",d)})}D.drag&&x.fn.draggable&&(j(D.drag)?q.draggable({handle:D.drag}):q.draggable(),D.nose&&q.on("dragstart.my",function(){q.removeClass("nose-"+D.nose)})),q.on("mousedown.my",function(a){var b=[],c=x(a.currentTarget),d=c.parent(),e=+c.css("z-index"),f=e;d.length&&(d.find(">.my-modal").each(function(c,d){var g=+x(d).css("z-index")||0;d!=a.currentTarget&&g>=e&&b.push([g,x(d)]),g>f&&(f=g)}),b.forEach(function(x){x[1].css("z-index",x[0]-1+"")}),c.css("z-index",f+""))}),w.notify("Ready")}).fail(function(x){try{H()}catch(x){}z.data("modal",null),w.reject(x)}),z):(I("Invalid data"),z):(I("Object must be visible"),z);function E(x){if(r=D.form,t=D.bg,s=D.root,B=D.done,u=r.my("data"),v=!1,x){try{B.call(r.my("manifest"),null,null)}catch(x){}try{h(r)&&H()}catch(x){}if(h(z)&&z.removeData("modal"),g[D.cid])try{g[D.cid].reject("Cancelled")}catch(x){}delete g[D.cid],D=null}else{try{v=B.call(r.my("manifest"),r.my("valid")?null:r.my("errors"),u)}catch(x){}if(!v){try{h(r)&&H()}catch(x){}h(z)&&z.removeData("modal"),function(){if(g[D.cid])try{g[D.cid].resolve(u)}catch(x){}delete g[D.cid],D=null}.delay(0)}}}function F(){var a,b,c=window,d=!!D.global,e=s.offset(),f=z.offset(),g=s.scrollTop();D.pos={px:e.left,py:e.top,pw:s.outerWidth(),ph:s.outerHeight(),ox:f.left,oy:f.top,ow:z.outerWidth(),oh:z.outerHeight(),ww:b,wh:a};var h=1*(D.x.match(/\-?\d+(\.\d+)?/)||[0])[0],i=1*(D.y.match(/\-?\d+(\.\d+)?/)||[0])[0],j=D.x.has("left")?-1:D.x.has("right")?1:0,k=D.y.has("top")?-1:D.y.has("bottom")?1:0,m=D.pos.ox+D.pos.ow/2-D.pos.px,n=D.pos.oy+D.pos.oh/2-D.pos.py;if(d&&(D.pos.wh=a=c.innerHeight||x(c).height(),D.pos.ww=b=c.innerWidth||x(c).width(),m=b/2,n=a/2.5),h=D.x.has("%")?D.pos.ow/100*h:h,i=D.y.has("%")?D.pos.oh/100*i:i,D.pos.pix=m,D.pos.piy=n,m=m+j*(D.pos.ow/2)+h*(j>0?-1:1)-(D.width+A)*(j+1)/2,d?(n=(a-D.height-20)/3)<10&&(n=10):n=n+k*(D.pos.oh/2)+i*(k>0?-1:1)-(D.height||0)*(k+1)/2,m=m.round(1),n=(n+g).round(1),D.pos.vx=m,D.pos.vy=n,!1!==D.bound&&!D.global){var o=(l(D.bound)?D.bound:0).clamp(-100,100);D.pos.pw-2*oD.pos.pw-o?D.pos.vx=D.pos.pw-o-D.width-A:D.pos.vxD.pos.ph-o?D.pos.vy=D.pos.ph-o-D.height:D.pos.vy');var b="",c=x("style#my-modal-style-"+D.cid);"top"==D.nose||"bottom"==D.nose?(b+="div.my-modal-"+D.cid+".nose-"+D.nose+":before {left:"+(D.pos.ox-D.pos.px+D.pos.ow/2-D.pos.vx)+"px!important;}",c.text(b)):"left"!=D.nose&&"right"!=D.nose||(b+="div.my-modal-"+D.cid+".nose-"+D.nose+":before {top:"+(D.pos.oy-D.pos.py+D.pos.oh/2-D.pos.vy)+"px!important;}",c.text(b))}D.screen?D.global?(t.css({top:0,left:0,width:"100%",height:"100%",display:"block",position:"fixed","z-index":D.z-1}),j(D.screen)?t.css({background:D.screen?D.screen:"rgba(18,41,72,0.88)"}):t.css({background:D.screen?"rgba(18,41,72,0.88)":""})):t.css({top:0,left:0,position:"absolute",width:t.parent().outerWidth()+"px",height:t.parent().outerHeight()+"px",display:"block",background:j(D.screen)?D.screen:"rgba(255,255,255,0.6)","z-index":D.z-1}):t.length&&t.hide(),D.height>D.pos.wh?(q.height(D.pos.wh-30),r.css({"overflow-y":"scroll"})):r.css({"overflow-y":""}),q.animate({top:D.pos.vy+"px",opacity:"1"},D.animate)}function H(){try{r.my("remove")}catch(x){}try{s.data("modals")[D.cid]=null}catch(x){}r.parent().off(".my").remove(),h(t)&&t.off(".my"+D.cid),D.screen&&h(t)&&function(x){x&&e||t.hide(),x&&!e&&t.css({background:"rgba(18,41,72,0.88)"})}.delay(50,D.global),D.global&&(e=!1,x(document.body).css({overflow:""}))}function I(x){try{B(null,null)}catch(x){}(function(){w.reject(x)}).delay(0)}}}(jQuery); \ No newline at end of file +/*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;c1.4*q||w-h.stamp>100||!h.stashed||h.stashed.length!==y.length-(t?1:0)){t&&(g=a.find(">."+r+"-helper"));var D=0;for(y.each(function(a,b){var c,d,e,f=x(b),h=!1;t&&f.hasClass(r+"-helper")||(t&&f.hasClass(r+"-placeholder")&&(f=g),c=f.data("my"),d=f.data("formlist"),c&&d&&(u.push(c.data),D!=d.index&&(d.index=D,h=!0),p&&(e=m(c.data,D)+"")!==d.hash&&(d.hash=e,h=!0),D+=1,h&&v.push(f)))}),c=0;c-1){var e=a.eq(c);e.is(":checked")||(e.prop("checked",!0),d&&e.checkboxradio("refresh"))}else d||a.each(function(){x(this).prop("checked",!1)})}if(-1==c)for(var f=0;fForm 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:"Обязательное поле"}},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$/.test(k.list)?f=k.list:h=k.list||h,!f){var l=">*"==h?x(a[0].children):xx(a,h,!0);f="
",l.length&&(f=x(f).append(l.eq(0).clone(!0)).html(),l.eq(0).remove())}a.data("formlist")||a.data("formlist",{}),a.data("formlist").generator={manifest:g,delay:(k.delay||j.delay||10)/1.3,template:f,selector:h,parent:v,bind:k.bind,merge:t(k.merge)?k.merge.bind(v):!!k.merge&&$,hash:t(k.hash)?k.hash.bind(v):p(k.hash)?D.fill(void 0,k.hash):n(k.hash)?F.fill(void 0,k.hash.slice(0)):null,id:t(k.id)?k.id.bind(v):p(k.id)?D.fill(void 0,k.id):n(k.id)?F.fill(void 0,k.id.slice(0)):null,ext:!(!k.id&&!k.hash),stamp:0},a.on("insert.my",function(a,b){a.stopPropagation();var c={what:void 0,where:0};null==b?c.where=1e6:q(b)?y(c,b):(p(b)||r(b))&&(c.where=b),x(a.target).my("insert",c.where,c.what)}),a.on("remove.my",function(a){a.stopPropagation(),x(a.target).my("remove")})}else try{b=ux.call(a,bx(v,g),q(e)?e:void 0)}catch(x){A("$.my subform init of "+d+" failed: "+x.message,x.stack)}}u(b)?b.then(G,function(x,a){A("Init of subform "+d+" failed with error: "+x,a)}):G()}function A(x,a){O(x,a),o&&o.reject(x,a)}function D(x,a){var b=U(x,a)||"";return"string"==typeof b?b:Y(b)}function F(x,a){return Y(nx(x,a))}function G(){a.each(function(){var e,g,m,n=x(this),o=n[0].nodeName,p=!1;if("TEXTAREA"==o&&(g=(m=n[0].nextSibling)&&m.CodeMirror?m.CodeMirror:null)&&n.addClass("my-codemirror"),e=k.events||yx(n,K.events),n.hasClass("my-form")?B(n.data("my"),{dui:k,root:b,selector:d,dparams:j,devents:e,ddata:i.data,container:j.container(n),derrors:i.errors,single:!0}):(n.data("my",{events:e,selector:d,initial:f,previous:f,root:b,container:j.container(n),id:i.id,ui:k,data:i.data,params:j,errors:i.errors,single:1==w}),c._update=k.delay?zx.debounce(k.delay):E,p=!0),p)if(n.cleditor&&n.parent().hasClass("cleditorMain")){var q=n.cleditor()[0];if(q&&q.$frame&&q.$frame[0]){n.addClass("my-cleditor"),B(n.data("my"),{container:j.container(n)});var r,s=function(x){n.val(x).trigger(l)},t=Number.random(1e5,1e6-1);x(q.$frame[0]).attr("id","cleditCool"+t),r=document.frames?document.frames["cleditCool"+t].document:x("#cleditCool"+t)[0].contentWindow.document;var u=x(r).find("body");x(r).on("keyup.my",function(){s(x(this).find("body").html())}),n.parent().find("div.cleditorToolbar").on("click.my mouseup.my",function(){s(u.html())}),x("body").on("click","div.cleditorPopup",function(){s(u.html())})}}else if("TEXTAREA"==o&&n.parent().hasClass("redactor_box")){var v,y="my-redactor-9";try{v=n.getEditor(),y="my-redactor-8"}catch(x){v=n.redactor("getEditor")}v&&(n.addClass(y),v.on("input.my keyup.my blur.my",function(x){x.trigger("redactor")}.fill(n)))}else n.hasClass("ace_editor")?ace.edit(a[0]).on(l,function(x){x.trigger("ace")}.fill(n)):g&&g.on(l,function(x){x.trigger("codemirror")}.fill(n));n.my()._changed=hx.debounce(h),n.my()._recalc=sx.debounce(h),n.on(e,function(x){x.type==l&&x.stopPropagation(),p&&(i.locktill=I()+c.delay),n.my()._changed(n,b,c,j)}),/check(\.my)?/.test(e+"")||n.on("check.my",function(x){return n.my()._changed(n,b,c,j,!0),!1}),p||n.off("redraw.my"),n.on("recalc.my, redraw.my",function(x){x.stopPropagation(),n.my()._recalc(n,b,c,j)})}),o&&o.resolve()}}function gx(a,b){q(b)&&b.channel&&b.message&&xx(a,".my-listen-"+Y(b.channel),!0).each(function(){var a,c,d=x(this),e=d.data("my");if(e&&e.ui.listen&&t(e.ui.listen[b.channel])){a=e.ui.listen[b.channel];try{c=a.call(e.manifest||e.root.my().manifest,e.data,b.message,d)}catch(x){O("Listener failed",x.message,x.stack)}void 0!==c&&(null===c?d.trigger("check"):c&&d.trigger("recalc"))}})}function hx(x,a,b,c,d){var e,f=x.data("my");f&&(f.disabled?f.ddata||zx(x,E,b.recalcDepth||c.recalcDepth):(lx(f.ddata||f.data,f.dparams||f.params),d||(e=f.single?x:xx(a,f.selector)),zx(x,d?E:kx(e,E),b.recalcDepth||c.recalcDepth),c.change&&c.change.call(x)))}function ix(a,b,c){var d=c.compact(),e=d.replace(/:disabled/g,""),f=e!==d,g="self:"==e.substr(0,5);return g&&(e=e.replace(/^self:/g,"")),b.each(function(){var c=x(this),d=c.my();(!g&&d?d.container:c).toggleClass(e,!!a),f&&void 0!==d&&!!a!=!!d.disabled&&(c.my().disabled=!!a,d._disable||(c.my()._disable=yx(b,K.offon).fill(void 0,b)),d._disable(!!a))}),b}function jx(x,a,b){return x[a](b?"disable":"enable")}function kx(x,a){var b,c,d=x.data("myval");return d||(c=yx(x,K.vals),t(c)&&(void 0===(b=c(x,E))?x.data("myval",function(x,a){return E!=a&&c(x,a),x.val()}.fill(x,void 0)):x.data("myval",c.fill(x,void 0))),d=x.data("myval")),t(d)?(((b=d())!==a&&(0==a||0==b)||b!=a||q(a))&&(b=d(a)),b):E}function lx(x,a,b,c){var d,e,f,g,h,i,j,k,m,n=a;if(!q(n)||isNaN(g=n.remember)||!q(d=n.history))return E;if(q(x)&&g){if(i=z(x,!0),j=I(),(f=A(d).sort()).length&&(j-f.last()=2*g){for(m={},e=g;e<2*g;e++)m[f[e]]=d[f[e]];a.history=m}return c||n.form.trigger(l),n.history[f.last()]}if(!isNaN(x)||x===E){if((h=parseInt(x)||0)<0)return E;if(h>=(f=A(d).sort()).length&&(h=f.length-1),k=z(n.history[f[f.length-h-1]],!0),b){for(m={},e=0;e-1))&&(d=f[e[h]]={});return x}function qx(x,a,b){var c=q(a)?a:null,d=b||(c?c.params:null)||{delay:0},e={css:!0,check:!0,manifest:!0,list:!0,hash:!0,id:!0},f=/\s?[,;]\s?/,g=/,\s*|\s+/g;if(d.normalized)return x;for(var h,l,o=A(x||{}),p=[],r=0;r-1&&!w[k]&&(w[k]=function(){lx(!0)}.debounce(r.restyle)),ax.data("my").restyle=lx.fill(!0).debounce(0)),ax.data("my").localStyle=D,a||ax.addClass("my-restyle"))}function c(x,a){var b="\n",c=/@keyframes/,d=!1,e=b+x.map(function(x){return/^\s*@/.test(x)||"}"==x?(c.test(x)?d=!0:"}"==x&&(d=!1),x):((d?"":"."+a)+x).replace(/\s+/g," ")}).join(b)+b;return'"}}function nx(){var x,a,c=!0;if(a=dx(G),p(a))yx("Error decoding base64 to local Blob/URL",a),c=!1;else{if(b)for(x=0;x*").clone();try{F=rx(G,s.init,ax,s)}catch(x){return yx(p(x)?x:x.message,x.stack),ax}}if(u(F)?F.then(function(){sx()},function(x,a){yx(x,a)}):sx(),!R){if(!ax.my())return yx("Internal error initializing controls.",""),ax;ax.data("my").initial=B(!0,{},I),x.mobile&&x.mobile.changePage(x.mobile.activePage)}}function sx(){var x={},a=Object.keys(o),b=a.length;function c(a){R||(x[a]=kx(xx(ax,a),E),(b-=1)<1&&tx(x))}b<1?ux():(ax.addClass(T),a.forEach(function(x){if(!R){var a=xx(ax,x),b=fx(a,ax,o[x],x);_[x]=a,u(b)?b.then(c.fill(x)).fail(function(a,b){yx("Error building "+x+", "+a,b)}):R||c(x)}}))}function tx(x){A(o).forEach(function(a){if(!R){var b,c=o[a],d=_[a];if(d.length){c.listen&&(N[a]=d.eq(0));try{null===(b=ex(I,null,c,d))&&null!=x[a]&&ex(I,x[a],c,d)}catch(x){O("Transient fail linking "+a+' of form $(".my-form-'+k+'")',x.message,x.stack)}try{null!=b&&kx(d,b),d.eq(0).trigger("check.my")}catch(x){yx("Error linking "+a,x.message)}}}}),R||ux()}function ux(){ax.removeClass(T),ax.on("recalc.my, redraw.my",function(x){x.stopPropagation(),ax.my("redraw")}),$=null,Q.resolve(I)}function yx(x,a){var b;if(R=!0,O("Form "+j+" failed to initialize.",x,a),Object.keys(_).forEach(function(x){delete _[x]}),ax.removeClass(T),b=S(x,a),p(b)||q(b)&&b.jquery?ax.html(b):!0===b&&ax.html($),r.silent)Q.resolve(I);else{if(!ax.my().ddata){if(ax.removeData("my"),ax.removeClass("my-form"),z)if("1"==z.data("count"))try{z.remove()}catch(x){}else z.data("count",z.data("count")-1);if(D)try{delete w[k],D.remove()}catch(x){}}Q.reject("Form "+j+" failed to initialize: "+x,a)}}}function vx(x,a){var b=[],c=[],d=a;return q(d)&&q(d.style)?(e(a.style,"",b,c),[b,c]):"";function e(b,c,d,g){var h,i,j,k,l=b,m=/@/.test(c),o=c.split("@")[0],r=t(l);if(m&&(r?g:d).push("@"+c.split("@")[1].trim()+" {"),p(l)&&(/[\r\n]/.test(l)||l.split("}",3).length>2?l=L.css2json(l):d.push(o+(/\{/.test(l)?l:"{"+l+"}"))),n(l)&&l.length)for(h=0;hc&&null!=h&&!i)return b=h,c=f,void 0;i&&e(x,h,f+1)}}),null==b&&null!=a[""]&&!q(a[""])&&f>c&&(b=a[""],c=f)}}function zx(x,a,b){var c,d,e,f,g,h,i,j,k,l=!1,m=!1,n=x,o=n.my(),q="";if(o){if(h=o.selector,(i=o.root).hasClass("my-form-init"))return{};if(j=xx(i,h),(l=x.hasClass("my-form"))?(c=x,d=o.ddata,e=o.dui,f=o.dparams):(c=o.container,d=o.data,e=o.ui,f=o.params),e.bind!=E){if(g=F(a)?a:kx(j,ex(d,E,e,j)),E!=e.check){q="Unknown error";try{q=Gx(d,g,e,j)}catch(x){O("Error "+x.message+" in .check validator for "+h,i,x.stack)}}var r=f.errorCss,u="ui-state-error";try{E!=a&&(g=kx(j,ex(d,a,e,j)))}catch(x){q=f.messages.formError||"Error"}if(E!=e.check)if(m=x.hasClass("my-form-list"),""==q&&(l||m||c.hasClass(r)))l?o.derrors[h]="":o.errors[h]="",c.removeClass(r),c.attr("title")&&c.attr("title",""),l||m||f.effect(xx(c,f.errorTip),!1,f.animate/2),n.removeClass(u),xx(n,".ui-widget").removeClass(u);else if(q){if(l)o.derrors[h]=q;else if(m)o.errors[h]=q;else{c.addClass(r),o.errors[h]=q;var v=xx(c,f.errorTip);v.length?f.effect(v.addClass(r).html(p(q)?q:"Error"),!0,f.animate):c.attr("title",(p(q)?q:"Error").stripTags())}n.hasClass("hasDatepicker")&&(n.is("input")?n.addClass(u):xx(n,".ui-widget").addClass(u)),n.hasClass("ui-slider")&&n.addClass(u)}}var w=a==E?g:a;e.css&&A(e.css).forEach(function(x){var a=e.css[x];s(a)?ix(a.test(w),j,x):t(a)&&ix(a.call(i.my().manifest,d,w,j),j,x)});var y,z,C=e.recalc,D=[],G={};if(b&&e.recalc&&i.my()){for(k=i.my().ui,y=0;y0&&(c.maxWidth=b);var d=cx(c.maxWidth)?_(c.maxWidth,8,1e4):80,e=bx(c.keyGap)?c.keyGap:" ",f=xx(e),g=bx(c.valueGap)?c.valueGap:" ",h=xx(g),i=c.tabSubst,j=bx(c.tabChars)?c.tabChars:"",k=/\t/.test(j+g+e),l=j.length,m=xx(j),n=!!c.allowFns,o=(c.untabFns,!!c.allowJS),p=!!c.alignJS,q="",r=[],s="",t=x,u=N(x),v=0,w=0,y=null,z=null,A=null,B="",C=0,D=0;if(!S(u))return null==u?void 0:P(O(x,null," ").replace(/,\n\s*/g,",").replace(/\n(\s)*/g,""));L(u);for(var E=r.length-1;E>0;E--)r[r[E].up].ctr+=1;var F;for(E=1;E-1&&G.lvl>1&&r[G.up].ctr>1&&(G.len+=d));for(E=r.length-1;E>0;E--)r[r[E].up].len+=r[E].len;var G,H,I,J=Array(r.length);for(E=0;E=I)}return(r=r.reduce(function(x,a){return null!==a&&x.push(a),x},[])).forEach(function(x,a){J[x.i]=a,a&&(x.up=J[x.up],x.i=a)}),q=Z(j,w+1),K(0),s;function K(x,a){a=!!a;var b,g=r[x],h=x+1,i="";if(s+=(a||!x?"":R(g.lvl))+(null!==g.key?g.key+":"+e:"")+g.val,!a&&g.lvl&&g.len<=d-(g.lvl-D)*m)for(var j=1;r[h]&&r[h].up>=x;h++)S((b=r[h]).t)&&(j+=1),s+=(null!==b.key?b.key+":"+e:"")+T(b,-j);else if("o"==g.t)for(;r[h]&&r[h].up==x;h++)if(b=r[h],a&&!b.t)c.chain?(s+=r[b.up].ctr>1||h-b.up==2?R(b.lvl):"",s+=b.val,D&&1==r[b.up].ctr&&h-b.up>2&&(D-=1)):s+=R(b.lvl)+b.val;else if(S(b.t))if(c.chain&&1==g.ctr&&b.lvl>1){var k=1;for(j=0;1==r[h-k].ctr&&k<=D+1&&!r[h-k].br;k++)j+=null==r[h-k].key?1:r[h-k].key.length+f+2;(j+=b.key.length+f+2+(b.lvl-k+1)*m)<=d-l?(D+=1,h=K(h,a=!0)):(D&&(r[h-1].br=!0),h=K(h,a=!1))}else h=K(h);else s+=R(b.lvl)+(null!==b.key?b.key+":"+e:"")+T(b);else if("a"==g.t)for(;r[h]&&r[h].up==x;h++)(b=r[h]).t&&!S(b.t)?b.br?(s+=i+R(b.lvl)+T(b),i=""):i.length?'"<'==b.val.substr(0,2)||xx(i)+b.len>d+1?(s+=i,i=R(b.lvl)+b.val):i+=b.val:i=R(b.lvl)+b.val:b.t?(s+=i,i="",h=K(h)):(s+=i+R(b.lvl)+b.val,i="");return h-1}function L(x){u=x,C=null==A?1:A.length+4+f,B="o"==x?"{":"[";M();y=r.length-1,v+=1;for(var a=y,b=z=u,c=t,d="o"==x?Object.keys(c):c,e=d.length,g=0;g-1}function Y(x){return Object.prototype.toString.call(x)}function Z(x,a){for(var b="",c=0;c-1?"":l;case"s":return b==h?"":l;case"o":return h[b]?"":l;case"b":return d.hasClass("my-form-list")?(f=d.data("listSrc")||d.data("my").listSrc||">*",g={},i=0,(">*"==f?x(d[0].children):xx(d,f,!0)).each(function(a){var b=x(this);b.hasClass("ui-sortable-placeholder")||(b.data("my")&&!b.my("valid")&&(g[i]=b.my("errors")),i+=1)}),g):d.hasClass("my-form")&&h?d.my("valid")?"":d.my("errors"):""}return j.formError||"Error"}return""}}(jQuery),function(x){var a=x.extend,b="string",c="function",d=Object.isArray,e=(Object.isBoolean,Object.isString),f=Object.isObject,g=(Object.isNumber,Object.isRegExp,Object.isFunction,Object.keys),h='',inp:h+'text" {ext}/>',sli:h+'range" {ext}/>',dat:h+'date" {ext}/>',btn:h+'button" {ext}/>',pwd:h+'password" {ext}/>',but:"",div:"
{txt}
",spn:"{txt}",sel:"",mul:'',txt:"",err:' {txt}',msg:'
{txt}
',val:function(x){if(!d(x.vals))return"";var b=a({style:"",css:""},x);return b.txt=x.vals.reduce(function(x,a){return x+""+a+" "}," "),'{txt}'.assign(b)},"":"<{_tag} {ext}>{txt}"},txt:{sel:function(x){if(!x.vals)return"";var a=k(x.vals);return g(a).reduce(function(x,b){return x+'"},"")}},params:{styles:{num:"width:30%;",dat:"width:30%;",inp:"width:100%",pwd:"width:100%",txt:"width:100%;max-width:100%;min-height:1px;word-break:break-word;",err:"display:none",msg:"display:none"},alias:{number:"num",date:"dat",slider:"sli",textarea:"txt",input:"inp",span:"spn",select:"select",vals:"val"},row:"",rowTag:"div",rowCss:"my-row",label:"",labelTag:"span",labelCss:"my-label"},defaults:{id:"",class:"",style:"",placeholder:"",value:"",rows:1},attnames:{css:"class",plc:"placeholder",val:"value",txt:"",vals:"",tip:"title"}};function j(x,h,j){if(e(h))return x+h;if(f(h))return a(!0,j,h),x;if(d(h)&&h.length>1&&e(h[1])){for(var k,l,m,n,o,p,q,r=h[0],s="",t=1;t'+(r?"<"+j.labelTag+' class="'+j.labelCss+'" '+(j.label?'style="display:inline-block;width:'+j.label+";margin-left:-"+j.label+'" ':"")+">"+r+"":"")+s+""),x+s}return x}function k(x){var a=x;if(e(a)&&(a=a.split(/[\s,]/).compact(!0)),d(a)){for(var b={},c=0;c

',ui:{"img:eq(0)":"img",h4:{bind:"text",css:{hide:function(x,a){return!a}}}}},data:{img:m.attr("src"),text:l},esc:!0,screen:!0,width:d||n,focus:!1,global:!0,z:"1995"},c));else if(k(b)&&b.manifest)f(a,b,c);else{if(!j(b))return null;f(a,{source:"html",manifest:{init:function(x){x.html(this.HTML)},HTML:b,ui:{"div:eq(0)":function(){}}},data:{},esc:!0,focus:!1,width:d},c)}return a}c.modal=function(a,b,c){var f,g={},h=x(d),j=h.find(">.my-modal-proxy"),k={global:!0,screen:!0,done:m(b)?b:void 0,z:"1995"};return i(a)||null==a?j.modal(a):(f=x.Deferred(),o(g,a,k,c)?e?f.reject("Locked").promise():(j.length||(j=x('
').prependTo(h)).css({position:"absolute",top:"0",left:"0",margin:"0",padding:"0",width:"1px",height:"0"}),j.modal(g)):f.reject("Invalid data").promise())},c.modal.loading=function(a){x(d).find(">.my-modal").toggleClass("my-modal-loading",!!a)},c.modal.parent=function(a){if(!a||!x(a).length)return x(d);d=a},c.modal.parentBack=function(b){if(!b||!x(b).length)return x(a||d);a=b},c.modal.visible=function(){return!!e},x.my||(x.my={}),x.my.modal=c.modal,x.fn.modal=function(c,n,p){if(b){if(void 0===c&&void 0===n&&void 0===p)return b.call(this);if(k(c)&&(c.hasOwnProperty("backdrop")||c.hasOwnProperty("keyborad")||c.hasOwnProperty("show")))return b.call(this,c,n);if(j(c)&&/^(toggle|show|hide|handleUpdate)$/.test(c))return b.call(this,c,n)}var q,r,s,t,u,v,w=x.Deferred(),y={},z=this,A=0,B=m(n)?n:function(){return!1},C=k(c)?c:{},D=z.data("modal");if(f(z,w.promise()),D){if(null==c||i(c))return E(c),z;if(C)return I("Locked"),z}return z.is(":visible")?(C=o(y,c,{}))?C.global&&e?(I("Locked"),z):((D=f({type:"DOM",source:"manifest",form:null,modal:null,root:null,bgroot:null,caller:z,manifest:{},data:{},global:!1,screen:!1,drag:!1,focus:!0,close:!0,silent:!0,esc:!1,enter:!1,bound:!1,hardClose:!0,nose:"",width:p||300,height:null,x:"0",y:"0",z:"1901",background:"white",css:"",animate:200},C,{promise:w.promise(),cid:Number.random(268435456,4294967295).toString(16)})).done=m(D.done)?D.done:B,j(D.align)&&D.align&&(D.x=(D.align.match(/(left|right):\-?\d+(\.\d+)?(%|px)?/g)||["0"])[0],D.y=(D.align.match(/(top|bottom):\-?\d+(\.\d+)?(%|px)?/g)||["0"])[0]),D.width=1*(x.my.f.getref(j(D.manifest)?x.my.cache(D.manifest):D.manifest,"params.width")||D.width),D.type="DOM",z.hasClass("my-form")?(D.type="form",D.root=D.root||z):z.data("my")?(D.type="control",D.root=D.root||z.my().root):(D.root=D.root||z.parents(".my-form").eq(0),D.root.length||(D.root=x(d))),D.global?(D.root=x(d),D.bgroot=x(a||d)):D.bgroot=D.bgroot?x(D.bgroot):D.root,(s=D.root).data("modals")||s.data("modals",{}),F(),q=x('
'),D.root.find(">.my-modal").length?q.insertAfter(D.root.find(">.my-modal").last()):q.prependTo(D.root),q.addClass("my-modal-"+D.cid),A=q.outerWidth(),q.hide(),q.html('
'),r=q.find(".my-modal-form"),D.close&&x(j(D.close)?D.close:'
×
').prependTo(q).on("click.my",function(){E(D.hardClose)}).css({"z-index":("+"===(D.z+"").to(1)?"+":"")+(1*D.z+1)}),t=D.bgroot.find(">.my-modal-screen"),D.screen&&(t.length||(t=x('').prependTo(D.bgroot)),D.esc&&t.on("click.my"+D.cid,function(){z.modal(!0)}),t.toggleClass("my-modal-screen-global",!!D.global)),z.data("modal",D),D.silent&&q.on("change.my",function(){return!1}),q.css({display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto"}),D.global?q.css({position:"fixed",left:"50%",top:D.pos.vy+"px",display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto","margin-left":"-"+((D.width+A)/2).round(0)+"px"}):q.css({position:"absolute",left:D.pos.vx+"px",top:D.pos.vy+"px",display:"block",height:"none",opacity:"0.005","z-index":D.z,width:"auto"}),r.my(D.manifest,D.data).then(function(){var a,b,c;if(f(D,{form:r,bg:t,cancel:function(){E(!0)},commit:function(){E()}}),q.data("modal",D),D.height=q.outerHeight(),"manifest"!==D.source&&(D.width=q.width()),F(),q.css({top:D.pos.vy+"px"}),G(!0),q.removeClass("my-modal-init"),s.data("modals")[D.cid]=D,g[D.cid]=w,r.on("commit.my",function(){return D.commit.delay(30),!1}).on("cancel.my",function(){return D.cancel.delay(30),!1}),q.on("layout.my",function(){G()}.debounce(30)),D.global&&(e=z,x(document.body).css({overflow:"hidden"})),D.global||!D.esc&&!D.enter||r.on("keydown.my",function(a){var b=a.keyCode;return 27==b&&D.esc?(D.cancel(),!1):13==b&&D.enter&&!x(a.target).is("textarea")?(D.commit.delay(50),!1):void 0}),!0===D.focus?(b=!1,c=D.manifest.ui,Object.keys(c||{}).forEach(function(x){if(!b){var a=r.find(x);a.length&&a.is("input, textarea, button")&&(b=!0,a.focus())}})):j(D.focus)&&r.find(D.focus).focus(),(a=r.find("img").filter(function(){return""!=x(this).attr("src")})).length){var d=function(){"manifest"!==D.source&&q.css({width:"auto"}),G()}.after(a.length);a.each(function(){x(this).bind("load",d)})}D.drag&&x.fn.draggable&&(j(D.drag)?q.draggable({handle:D.drag}):q.draggable(),D.nose&&q.on("dragstart.my",function(){q.removeClass("nose-"+D.nose)})),q.on("mousedown.my",function(a){var b=[],c=x(a.currentTarget),d=c.parent(),e=+c.css("z-index"),f=e;d.length&&(d.find(">.my-modal").each(function(c,d){var g=+x(d).css("z-index")||0;d!=a.currentTarget&&g>=e&&b.push([g,x(d)]),g>f&&(f=g)}),b.forEach(function(x){x[1].css("z-index",x[0]-1+"")}),c.css("z-index",f+""))}),w.notify("Ready")}).fail(function(x){try{H()}catch(x){}z.data("modal",null),w.reject(x)}),z):(I("Invalid data"),z):(I("Object must be visible"),z);function E(x){if(r=D.form,t=D.bg,s=D.root,B=D.done,u=r.my("data"),v=!1,x){try{B.call(r.my("manifest"),null,null)}catch(x){}try{h(r)&&H()}catch(x){}if(h(z)&&z.removeData("modal"),g[D.cid])try{g[D.cid].reject("Cancelled")}catch(x){}delete g[D.cid],D=null}else{try{v=B.call(r.my("manifest"),r.my("valid")?null:r.my("errors"),u)}catch(x){}if(!v){try{h(r)&&H()}catch(x){}h(z)&&z.removeData("modal"),function(){if(g[D.cid])try{g[D.cid].resolve(u)}catch(x){}delete g[D.cid],D=null}.delay(0)}}}function F(){var a,b,c=window,d=!!D.global,e=s.offset(),f=z.offset(),g=s.scrollTop();D.pos={px:e.left,py:e.top,pw:s.outerWidth(),ph:s.outerHeight(),ox:f.left,oy:f.top,ow:z.outerWidth(),oh:z.outerHeight(),ww:b,wh:a};var h=1*(D.x.match(/\-?\d+(\.\d+)?/)||[0])[0],i=1*(D.y.match(/\-?\d+(\.\d+)?/)||[0])[0],j=D.x.has("left")?-1:D.x.has("right")?1:0,k=D.y.has("top")?-1:D.y.has("bottom")?1:0,m=D.pos.ox+D.pos.ow/2-D.pos.px,n=D.pos.oy+D.pos.oh/2-D.pos.py;if(d&&(D.pos.wh=a=c.innerHeight||x(c).height(),D.pos.ww=b=c.innerWidth||x(c).width(),m=b/2,n=a/2.5),h=D.x.has("%")?D.pos.ow/100*h:h,i=D.y.has("%")?D.pos.oh/100*i:i,D.pos.pix=m,D.pos.piy=n,m=m+j*(D.pos.ow/2)+h*(j>0?-1:1)-(D.width+A)*(j+1)/2,d?(n=(a-D.height-20)/3)<10&&(n=10):n=n+k*(D.pos.oh/2)+i*(k>0?-1:1)-(D.height||0)*(k+1)/2,m=m.round(1),n=(n+g).round(1),D.pos.vx=m,D.pos.vy=n,!1!==D.bound&&!D.global){var o=(l(D.bound)?D.bound:0).clamp(-100,100);D.pos.pw-2*oD.pos.pw-o?D.pos.vx=D.pos.pw-o-D.width-A:D.pos.vxD.pos.ph-o?D.pos.vy=D.pos.ph-o-D.height:D.pos.vy');var b="",c=x("style#my-modal-style-"+D.cid);"top"==D.nose||"bottom"==D.nose?(b+="div.my-modal-"+D.cid+".nose-"+D.nose+":before {left:"+(D.pos.ox-D.pos.px+D.pos.ow/2-D.pos.vx)+"px!important;}",c.text(b)):"left"!=D.nose&&"right"!=D.nose||(b+="div.my-modal-"+D.cid+".nose-"+D.nose+":before {top:"+(D.pos.oy-D.pos.py+D.pos.oh/2-D.pos.vy)+"px!important;}",c.text(b))}D.screen?D.global?(t.css({top:0,left:0,width:"100%",height:"100%",display:"block",position:"fixed","z-index":D.z-1}),j(D.screen)?t.css({background:D.screen?D.screen:"rgba(18,41,72,0.88)"}):t.css({background:D.screen?"rgba(18,41,72,0.88)":""})):t.css({top:0,left:0,position:"absolute",width:t.parent().outerWidth()+"px",height:t.parent().outerHeight()+"px",display:"block",background:j(D.screen)?D.screen:"rgba(255,255,255,0.6)","z-index":D.z-1}):t.length&&t.hide(),D.height>D.pos.wh?(q.height(D.pos.wh-30),r.css({"overflow-y":"scroll"})):r.css({"overflow-y":""}),q.animate({top:D.pos.vy+"px",opacity:"1"},D.animate)}function H(){try{r.my("remove")}catch(x){}try{s.data("modals")[D.cid]=null}catch(x){}r.parent().off(".my").remove(),h(t)&&t.off(".my"+D.cid),D.screen&&h(t)&&function(x){x&&e||t.hide(),x&&!e&&t.css({background:"rgba(18,41,72,0.88)"})}.delay(50,D.global),D.global&&(e=!1,x(document.body).css({overflow:""}))}function I(x){try{B(null,null)}catch(x){}(function(){w.reject(x)}).delay(0)}}}(jQuery); \ No newline at end of file diff --git a/package.json b/package.json index 53ff5c0..2c1ced1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jquerymy", - "version": "1.3.3", + "version": "1.3.4", "description": "A lightweight jQuery plugin for complex reactive two-way DOM-JSON data binding.", "homepage": "https://jquerymy.com/", "author": "ermouth ",