diff --git a/castle/cms/interfaces/content.py b/castle/cms/interfaces/content.py index 628a037f8..8e476c581 100644 --- a/castle/cms/interfaces/content.py +++ b/castle/cms/interfaces/content.py @@ -80,7 +80,7 @@ class IVideo(IMedia): def file_size_validator(data): expected_file_size = data.expected_file_size file_size = str(getattr(data.file, 'size', 0)) - if expected_file_size: + if expected_file_size and data.file: if file_size != expected_file_size: error_message = ( u'The file {} is not the expected size, ' diff --git a/castle/cms/profiles/3019/registry/resources.xml b/castle/cms/profiles/3019/registry/resources.xml new file mode 100644 index 000000000..aefe992a4 --- /dev/null +++ b/castle/cms/profiles/3019/registry/resources.xml @@ -0,0 +1,10 @@ + + + + + 2025-05-08 00:00:00 + + + \ No newline at end of file diff --git a/castle/cms/profiles/default/metadata.xml b/castle/cms/profiles/default/metadata.xml index fd7adb902..672289d74 100644 --- a/castle/cms/profiles/default/metadata.xml +++ b/castle/cms/profiles/default/metadata.xml @@ -1,6 +1,6 @@ - 3018 + 3019 profile-plone.app.querystring:default profile-plone.app.mosaic:default diff --git a/castle/cms/profiles/default/registry/resources.xml b/castle/cms/profiles/default/registry/resources.xml index 767f2e59d..1848a542a 100644 --- a/castle/cms/profiles/default/registry/resources.xml +++ b/castle/cms/profiles/default/registry/resources.xml @@ -59,7 +59,7 @@ python: member is not None ++plone++castle/plone-logged-in-compiled.min.js ++plone++castle/plone-logged-in-compiled.css - 2025-02-27 00:00:00 + 2025-05-08 00:00:00 mosaic backbone diff --git a/castle/cms/static/plone-logged-in-compiled.js b/castle/cms/static/plone-logged-in-compiled.js index 680fdf512..83dcf7d20 100644 --- a/castle/cms/static/plone-logged-in-compiled.js +++ b/castle/cms/static/plone-logged-in-compiled.js @@ -120,7 +120,7 @@ define('mockup-patterns-inlinevalidation',[ 'input[type="password"], ' + 'input[type="checkbox"], ' + 'select, ' + - 'textarea').on('blur', + 'textarea').on('blur', $.proxy(function (ev) { if (this.options.type === 'archetypes') { @@ -1455,40 +1455,40 @@ define('mockup-patterns-querystring',[ define("resource-plone-app-jquerytools-js", ["jquery"], function() { return (function() { /** - * @license + * @license * jQuery Tools @VERSION Overlay - Overlay base. Extend it. - * + * * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE. - * + * * http://flowplayer.org/tools/overlay/ * * Since: March 2008 - * Date: @DATE + * Date: @DATE */ -(function($) { +(function($) { // static constructs $.tools = $.tools || {version: '@VERSION'}; - + $.tools.overlay = { - + addEffect: function(name, loadFn, closeFn) { - effects[name] = [loadFn, closeFn]; + effects[name] = [loadFn, closeFn]; }, - - conf: { - close: null, + + conf: { + close: null, closeOnClick: true, - closeOnEsc: true, + closeOnEsc: true, closeSpeed: 'fast', effect: 'default', - + // since 1.2. fixed positioning not supported by IE6 - fixed: !/msie/.test(navigator.userAgent.toLowerCase()) || navigator.appVersion > 6, - - left: 'center', + fixed: !/msie/.test(navigator.userAgent.toLowerCase()) || navigator.appVersion > 6, + + left: 'center', load: false, // 1.2 - mask: null, + mask: null, oneInstance: true, speed: 'normal', target: null, // target element to be overlayed. by default taken from [rel] @@ -1496,207 +1496,207 @@ define("resource-plone-app-jquerytools-js", ["jquery"], function() { } }; - + var instances = [], effects = {}; - + // the default effect. nice and easy! - $.tools.overlay.addEffect('default', - - /* - onLoad/onClose functions must be called otherwise none of the + $.tools.overlay.addEffect('default', + + /* + onLoad/onClose functions must be called otherwise none of the user supplied callback methods won't be called */ function(pos, onLoad) { - + var conf = this.getConf(), - w = $(window); - + w = $(window); + if (!conf.fixed) { pos.top += w.scrollTop(); pos.left += w.scrollLeft(); - } - + } + pos.position = conf.fixed ? 'fixed' : 'absolute'; - this.getOverlay().css(pos).fadeIn(conf.speed, onLoad); - + this.getOverlay().css(pos).fadeIn(conf.speed, onLoad); + }, function(onClose) { - this.getOverlay().fadeOut(this.getConf().closeSpeed, onClose); - } - ); - - - function Overlay(trigger, conf) { + this.getOverlay().fadeOut(this.getConf().closeSpeed, onClose); + } + ); + + function Overlay(trigger, conf) { + // private variables var self = this, fire = trigger.add(self), - w = $(window), - closers, + w = $(window), + closers, overlay, opened, maskConf = $.tools.expose && (conf.mask || conf.expose), - uid = Math.random().toString().slice(10); - - + uid = Math.random().toString().slice(10); + + // mask configuration - if (maskConf) { + if (maskConf) { if (typeof maskConf == 'string') { maskConf = {color: maskConf}; } maskConf.closeOnClick = maskConf.closeOnEsc = false; - } - + } + // get overlay and trigger var jq = conf.target || trigger.attr("rel"); - overlay = jq ? $(jq) : null || trigger; - + overlay = jq ? $(jq) : null || trigger; + // overlay not found. cannot continue if (!overlay.length) { throw "Could not find Overlay: " + jq; } - + // trigger's click event if (trigger && trigger.index(overlay) == -1) { - trigger.click(function(e) { + trigger.click(function(e) { self.load(e); return e.preventDefault(); }); - } - - // API methods + } + + // API methods $.extend(self, { load: function(e) { - + // can be opened only once if (self.isOpened()) { return self; } - + // find the effect var eff = effects[conf.effect]; if (!eff) { throw "Overlay: cannot find effect : \"" + conf.effect + "\""; } - + // close other instances? if (conf.oneInstance) { $.each(instances, function() { this.close(e); }); } - + // onBeforeLoad e = e || $.Event(); e.type = "onBeforeLoad"; - fire.trigger(e); - if (e.isDefaultPrevented()) { return self; } + fire.trigger(e); + if (e.isDefaultPrevented()) { return self; } // opened opened = true; - + // possible mask effect - if (maskConf) { $(overlay).expose(maskConf); } - - // position & dimensions - var top = conf.top, + if (maskConf) { $(overlay).expose(maskConf); } + + // position & dimensions + var top = conf.top, left = conf.left, oWidth = overlay.outerWidth(true), - oHeight = overlay.outerHeight(true); - + oHeight = overlay.outerHeight(true); + if (typeof top == 'string') { - top = top == 'center' ? Math.max((w.height() - oHeight) / 2, 0) : - parseInt(top, 10) / 100 * w.height(); - } - + top = top == 'center' ? Math.max((w.height() - oHeight) / 2, 0) : + parseInt(top, 10) / 100 * w.height(); + } + if (left == 'center') { left = Math.max((w.width() - oWidth) / 2, 0); } - - // load effect - eff[0].call(self, {top: top, left: left}, function() { + + // load effect + eff[0].call(self, {top: top, left: left}, function() { if (opened) { e.type = "onLoad"; fire.trigger(e); } - }); + }); // mask.click closes overlay if (maskConf && conf.closeOnClick) { - $.mask.getMask().one("click", self.close); + $.mask.getMask().one("click", self.close); } - + // when window is clicked outside overlay, we close if (conf.closeOnClick) { - $(document).on("click." + uid, function(e) { - if (!$(e.target).parents(overlay).length) { - self.close(e); + $(document).on("click." + uid, function(e) { + if (!$(e.target).parents(overlay).length) { + self.close(e); } - }); - } - + }); + } + // keyboard::escape - if (conf.closeOnEsc) { + if (conf.closeOnEsc) { // one callback is enough if multiple instances are loaded simultaneously $(document).on("keydown." + uid, function(e) { - if (e.keyCode == 27) { - self.close(e); + if (e.keyCode == 27) { + self.close(e); } - }); + }); } - - return self; - }, - + + return self; + }, + close: function(e) { if (!self.isOpened()) { return self; } - + e = e || $.Event(); e.type = "onBeforeClose"; - fire.trigger(e); - if (e.isDefaultPrevented()) { return; } - + fire.trigger(e); + if (e.isDefaultPrevented()) { return; } + opened = false; - + // close effect effects[conf.effect][1].call(self, function() { e.type = "onClose"; - fire.trigger(e); + fire.trigger(e); }); - + // unbind the keyboard / clicking actions - $(document).off("click." + uid + " keydown." + uid); - + $(document).off("click." + uid + " keydown." + uid); + if (maskConf) { - $.mask.close(); + $.mask.close(); } - + return self; - }, - + }, + getOverlay: function() { - return overlay; + return overlay; }, - + getTrigger: function() { - return trigger; + return trigger; }, - + getClosers: function() { - return closers; - }, + return closers; + }, isOpened: function() { return opened; }, - + // manipulate start, finish and speeds getConf: function() { - return conf; - } - + return conf; + } + }); - - // callbacks + + // callbacks $.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","), function(i, name) { - + // configuration - if ($.isFunction(conf[name])) { - $(self).on(name, conf[name]); + if ($.isFunction(conf[name])) { + $(self).on(name, conf[name]); } // API @@ -1705,69 +1705,69 @@ define("resource-plone-app-jquerytools-js", ["jquery"], function() { return self; }; }); - + // close button - closers = overlay.find(conf.close || ".close"); - + closers = overlay.find(conf.close || ".close"); + if (!closers.length && !conf.close) { closers = $(''); - overlay.prepend(closers); - } - - closers.click(function(e) { - self.close(e); - }); - + overlay.prepend(closers); + } + + closers.click(function(e) { + self.close(e); + }); + // autoload if (conf.load) { self.load(); } - + } - + // jQuery plugin initialization - $.fn.overlay = function(conf) { - + $.fn.overlay = function(conf) { + // already constructed --> return API var el = this.data("overlay"); - if (el) { return el; } - + if (el) { return el; } + if ($.isFunction(conf)) { - conf = {onBeforeLoad: conf}; + conf = {onBeforeLoad: conf}; } conf = $.extend(true, {}, $.tools.overlay.conf, conf); - - this.each(function() { + + this.each(function() { el = new Overlay($(this), conf); instances.push(el); - $(this).data("overlay", el); + $(this).data("overlay", el); }); - - return conf.api ? el: this; - }; - + + return conf.api ? el: this; + }; + })(jQuery); /** - * @license + * @license * jQuery Tools @VERSION Scrollable - New wave UI design - * + * * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE. - * + * * http://flowplayer.org/tools/scrollable.html * * Since: March 2008 - * Date: @DATE + * Date: @DATE */ -(function($) { +(function($) { // static constructs $.tools = $.tools || {version: '@VERSION'}; - + $.tools.scrollable = { - - conf: { + + conf: { activeClass: 'active', circular: false, clonedClass: 'cloned', @@ -1778,206 +1778,206 @@ define("resource-plone-app-jquerytools-js", ["jquery"], function() { items: '.items', keyboard: true, mousewheel: false, - next: '.next', - prev: '.prev', + next: '.next', + prev: '.prev', size: 1, speed: 400, vertical: false, touch: true, wheelSpeed: 0 - } + } }; - + // get hidden element's width or height even though it's hidden function dim(el, key) { var v = parseInt(el.css(key), 10); if (v) { return v; } - var s = el[0].currentStyle; - return s && s.width && parseInt(s.width, 10); + var s = el[0].currentStyle; + return s && s.width && parseInt(s.width, 10); } - function find(root, query) { + function find(root, query) { var el = $(query); return el.length < 2 ? el : root.parent().find(query); } - - var current; - + + var current; + // constructor - function Scrollable(root, conf) { - + function Scrollable(root, conf) { + // current instance - var self = this, + var self = this, fire = root.add(self), itemWrap = root.children(), index = 0, vertical = conf.vertical; - - if (!current) { current = self; } + + if (!current) { current = self; } if (itemWrap.length > 1) { itemWrap = $(conf.items, root); } - - + + // in this version circular not supported when size > 1 - if (conf.size > 1) { conf.circular = false; } - + if (conf.size > 1) { conf.circular = false; } + // methods $.extend(self, { - + getConf: function() { - return conf; - }, - + return conf; + }, + getIndex: function() { - return index; - }, + return index; + }, getSize: function() { - return self.getItems().size(); + return self.getItems().size(); }, getNaviButtons: function() { - return prev.add(next); + return prev.add(next); }, - + getRoot: function() { - return root; + return root; }, - + getItemWrap: function() { - return itemWrap; + return itemWrap; }, - + getItems: function() { - return itemWrap.find(conf.item).not("." + conf.clonedClass); + return itemWrap.find(conf.item).not("." + conf.clonedClass); }, - + move: function(offset, time) { return self.seekTo(index + offset, time); }, - + next: function(time) { - return self.move(conf.size, time); + return self.move(conf.size, time); }, - + prev: function(time) { - return self.move(-conf.size, time); + return self.move(-conf.size, time); }, - + begin: function(time) { - return self.seekTo(0, time); + return self.seekTo(0, time); }, - + end: function(time) { - return self.seekTo(self.getSize() -1, time); - }, - + return self.seekTo(self.getSize() -1, time); + }, + focus: function() { current = self; return self; }, - + addItem: function(item) { item = $(item); - + if (!conf.circular) { itemWrap.append(item); next.removeClass("disabled"); - + } else { itemWrap.children().last().before(item); - itemWrap.children().first().replaceWith(item.clone().addClass(conf.clonedClass)); + itemWrap.children().first().replaceWith(item.clone().addClass(conf.clonedClass)); } - + fire.trigger("onAddItem", [item]); return self; }, - - - /* all seeking functions depend on this */ - seekTo: function(i, time, fn) { - + + + /* all seeking functions depend on this */ + seekTo: function(i, time, fn) { + // ensure numeric index if (!i.jquery) { i *= 1; } - + // avoid seeking from end clone to the beginning if (conf.circular && i === 0 && index == -1 && time !== 0) { return self; } - - // check that index is sane + + // check that index is sane if (!conf.circular && i < 0 || i > self.getSize() || i < -1) { return self; } - + var item = i; - + if (i.jquery) { - i = self.getItems().index(i); - + i = self.getItems().index(i); + } else { item = self.getItems().eq(i); - } - + } + // onBeforeSeek - var e = $.Event("onBeforeSeek"); + var e = $.Event("onBeforeSeek"); if (!fn) { - fire.trigger(e, [i, time]); - if (e.isDefaultPrevented() || !item.length) { return self; } - } - - var props = vertical ? {top: -item.position().top} : {left: -item.position().left}; - + fire.trigger(e, [i, time]); + if (e.isDefaultPrevented() || !item.length) { return self; } + } + + var props = vertical ? {top: -item.position().top} : {left: -item.position().left}; + index = i; - current = self; - if (time === undefined) { time = conf.speed; } - - itemWrap.animate(props, time, conf.easing, fn || function() { - fire.trigger("onSeek", [i]); - }); - - return self; - } - + current = self; + if (time === undefined) { time = conf.speed; } + + itemWrap.animate(props, time, conf.easing, fn || function() { + fire.trigger("onSeek", [i]); + }); + + return self; + } + }); - - // callbacks + + // callbacks $.each(['onBeforeSeek', 'onSeek', 'onAddItem'], function(i, name) { - + // configuration - if ($.isFunction(conf[name])) { - $(self).on(name, conf[name]); + if ($.isFunction(conf[name])) { + $(self).on(name, conf[name]); } - + self[name] = function(fn) { if (fn) { $(self).on(name, fn); } return self; }; - }); - + }); + // circular loop if (conf.circular) { - + var cloned1 = self.getItems().slice(-1).clone().prependTo(itemWrap), cloned2 = self.getItems().eq(1).clone().appendTo(itemWrap); cloned1.add(cloned2).addClass(conf.clonedClass); - + self.onBeforeSeek(function(e, i, time) { - + if (e.isDefaultPrevented()) { return; } - + /* 1. animate to the clone without event triggering 2. seek to correct position with 0 speed */ if (i == -1) { self.seekTo(cloned1, time, function() { - self.end(0); - }); + self.end(0); + }); return e.preventDefault(); - + } else if (i == self.getSize()) { self.seekTo(cloned2, time, function() { - self.begin(0); - }); + self.begin(0); + }); } - + }); // seek over the cloned item @@ -2005,11 +2005,11 @@ define("resource-plone-app-jquerytools-js", ["jquery"], function() { } } - + // next/prev buttons var prev = find(root, conf.prev).click(function(e) { e.stopPropagation(); self.prev(); }), - next = find(root, conf.next).click(function(e) { e.stopPropagation(); self.next(); }); - + next = find(root, conf.next).click(function(e) { e.stopPropagation(); self.next(); }); + if (!conf.circular) { self.onBeforeSeek(function(e, i) { setTimeout(function() { @@ -2019,16 +2019,16 @@ define("resource-plone-app-jquerytools-js", ["jquery"], function() { } }, 1); }); - + if (!conf.initialIndex) { - prev.addClass(conf.disabledClass); - } + prev.addClass(conf.disabledClass); + } } - + if (self.getSize() < 2) { - prev.add(next).addClass(conf.disabledClass); + prev.add(next).addClass(conf.disabledClass); } - + // mousewheel support if (conf.mousewheel && $.fn.mousewheel) { root.mousewheel(function(e, delta) { @@ -2036,182 +2036,182 @@ define("resource-plone-app-jquerytools-js", ["jquery"], function() { self.move(delta < 0 ? 1 : -1, conf.wheelSpeed || 50); return false; } - }); + }); } - + // touch event if (conf.touch) { var touch = {}; - + itemWrap[0].ontouchstart = function(e) { var t = e.touches[0]; touch.x = t.clientX; touch.y = t.clientY; }; - + itemWrap[0].ontouchmove = function(e) { - + // only deal with one finger - if (e.touches.length == 1 && !itemWrap.is(":animated")) { + if (e.touches.length == 1 && !itemWrap.is(":animated")) { var t = e.touches[0], deltaX = touch.x - t.clientX, deltaY = touch.y - t.clientY; - - self[vertical && deltaY > 0 || !vertical && deltaX > 0 ? 'next' : 'prev'](); + + self[vertical && deltaY > 0 || !vertical && deltaX > 0 ? 'next' : 'prev'](); e.preventDefault(); } }; } - + if (conf.keyboard) { - + $(document).on("keydown.scrollable", function(evt) { // skip certain conditions - if (!conf.keyboard || evt.altKey || evt.ctrlKey || evt.metaKey || $(evt.target).is(":input")) { - return; + if (!conf.keyboard || evt.altKey || evt.ctrlKey || evt.metaKey || $(evt.target).is(":input")) { + return; } - + // does this instance have focus? if (conf.keyboard != 'static' && current != self) { return; } - + var key = evt.keyCode; - + if (vertical && (key == 38 || key == 40)) { self.move(key == 38 ? -1 : 1); return evt.preventDefault(); } - - if (!vertical && (key == 37 || key == 39)) { + + if (!vertical && (key == 37 || key == 39)) { self.move(key == 37 ? -1 : 1); return evt.preventDefault(); - } - - }); + } + + }); } - + // initial index if (conf.initialIndex) { self.seekTo(conf.initialIndex, 0, function() {}); } - } - + } + // jQuery plugin implementation - $.fn.scrollable = function(conf) { - + $.fn.scrollable = function(conf) { + // already constructed --> return API var el = this.data("scrollable"); - if (el) { return el; } - - conf = $.extend({}, $.tools.scrollable.conf, conf); + if (el) { return el; } - this.each(function() { + conf = $.extend({}, $.tools.scrollable.conf, conf); + + this.each(function() { el = new Scrollable($(this), conf); - $(this).data("scrollable", el); + $(this).data("scrollable", el); }); - - return conf.api ? el: this; - + + return conf.api ? el: this; + }; - - + + })(jQuery); /** - * @license + * @license * jQuery Tools @VERSION Tabs- The basics of UI design. - * + * * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE. - * + * * http://flowplayer.org/tools/tabs/ * * Since: November 2008 - * Date: @DATE - */ + * Date: @DATE + */ (function($) { - + // static constructs $.tools = $.tools || {version: '@VERSION'}; - + $.tools.tabs = { - + conf: { tabs: 'a', current: 'current', onBeforeClick: null, - onClick: null, + onClick: null, effect: 'default', initialEffect: false, // whether or not to show effect in first init of tabs - initialIndex: 0, + initialIndex: 0, event: 'click', rotate: false, - + // slide effect slideUpSpeed: 400, slideDownSpeed: 400, - + // 1.2 history: false }, - + addEffect: function(name, fn) { effects[name] = fn; } - + }; - + var effects = { - + // simple "toggle" effect - 'default': function(i, done) { + 'default': function(i, done) { this.getPanes().hide().eq(i).show(); done.call(); - }, - + }, + /* configuration: - fadeOutSpeed (positive value does "crossfading") - fadeInSpeed */ - fade: function(i, done) { - + fade: function(i, done) { + var conf = this.getConf(), speed = conf.fadeOutSpeed, panes = this.getPanes(); - + if (speed) { - panes.fadeOut(speed); + panes.fadeOut(speed); } else { - panes.hide(); + panes.hide(); } - panes.eq(i).fadeIn(conf.fadeInSpeed, done); + panes.eq(i).fadeIn(conf.fadeInSpeed, done); }, - + // for basic accordions slide: function(i, done) { var conf = this.getConf(); - + this.getPanes().slideUp(conf.slideUpSpeed); - this.getPanes().eq(i).slideDown(conf.slideDownSpeed, done); - }, + this.getPanes().eq(i).slideDown(conf.slideDownSpeed, done); + }, /** * AJAX effect */ - ajax: function(i, done) { - this.getPanes().eq(0).load(this.getTabs().eq(i).attr("href"), done); - } - }; - + ajax: function(i, done) { + this.getPanes().eq(0).load(this.getTabs().eq(i).attr("href"), done); + } + }; + /** * Horizontal accordion - * + * * @deprecated will be replaced with a more robust implementation */ - + var /** * @type {Boolean} @@ -2223,23 +2223,23 @@ define("resource-plone-app-jquerytools-js", ["jquery"], function() { animating, /** * @type {Number} - * + * * Initial width of tab panes */ w; - + $.tools.tabs.addEffect("horizontal", function(i, done) { if (animating) return; // don't allow other animations - + var nextPane = this.getPanes().eq(i), currentPane = this.getCurrentPane(); - + // store original width of a pane into memory w || ( w = this.getPanes().eq(0).width() ); animating = true; - + nextPane.show(); // hidden by default - + // animate current pane's width to zero // animate next pane's width at the same time for smooth animation currentPane.animate({width: 0}, { @@ -2254,61 +2254,61 @@ define("resource-plone-app-jquerytools-js", ["jquery"], function() { }); // Dirty hack... onLoad, currentPant will be empty and nextPane will be the first pane // If this is the case, manually run callback since the animation never occured, and reset animating - if (!currentPane.length){ - done.call(); + if (!currentPane.length){ + done.call(); animating = false; } - }); - + }); + function Tabs(root, paneSelector, conf) { - + var self = this, trigger = root.add(this), tabs = root.find(conf.tabs), panes = paneSelector.jquery ? paneSelector : root.children(paneSelector), current; - - + + // make sure tabs and panes are found if (!tabs.length) { tabs = root.children(); } if (!panes.length) { panes = root.parent().find(paneSelector); } if (!panes.length) { panes = $(paneSelector); } - - + + // public methods - $.extend(this, { + $.extend(this, { click: function(i, e) { - + var tab = tabs.eq(i), firstRender = !root.data('tabs'); - + if (typeof i == 'string' && i.replace("#", "")) { tab = tabs.filter("[href*=\"" + i.replace("#", "") + "\"]"); i = Math.max(tabs.index(tab), 0); } - + if (conf.rotate) { - var last = tabs.length -1; + var last = tabs.length -1; if (i < 0) { return self.click(last, e); } - if (i > last) { return self.click(0, e); } + if (i > last) { return self.click(0, e); } } - + if (!tab.length) { if (current >= 0) { return self; } i = conf.initialIndex; tab = tabs.eq(i); - } - + } + // current tab is being clicked if (i === current) { return self; } - - // possibility to cancel click action + + // possibility to cancel click action e = e || $.Event(); e.type = "onBeforeClick"; - trigger.trigger(e, [i]); + trigger.trigger(e, [i]); if (e.isDefaultPrevented()) { return; } - + // if firstRender, only run effect if initialEffect is set, otherwise default var effect = firstRender ? conf.initialEffect && conf.effect || 'default' : conf.effect; @@ -2318,89 +2318,89 @@ define("resource-plone-app-jquerytools-js", ["jquery"], function() { // onClick callback e.type = "onClick"; trigger.trigger(e, [i]); - }); - + }); + // default behaviour - tabs.removeClass(conf.current); - tab.addClass(conf.current); - + tabs.removeClass(conf.current); + tab.addClass(conf.current); + return self; }, - + getConf: function() { - return conf; + return conf; }, getTabs: function() { - return tabs; + return tabs; }, - + getPanes: function() { - return panes; + return panes; }, - + getCurrentPane: function() { - return panes.eq(current); + return panes.eq(current); }, - + getCurrentTab: function() { - return tabs.eq(current); + return tabs.eq(current); }, - + getIndex: function() { - return current; - }, - + return current; + }, + next: function() { return self.click(current + 1); }, - + prev: function() { - return self.click(current - 1); + return self.click(current - 1); }, - + destroy: function() { tabs.off(conf.event).removeClass(conf.current); - panes.find("a[href^=\"#\"]").off("click.T"); + panes.find("a[href^=\"#\"]").off("click.T"); return self; } - + }); - // callbacks + // callbacks $.each("onBeforeClick,onClick".split(","), function(i, name) { - + // configuration if ($.isFunction(conf[name])) { - $(self).on(name, conf[name]); + $(self).on(name, conf[name]); } // API self[name] = function(fn) { if (fn) { $(self).on(name, fn); } - return self; + return self; }; }); - - + + if (conf.history && $.fn.history) { $.tools.history.init(tabs); conf.event = 'history'; - } - + } + // setup click actions for each tab - tabs.each(function(i) { + tabs.each(function(i) { $(this).on(conf.event, function(e) { self.click(i, e); return e.preventDefault(); - }); + }); }); - + // cross tab anchor link panes.find("a[href^=\"#\"]").on("click.T", function(e) { - self.click($(this).attr("href"), e); - }); - + self.click($(this).attr("href"), e); + }); + // open initial tab if (location.hash && conf.tabs == "a" && root.find("[href=\"" +location.hash+ "\"]").length) { self.click(location.hash); @@ -2409,185 +2409,185 @@ define("resource-plone-app-jquerytools-js", ["jquery"], function() { if (conf.initialIndex === 0 || conf.initialIndex > 0) { self.click(conf.initialIndex); } - } - + } + } - - + + // jQuery plugin implementation $.fn.tabs = function(paneSelector, conf) { - + // return existing instance var el = this.data("tabs"); - if (el) { - el.destroy(); + if (el) { + el.destroy(); this.removeData("tabs"); } if ($.isFunction(conf)) { conf = {onBeforeClick: conf}; } - + // setup conf - conf = $.extend({}, $.tools.tabs.conf, conf); - - - this.each(function() { + conf = $.extend({}, $.tools.tabs.conf, conf); + + + this.each(function() { el = new Tabs($(this), paneSelector, conf); - $(this).data("tabs", el); - }); - - return conf.api ? el: this; - }; - -}) (jQuery); + $(this).data("tabs", el); + }); + + return conf.api ? el: this; + }; + +}) (jQuery); /** - * @license + * @license * jQuery Tools @VERSION History "Back button for AJAX apps" - * + * * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE. - * + * * http://flowplayer.org/tools/toolbox/history.html - * + * * Since: Mar 2010 - * Date: @DATE + * Date: @DATE */ (function($) { - - var hash, iframe, links, inited; - + + var hash, iframe, links, inited; + $.tools = $.tools || {version: '@VERSION'}; - + $.tools.history = { - + init: function(els) { - + if (inited) { return; } - + // IE if ($.browser.msie && $.browser.version < '8') { - + // create iframe that is constantly checked for hash changes if (!iframe) { iframe = $("',c=s.firstChild,e.appendChild(c),g.addEvent(c,"load",function(){var e;try{e=c.contentWindow.document||c.contentDocument||window.frames[c.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(e.title)?l=e.title.replace(/^(\d+).*$/,"$1"):(l=200,u=f.trim(e.body.innerHTML),a.trigger({type:"progress",loaded:u.length,total:u.length}),o&&a.trigger({type:"uploadprogress",loaded:o.size||1025,total:o.size||1025}))}catch(e){if(!m.hasSameOrigin(t.url))return void d.call(a,function(){a.trigger("error")});l=404}d.call(a,function(){a.trigger("load")})},a.uid),r.submit(),a.trigger("loadstart")},getStatus:function(){return l},getResponse:function(e){if("json"===e&&"string"===f.typeOf(u)&&window.JSON)try{return JSON.parse(u.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(e){return null}return u},abort:function(){var e=this;c&&c.contentWindow&&(c.contentWindow.stop?c.contentWindow.stop():c.contentWindow.document.execCommand?c.contentWindow.document.execCommand("Stop"):c.src="about:blank"),d.call(this,function(){e.dispatchEvent("abort")})}})}}),e("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t});for(var t=["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/I18n","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/FileInput","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events"],n=0;n <% if (typeof getIcon !== "undefined" && getIcon) { %> <% } %> state-<%- review_state %> <% } %> " /span> <%- Title %> <%- path %> '),p=o.createClass({getInitialState:function(){return{selected:this.props.initial_selection,items:[]}},getDefaultProps:function(){return{initial_selection:[],allowAdd:!0,noItemsSelectedText:"No items selected",portal_url:i("body").attr("data-portal-url")}},getQueryHelper:function(){return new s.QueryHelper({vocabularyUrl:this.props.vocabularyUrl,batchSize:30,pattern:this.props.parent,sort_on:"getObjPositionInParent",sort_order:"ascending",baseCriteria:this.props.baseCriteria.slice(),attributes:["UID","Title","portal_type","path","review_state","is_folderish"]})},selectionUpdated:function(){this.props.updateValue(this.state.selected),this.load()},componentDidMount:function(){this.load(),this.setupSelect2()},setupSelect2:function(){var n=this,r=new s.QueryHelper({vocabularyUrl:this.props.vocabularyUrl,batchSize:15,attributes:["UID","Title","portal_type","path","review_state","is_folderish"]}),e=r.selectAjax();e.data=function(e,t){e={query:JSON.stringify({criteria:r.getCriterias(e)}),attributes:JSON.stringify(r.options.attributes)};return t&&(e.batch=JSON.stringify(r.getBatch(t))),e},e.quietMillis=300,i(n.refs.select2.getDOMNode()).select2({placeholder:"Type to search",minimumInputLength:3,ajax:e,multiple:!0,width:n.props.widget||400,formatResult:function(e){e.selected=-1!==n.state.selected.indexOf(e.UID),null===n.props.selectableTypes?e.selectable=!0:e.selectable=-1>10|55296,1023&r|56320)}var Be,d,_,He,je,Ue,ze,$e,We,qe,Ve,Ge,Xe,Ke,Je,Qe,Ze,et,tt={requestAnimationFrame:function(e,t){se?se.then(e):se=new Ce(function(e){t=t||document.body,Re(e,t)}).then(e)},setTimeout:Ae,setInterval:Pe,setEditorTimeout:function(e,t,n){return Ae(function(){e.removed||t()},n)},setEditorInterval:function(e,t,n){var r=Pe(function(){e.removed?clearInterval(r):t()},n);return r},debounce:Oe,throttle:Oe,clearInterval:function(e){return clearInterval(e)},clearTimeout:function(e){return clearTimeout(e)}},nt=/^(?:mouse|contextmenu)|click/,rt={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1},it=function(e){return e.isDefaultPrevented===at||e.isDefaultPrevented===ot},ot=function(){return!1},at=function(){return!0},st=function(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)},lt=function(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)},ut=function(e,t){var n=e.path;return n&&0+~]|"+i+")"+i+"*"),Dt=new RegExp("="+i+"*([^\\]'\"]*?)"+i+"*\\]","g"),St=new RegExp(ge),Et=new RegExp("^"+e+"$"),Lt={ID:new RegExp("^#("+e+")"),CLASS:new RegExp("^\\.("+e+")"),TAG:new RegExp("^("+e+"|[*])"),ATTR:new RegExp("^"+ve),PSEUDO:new RegExp("^"+ge),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+i+"*(even|odd|(([+-]|)(\\d*)n|)"+i+"*(?:([+-]|)"+i+"*(\\d+)|))"+i+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+i+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+i+"*((?:-\\d)?\\d*)"+i+"*\\)|)(?=[^-]|$)","i")},Nt=/^(?:input|select|textarea|button)$/i,Rt=/^h\d$/i,At=/^[^{]+\{\s*\[native \w/,Pt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Ot=/[+~]/,It=/'|\\/g,Yt=new RegExp("\\\\([\\da-f]{1,6}"+i+"?|("+i+")|.)","ig");try{wt.apply(n=xt.call(ct.childNodes),ct.childNodes),n[ct.childNodes.length].nodeType}catch(e){wt={apply:n.length?function(e,t){_t.apply(e,xt.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function G(e,t,n,r){var i,o,a,s,l,u,c;if((t?t.ownerDocument||t:ct)!==Xe&&Ge(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(i=(t=t||Xe).nodeType)&&9!==i)return[];if(Je&&!r){if(u=Pt.exec(e))if(c=u[1]){if(9===i){if(!(s=t.getElementById(c))||!s.parentNode)return n;if(s.id===c)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(c))&&et(t,s)&&s.id===c)return n.push(s),n}else{if(u[2])return wt.apply(n,t.getElementsByTagName(e)),n;if((c=u[3])&&d.getElementsByClassName)return wt.apply(n,t.getElementsByClassName(c)),n}if(d.qsa&&(!Qe||!Qe.test(e))){if(l=s=w,u=t,c=9===i&&e,1===i&&"object"!==t.nodeName.toLowerCase()){for(a=Ue(e),(s=t.getAttribute("id"))?l=s.replace(It,"\\$&"):t.setAttribute("id",l),l="[id='"+l+"'] ",o=a.length;o--;)a[o]=l+$t(a[o]);u=Ot.test(e)&&Ut(t.parentNode)||t,c=a.join(",")}if(c)try{return wt.apply(n,u.querySelectorAll(c)),n}catch(e){}finally{s||t.removeAttribute("id")}}}return $e(e.replace(kt,"$1"),t,n,r)}function Ft(){var n=[];function r(e,t){return n.push(e+" ")>_.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function Bt(e){return e[w]=!0,e}function Ht(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function jt(a){return Bt(function(o){return o=+o,Bt(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function Ut(e){return e&&typeof e.getElementsByTagName!==vt&&e}for(Be in d=G.support={},je=G.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},Ge=G.setDocument=function(e){var l=e?e.ownerDocument||e:ct,e=l.defaultView;return l!==Xe&&9===l.nodeType&&l.documentElement?(Ke=(Xe=l).documentElement,Je=!je(l),e&&e!==function(e){try{return e.top}catch(e){}return null}(e)&&(e.addEventListener?e.addEventListener("unload",function(){Ge()},!1):e.attachEvent&&e.attachEvent("onunload",function(){Ge()})),d.attributes=!0,d.getElementsByTagName=!0,d.getElementsByClassName=At.test(l.getElementsByClassName),d.getById=!0,_.find.ID=function(e,t){if(typeof t.getElementById!==vt&&Je)return(t=t.getElementById(e))&&t.parentNode?[t]:[]},_.filter.ID=function(e){var t=e.replace(Yt,Fe);return function(e){return e.getAttribute("id")===t}},_.find.TAG=d.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!==vt)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},_.find.CLASS=d.getElementsByClassName&&function(e,t){if(Je)return t.getElementsByClassName(e)},Ze=[],Qe=[],d.disconnectedMatch=!0,Qe=Qe.length&&new RegExp(Qe.join("|")),Ze=Ze.length&&new RegExp(Ze.join("|")),e=At.test(Ke.compareDocumentPosition),et=e||At.test(Ke.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},gt=e?function(e,t){var n;return e===t?(Ve=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===l||e.ownerDocument===ct&&et(ct,e)?-1:t===l||t.ownerDocument===ct&&et(ct,t)?1:qe?Ct.call(qe,e)-Ct.call(qe,t):0:4&n?-1:1)}:function(e,t){if(e===t)return Ve=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===l?-1:t===l?1:i?-1:o?1:qe?Ct.call(qe,e)-Ct.call(qe,t):0;if(i===o)return Ht(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?Ht(a[r],s[r]):a[r]===ct?-1:s[r]===ct?1:0},l):Xe},G.matches=function(e,t){return G(e,null,null,t)},G.matchesSelector=function(e,t){if((e.ownerDocument||e)!==Xe&&Ge(e),t=t.replace(Dt,"='$1']"),d.matchesSelector&&Je&&(!Ze||!Ze.test(t))&&(!Qe||!Qe.test(t)))try{var n=(void 0).call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Yt,Fe),e[3]=(e[3]||e[4]||e[5]||"").replace(Yt,Fe),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||G.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&G.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Lt.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&St.test(n)&&(t=(t=Ue(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Yt,Fe).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=pt[e+" "];return t||(t=new RegExp("(^|"+i+")"+e+"("+i+"|$)"))&&pt(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==vt&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=G.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1)[^>]*$|#([\w\-]*)$)/,Tn=Ye.Event,Mn=K.makeMap("children,contents,next,prev"),Dn=K.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),Sn=K.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),En={for:"htmlFor",class:"className",readonly:"readOnly"},Ln={float:"cssFloat"},Nn={},Rn={},An=/^\s*|\s*$/g,ye=(X.fn=X.prototype={constructor:X,selector:"",context:null,length:0,init:function(e,t){var n,r,i=this;if(e)if(e.nodeType)i.context=i[0]=e,i.length=1;else{if(t&&t.nodeType)i.context=t;else{if(t)return X(e).attr(t);i.context=t=document}if(nn(e)){if(!(n="<"===(i.selector=e).charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:kn.exec(e)))return X(t).find(e);if(n[1])for(r=rn(e,dn(t)).firstChild;r;)xn.call(i,r),r=r.nextSibling;else{if(!(r=dn(t).getElementById(n[2])))return i;if(r.id!==n[2])return i.find(e);i.length=1,i[0]=r}}else this.add(e,!1)}return i},toArray:function(){return K.toArray(this)},add:function(e,t){var n,r;if(nn(e))return this.add(X(e));if(!1!==t)for(n=X.unique(this.toArray().concat(X.makeArray(e))),this.length=n.length,r=0;r=a.length&&r(i)}))})})},gi={par:ei,mapM:function(e,t){e=b.map(e,t);return ei(e)},compose:function(t,n){return function(e){return n(e).bind(t)}}},vi={value:ti,error:ni};function yi(f,e){function p(e){f.getElementsByTagName("head")[0].appendChild(e)}function r(t){return mi.nu(function(e){n(t,v.compose(e,v.constant(vi.value(t))),v.compose(e,v.constant(vi.error(t))))})}function i(e){return e.fold(v.identity,v.identity)}var m,h=0,g={},n=(m=(e=e||{}).maxLoadTime||5e3,function(e,t,n){function r(){for(var e=c.passed,t=e.length;t--;)e[t]();c.status=2,c.passed=[],c.failed=[]}function i(e,t){e()||((new Date).getTime()-u\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,$i=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Wi=/[<>&\"\']/g,qi=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,Vi={128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"},Gi={'"':""","'":"'","<":"<",">":">","&":"&","`":"`"},Xi={"<":"<",">":">","&":"&",""":'"',"'":"'"},Ki=Mi("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32),Ji={encodeRaw:Di,encodeAllRaw:function(e){return(""+e).replace(Wi,function(e){return Gi[e]||e})},encodeNumeric:Si,encodeNamed:Ei,getEncodeFunc:function(e,t){var n=Mi(t)||Ki,e=Ui(e.replace(/\+/g,","));return e.named&&e.numeric?function(e,t){return e.replace(t?zi:$i,function(e){return void 0!==Gi[e]?Gi[e]:void 0!==n[e]?n[e]:1>10),56320+(1023&t))):Vi[t]||String.fromCharCode(t):Xi[e]||Ki[e]||(t=e,(e=H.fromTag("div").dom()).innerHTML=t,e.textContent)||e.innerText||t})}},Qi={},Zi={},eo=K.makeMap,to=K.each,no=K.extend,ro=K.explode,io=K.inArray,M=function(e,t){return(e=K.trim(e))?e.split(t||" "):[]},oo=function(e){function t(e,t,n){function r(e,t){for(var n={},r=0,i=e.length;r