(function ($, undefined) { $.ui = $.ui || {}; if ($.ui.version) { return } $.extend($.ui, { version: "1.8.11", keyCode: { ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108, NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91} }); $.fn.extend({ _focus: $.fn.focus, focus: function (delay, fn) { return typeof delay === "number" ? this.each(function () { var elem = this; setTimeout(function () { $(elem).focus(); if (fn) { fn.call(elem) } }, delay) }) : this._focus.apply(this, arguments) }, scrollParent: function () { var scrollParent; if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) { scrollParent = this.parents().filter(function () { return (/(relative|absolute|fixed)/).test($.curCSS(this, 'position', 1)) && (/(auto|scroll)/).test($.curCSS(this, 'overflow', 1) + $.curCSS(this, 'overflow-y', 1) + $.curCSS(this, 'overflow-x', 1)) }).eq(0) } else { scrollParent = this.parents().filter(function () { return (/(auto|scroll)/).test($.curCSS(this, 'overflow', 1) + $.curCSS(this, 'overflow-y', 1) + $.curCSS(this, 'overflow-x', 1)) }).eq(0) } return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent }, zIndex: function (zIndex) { if (zIndex !== undefined) { return this.css("zIndex", zIndex) } if (this.length) { var elem = $(this[0]), position, value; while (elem.length && elem[0] !== document) { position = elem.css("position"); if (position === "absolute" || position === "relative" || position === "fixed") { value = parseInt(elem.css("zIndex"), 10); if (!isNaN(value) && value !== 0) { return value } } elem = elem.parent() } } return 0 }, disableSelection: function () { return this.bind(($.support.selectstart ? "selectstart" : "mousedown") + ".ui-disableSelection", function (event) { event.preventDefault() }) }, enableSelection: function () { return this.unbind(".ui-disableSelection") } }); $.each(["Width", "Height"], function (i, name) { var side = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"], type = name.toLowerCase(), orig = { innerWidth: $.fn.innerWidth, innerHeight: $.fn.innerHeight, outerWidth: $.fn.outerWidth, outerHeight: $.fn.outerHeight }; function reduce(elem, size, border, margin) { $.each(side, function () { size -= parseFloat($.curCSS(elem, "padding" + this, true)) || 0; if (border) { size -= parseFloat($.curCSS(elem, "border" + this + "Width", true)) || 0 } if (margin) { size -= parseFloat($.curCSS(elem, "margin" + this, true)) || 0 } }); return size } $.fn["inner" + name] = function (size) { if (size === undefined) { return orig["inner" + name].call(this) } return this.each(function () { $(this).css(type, reduce(this, size) + "px") }) }; $.fn["outer" + name] = function (size, margin) { if (typeof size !== "number") { return orig["outer" + name].call(this, size) } return this.each(function () { $(this).css(type, reduce(this, size, true, margin) + "px") }) } }); function visible(element) { return !$(element).parents().andSelf().filter(function () { return $.curCSS(this, "visibility") === "hidden" || $.expr.filters.hidden(this) }).length } $.extend($.expr[":"], { data: function (elem, i, match) { return !!$.data(elem, match[3]) }, focusable: function (element) { var nodeName = element.nodeName.toLowerCase(), tabIndex = $.attr(element, "tabindex"); if ("area" === nodeName) { var map = element.parentNode, mapName = map.name, img; if (!element.href || !mapName || map.nodeName.toLowerCase() !== "map") { return false } img = $("img[usemap=#" + mapName + "]")[0]; return !!img && visible(img) } return (/input|select|textarea|button|object/.test(nodeName) ? !element.disabled : "a" == nodeName ? element.href || !isNaN(tabIndex) : !isNaN(tabIndex)) && visible(element) }, tabbable: function (element) { var tabIndex = $.attr(element, "tabindex"); return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(":focusable") } }); $(function () { var body = document.body, div = body.appendChild(div = document.createElement("div")); $.extend(div.style, { minHeight: "100px", height: "auto", padding: 0, borderWidth: 0 }); $.support.minHeight = div.offsetHeight === 100; $.support.selectstart = "onselectstart" in div; body.removeChild(div).style.display = "none" }); $.extend($.ui, { plugin: { add: function (module, option, set) { var proto = $.ui[module].prototype; for (var i in set) { proto.plugins[i] = proto.plugins[i] || []; proto.plugins[i].push([option, set[i]]) } }, call: function (instance, name, args) { var set = instance.plugins[name]; if (!set || !instance.element[0].parentNode) { return } for (var i = 0; i < set.length; i++) { if (instance.options[set[i][0]]) { set[i][1].apply(instance.element, args) } } } }, contains: function (a, b) { return document.compareDocumentPosition ? a.compareDocumentPosition(b) & 16 : a !== b && a.contains(b) }, hasScroll: function (el, a) { if ($(el).css("overflow") === "hidden") { return false } var scroll = (a && a === "left") ? "scrollLeft" : "scrollTop", has = false; if (el[scroll] > 0) { return true } el[scroll] = 1; has = (el[scroll] > 0); el[scroll] = 0; return has }, isOverAxis: function (x, reference, size) { return (x > reference) && (x < (reference + size)) }, isOver: function (y, x, top, left, height, width) { return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width) } }) })(jQuery); (function ($, undefined) { if ($.cleanData) { var _cleanData = $.cleanData; $.cleanData = function (elems) { for (var i = 0, elem; (elem = elems[i]) != null; i++) { $(elem).triggerHandler("remove") } _cleanData(elems) } } else { var _remove = $.fn.remove; $.fn.remove = function (selector, keepData) { return this.each(function () { if (!keepData) { if (!selector || $.filter(selector, [this]).length) { $("*", this).add([this]).each(function () { $(this).triggerHandler("remove") }) } } return _remove.call($(this), selector, keepData) }) } } $.widget = function (name, base, prototype) { var namespace = name.split(".")[0], fullName; name = name.split(".")[1]; fullName = namespace + "-" + name; if (!prototype) { prototype = base; base = $.Widget } $.expr[":"][fullName] = function (elem) { return !!$.data(elem, name) }; $[namespace] = $[namespace] || {}; $[namespace][name] = function (options, element) { if (arguments.length) { this._createWidget(options, element) } }; var basePrototype = new base(); basePrototype.options = $.extend(true, {}, basePrototype.options); $[namespace][name].prototype = $.extend(true, basePrototype, { namespace: namespace, widgetName: name, widgetEventPrefix: $[namespace][name].prototype.widgetEventPrefix || name, widgetBaseClass: fullName }, prototype); $.widget.bridge(name, $[namespace][name]) }; $.widget.bridge = function (name, object) { $.fn[name] = function (options) { var isMethodCall = typeof options === "string", args = Array.prototype.slice.call(arguments, 1), returnValue = this; options = !isMethodCall && args.length ? $.extend.apply(null, [true, options].concat(args)) : options; if (isMethodCall && options.charAt(0) === "_") { return returnValue } if (isMethodCall) { this.each(function () { var instance = $.data(this, name), methodValue = instance && $.isFunction(instance[options]) ? instance[options].apply(instance, args) : instance; if (methodValue !== instance && methodValue !== undefined) { returnValue = methodValue; return false } }) } else { this.each(function () { var instance = $.data(this, name); if (instance) { instance.option(options || {})._init() } else { $.data(this, name, new object(options, this)) } }) } return returnValue } }; $.Widget = function (options, element) { if (arguments.length) { this._createWidget(options, element) } }; $.Widget.prototype = { widgetName: "widget", widgetEventPrefix: "", options: { disabled: false }, _createWidget: function (options, element) { $.data(element, this.widgetName, this); this.element = $(element); this.options = $.extend(true, {}, this.options, this._getCreateOptions(), options); var self = this; this.element.bind("remove." + this.widgetName, function () { self.destroy() }); this._create(); this._trigger("create"); this._init() }, _getCreateOptions: function () { return $.metadata && $.metadata.get(this.element[0])[this.widgetName] }, _create: function () { }, _init: function () { }, destroy: function () { this.element.unbind("." + this.widgetName).removeData(this.widgetName); this.widget().unbind("." + this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass + "-disabled " + "ui-state-disabled") }, widget: function () { return this.element }, option: function (key, value) { var options = key; if (arguments.length === 0) { return $.extend({}, this.options) } if (typeof key === "string") { if (value === undefined) { return this.options[key] } options = {}; options[key] = value } this._setOptions(options); return this }, _setOptions: function (options) { var self = this; $.each(options, function (key, value) { self._setOption(key, value) }); return this }, _setOption: function (key, value) { this.options[key] = value; if (key === "disabled") { this.widget()[value ? "addClass" : "removeClass"](this.widgetBaseClass + "-disabled" + " " + "ui-state-disabled").attr("aria-disabled", value) } return this }, enable: function () { return this._setOption("disabled", false) }, disable: function () { return this._setOption("disabled", true) }, _trigger: function (type, event, data) { var callback = this.options[type]; event = $.Event(event); event.type = (type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type).toLowerCase(); data = data || {}; if (event.originalEvent) { for (var i = $.event.props.length, prop; i; ) { prop = $.event.props[--i]; event[prop] = event.originalEvent[prop] } } this.element.trigger(event, data); return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false || event.isDefaultPrevented()) } } })(jQuery); (function ($, undefined) { $.widget("ui.mouse", { options: { cancel: ':input,option', distance: 1, delay: 0 }, _mouseInit: function () { var self = this; this.element.bind('mousedown.' + this.widgetName, function (event) { return self._mouseDown(event) }).bind('click.' + this.widgetName, function (event) { if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) { $.removeData(event.target, self.widgetName + '.preventClickEvent'); event.stopImmediatePropagation(); return false } }); this.started = false }, _mouseDestroy: function () { this.element.unbind('.' + this.widgetName) }, _mouseDown: function (event) { event.originalEvent = event.originalEvent || {}; if (event.originalEvent.mouseHandled) { return } (this._mouseStarted && this._mouseUp(event)); this._mouseDownEvent = event; var self = this, btnIsLeft = (event.which == 1), elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false); if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { return true } this.mouseDelayMet = !this.options.delay; if (!this.mouseDelayMet) { this._mouseDelayTimer = setTimeout(function () { self.mouseDelayMet = true }, this.options.delay) } if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { this._mouseStarted = (this._mouseStart(event) !== false); if (!this._mouseStarted) { event.preventDefault(); return true } } if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) { $.removeData(event.target, this.widgetName + '.preventClickEvent') } this._mouseMoveDelegate = function (event) { return self._mouseMove(event) }; this._mouseUpDelegate = function (event) { return self._mouseUp(event) }; $(document).bind('mousemove.' + this.widgetName, this._mouseMoveDelegate).bind('mouseup.' + this.widgetName, this._mouseUpDelegate); event.preventDefault(); event.originalEvent.mouseHandled = true; return true }, _mouseMove: function (event) { if ($.browser.msie && !(document.documentMode >= 9) && !event.button) { return this._mouseUp(event) } if (this._mouseStarted) { this._mouseDrag(event); return event.preventDefault() } if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { this._mouseStarted = (this._mouseStart(this._mouseDownEvent, event) !== false); (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)) } return !this._mouseStarted }, _mouseUp: function (event) { $(document).unbind('mousemove.' + this.widgetName, this._mouseMoveDelegate).unbind('mouseup.' + this.widgetName, this._mouseUpDelegate); if (this._mouseStarted) { this._mouseStarted = false; if (event.target == this._mouseDownEvent.target) { $.data(event.target, this.widgetName + '.preventClickEvent', true) } this._mouseStop(event) } return false }, _mouseDistanceMet: function (event) { return (Math.max(Math.abs(this._mouseDownEvent.pageX - event.pageX), Math.abs(this._mouseDownEvent.pageY - event.pageY)) >= this.options.distance) }, _mouseDelayMet: function (event) { return this.mouseDelayMet }, _mouseStart: function (event) { }, _mouseDrag: function (event) { }, _mouseStop: function (event) { }, _mouseCapture: function (event) { return true } }) })(jQuery); (function ($, undefined) { $.ui = $.ui || {}; var horizontalPositions = /left|center|right/, verticalPositions = /top|center|bottom/, center = "center", _position = $.fn.position, _offset = $.fn.offset; $.fn.position = function (options) { if (!options || !options.of) { return _position.apply(this, arguments) } options = $.extend({}, options); var target = $(options.of), targetElem = target[0], collision = (options.collision || "flip").split(" "), offset = options.offset ? options.offset.split(" ") : [0, 0], targetWidth, targetHeight, basePosition; if (targetElem.nodeType === 9) { targetWidth = target.width(); targetHeight = target.height(); basePosition = { top: 0, left: 0} } else if (targetElem.setTimeout) { targetWidth = target.width(); targetHeight = target.height(); basePosition = { top: target.scrollTop(), left: target.scrollLeft()} } else if (targetElem.preventDefault) { options.at = "left top"; targetWidth = targetHeight = 0; basePosition = { top: options.of.pageY, left: options.of.pageX} } else { targetWidth = target.outerWidth(); targetHeight = target.outerHeight(); basePosition = target.offset() } $.each(["my", "at"], function () { var pos = (options[this] || "").split(" "); if (pos.length === 1) { pos = horizontalPositions.test(pos[0]) ? pos.concat([center]) : verticalPositions.test(pos[0]) ? [center].concat(pos) : [center, center] } pos[0] = horizontalPositions.test(pos[0]) ? pos[0] : center; pos[1] = verticalPositions.test(pos[1]) ? pos[1] : center; options[this] = pos }); if (collision.length === 1) { collision[1] = collision[0] } offset[0] = parseInt(offset[0], 10) || 0; if (offset.length === 1) { offset[1] = offset[0] } offset[1] = parseInt(offset[1], 10) || 0; if (options.at[0] === "right") { basePosition.left += targetWidth } else if (options.at[0] === center) { basePosition.left += targetWidth / 2 } if (options.at[1] === "bottom") { basePosition.top += targetHeight } else if (options.at[1] === center) { basePosition.top += targetHeight / 2 } basePosition.left += offset[0]; basePosition.top += offset[1]; return this.each(function () { var elem = $(this), elemWidth = elem.outerWidth(), elemHeight = elem.outerHeight(), marginLeft = parseInt($.curCSS(this, "marginLeft", true)) || 0, marginTop = parseInt($.curCSS(this, "marginTop", true)) || 0, collisionWidth = elemWidth + marginLeft + (parseInt($.curCSS(this, "marginRight", true)) || 0), collisionHeight = elemHeight + marginTop + (parseInt($.curCSS(this, "marginBottom", true)) || 0), position = $.extend({}, basePosition), collisionPosition; if (options.my[0] === "right") { position.left -= elemWidth } else if (options.my[0] === center) { position.left -= elemWidth / 2 } if (options.my[1] === "bottom") { position.top -= elemHeight } else if (options.my[1] === center) { position.top -= elemHeight / 2 } position.left = Math.round(position.left); position.top = Math.round(position.top); collisionPosition = { left: position.left - marginLeft, top: position.top - marginTop }; $.each(["left", "top"], function (i, dir) { if ($.ui.position[collision[i]]) { $.ui.position[collision[i]][dir](position, { targetWidth: targetWidth, targetHeight: targetHeight, elemWidth: elemWidth, elemHeight: elemHeight, collisionPosition: collisionPosition, collisionWidth: collisionWidth, collisionHeight: collisionHeight, offset: offset, my: options.my, at: options.at }) } }); if ($.fn.bgiframe) { elem.bgiframe() } elem.offset($.extend(position, { using: options.using })) }) }; $.ui.position = { fit: { left: function (position, data) { var win = $(window), over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft(); position.left = over > 0 ? position.left - over : Math.max(position.left - data.collisionPosition.left, position.left) }, top: function (position, data) { var win = $(window), over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop(); position.top = over > 0 ? position.top - over : Math.max(position.top - data.collisionPosition.top, position.top) } }, flip: { left: function (position, data) { if (data.at[0] === center) { return } var win = $(window), over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft(), myOffset = data.my[0] === "left" ? -data.elemWidth : data.my[0] === "right" ? data.elemWidth : 0, atOffset = data.at[0] === "left" ? data.targetWidth : -data.targetWidth, offset = -2 * data.offset[0]; position.left += data.collisionPosition.left < 0 ? myOffset + atOffset + offset : over > 0 ? myOffset + atOffset + offset : 0 }, top: function (position, data) { if (data.at[1] === center) { return } var win = $(window), over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop(), myOffset = data.my[1] === "top" ? -data.elemHeight : data.my[1] === "bottom" ? data.elemHeight : 0, atOffset = data.at[1] === "top" ? data.targetHeight : -data.targetHeight, offset = -2 * data.offset[1]; position.top += data.collisionPosition.top < 0 ? myOffset + atOffset + offset : over > 0 ? myOffset + atOffset + offset : 0 } } }; if (!$.offset.setOffset) { $.offset.setOffset = function (elem, options) { if (/static/.test($.curCSS(elem, "position"))) { elem.style.position = "relative" } var curElem = $(elem), curOffset = curElem.offset(), curTop = parseInt($.curCSS(elem, "top", true), 10) || 0, curLeft = parseInt($.curCSS(elem, "left", true), 10) || 0, props = { top: (options.top - curOffset.top) + curTop, left: (options.left - curOffset.left) + curLeft }; if ('using' in options) { options.using.call(elem, props) } else { curElem.css(props) } }; $.fn.offset = function (options) { var elem = this[0]; if (!elem || !elem.ownerDocument) { return null } if (options) { return this.each(function () { $.offset.setOffset(this, options) }) } return _offset.call(this) } } } (jQuery)); (function ($, undefined) { $.widget("ui.draggable", $.ui.mouse, { widgetEventPrefix: "drag", options: { addClasses: true, appendTo: "parent", axis: false, connectToSortable: false, containment: false, cursor: "auto", cursorAt: false, grid: false, handle: false, helper: "original", iframeFix: false, opacity: false, refreshPositions: false, revert: false, revertDuration: 500, scope: "default", scroll: true, scrollSensitivity: 20, scrollSpeed: 20, snap: false, snapMode: "both", snapTolerance: 20, stack: false, zIndex: false }, _create: function () { if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position"))) this.element[0].style.position = 'relative'; (this.options.addClasses && this.element.addClass("ui-draggable")); (this.options.disabled && this.element.addClass("ui-draggable-disabled")); this._mouseInit() }, destroy: function () { if (!this.element.data('draggable')) return; this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable" + " ui-draggable-dragging" + " ui-draggable-disabled"); this._mouseDestroy(); return this }, _mouseCapture: function (event) { var o = this.options; if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle')) return false; this.handle = this._getHandle(event); if (!this.handle) return false; return true }, _mouseStart: function (event) { var o = this.options; this.helper = this._createHelper(event); this._cacheHelperProportions(); if ($.ui.ddmanager) $.ui.ddmanager.current = this; this._cacheMargins(); this.cssPosition = this.helper.css("position"); this.scrollParent = this.helper.scrollParent(); this.offset = this.positionAbs = this.element.offset(); this.offset = { top: this.offset.top - this.margins.top, left: this.offset.left - this.margins.left }; $.extend(this.offset, { click: { left: event.pageX - this.offset.left, top: event.pageY - this.offset.top }, parent: this._getParentOffset(), relative: this._getRelativeOffset() }); this.originalPosition = this.position = this._generatePosition(event); this.originalPageX = event.pageX; this.originalPageY = event.pageY; (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); if (o.containment) this._setContainment(); if (this._trigger("start", event) === false) { this._clear(); return false } this._cacheHelperProportions(); if ($.ui.ddmanager && !o.dropBehaviour) $.ui.ddmanager.prepareOffsets(this, event); this.helper.addClass("ui-draggable-dragging"); this._mouseDrag(event, true); return true }, _mouseDrag: function (event, noPropagation) { this.position = this._generatePosition(event); this.positionAbs = this._convertPositionTo("absolute"); if (!noPropagation) { var ui = this._uiHash(); if (this._trigger('drag', event, ui) === false) { this._mouseUp({}); return false } this.position = ui.position } if (!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left + 'px'; if (!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top + 'px'; if ($.ui.ddmanager) $.ui.ddmanager.drag(this, event); return false }, _mouseStop: function (event) { var dropped = false; if ($.ui.ddmanager && !this.options.dropBehaviour) dropped = $.ui.ddmanager.drop(this, event); if (this.dropped) { dropped = this.dropped; this.dropped = false } if ((!this.element[0] || !this.element[0].parentNode) && this.options.helper == "original") return false; if ((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) { var self = this; $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function () { if (self._trigger("stop", event) !== false) { self._clear() } }) } else { if (this._trigger("stop", event) !== false) { this._clear() } } return false }, cancel: function () { if (this.helper.is(".ui-draggable-dragging")) { this._mouseUp({}) } else { this._clear() } return this }, _getHandle: function (event) { var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false; $(this.options.handle, this.element).find("*").andSelf().each(function () { if (this == event.target) handle = true }); return handle }, _createHelper: function (event) { var o = this.options; var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone() : this.element); if (!helper.parents('body').length) helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo)); if (helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) helper.css("position", "absolute"); return helper }, _adjustOffsetFromHelper: function (obj) { if (typeof obj == 'string') { obj = obj.split(' ') } if ($.isArray(obj)) { obj = { left: +obj[0], top: +obj[1] || 0} } if ('left' in obj) { this.offset.click.left = obj.left + this.margins.left } if ('right' in obj) { this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left } if ('top' in obj) { this.offset.click.top = obj.top + this.margins.top } if ('bottom' in obj) { this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top } }, _getParentOffset: function () { this.offsetParent = this.helper.offsetParent(); var po = this.offsetParent.offset(); if (this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) { po.left += this.scrollParent.scrollLeft(); po.top += this.scrollParent.scrollTop() } if ((this.offsetParent[0] == document.body) || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) po = { top: 0, left: 0 }; return { top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0), left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)} }, _getRelativeOffset: function () { if (this.cssPosition == "relative") { var p = this.element.position(); return { top: p.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(), left: p.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()} } else { return { top: 0, left: 0} } }, _cacheMargins: function () { this.margins = { left: (parseInt(this.element.css("marginLeft"), 10) || 0), top: (parseInt(this.element.css("marginTop"), 10) || 0), right: (parseInt(this.element.css("marginRight"), 10) || 0), bottom: (parseInt(this.element.css("marginBottom"), 10) || 0)} }, _cacheHelperProportions: function () { this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight()} }, _setContainment: function () { var o = this.options; if (o.containment == 'parent') o.containment = this.helper[0].parentNode; if (o.containment == 'document' || o.containment == 'window') this.containment = [(o.containment == 'document' ? 0 : $(window).scrollLeft()) - this.offset.relative.left - this.offset.parent.left, (o.containment == 'document' ? 0 : $(window).scrollTop()) - this.offset.relative.top - this.offset.parent.top, (o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left, (o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top]; if (!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) { var ce = $(o.containment)[0]; if (!ce) return; var co = $(o.containment).offset(); var over = ($(ce).css("overflow") != 'hidden'); this.containment = [co.left + (parseInt($(ce).css("borderLeftWidth"), 10) || 0) + (parseInt($(ce).css("paddingLeft"), 10) || 0), co.top + (parseInt($(ce).css("borderTopWidth"), 10) || 0) + (parseInt($(ce).css("paddingTop"), 10) || 0), co.left + (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"), 10) || 0) - (parseInt($(ce).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, co.top + (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"), 10) || 0) - (parseInt($(ce).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom] } else if (o.containment.constructor == Array) { this.containment = o.containment } }, _convertPositionTo: function (d, pos) { if (!pos) pos = this.position; var mod = d == "absolute" ? 1 : -1; var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); return { top: (pos.top + this.offset.relative.top * mod + this.offset.parent.top * mod - ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())) * mod)), left: (pos.left + this.offset.relative.left * mod + this.offset.parent.left * mod - ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod))} }, _generatePosition: function (event) { var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); var pageX = event.pageX; var pageY = event.pageY; if (this.originalPosition) { if (this.containment) { if (event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left; if (event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top; if (event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left; if (event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top } if (o.grid) { var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left } } return { top: (pageY - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())))), left: (pageX - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ($.browser.safari && $.browser.version < 526 && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft())))} }, _clear: function () { this.helper.removeClass("ui-draggable-dragging"); if (this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove(); this.helper = null; this.cancelHelperRemoval = false }, _trigger: function (type, event, ui) { ui = ui || this._uiHash(); $.ui.plugin.call(this, type, [event, ui]); if (type == "drag") this.positionAbs = this._convertPositionTo("absolute"); return $.Widget.prototype._trigger.call(this, type, event, ui) }, plugins: {}, _uiHash: function (event) { return { helper: this.helper, position: this.position, originalPosition: this.originalPosition, offset: this.positionAbs} } }); $.extend($.ui.draggable, { version: "1.8.11" }); $.ui.plugin.add("draggable", "connectToSortable", { start: function (event, ui) { var inst = $(this).data("draggable"), o = inst.options, uiSortable = $.extend({}, ui, { item: inst.element }); inst.sortables = []; $(o.connectToSortable).each(function () { var sortable = $.data(this, 'sortable'); if (sortable && !sortable.options.disabled) { inst.sortables.push({ instance: sortable, shouldRevert: sortable.options.revert }); sortable.refreshPositions(); sortable._trigger("activate", event, uiSortable) } }) }, stop: function (event, ui) { var inst = $(this).data("draggable"), uiSortable = $.extend({}, ui, { item: inst.element }); $.each(inst.sortables, function () { if (this.instance.isOver) { this.instance.isOver = 0; inst.cancelHelperRemoval = true; this.instance.cancelHelperRemoval = false; if (this.shouldRevert) this.instance.options.revert = true; this.instance._mouseStop(event); this.instance.options.helper = this.instance.options._helper; if (inst.options.helper == 'original') this.instance.currentItem.css({ top: 'auto', left: 'auto' }) } else { this.instance.cancelHelperRemoval = false; this.instance._trigger("deactivate", event, uiSortable) } }) }, drag: function (event, ui) { var inst = $(this).data("draggable"), self = this; var checkPos = function (o) { var dyClick = this.offset.click.top, dxClick = this.offset.click.left; var helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left; var itemHeight = o.height, itemWidth = o.width; var itemTop = o.top, itemLeft = o.left; return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth) }; $.each(inst.sortables, function (i) { this.instance.positionAbs = inst.positionAbs; this.instance.helperProportions = inst.helperProportions; this.instance.offset.click = inst.offset.click; if (this.instance._intersectsWith(this.instance.containerCache)) { if (!this.instance.isOver) { this.instance.isOver = 1; this.instance.currentItem = $(self).clone().appendTo(this.instance.element).data("sortable-item", true); this.instance.options._helper = this.instance.options.helper; this.instance.options.helper = function () { return ui.helper[0] }; event.target = this.instance.currentItem[0]; this.instance._mouseCapture(event, true); this.instance._mouseStart(event, true, true); this.instance.offset.click.top = inst.offset.click.top; this.instance.offset.click.left = inst.offset.click.left; this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left; this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top; inst._trigger("toSortable", event); inst.dropped = this.instance.element; inst.currentItem = inst.element; this.instance.fromOutside = inst } if (this.instance.currentItem) this.instance._mouseDrag(event) } else { if (this.instance.isOver) { this.instance.isOver = 0; this.instance.cancelHelperRemoval = true; this.instance.options.revert = false; this.instance._trigger('out', event, this.instance._uiHash(this.instance)); this.instance._mouseStop(event, true); this.instance.options.helper = this.instance.options._helper; this.instance.currentItem.remove(); if (this.instance.placeholder) this.instance.placeholder.remove(); inst._trigger("fromSortable", event); inst.dropped = false } } }) } }); $.ui.plugin.add("draggable", "cursor", { start: function (event, ui) { var t = $('body'), o = $(this).data('draggable').options; if (t.css("cursor")) o._cursor = t.css("cursor"); t.css("cursor", o.cursor) }, stop: function (event, ui) { var o = $(this).data('draggable').options; if (o._cursor) $('body').css("cursor", o._cursor) } }); $.ui.plugin.add("draggable", "iframeFix", { start: function (event, ui) { var o = $(this).data('draggable').options; $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function () { $('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({ width: this.offsetWidth + "px", height: this.offsetHeight + "px", position: "absolute", opacity: "0.001", zIndex: 1000 }).css($(this).offset()).appendTo("body") }) }, stop: function (event, ui) { $("div.ui-draggable-iframeFix").each(function () { this.parentNode.removeChild(this) }) } }); $.ui.plugin.add("draggable", "opacity", { start: function (event, ui) { var t = $(ui.helper), o = $(this).data('draggable').options; if (t.css("opacity")) o._opacity = t.css("opacity"); t.css('opacity', o.opacity) }, stop: function (event, ui) { var o = $(this).data('draggable').options; if (o._opacity) $(ui.helper).css('opacity', o._opacity) } }); $.ui.plugin.add("draggable", "scroll", { start: function (event, ui) { var i = $(this).data("draggable"); if (i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset() }, drag: function (event, ui) { var i = $(this).data("draggable"), o = i.options, scrolled = false; if (i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') { if (!o.axis || o.axis != 'x') { if ((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed; else if (event.pageY - i.overflowOffset.top < o.scrollSensitivity) i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed } if (!o.axis || o.axis != 'y') { if ((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed; else if (event.pageX - i.overflowOffset.left < o.scrollSensitivity) i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed } } else { if (!o.axis || o.axis != 'x') { if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed) } if (!o.axis || o.axis != 'y') { if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed) } } if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) $.ui.ddmanager.prepareOffsets(i, event) } }); $.ui.plugin.add("draggable", "snap", { start: function (event, ui) { var i = $(this).data("draggable"), o = i.options; i.snapElements = []; $(o.snap.constructor != String ? (o.snap.items || ':data(draggable)') : o.snap).each(function () { var $t = $(this); var $o = $t.offset(); if (this != i.element[0]) i.snapElements.push({ item: this, width: $t.outerWidth(), height: $t.outerHeight(), top: $o.top, left: $o.left }) }) }, drag: function (event, ui) { var inst = $(this).data("draggable"), o = inst.options; var d = o.snapTolerance; var x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width, y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height; for (var i = inst.snapElements.length - 1; i >= 0; i--) { var l = inst.snapElements[i].left, r = l + inst.snapElements[i].width, t = inst.snapElements[i].top, b = t + inst.snapElements[i].height; if (!((l - d < x1 && x1 < r + d && t - d < y1 && y1 < b + d) || (l - d < x1 && x1 < r + d && t - d < y2 && y2 < b + d) || (l - d < x2 && x2 < r + d && t - d < y1 && y1 < b + d) || (l - d < x2 && x2 < r + d && t - d < y2 && y2 < b + d))) { if (inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); inst.snapElements[i].snapping = false; continue } if (o.snapMode != 'inner') { var ts = Math.abs(t - y2) <= d; var bs = Math.abs(b - y1) <= d; var ls = Math.abs(l - x2) <= d; var rs = Math.abs(r - x1) <= d; if (ts) ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top; if (bs) ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top; if (ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left; if (rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left } var first = (ts || bs || ls || rs); if (o.snapMode != 'outer') { var ts = Math.abs(t - y1) <= d; var bs = Math.abs(b - y2) <= d; var ls = Math.abs(l - x1) <= d; var rs = Math.abs(r - x2) <= d; if (ts) ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top; if (bs) ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top; if (ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left; if (rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left } if (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); inst.snapElements[i].snapping = (ts || bs || ls || rs || first) } } }); $.ui.plugin.add("draggable", "stack", { start: function (event, ui) { var o = $(this).data("draggable").options; var group = $.makeArray($(o.stack)).sort(function (a, b) { return (parseInt($(a).css("zIndex"), 10) || 0) - (parseInt($(b).css("zIndex"), 10) || 0) }); if (!group.length) { return } var min = parseInt(group[0].style.zIndex) || 0; $(group).each(function (i) { this.style.zIndex = min + i }); this[0].style.zIndex = min + group.length } }); $.ui.plugin.add("draggable", "zIndex", { start: function (event, ui) { var t = $(ui.helper), o = $(this).data("draggable").options; if (t.css("zIndex")) o._zIndex = t.css("zIndex"); t.css('zIndex', o.zIndex) }, stop: function (event, ui) { var o = $(this).data("draggable").options; if (o._zIndex) $(ui.helper).css('zIndex', o._zIndex) } }) })(jQuery); (function ($, undefined) { $.widget("ui.droppable", { widgetEventPrefix: "drop", options: { accept: '*', activeClass: false, addClasses: true, greedy: false, hoverClass: false, scope: 'default', tolerance: 'intersect' }, _create: function () { var o = this.options, accept = o.accept; this.isover = 0; this.isout = 1; this.accept = $.isFunction(accept) ? accept : function (d) { return d.is(accept) }; this.proportions = { width: this.element[0].offsetWidth, height: this.element[0].offsetHeight }; $.ui.ddmanager.droppables[o.scope] = $.ui.ddmanager.droppables[o.scope] || []; $.ui.ddmanager.droppables[o.scope].push(this); (o.addClasses && this.element.addClass("ui-droppable")) }, destroy: function () { var drop = $.ui.ddmanager.droppables[this.options.scope]; for (var i = 0; i < drop.length; i++) if (drop[i] == this) drop.splice(i, 1); this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable"); return this }, _setOption: function (key, value) { if (key == 'accept') { this.accept = $.isFunction(value) ? value : function (d) { return d.is(value) } } $.Widget.prototype._setOption.apply(this, arguments) }, _activate: function (event) { var draggable = $.ui.ddmanager.current; if (this.options.activeClass) this.element.addClass(this.options.activeClass); (draggable && this._trigger('activate', event, this.ui(draggable))) }, _deactivate: function (event) { var draggable = $.ui.ddmanager.current; if (this.options.activeClass) this.element.removeClass(this.options.activeClass); (draggable && this._trigger('deactivate', event, this.ui(draggable))) }, _over: function (event) { var draggable = $.ui.ddmanager.current; if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; if (this.accept.call(this.element[0], (draggable.currentItem || draggable.element))) { if (this.options.hoverClass) this.element.addClass(this.options.hoverClass); this._trigger('over', event, this.ui(draggable)) } }, _out: function (event) { var draggable = $.ui.ddmanager.current; if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; if (this.accept.call(this.element[0], (draggable.currentItem || draggable.element))) { if (this.options.hoverClass) this.element.removeClass(this.options.hoverClass); this._trigger('out', event, this.ui(draggable)) } }, _drop: function (event, custom) { var draggable = custom || $.ui.ddmanager.current; if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; var childrenIntersection = false; this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function () { var inst = $.data(this, 'droppable'); if (inst.options.greedy && !inst.options.disabled && inst.options.scope == draggable.options.scope && inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)) { childrenIntersection = true; return false } }); if (childrenIntersection) return false; if (this.accept.call(this.element[0], (draggable.currentItem || draggable.element))) { if (this.options.activeClass) this.element.removeClass(this.options.activeClass); if (this.options.hoverClass) this.element.removeClass(this.options.hoverClass); this._trigger('drop', event, this.ui(draggable)); return this.element } return false }, ui: function (c) { return { draggable: (c.currentItem || c.element), helper: c.helper, position: c.position, offset: c.positionAbs} } }); $.extend($.ui.droppable, { version: "1.8.11" }); $.ui.intersect = function (draggable, droppable, toleranceMode) { if (!droppable.offset) return false; var x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width, y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height; var l = droppable.offset.left, r = l + droppable.proportions.width, t = droppable.offset.top, b = t + droppable.proportions.height; switch (toleranceMode) { case 'fit': return (l <= x1 && x2 <= r && t <= y1 && y2 <= b); break; case 'intersect': return (l < x1 + (draggable.helperProportions.width / 2) && x2 - (draggable.helperProportions.width / 2) < r && t < y1 + (draggable.helperProportions.height / 2) && y2 - (draggable.helperProportions.height / 2) < b); break; case 'pointer': var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left), draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top), isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width); return isOver; break; case 'touch': return ((y1 >= t && y1 <= b) || (y2 >= t && y2 <= b) || (y1 < t && y2 > b)) && ((x1 >= l && x1 <= r) || (x2 >= l && x2 <= r) || (x1 < l && x2 > r)); break; default: return false; break } }; $.ui.ddmanager = { current: null, droppables: { 'default': [] }, prepareOffsets: function (t, event) { var m = $.ui.ddmanager.droppables[t.options.scope] || []; var type = event ? event.type : null; var list = (t.currentItem || t.element).find(":data(droppable)").andSelf(); droppablesLoop: for (var i = 0; i < m.length; i++) { if (m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0], (t.currentItem || t.element)))) continue; for (var j = 0; j < list.length; j++) { if (list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop } }; m[i].visible = m[i].element.css("display") != "none"; if (!m[i].visible) continue; if (type == "mousedown") m[i]._activate.call(m[i], event); m[i].offset = m[i].element.offset(); m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight} } }, drop: function (draggable, event) { var dropped = false; $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function () { if (!this.options) return; if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) dropped = dropped || this._drop.call(this, event); if (!this.options.disabled && this.visible && this.accept.call(this.element[0], (draggable.currentItem || draggable.element))) { this.isout = 1; this.isover = 0; this._deactivate.call(this, event) } }); return dropped }, drag: function (draggable, event) { if (draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event); $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function () { if (this.options.disabled || this.greedyChild || !this.visible) return; var intersects = $.ui.intersect(draggable, this, this.options.tolerance); var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover == 0 ? 'isover' : null); if (!c) return; var parentInstance; if (this.options.greedy) { var parent = this.element.parents(':data(droppable):eq(0)'); if (parent.length) { parentInstance = $.data(parent[0], 'droppable'); parentInstance.greedyChild = (c == 'isover' ? 1 : 0) } } if (parentInstance && c == 'isover') { parentInstance['isover'] = 0; parentInstance['isout'] = 1; parentInstance._out.call(parentInstance, event) } this[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0; this[c == "isover" ? "_over" : "_out"].call(this, event); if (parentInstance && c == 'isout') { parentInstance['isout'] = 0; parentInstance['isover'] = 1; parentInstance._over.call(parentInstance, event) } }) } } })(jQuery); (function ($, undefined) { $.widget("ui.resizable", $.ui.mouse, { widgetEventPrefix: "resize", options: { alsoResize: false, animate: false, animateDuration: "slow", animateEasing: "swing", aspectRatio: false, autoHide: false, containment: false, ghost: false, grid: false, handles: "e,s,se", helper: false, maxHeight: null, maxWidth: null, minHeight: 10, minWidth: 10, zIndex: 1000 }, _create: function () { var self = this, o = this.options; this.element.addClass("ui-resizable"); $.extend(this, { _aspectRatio: !!(o.aspectRatio), aspectRatio: o.aspectRatio, originalElement: this.element, _proportionallyResizeElements: [], _helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null }); if (this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) { if (/relative/.test(this.element.css('position')) && $.browser.opera) this.element.css({ position: 'relative', top: 'auto', left: 'auto' }); this.element.wrap($('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({ position: this.element.css('position'), width: this.element.outerWidth(), height: this.element.outerHeight(), top: this.element.css('top'), left: this.element.css('left') })); this.element = this.element.parent().data("resizable", this.element.data('resizable')); this.elementIsWrapper = true; this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") }); this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0 }); this.originalResizeStyle = this.originalElement.css('resize'); this.originalElement.css('resize', 'none'); this._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' })); this.originalElement.css({ margin: this.originalElement.css('margin') }); this._proportionallyResize() } this.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? "e,s,se" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' }); if (this.handles.constructor == String) { if (this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw'; var n = this.handles.split(","); this.handles = {}; for (var i = 0; i < n.length; i++) { var handle = $.trim(n[i]), hname = 'ui-resizable-' + handle; var axis = $('<div class="ui-resizable-handle ' + hname + '"></div>'); if (/sw|se|ne|nw/.test(handle)) axis.css({ zIndex: ++o.zIndex }); if ('se' == handle) { axis.addClass('ui-icon ui-icon-gripsmall-diagonal-se') }; this.handles[handle] = '.ui-resizable-' + handle; this.element.append(axis) } } this._renderAxis = function (target) { target = target || this.element; for (var i in this.handles) { if (this.handles[i].constructor == String) this.handles[i] = $(this.handles[i], this.element).show(); if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) { var axis = $(this.handles[i], this.element), padWrapper = 0; padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth(); var padPos = ['padding', /ne|nw|n/.test(i) ? 'Top' : /se|sw|s/.test(i) ? 'Bottom' : /^e$/.test(i) ? 'Right' : 'Left'].join(""); target.css(padPos, padWrapper); this._proportionallyResize() } if (!$(this.handles[i]).length) continue } }; this._renderAxis(this.element); this._handles = $('.ui-resizable-handle', this.element).disableSelection(); this._handles.mouseover(function () { if (!self.resizing) { if (this.className) var axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); self.axis = axis && axis[1] ? axis[1] : 'se' } }); if (o.autoHide) { this._handles.hide(); $(this.element).addClass("ui-resizable-autohide").hover(function () { $(this).removeClass("ui-resizable-autohide"); self._handles.show() }, function () { if (!self.resizing) { $(this).addClass("ui-resizable-autohide"); self._handles.hide() } }) } this._mouseInit() }, destroy: function () { this._mouseDestroy(); var _destroy = function (exp) { $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find('.ui-resizable-handle').remove() }; if (this.elementIsWrapper) { _destroy(this.element); var wrapper = this.element; wrapper.after(this.originalElement.css({ position: wrapper.css('position'), width: wrapper.outerWidth(), height: wrapper.outerHeight(), top: wrapper.css('top'), left: wrapper.css('left') })).remove() } this.originalElement.css('resize', this.originalResizeStyle); _destroy(this.originalElement); return this }, _mouseCapture: function (event) { var handle = false; for (var i in this.handles) { if ($(this.handles[i])[0] == event.target) { handle = true } } return !this.options.disabled && handle }, _mouseStart: function (event) { var o = this.options, iniPos = this.element.position(), el = this.element; this.resizing = true; this.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() }; if (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) { el.css({ position: 'absolute', top: iniPos.top, left: iniPos.left }) } if ($.browser.opera && (/relative/).test(el.css('position'))) el.css({ position: 'relative', top: 'auto', left: 'auto' }); this._renderProxy(); var curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top')); if (o.containment) { curleft += $(o.containment).scrollLeft() || 0; curtop += $(o.containment).scrollTop() || 0 } this.offset = this.helper.offset(); this.position = { left: curleft, top: curtop }; this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight()} : { width: el.width(), height: el.height() }; this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight()} : { width: el.width(), height: el.height() }; this.originalPosition = { left: curleft, top: curtop }; this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() }; this.originalMousePosition = { left: event.pageX, top: event.pageY }; this.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1); var cursor = $('.ui-resizable-' + this.axis).css('cursor'); $('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor); el.addClass("ui-resizable-resizing"); this._propagate("start", event); return true }, _mouseDrag: function (event) { var el = this.helper, o = this.options, props = {}, self = this, smp = this.originalMousePosition, a = this.axis; var dx = (event.pageX - smp.left) || 0, dy = (event.pageY - smp.top) || 0; var trigger = this._change[a]; if (!trigger) return false; var data = trigger.apply(this, [event, dx, dy]), ie6 = $.browser.msie && $.browser.version < 7, csdif = this.sizeDiff; if (this._aspectRatio || event.shiftKey) data = this._updateRatio(data, event); data = this._respectSize(data, event); this._propagate("resize", event); el.css({ top: this.position.top + "px", left: this.position.left + "px", width: this.size.width + "px", height: this.size.height + "px" }); if (!this._helper && this._proportionallyResizeElements.length) this._proportionallyResize(); this._updateCache(data); this._trigger('resize', event, this.ui()); return false }, _mouseStop: function (event) { this.resizing = false; var o = this.options, self = this; if (this._helper) { var pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName), soffseth = ista && $.ui.hasScroll(pr[0], 'left') ? 0 : self.sizeDiff.height, soffsetw = ista ? 0 : self.sizeDiff.width; var s = { width: (self.helper.width() - soffsetw), height: (self.helper.height() - soffseth) }, left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null, top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null; if (!o.animate) this.element.css($.extend(s, { top: top, left: left })); self.helper.height(self.size.height); self.helper.width(self.size.width); if (this._helper && !o.animate) this._proportionallyResize() } $('body').css('cursor', 'auto'); this.element.removeClass("ui-resizable-resizing"); this._propagate("stop", event); if (this._helper) this.helper.remove(); return false }, _updateCache: function (data) { var o = this.options; this.offset = this.helper.offset(); if (isNumber(data.left)) this.position.left = data.left; if (isNumber(data.top)) this.position.top = data.top; if (isNumber(data.height)) this.size.height = data.height; if (isNumber(data.width)) this.size.width = data.width }, _updateRatio: function (data, event) { var o = this.options, cpos = this.position, csize = this.size, a = this.axis; if (data.height) data.width = (csize.height * this.aspectRatio); else if (data.width) data.height = (csize.width / this.aspectRatio); if (a == 'sw') { data.left = cpos.left + (csize.width - data.width); data.top = null } if (a == 'nw') { data.top = cpos.top + (csize.height - data.height); data.left = cpos.left + (csize.width - data.width) } return data }, _respectSize: function (data, event) { var el = this.helper, o = this.options, pRatio = this._aspectRatio || event.shiftKey, a = this.axis, ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height), isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height); if (isminw) data.width = o.minWidth; if (isminh) data.height = o.minHeight; if (ismaxw) data.width = o.maxWidth; if (ismaxh) data.height = o.maxHeight; var dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height; var cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a); if (isminw && cw) data.left = dw - o.minWidth; if (ismaxw && cw) data.left = dw - o.maxWidth; if (isminh && ch) data.top = dh - o.minHeight; if (ismaxh && ch) data.top = dh - o.maxHeight; var isNotwh = !data.width && !data.height; if (isNotwh && !data.left && data.top) data.top = null; else if (isNotwh && !data.top && data.left) data.left = null; return data }, _proportionallyResize: function () { var o = this.options; if (!this._proportionallyResizeElements.length) return; var element = this.helper || this.element; for (var i = 0; i < this._proportionallyResizeElements.length; i++) { var prel = this._proportionallyResizeElements[i]; if (!this.borderDif) { var b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')], p = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')]; this.borderDif = $.map(b, function (v, i) { var border = parseInt(v, 10) || 0, padding = parseInt(p[i], 10) || 0; return border + padding }) } if ($.browser.msie && !(!($(element).is(':hidden') || $(element).parents(':hidden').length))) continue; prel.css({ height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0, width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0 }) } }, _renderProxy: function () { var el = this.element, o = this.options; this.elementOffset = el.offset(); if (this._helper) { this.helper = this.helper || $('<div style="overflow:hidden;"></div>'); var ie6 = $.browser.msie && $.browser.version < 7, ie6offset = (ie6 ? 1 : 0), pxyoffset = (ie6 ? 2 : -1); this.helper.addClass(this._helper).css({ width: this.element.outerWidth() + pxyoffset, height: this.element.outerHeight() + pxyoffset, position: 'absolute', left: this.elementOffset.left - ie6offset + 'px', top: this.elementOffset.top - ie6offset + 'px', zIndex: ++o.zIndex }); this.helper.appendTo("body").disableSelection() } else { this.helper = this.element } }, _change: { e: function (event, dx, dy) { return { width: this.originalSize.width + dx} }, w: function (event, dx, dy) { var o = this.options, cs = this.originalSize, sp = this.originalPosition; return { left: sp.left + dx, width: cs.width - dx} }, n: function (event, dx, dy) { var o = this.options, cs = this.originalSize, sp = this.originalPosition; return { top: sp.top + dy, height: cs.height - dy} }, s: function (event, dx, dy) { return { height: this.originalSize.height + dy} }, se: function (event, dx, dy) { return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])) }, sw: function (event, dx, dy) { return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])) }, ne: function (event, dx, dy) { return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy])) }, nw: function (event, dx, dy) { return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy])) } }, _propagate: function (n, event) { $.ui.plugin.call(this, n, [event, this.ui()]); (n != "resize" && this._trigger(n, event, this.ui())) }, plugins: {}, ui: function () { return { originalElement: this.originalElement, element: this.element, helper: this.helper, position: this.position, size: this.size, originalSize: this.originalSize, originalPosition: this.originalPosition} } }); $.extend($.ui.resizable, { version: "1.8.11" }); $.ui.plugin.add("resizable", "alsoResize", { start: function (event, ui) { var self = $(this).data("resizable"), o = self.options; var _store = function (exp) { $(exp).each(function () { var el = $(this); el.data("resizable-alsoresize", { width: parseInt(el.width(), 10), height: parseInt(el.height(), 10), left: parseInt(el.css('left'), 10), top: parseInt(el.css('top'), 10), position: el.css('position') }) }) }; if (typeof (o.alsoResize) == 'object' && !o.alsoResize.parentNode) { if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize) } else { $.each(o.alsoResize, function (exp) { _store(exp) }) } } else { _store(o.alsoResize) } }, resize: function (event, ui) { var self = $(this).data("resizable"), o = self.options, os = self.originalSize, op = self.originalPosition; var delta = { height: (self.size.height - os.height) || 0, width: (self.size.width - os.width) || 0, top: (self.position.top - op.top) || 0, left: (self.position.left - op.left) || 0 }, _alsoResize = function (exp, c) { $(exp).each(function () { var el = $(this), start = $(this).data("resizable-alsoresize"), style = {}, css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left']; $.each(css, function (i, prop) { var sum = (start[prop] || 0) + (delta[prop] || 0); if (sum && sum >= 0) style[prop] = sum || null }); if ($.browser.opera && /relative/.test(el.css('position'))) { self._revertToRelativePosition = true; el.css({ position: 'absolute', top: 'auto', left: 'auto' }) } el.css(style) }) }; if (typeof (o.alsoResize) == 'object' && !o.alsoResize.nodeType) { $.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c) }) } else { _alsoResize(o.alsoResize) } }, stop: function (event, ui) { var self = $(this).data("resizable"), o = self.options; var _reset = function (exp) { $(exp).each(function () { var el = $(this); el.css({ position: el.data("resizable-alsoresize").position }) }) }; if (self._revertToRelativePosition) { self._revertToRelativePosition = false; if (typeof (o.alsoResize) == 'object' && !o.alsoResize.nodeType) { $.each(o.alsoResize, function (exp) { _reset(exp) }) } else { _reset(o.alsoResize) } } $(this).removeData("resizable-alsoresize") } }); $.ui.plugin.add("resizable", "animate", { stop: function (event, ui) { var self = $(this).data("resizable"), o = self.options; var pr = self._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName), soffseth = ista && $.ui.hasScroll(pr[0], 'left') ? 0 : self.sizeDiff.height, soffsetw = ista ? 0 : self.sizeDiff.width; var style = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) }, left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null, top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null; self.element.animate($.extend(style, top && left ? { top: top, left: left} : {}), { duration: o.animateDuration, easing: o.animateEasing, step: function () { var data = { width: parseInt(self.element.css('width'), 10), height: parseInt(self.element.css('height'), 10), top: parseInt(self.element.css('top'), 10), left: parseInt(self.element.css('left'), 10) }; if (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height }); self._updateCache(data); self._propagate("resize", event) } }) } }); $.ui.plugin.add("resizable", "containment", { start: function (event, ui) { var self = $(this).data("resizable"), o = self.options, el = self.element; var oc = o.containment, ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc; if (!ce) return; self.containerElement = $(ce); if (/document/.test(oc) || oc == document) { self.containerOffset = { left: 0, top: 0 }; self.containerPosition = { left: 0, top: 0 }; self.parentData = { element: $(document), left: 0, top: 0, width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight} } else { var element = $(ce), p = []; $(["Top", "Right", "Left", "Bottom"]).each(function (i, name) { p[i] = num(element.css("padding" + name)) }); self.containerOffset = element.offset(); self.containerPosition = element.position(); self.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) }; var co = self.containerOffset, ch = self.containerSize.height, cw = self.containerSize.width, width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch); self.parentData = { element: ce, left: co.left, top: co.top, width: width, height: height} } }, resize: function (event, ui) { var self = $(this).data("resizable"), o = self.options, ps = self.containerSize, co = self.containerOffset, cs = self.size, cp = self.position, pRatio = self._aspectRatio || event.shiftKey, cop = { top: 0, left: 0 }, ce = self.containerElement; if (ce[0] != document && (/static/).test(ce.css('position'))) cop = co; if (cp.left < (self._helper ? co.left : 0)) { self.size.width = self.size.width + (self._helper ? (self.position.left - co.left) : (self.position.left - cop.left)); if (pRatio) self.size.height = self.size.width / o.aspectRatio; self.position.left = o.helper ? co.left : 0 } if (cp.top < (self._helper ? co.top : 0)) { self.size.height = self.size.height + (self._helper ? (self.position.top - co.top) : self.position.top); if (pRatio) self.size.width = self.size.height * o.aspectRatio; self.position.top = self._helper ? co.top : 0 } self.offset.left = self.parentData.left + self.position.left; self.offset.top = self.parentData.top + self.position.top; var woset = Math.abs((self._helper ? self.offset.left - cop.left : (self.offset.left - cop.left)) + self.sizeDiff.width), hoset = Math.abs((self._helper ? self.offset.top - cop.top : (self.offset.top - co.top)) + self.sizeDiff.height); var isParent = self.containerElement.get(0) == self.element.parent().get(0), isOffsetRelative = /relative|absolute/.test(self.containerElement.css('position')); if (isParent && isOffsetRelative) woset -= self.parentData.left; if (woset + self.size.width >= self.parentData.width) { self.size.width = self.parentData.width - woset; if (pRatio) self.size.height = self.size.width / self.aspectRatio } if (hoset + self.size.height >= self.parentData.height) { self.size.height = self.parentData.height - hoset; if (pRatio) self.size.width = self.size.height * self.aspectRatio } }, stop: function (event, ui) { var self = $(this).data("resizable"), o = self.options, cp = self.position, co = self.containerOffset, cop = self.containerPosition, ce = self.containerElement; var helper = $(self.helper), ho = helper.offset(), w = helper.outerWidth() - self.sizeDiff.width, h = helper.outerHeight() - self.sizeDiff.height; if (self._helper && !o.animate && (/relative/).test(ce.css('position'))) $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }); if (self._helper && !o.animate && (/static/).test(ce.css('position'))) $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h }) } }); $.ui.plugin.add("resizable", "ghost", { start: function (event, ui) { var self = $(this).data("resizable"), o = self.options, cs = self.size; self.ghost = self.originalElement.clone(); self.ghost.css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 }).addClass('ui-resizable-ghost').addClass(typeof o.ghost == 'string' ? o.ghost : ''); self.ghost.appendTo(self.helper) }, resize: function (event, ui) { var self = $(this).data("resizable"), o = self.options; if (self.ghost) self.ghost.css({ position: 'relative', height: self.size.height, width: self.size.width }) }, stop: function (event, ui) { var self = $(this).data("resizable"), o = self.options; if (self.ghost && self.helper) self.helper.get(0).removeChild(self.ghost.get(0)) } }); $.ui.plugin.add("resizable", "grid", { resize: function (event, ui) { var self = $(this).data("resizable"), o = self.options, cs = self.size, os = self.originalSize, op = self.originalPosition, a = self.axis, ratio = o._aspectRatio || event.shiftKey; o.grid = typeof o.grid == "number" ? [o.grid, o.grid] : o.grid; var ox = Math.round((cs.width - os.width) / (o.grid[0] || 1)) * (o.grid[0] || 1), oy = Math.round((cs.height - os.height) / (o.grid[1] || 1)) * (o.grid[1] || 1); if (/^(se|s|e)$/.test(a)) { self.size.width = os.width + ox; self.size.height = os.height + oy } else if (/^(ne)$/.test(a)) { self.size.width = os.width + ox; self.size.height = os.height + oy; self.position.top = op.top - oy } else if (/^(sw)$/.test(a)) { self.size.width = os.width + ox; self.size.height = os.height + oy; self.position.left = op.left - ox } else { self.size.width = os.width + ox; self.size.height = os.height + oy; self.position.top = op.top - oy; self.position.left = op.left - ox } } }); var num = function (v) { return parseInt(v, 10) || 0 }; var isNumber = function (value) { return !isNaN(parseInt(value, 10)) } })(jQuery); (function ($, undefined) { $.widget("ui.selectable", $.ui.mouse, { options: { appendTo: 'body', autoRefresh: true, distance: 0, filter: '*', tolerance: 'touch' }, _create: function () { var self = this; this.element.addClass("ui-selectable"); this.dragged = false; var selectees; this.refresh = function () { selectees = $(self.options.filter, self.element[0]); selectees.each(function () { var $this = $(this); var pos = $this.offset(); $.data(this, "selectable-item", { element: this, $element: $this, left: pos.left, top: pos.top, right: pos.left + $this.outerWidth(), bottom: pos.top + $this.outerHeight(), startselected: false, selected: $this.hasClass('ui-selected'), selecting: $this.hasClass('ui-selecting'), unselecting: $this.hasClass('ui-unselecting') }) }) }; this.refresh(); this.selectees = selectees.addClass("ui-selectee"); this._mouseInit(); this.helper = $("<div class='ui-selectable-helper'></div>") }, destroy: function () { this.selectees.removeClass("ui-selectee").removeData("selectable-item"); this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"); this._mouseDestroy(); return this }, _mouseStart: function (event) { var self = this; this.opos = [event.pageX, event.pageY]; if (this.options.disabled) return; var options = this.options; this.selectees = $(options.filter, this.element[0]); this._trigger("start", event); $(options.appendTo).append(this.helper); this.helper.css({ "left": event.clientX, "top": event.clientY, "width": 0, "height": 0 }); if (options.autoRefresh) { this.refresh() } this.selectees.filter('.ui-selected').each(function () { var selectee = $.data(this, "selectable-item"); selectee.startselected = true; if (!event.metaKey) { selectee.$element.removeClass('ui-selected'); selectee.selected = false; selectee.$element.addClass('ui-unselecting'); selectee.unselecting = true; self._trigger("unselecting", event, { unselecting: selectee.element }) } }); $(event.target).parents().andSelf().each(function () { var selectee = $.data(this, "selectable-item"); if (selectee) { var doSelect = !event.metaKey || !selectee.$element.hasClass('ui-selected'); selectee.$element.removeClass(doSelect ? "ui-unselecting" : "ui-selected").addClass(doSelect ? "ui-selecting" : "ui-unselecting"); selectee.unselecting = !doSelect; selectee.selecting = doSelect; selectee.selected = doSelect; if (doSelect) { self._trigger("selecting", event, { selecting: selectee.element }) } else { self._trigger("unselecting", event, { unselecting: selectee.element }) } return false } }) }, _mouseDrag: function (event) { var self = this; this.dragged = true; if (this.options.disabled) return; var options = this.options; var x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY; if (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp } if (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp } this.helper.css({ left: x1, top: y1, width: x2 - x1, height: y2 - y1 }); this.selectees.each(function () { var selectee = $.data(this, "selectable-item"); if (!selectee || selectee.element == self.element[0]) return; var hit = false; if (options.tolerance == 'touch') { hit = (!(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1)) } else if (options.tolerance == 'fit') { hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2) } if (hit) { if (selectee.selected) { selectee.$element.removeClass('ui-selected'); selectee.selected = false } if (selectee.unselecting) { selectee.$element.removeClass('ui-unselecting'); selectee.unselecting = false } if (!selectee.selecting) { selectee.$element.addClass('ui-selecting'); selectee.selecting = true; self._trigger("selecting", event, { selecting: selectee.element }) } } else { if (selectee.selecting) { if (event.metaKey && selectee.startselected) { selectee.$element.removeClass('ui-selecting'); selectee.selecting = false; selectee.$element.addClass('ui-selected'); selectee.selected = true } else { selectee.$element.removeClass('ui-selecting'); selectee.selecting = false; if (selectee.startselected) { selectee.$element.addClass('ui-unselecting'); selectee.unselecting = true } self._trigger("unselecting", event, { unselecting: selectee.element }) } } if (selectee.selected) { if (!event.metaKey && !selectee.startselected) { selectee.$element.removeClass('ui-selected'); selectee.selected = false; selectee.$element.addClass('ui-unselecting'); selectee.unselecting = true; self._trigger("unselecting", event, { unselecting: selectee.element }) } } } }); return false }, _mouseStop: function (event) { var self = this; this.dragged = false; var options = this.options; $('.ui-unselecting', this.element[0]).each(function () { var selectee = $.data(this, "selectable-item"); selectee.$element.removeClass('ui-unselecting'); selectee.unselecting = false; selectee.startselected = false; self._trigger("unselected", event, { unselected: selectee.element }) }); $('.ui-selecting', this.element[0]).each(function () { var selectee = $.data(this, "selectable-item"); selectee.$element.removeClass('ui-selecting').addClass('ui-selected'); selectee.selecting = false; selectee.selected = true; selectee.startselected = true; self._trigger("selected", event, { selected: selectee.element }) }); this._trigger("stop", event); this.helper.remove(); return false } }); $.extend($.ui.selectable, { version: "1.8.11" }) })(jQuery); (function ($, undefined) { $.widget("ui.sortable", $.ui.mouse, { widgetEventPrefix: "sort", options: { appendTo: "parent", axis: false, connectWith: false, containment: false, cursor: 'auto', cursorAt: false, dropOnEmpty: true, forcePlaceholderSize: false, forceHelperSize: false, grid: false, handle: false, helper: "original", items: '> *', opacity: false, placeholder: false, revert: false, scroll: true, scrollSensitivity: 20, scrollSpeed: 20, scope: "default", tolerance: "intersect", zIndex: 1000 }, _create: function () { var o = this.options; this.containerCache = {}; this.element.addClass("ui-sortable"); this.refresh(); this.floating = this.items.length ? (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false; this.offset = this.element.offset(); this._mouseInit() }, destroy: function () { this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable"); this._mouseDestroy(); for (var i = this.items.length - 1; i >= 0; i--) this.items[i].item.removeData("sortable-item"); return this }, _setOption: function (key, value) { if (key === "disabled") { this.options[key] = value; this.widget()[value ? "addClass" : "removeClass"]("ui-sortable-disabled") } else { $.Widget.prototype._setOption.apply(this, arguments) } }, _mouseCapture: function (event, overrideHandle) { if (this.reverting) { return false } if (this.options.disabled || this.options.type == 'static') return false; this._refreshItems(event); var currentItem = null, self = this, nodes = $(event.target).parents().each(function () { if ($.data(this, 'sortable-item') == self) { currentItem = $(this); return false } }); if ($.data(event.target, 'sortable-item') == self) currentItem = $(event.target); if (!currentItem) return false; if (this.options.handle && !overrideHandle) { var validHandle = false; $(this.options.handle, currentItem).find("*").andSelf().each(function () { if (this == event.target) validHandle = true }); if (!validHandle) return false } this.currentItem = currentItem; this._removeCurrentsFromItems(); return true }, _mouseStart: function (event, overrideHandle, noActivation) { var o = this.options, self = this; this.currentContainer = this; this.refreshPositions(); this.helper = this._createHelper(event); this._cacheHelperProportions(); this._cacheMargins(); this.scrollParent = this.helper.scrollParent(); this.offset = this.currentItem.offset(); this.offset = { top: this.offset.top - this.margins.top, left: this.offset.left - this.margins.left }; this.helper.css("position", "absolute"); this.cssPosition = this.helper.css("position"); $.extend(this.offset, { click: { left: event.pageX - this.offset.left, top: event.pageY - this.offset.top }, parent: this._getParentOffset(), relative: this._getRelativeOffset() }); this.originalPosition = this._generatePosition(event); this.originalPageX = event.pageX; this.originalPageY = event.pageY; (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] }; if (this.helper[0] != this.currentItem[0]) { this.currentItem.hide() } this._createPlaceholder(); if (o.containment) this._setContainment(); if (o.cursor) { if ($('body').css("cursor")) this._storedCursor = $('body').css("cursor"); $('body').css("cursor", o.cursor) } if (o.opacity) { if (this.helper.css("opacity")) this._storedOpacity = this.helper.css("opacity"); this.helper.css("opacity", o.opacity) } if (o.zIndex) { if (this.helper.css("zIndex")) this._storedZIndex = this.helper.css("zIndex"); this.helper.css("zIndex", o.zIndex) } if (this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') this.overflowOffset = this.scrollParent.offset(); this._trigger("start", event, this._uiHash()); if (!this._preserveHelperProportions) this._cacheHelperProportions(); if (!noActivation) { for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger("activate", event, self._uiHash(this)) } } if ($.ui.ddmanager) $.ui.ddmanager.current = this; if ($.ui.ddmanager && !o.dropBehaviour) $.ui.ddmanager.prepareOffsets(this, event); this.dragging = true; this.helper.addClass("ui-sortable-helper"); this._mouseDrag(event); return true }, _mouseDrag: function (event) { this.position = this._generatePosition(event); this.positionAbs = this._convertPositionTo("absolute"); if (!this.lastPositionAbs) { this.lastPositionAbs = this.positionAbs } if (this.options.scroll) { var o = this.options, scrolled = false; if (this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') { if ((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; else if (event.pageY - this.overflowOffset.top < o.scrollSensitivity) this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; if ((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; else if (event.pageX - this.overflowOffset.left < o.scrollSensitivity) this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed } else { if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed) } if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) $.ui.ddmanager.prepareOffsets(this, event) } this.positionAbs = this._convertPositionTo("absolute"); if (!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left + 'px'; if (!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top + 'px'; for (var i = this.items.length - 1; i >= 0; i--) { var item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item); if (!intersection) continue; if (itemElement != this.currentItem[0] && this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement && !$.ui.contains(this.placeholder[0], itemElement) && (this.options.type == 'semi-dynamic' ? !$.ui.contains(this.element[0], itemElement) : true)) { this.direction = intersection == 1 ? "down" : "up"; if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) { this._rearrange(event, item) } else { break } this._trigger("change", event, this._uiHash()); break } } this._contactContainers(event); if ($.ui.ddmanager) $.ui.ddmanager.drag(this, event); this._trigger('sort', event, this._uiHash()); this.lastPositionAbs = this.positionAbs; return false }, _mouseStop: function (event, noPropagation) { if (!event) return; if ($.ui.ddmanager && !this.options.dropBehaviour) $.ui.ddmanager.drop(this, event); if (this.options.revert) { var self = this; var cur = self.placeholder.offset(); self.reverting = true; $(this.helper).animate({ left: cur.left - this.offset.parent.left - self.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft), top: cur.top - this.offset.parent.top - self.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop) }, parseInt(this.options.revert, 10) || 500, function () { self._clear(event) }) } else { this._clear(event, noPropagation) } return false }, cancel: function () { var self = this; if (this.dragging) { this._mouseUp({ target: null }); if (this.options.helper == "original") this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); else this.currentItem.show(); for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger("deactivate", null, self._uiHash(this)); if (this.containers[i].containerCache.over) { this.containers[i]._trigger("out", null, self._uiHash(this)); this.containers[i].containerCache.over = 0 } } } if (this.placeholder) { if (this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]); if (this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove(); $.extend(this, { helper: null, dragging: false, reverting: false, _noFinalSort: null }); if (this.domPosition.prev) { $(this.domPosition.prev).after(this.currentItem) } else { $(this.domPosition.parent).prepend(this.currentItem) } } return this }, serialize: function (o) { var items = this._getItemsAsjQuery(o && o.connected); var str = []; o = o || {}; $(items).each(function () { var res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/)); if (res) str.push((o.key || res[1] + '[]') + '=' + (o.key && o.expression ? res[1] : res[2])) }); if (!str.length && o.key) { str.push(o.key + '=') } return str.join('&') }, toArray: function (o) { var items = this._getItemsAsjQuery(o && o.connected); var ret = []; o = o || {}; items.each(function () { ret.push($(o.item || this).attr(o.attribute || 'id') || '') }); return ret }, _intersectsWith: function (item) { var x1 = this.positionAbs.left, x2 = x1 + this.helperProportions.width, y1 = this.positionAbs.top, y2 = y1 + this.helperProportions.height; var l = item.left, r = l + item.width, t = item.top, b = t + item.height; var dyClick = this.offset.click.top, dxClick = this.offset.click.left; var isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r; if (this.options.tolerance == "pointer" || this.options.forcePointerForContainers || (this.options.tolerance != "pointer" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])) { return isOverElement } else { return (l < x1 + (this.helperProportions.width / 2) && x2 - (this.helperProportions.width / 2) < r && t < y1 + (this.helperProportions.height / 2) && y2 - (this.helperProportions.height / 2) < b); } }, _intersectsWithPointer: function (item) { var isOverElementHeight = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), isOverElementWidth = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), isOverElement = isOverElementHeight && isOverElementWidth, verticalDirection = this._getDragVerticalDirection(), horizontalDirection = this._getDragHorizontalDirection(); if (!isOverElement) return false; return this.floating ? (((horizontalDirection && horizontalDirection == "right") || verticalDirection == "down") ? 2 : 1) : (verticalDirection && (verticalDirection == "down" ? 2 : 1)) }, _intersectsWithSides: function (item) { var isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height / 2), item.height), isOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width / 2), item.width), verticalDirection = this._getDragVerticalDirection(), horizontalDirection = this._getDragHorizontalDirection(); if (this.floating && horizontalDirection) { return ((horizontalDirection == "right" && isOverRightHalf) || (horizontalDirection == "left" && !isOverRightHalf)) } else { return verticalDirection && ((verticalDirection == "down" && isOverBottomHalf) || (verticalDirection == "up" && !isOverBottomHalf)) } }, _getDragVerticalDirection: function () { var delta = this.positionAbs.top - this.lastPositionAbs.top; return delta != 0 && (delta > 0 ? "down" : "up") }, _getDragHorizontalDirection: function () { var delta = this.positionAbs.left - this.lastPositionAbs.left; return delta != 0 && (delta > 0 ? "right" : "left") }, refresh: function (event) { this._refreshItems(event); this.refreshPositions(); return this }, _connectWith: function () { var options = this.options; return options.connectWith.constructor == String ? [options.connectWith] : options.connectWith }, _getItemsAsjQuery: function (connected) { var self = this; var items = []; var queries = []; var connectWith = this._connectWith(); if (connectWith && connected) { for (var i = connectWith.length - 1; i >= 0; i--) { var cur = $(connectWith[i]); for (var j = cur.length - 1; j >= 0; j--) { var inst = $.data(cur[j], 'sortable'); if (inst && inst != this && !inst.options.disabled) { queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), inst]) } } } } queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), this]); for (var i = queries.length - 1; i >= 0; i--) { queries[i][0].each(function () { items.push(this) }) }; return $(items) }, _removeCurrentsFromItems: function () { var list = this.currentItem.find(":data(sortable-item)"); for (var i = 0; i < this.items.length; i++) { for (var j = 0; j < list.length; j++) { if (list[j] == this.items[i].item[0]) this.items.splice(i, 1) } } }, _refreshItems: function (event) { this.items = []; this.containers = [this]; var items = this.items; var self = this; var queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]]; var connectWith = this._connectWith(); if (connectWith) { for (var i = connectWith.length - 1; i >= 0; i--) { var cur = $(connectWith[i]); for (var j = cur.length - 1; j >= 0; j--) { var inst = $.data(cur[j], 'sortable'); if (inst && inst != this && !inst.options.disabled) { queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]); this.containers.push(inst) } } } } for (var i = queries.length - 1; i >= 0; i--) { var targetData = queries[i][1]; var _queries = queries[i][0]; for (var j = 0, queriesLength = _queries.length; j < queriesLength; j++) { var item = $(_queries[j]); item.data('sortable-item', targetData); items.push({ item: item, instance: targetData, width: 0, height: 0, left: 0, top: 0 }) } } }, refreshPositions: function (fast) { if (this.offsetParent && this.helper) { this.offset.parent = this._getParentOffset() } for (var i = this.items.length - 1; i >= 0; i--) { var item = this.items[i]; var t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; if (!fast) { item.width = t.outerWidth(); item.height = t.outerHeight() } var p = t.offset(); item.left = p.left; item.top = p.top }; if (this.options.custom && this.options.custom.refreshContainers) { this.options.custom.refreshContainers.call(this) } else { for (var i = this.containers.length - 1; i >= 0; i--) { var p = this.containers[i].element.offset(); this.containers[i].containerCache.left = p.left; this.containers[i].containerCache.top = p.top; this.containers[i].containerCache.width = this.containers[i].element.outerWidth(); this.containers[i].containerCache.height = this.containers[i].element.outerHeight() } } return this }, _createPlaceholder: function (that) { var self = that || this, o = self.options; if (!o.placeholder || o.placeholder.constructor == String) { var className = o.placeholder; o.placeholder = { element: function () { var el = $(document.createElement(self.currentItem[0].nodeName)).addClass(className || self.currentItem[0].className + " ui-sortable-placeholder").removeClass("ui-sortable-helper")[0]; if (!className) el.style.visibility = "hidden"; return el }, update: function (container, p) { if (className && !o.forcePlaceholderSize) return; if (!p.height()) { p.height(self.currentItem.innerHeight() - parseInt(self.currentItem.css('paddingTop') || 0, 10) - parseInt(self.currentItem.css('paddingBottom') || 0, 10)) }; if (!p.width()) { p.width(self.currentItem.innerWidth() - parseInt(self.currentItem.css('paddingLeft') || 0, 10) - parseInt(self.currentItem.css('paddingRight') || 0, 10)) } } } } self.placeholder = $(o.placeholder.element.call(self.element, self.currentItem)); self.currentItem.after(self.placeholder); o.placeholder.update(self, self.placeholder) }, _contactContainers: function (event) { var innermostContainer = null, innermostIndex = null; for (var i = this.containers.length - 1; i >= 0; i--) { if ($.ui.contains(this.currentItem[0], this.containers[i].element[0])) continue; if (this._intersectsWith(this.containers[i].containerCache)) { if (innermostContainer && $.ui.contains(this.containers[i].element[0], innermostContainer.element[0])) continue; innermostContainer = this.containers[i]; innermostIndex = i } else { if (this.containers[i].containerCache.over) { this.containers[i]._trigger("out", event, this._uiHash(this)); this.containers[i].containerCache.over = 0 } } } if (!innermostContainer) return; if (this.containers.length === 1) { this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); this.containers[innermostIndex].containerCache.over = 1 } else if (this.currentContainer != this.containers[innermostIndex]) { var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[innermostIndex].floating ? 'left' : 'top']; for (var j = this.items.length - 1; j >= 0; j--) { if (!$.ui.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue; var cur = this.items[j][this.containers[innermostIndex].floating ? 'left' : 'top']; if (Math.abs(cur - base) < dist) { dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j] } } if (!itemWithLeastDistance && !this.options.dropOnEmpty) return; this.currentContainer = this.containers[innermostIndex]; itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); this._trigger("change", event, this._uiHash()); this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); this.options.placeholder.update(this.currentContainer, this.placeholder); this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); this.containers[innermostIndex].containerCache.over = 1 } }, _createHelper: function (event) { var o = this.options; var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem); if (!helper.parents('body').length) $(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); if (helper[0] == this.currentItem[0]) this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }; if (helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width()); if (helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height()); return helper }, _adjustOffsetFromHelper: function (obj) { if (typeof obj == 'string') { obj = obj.split(' ') } if ($.isArray(obj)) { obj = { left: +obj[0], top: +obj[1] || 0} } if ('left' in obj) { this.offset.click.left = obj.left + this.margins.left } if ('right' in obj) { this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left } if ('top' in obj) { this.offset.click.top = obj.top + this.margins.top } if ('bottom' in obj) { this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top } }, _getParentOffset: function () { this.offsetParent = this.helper.offsetParent(); var po = this.offsetParent.offset(); if (this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) { po.left += this.scrollParent.scrollLeft(); po.top += this.scrollParent.scrollTop() } if ((this.offsetParent[0] == document.body) || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) po = { top: 0, left: 0 }; return { top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0), left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)} }, _getRelativeOffset: function () { if (this.cssPosition == "relative") { var p = this.currentItem.position(); return { top: p.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(), left: p.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()} } else { return { top: 0, left: 0} } }, _cacheMargins: function () { this.margins = { left: (parseInt(this.currentItem.css("marginLeft"), 10) || 0), top: (parseInt(this.currentItem.css("marginTop"), 10) || 0)} }, _cacheHelperProportions: function () { this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight()} }, _setContainment: function () { var o = this.options; if (o.containment == 'parent') o.containment = this.helper[0].parentNode; if (o.containment == 'document' || o.containment == 'window') this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left, ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top]; if (!(/^(document|window|parent)$/).test(o.containment)) { var ce = $(o.containment)[0]; var co = $(o.containment).offset(); var over = ($(ce).css("overflow") != 'hidden'); this.containment = [co.left + (parseInt($(ce).css("borderLeftWidth"), 10) || 0) + (parseInt($(ce).css("paddingLeft"), 10) || 0) - this.margins.left, co.top + (parseInt($(ce).css("borderTopWidth"), 10) || 0) + (parseInt($(ce).css("paddingTop"), 10) || 0) - this.margins.top, co.left + (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"), 10) || 0) - (parseInt($(ce).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left, co.top + (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"), 10) || 0) - (parseInt($(ce).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top] } }, _convertPositionTo: function (d, pos) { if (!pos) pos = this.position; var mod = d == "absolute" ? 1 : -1; var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); return { top: (pos.top + this.offset.relative.top * mod + this.offset.parent.top * mod - ($.browser.safari && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())) * mod)), left: (pos.left + this.offset.relative.left * mod + this.offset.parent.left * mod - ($.browser.safari && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod))} }, _generatePosition: function (event) { var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); if (this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) { this.offset.relative = this._getRelativeOffset() } var pageX = event.pageX; var pageY = event.pageY; if (this.originalPosition) { if (this.containment) { if (event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left; if (event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top; if (event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left; if (event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top } if (o.grid) { var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left } } return { top: (pageY - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ($.browser.safari && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : (scrollIsRootNode ? 0 : scroll.scrollTop())))), left: (pageX - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ($.browser.safari && this.cssPosition == 'fixed' ? 0 : (this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft())))} }, _rearrange: function (event, i, a, hardRefresh) { a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling)); this.counter = this.counter ? ++this.counter : 1; var self = this, counter = this.counter; window.setTimeout(function () { if (counter == self.counter) self.refreshPositions(!hardRefresh) }, 0) }, _clear: function (event, noPropagation) { this.reverting = false; var delayedTriggers = [], self = this; if (!this._noFinalSort && this.currentItem[0].parentNode) this.placeholder.before(this.currentItem); this._noFinalSort = null; if (this.helper[0] == this.currentItem[0]) { for (var i in this._storedCSS) { if (this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = '' } this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper") } else { this.currentItem.show() } if (this.fromOutside && !noPropagation) delayedTriggers.push(function (event) { this._trigger("receive", event, this._uiHash(this.fromOutside)) }); if ((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function (event) { this._trigger("update", event, this._uiHash()) }); if (!$.ui.contains(this.element[0], this.currentItem[0])) { if (!noPropagation) delayedTriggers.push(function (event) { this._trigger("remove", event, this._uiHash()) }); for (var i = this.containers.length - 1; i >= 0; i--) { if ($.ui.contains(this.containers[i].element[0], this.currentItem[0]) && !noPropagation) { delayedTriggers.push((function (c) { return function (event) { c._trigger("receive", event, this._uiHash(this)) } }).call(this, this.containers[i])); delayedTriggers.push((function (c) { return function (event) { c._trigger("update", event, this._uiHash(this)) } }).call(this, this.containers[i])) } } }; for (var i = this.containers.length - 1; i >= 0; i--) { if (!noPropagation) delayedTriggers.push((function (c) { return function (event) { c._trigger("deactivate", event, this._uiHash(this)) } }).call(this, this.containers[i])); if (this.containers[i].containerCache.over) { delayedTriggers.push((function (c) { return function (event) { c._trigger("out", event, this._uiHash(this)) } }).call(this, this.containers[i])); this.containers[i].containerCache.over = 0 } } if (this._storedCursor) $('body').css("cursor", this._storedCursor); if (this._storedOpacity) this.helper.css("opacity", this._storedOpacity); if (this._storedZIndex) this.helper.css("zIndex", this._storedZIndex == 'auto' ? '' : this._storedZIndex); this.dragging = false; if (this.cancelHelperRemoval) { if (!noPropagation) { this._trigger("beforeStop", event, this._uiHash()); for (var i = 0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event) }; this._trigger("stop", event, this._uiHash()) } return false } if (!noPropagation) this._trigger("beforeStop", event, this._uiHash()); this.placeholder[0].parentNode.removeChild(this.placeholder[0]); if (this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null; if (!noPropagation) { for (var i = 0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event) }; this._trigger("stop", event, this._uiHash()) } this.fromOutside = false; return true }, _trigger: function () { if ($.Widget.prototype._trigger.apply(this, arguments) === false) { this.cancel() } }, _uiHash: function (inst) { var self = inst || this; return { helper: self.helper, placeholder: self.placeholder || $([]), position: self.position, originalPosition: self.originalPosition, offset: self.positionAbs, item: self.currentItem, sender: inst ? inst.element : null} } }); $.extend($.ui.sortable, { version: "1.8.11" }) })(jQuery); (function ($, undefined) { $.widget("ui.accordion", { options: { active: 0, animated: "slide", autoHeight: true, clearStyle: false, collapsible: false, event: "click", fillSpace: false, header: "> li > :first-child,> :not(li):even", icons: { header: "ui-icon-triangle-1-e", headerSelected: "ui-icon-triangle-1-s" }, navigation: false, navigationFilter: function () { return this.href.toLowerCase() === location.href.toLowerCase() } }, _create: function () { var self = this, options = self.options; self.running = 0; self.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); self.headers = self.element.find(options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion", function () { if (options.disabled) { return } $(this).addClass("ui-state-hover") }).bind("mouseleave.accordion", function () { if (options.disabled) { return } $(this).removeClass("ui-state-hover") }).bind("focus.accordion", function () { if (options.disabled) { return } $(this).addClass("ui-state-focus") }).bind("blur.accordion", function () { if (options.disabled) { return } $(this).removeClass("ui-state-focus") }); self.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); if (options.navigation) { var current = self.element.find("a").filter(options.navigationFilter).eq(0); if (current.length) { var header = current.closest(".ui-accordion-header"); if (header.length) { self.active = header } else { self.active = current.closest(".ui-accordion-content").prev() } } } self.active = self._findActive(self.active || options.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top"); self.active.next().addClass("ui-accordion-content-active"); self._createIcons(); self.resize(); self.element.attr("role", "tablist"); self.headers.attr("role", "tab").bind("keydown.accordion", function (event) { return self._keydown(event) }).next().attr("role", "tabpanel"); self.headers.not(self.active || "").attr({ "aria-expanded": "false", "aria-selected": "false", tabIndex: -1 }).next().hide(); if (!self.active.length) { self.headers.eq(0).attr("tabIndex", 0) } else { self.active.attr({ "aria-expanded": "true", "aria-selected": "true", tabIndex: 0 }) } if (!$.browser.safari) { self.headers.find("a").attr("tabIndex", -1) } if (options.event) { self.headers.bind(options.event.split(" ").join(".accordion ") + ".accordion", function (event) { self._clickHandler.call(self, event, this); event.preventDefault() }) } }, _createIcons: function () { var options = this.options; if (options.icons) { $("<span></span>").addClass("ui-icon " + options.icons.header).prependTo(this.headers); this.active.children(".ui-icon").toggleClass(options.icons.header).toggleClass(options.icons.headerSelected); this.element.addClass("ui-accordion-icons") } }, _destroyIcons: function () { this.headers.children(".ui-icon").remove(); this.element.removeClass("ui-accordion-icons") }, destroy: function () { var options = this.options; this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"); this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); this.headers.find("a").removeAttr("tabIndex"); this._destroyIcons(); var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled"); if (options.autoHeight || options.fillHeight) { contents.css("height", "") } return $.Widget.prototype.destroy.call(this) }, _setOption: function (key, value) { $.Widget.prototype._setOption.apply(this, arguments); if (key == "active") { this.activate(value) } if (key == "icons") { this._destroyIcons(); if (value) { this._createIcons() } } if (key == "disabled") { this.headers.add(this.headers.next())[value ? "addClass" : "removeClass"]("ui-accordion-disabled ui-state-disabled") } }, _keydown: function (event) { if (this.options.disabled || event.altKey || event.ctrlKey) { return } var keyCode = $.ui.keyCode, length = this.headers.length, currentIndex = this.headers.index(event.target), toFocus = false; switch (event.keyCode) { case keyCode.RIGHT: case keyCode.DOWN: toFocus = this.headers[(currentIndex + 1) % length]; break; case keyCode.LEFT: case keyCode.UP: toFocus = this.headers[(currentIndex - 1 + length) % length]; break; case keyCode.SPACE: case keyCode.ENTER: this._clickHandler({ target: event.target }, event.target); event.preventDefault() } if (toFocus) { $(event.target).attr("tabIndex", -1); $(toFocus).attr("tabIndex", 0); toFocus.focus(); return false } return true }, resize: function () { var options = this.options, maxHeight; if (options.fillSpace) { if ($.browser.msie) { var defOverflow = this.element.parent().css("overflow"); this.element.parent().css("overflow", "hidden") } maxHeight = this.element.parent().height(); if ($.browser.msie) { this.element.parent().css("overflow", defOverflow) } this.headers.each(function () { maxHeight -= $(this).outerHeight(true) }); this.headers.next().each(function () { $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height())) }).css("overflow", "auto") } else if (options.autoHeight) { maxHeight = 0; this.headers.next().each(function () { maxHeight = Math.max(maxHeight, $(this).height("").height()) }).height(maxHeight) } return this }, activate: function (index) { this.options.active = index; var active = this._findActive(index)[0]; this._clickHandler({ target: active }, active); return this }, _findActive: function (selector) { return selector ? typeof selector === "number" ? this.headers.filter(":eq(" + selector + ")") : this.headers.not(this.headers.not(selector)) : selector === false ? $([]) : this.headers.filter(":eq(0)") }, _clickHandler: function (event, target) { var options = this.options; if (options.disabled) { return } if (!event.target) { if (!options.collapsible) { return } this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(options.icons.headerSelected).addClass(options.icons.header); this.active.next().addClass("ui-accordion-content-active"); var toHide = this.active.next(), data = { options: options, newHeader: $([]), oldHeader: options.active, newContent: $([]), oldContent: toHide }, toShow = (this.active = $([])); this._toggle(toShow, toHide, data); return } var clicked = $(event.currentTarget || target), clickedIsActive = clicked[0] === this.active[0]; options.active = options.collapsible && clickedIsActive ? false : this.headers.index(clicked); if (this.running || (!options.collapsible && clickedIsActive)) { return } var active = this.active, toShow = clicked.next(), toHide = this.active.next(), data = { options: options, newHeader: clickedIsActive && options.collapsible ? $([]) : clicked, oldHeader: this.active, newContent: clickedIsActive && options.collapsible ? $([]) : toShow, oldContent: toHide }, down = this.headers.index(this.active[0]) > this.headers.index(clicked[0]); this.active = clickedIsActive ? $([]) : clicked; this._toggle(toShow, toHide, data, clickedIsActive, down); active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(options.icons.headerSelected).addClass(options.icons.header); if (!clickedIsActive) { clicked.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(options.icons.header).addClass(options.icons.headerSelected); clicked.next().addClass("ui-accordion-content-active") } return }, _toggle: function (toShow, toHide, data, clickedIsActive, down) { var self = this, options = self.options; self.toShow = toShow; self.toHide = toHide; self.data = data; var complete = function () { if (!self) { return } return self._completed.apply(self, arguments) }; self._trigger("changestart", null, self.data); self.running = toHide.size() === 0 ? toShow.size() : toHide.size(); if (options.animated) { var animOptions = {}; if (options.collapsible && clickedIsActive) { animOptions = { toShow: $([]), toHide: toHide, complete: complete, down: down, autoHeight: options.autoHeight || options.fillSpace} } else { animOptions = { toShow: toShow, toHide: toHide, complete: complete, down: down, autoHeight: options.autoHeight || options.fillSpace} } if (!options.proxied) { options.proxied = options.animated } if (!options.proxiedDuration) { options.proxiedDuration = options.duration } options.animated = $.isFunction(options.proxied) ? options.proxied(animOptions) : options.proxied; options.duration = $.isFunction(options.proxiedDuration) ? options.proxiedDuration(animOptions) : options.proxiedDuration; var animations = $.ui.accordion.animations, duration = options.duration, easing = options.animated; if (easing && !animations[easing] && !$.easing[easing]) { easing = "slide" } if (!animations[easing]) { animations[easing] = function (options) { this.slide(options, { easing: easing, duration: duration || 700 }) } } animations[easing](animOptions) } else { if (options.collapsible && clickedIsActive) { toShow.toggle() } else { toHide.hide(); toShow.show() } complete(true) } toHide.prev().attr({ "aria-expanded": "false", "aria-selected": "false", tabIndex: -1 }).blur(); toShow.prev().attr({ "aria-expanded": "true", "aria-selected": "true", tabIndex: 0 }).focus() }, _completed: function (cancel) { this.running = cancel ? 0 : --this.running; if (this.running) { return } if (this.options.clearStyle) { this.toShow.add(this.toHide).css({ height: "", overflow: "" }) } this.toHide.removeClass("ui-accordion-content-active"); if (this.toHide.length) { this.toHide.parent()[0].className = this.toHide.parent()[0].className } this._trigger("change", null, this.data) } }); $.extend($.ui.accordion, { version: "1.8.11", animations: { slide: function (options, additions) { options = $.extend({ easing: "swing", duration: 300 }, options, additions); if (!options.toHide.size()) { options.toShow.animate({ height: "show", paddingTop: "show", paddingBottom: "show" }, options); return } if (!options.toShow.size()) { options.toHide.animate({ height: "hide", paddingTop: "hide", paddingBottom: "hide" }, options); return } var overflow = options.toShow.css("overflow"), percentDone = 0, showProps = {}, hideProps = {}, fxAttrs = ["height", "paddingTop", "paddingBottom"], originalWidth; var s = options.toShow; originalWidth = s[0].style.width; s.width(parseInt(s.parent().width(), 10) - parseInt(s.css("paddingLeft"), 10) - parseInt(s.css("paddingRight"), 10) - (parseInt(s.css("borderLeftWidth"), 10) || 0) - (parseInt(s.css("borderRightWidth"), 10) || 0)); $.each(fxAttrs, function (i, prop) { hideProps[prop] = "hide"; var parts = ("" + $.css(options.toShow[0], prop)).match(/^([\d+-.]+)(.*)$/); showProps[prop] = { value: parts[1], unit: parts[2] || "px"} }); options.toShow.css({ height: 0, overflow: "hidden" }).show(); options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps, { step: function (now, settings) { if (settings.prop == "height") { percentDone = (settings.end - settings.start === 0) ? 0 : (settings.now - settings.start) / (settings.end - settings.start) } options.toShow[0].style[settings.prop] = (percentDone * showProps[settings.prop].value) + showProps[settings.prop].unit }, duration: options.duration, easing: options.easing, complete: function () { if (!options.autoHeight) { options.toShow.css("height", "") } options.toShow.css({ width: originalWidth, overflow: overflow }); options.complete() } }) }, bounceslide: function (options) { this.slide(options, { easing: options.down ? "easeOutBounce" : "swing", duration: options.down ? 1000 : 200 }) } } }) })(jQuery); (function ($, undefined) { var requestIndex = 0; $.widget("ui.autocomplete", { options: { appendTo: "body", autoFocus: false, delay: 300, minLength: 1, position: { my: "left top", at: "left bottom", collision: "none" }, source: null }, pending: 0, _create: function () { var self = this, doc = this.element[0].ownerDocument, suppressKeyPress; this.element.addClass("ui-autocomplete-input").attr("autocomplete", "off").attr({ role: "textbox", "aria-autocomplete": "list", "aria-haspopup": "true" }).bind("keydown.autocomplete", function (event) { if (self.options.disabled || self.element.attr("readonly")) { return } suppressKeyPress = false; var keyCode = $.ui.keyCode; switch (event.keyCode) { case keyCode.PAGE_UP: self._move("previousPage", event); break; case keyCode.PAGE_DOWN: self._move("nextPage", event); break; case keyCode.UP: self._move("previous", event); event.preventDefault(); break; case keyCode.DOWN: self._move("next", event); event.preventDefault(); break; case keyCode.ENTER: case keyCode.NUMPAD_ENTER: if (self.menu.active) { suppressKeyPress = true; event.preventDefault() } case keyCode.TAB: if (!self.menu.active) { return } self.menu.select(event); break; case keyCode.ESCAPE: self.element.val(self.term); self.close(event); break; default: clearTimeout(self.searching); self.searching = setTimeout(function () { if (self.term != self.element.val()) { self.selectedItem = null; self.search(null, event) } }, self.options.delay); break } }).bind("keypress.autocomplete", function (event) { if (suppressKeyPress) { suppressKeyPress = false; event.preventDefault() } }).bind("focus.autocomplete", function () { if (self.options.disabled) { return } self.selectedItem = null; self.previous = self.element.val() }).bind("blur.autocomplete", function (event) { if (self.options.disabled) { return } clearTimeout(self.searching); self.closing = setTimeout(function () { self.close(event); self._change(event) }, 150) }); this._initSource(); this.response = function () { return self._response.apply(self, arguments) }; this.menu = $("<ul></ul>").addClass("ui-autocomplete").appendTo($(this.options.appendTo || "body", doc)[0]).mousedown(function (event) { var menuElement = self.menu.element[0]; if (!$(event.target).closest(".ui-menu-item").length) { setTimeout(function () { $(document).one('mousedown', function (event) { if (event.target !== self.element[0] && event.target !== menuElement && !$.ui.contains(menuElement, event.target)) { self.close() } }) }, 1) } setTimeout(function () { clearTimeout(self.closing) }, 13) }).menu({ focus: function (event, ui) { var item = ui.item.data("item.autocomplete"); if (false !== self._trigger("focus", event, { item: item })) { if (/^key/.test(event.originalEvent.type)) { self.element.val(item.value) } } }, selected: function (event, ui) { var item = ui.item.data("item.autocomplete"), previous = self.previous; if (self.element[0] !== doc.activeElement) { self.element.focus(); self.previous = previous; setTimeout(function () { self.previous = previous; self.selectedItem = item }, 1) } if (false !== self._trigger("select", event, { item: item })) { self.element.val(item.value) } self.term = self.element.val(); self.close(event); self.selectedItem = item }, blur: function (event, ui) { if (self.menu.element.is(":visible") && (self.element.val() !== self.term)) { self.element.val(self.term) } } }).zIndex(this.element.zIndex() + 1).css({ top: 0, left: 0 }).hide().data("menu"); if ($.fn.bgiframe) { this.menu.element.bgiframe() } }, destroy: function () { this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); this.menu.element.remove(); $.Widget.prototype.destroy.call(this) }, _setOption: function (key, value) { $.Widget.prototype._setOption.apply(this, arguments); if (key === "source") { this._initSource() } if (key === "appendTo") { this.menu.element.appendTo($(value || "body", this.element[0].ownerDocument)[0]) } if (key === "disabled" && value && this.xhr) { this.xhr.abort() } }, _initSource: function () { var self = this, array, url; if ($.isArray(this.options.source)) { array = this.options.source; this.source = function (request, response) { response($.ui.autocomplete.filter(array, request.term)) } } else if (typeof this.options.source === "string") { url = this.options.source; this.source = function (request, response) { if (self.xhr) { self.xhr.abort() } self.xhr = $.ajax({ url: url, data: request, dataType: "json", autocompleteRequest: ++requestIndex, success: function (data, status) { if (this.autocompleteRequest === requestIndex) { response(data) } }, error: function () { if (this.autocompleteRequest === requestIndex) { response([]) } } }) } } else { this.source = this.options.source } }, search: function (value, event) { value = value != null ? value : this.element.val(); this.term = this.element.val(); if (value.length < this.options.minLength) { return this.close(event) } clearTimeout(this.closing); if (this._trigger("search", event) === false) { return } return this._search(value) }, _search: function (value) { this.pending++; this.element.addClass("ui-autocomplete-loading"); this.source({ term: value }, this.response) }, _response: function (content) { if (!this.options.disabled && content && content.length) { content = this._normalize(content); this._suggest(content); this._trigger("open") } else { this.close() } this.pending--; if (!this.pending) { this.element.removeClass("ui-autocomplete-loading") } }, close: function (event) { clearTimeout(this.closing); if (this.menu.element.is(":visible")) { this.menu.element.hide(); this.menu.deactivate(); this._trigger("close", event) } }, _change: function (event) { if (this.previous !== this.element.val()) { this._trigger("change", event, { item: this.selectedItem }) } }, _normalize: function (items) { if (items.length && items[0].label && items[0].value) { return items } return $.map(items, function (item) { if (typeof item === "string") { return { label: item, value: item} } return $.extend({ label: item.label || item.value, value: item.value || item.label }, item) }) }, _suggest: function (items) { var ul = this.menu.element.empty().zIndex(this.element.zIndex() + 1); this._renderMenu(ul, items); this.menu.deactivate(); this.menu.refresh(); ul.show(); this._resizeMenu(); ul.position($.extend({ of: this.element }, this.options.position)); if (this.options.autoFocus) { this.menu.next(new $.Event("mouseover")) } }, _resizeMenu: function () { var ul = this.menu.element; ul.outerWidth(Math.max(ul.width("").outerWidth(), this.element.outerWidth())) }, _renderMenu: function (ul, items) { var self = this; $.each(items, function (index, item) { self._renderItem(ul, item) }) }, _renderItem: function (ul, item) { return $("<li></li>").data("item.autocomplete", item).append($("<a></a>").text(item.label)).appendTo(ul) }, _move: function (direction, event) { if (!this.menu.element.is(":visible")) { this.search(null, event); return } if (this.menu.first() && /^previous/.test(direction) || this.menu.last() && /^next/.test(direction)) { this.element.val(this.term); this.menu.deactivate(); return } this.menu[direction](event) }, widget: function () { return this.menu.element } }); $.extend($.ui.autocomplete, { escapeRegex: function (value) { return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") }, filter: function (array, term) { var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), "i"); return $.grep(array, function (value) { return matcher.test(value.label || value.value || value) }) } }) } (jQuery)); (function ($) { $.widget("ui.menu", { _create: function () { var self = this; this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({ role: "listbox", "aria-activedescendant": "ui-active-menuitem" }).click(function (event) { if (!$(event.target).closest(".ui-menu-item a").length) { return } event.preventDefault(); self.select(event) }); this.refresh() }, refresh: function () { var self = this; var items = this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role", "menuitem"); items.children("a").addClass("ui-corner-all").attr("tabindex", -1).mouseenter(function (event) { self.activate(event, $(this).parent()) }).mouseleave(function () { self.deactivate() }) }, activate: function (event, item) { this.deactivate(); if (this.hasScroll()) { var offset = item.offset().top - this.element.offset().top, scroll = this.element.attr("scrollTop"), elementHeight = this.element.height(); if (offset < 0) { this.element.attr("scrollTop", scroll + offset) } else if (offset >= elementHeight) { this.element.attr("scrollTop", scroll + offset - elementHeight + item.height()) } } this.active = item.eq(0).children("a").addClass("ui-state-hover").attr("id", "ui-active-menuitem").end(); this._trigger("focus", event, { item: item }) }, deactivate: function () { if (!this.active) { return } this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); this._trigger("blur"); this.active = null }, next: function (event) { this.move("next", ".ui-menu-item:first", event) }, previous: function (event) { this.move("prev", ".ui-menu-item:last", event) }, first: function () { return this.active && !this.active.prevAll(".ui-menu-item").length }, last: function () { return this.active && !this.active.nextAll(".ui-menu-item").length }, move: function (direction, edge, event) { if (!this.active) { this.activate(event, this.element.children(edge)); return } var next = this.active[direction + "All"](".ui-menu-item").eq(0); if (next.length) { this.activate(event, next) } else { this.activate(event, this.element.children(edge)) } }, nextPage: function (event) { if (this.hasScroll()) { if (!this.active || this.last()) { this.activate(event, this.element.children(".ui-menu-item:first")); return } var base = this.active.offset().top, height = this.element.height(), result = this.element.children(".ui-menu-item").filter(function () { var close = $(this).offset().top - base - height + $(this).height(); return close < 10 && close > -10 }); if (!result.length) { result = this.element.children(".ui-menu-item:last") } this.activate(event, result) } else { this.activate(event, this.element.children(".ui-menu-item").filter(!this.active || this.last() ? ":first" : ":last")) } }, previousPage: function (event) { if (this.hasScroll()) { if (!this.active || this.first()) { this.activate(event, this.element.children(".ui-menu-item:last")); return } var base = this.active.offset().top, height = this.element.height(); result = this.element.children(".ui-menu-item").filter(function () { var close = $(this).offset().top - base + height - $(this).height(); return close < 10 && close > -10 }); if (!result.length) { result = this.element.children(".ui-menu-item:first") } this.activate(event, result) } else { this.activate(event, this.element.children(".ui-menu-item").filter(!this.active || this.first() ? ":last" : ":first")) } }, hasScroll: function () { return this.element.height() < this.element.attr("scrollHeight") }, select: function (event) { this._trigger("selected", event, { item: this.active }) } }) } (jQuery)); (function ($, undefined) { var lastActive, baseClasses = "ui-button ui-widget ui-state-default ui-corner-all", stateClasses = "ui-state-hover ui-state-active ", typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only", formResetHandler = function (event) { $(":ui-button", event.target.form).each(function () { var inst = $(this).data("button"); setTimeout(function () { inst.refresh() }, 1) }) }, radioGroup = function (radio) { var name = radio.name, form = radio.form, radios = $([]); if (name) { if (form) { radios = $(form).find("[name='" + name + "']") } else { radios = $("[name='" + name + "']", radio.ownerDocument).filter(function () { return !this.form }) } } return radios }; $.widget("ui.button", { options: { disabled: null, text: true, label: null, icons: { primary: null, secondary: null} }, _create: function () { this.element.closest("form").unbind("reset.button").bind("reset.button", formResetHandler); if (typeof this.options.disabled !== "boolean") { this.options.disabled = this.element.attr("disabled") } this._determineButtonType(); this.hasTitle = !!this.buttonElement.attr("title"); var self = this, options = this.options, toggleButton = this.type === "checkbox" || this.type === "radio", hoverClass = "ui-state-hover" + (!toggleButton ? " ui-state-active" : ""), focusClass = "ui-state-focus"; if (options.label === null) { options.label = this.buttonElement.html() } if (this.element.is(":disabled")) { options.disabled = true } this.buttonElement.addClass(baseClasses).attr("role", "button").bind("mouseenter.button", function () { if (options.disabled) { return } $(this).addClass("ui-state-hover"); if (this === lastActive) { $(this).addClass("ui-state-active") } }).bind("mouseleave.button", function () { if (options.disabled) { return } $(this).removeClass(hoverClass) }).bind("focus.button", function () { $(this).addClass(focusClass) }).bind("blur.button", function () { $(this).removeClass(focusClass) }); if (toggleButton) { this.element.bind("change.button", function () { self.refresh() }) } if (this.type === "checkbox") { this.buttonElement.bind("click.button", function () { if (options.disabled) { return false } $(this).toggleClass("ui-state-active"); self.buttonElement.attr("aria-pressed", self.element[0].checked) }) } else if (this.type === "radio") { this.buttonElement.bind("click.button", function () { if (options.disabled) { return false } $(this).addClass("ui-state-active"); self.buttonElement.attr("aria-pressed", true); var radio = self.element[0]; radioGroup(radio).not(radio).map(function () { return $(this).button("widget")[0] }).removeClass("ui-state-active").attr("aria-pressed", false) }) } else { this.buttonElement.bind("mousedown.button", function () { if (options.disabled) { return false } $(this).addClass("ui-state-active"); lastActive = this; $(document).one("mouseup", function () { lastActive = null }) }).bind("mouseup.button", function () { if (options.disabled) { return false } $(this).removeClass("ui-state-active") }).bind("keydown.button", function (event) { if (options.disabled) { return false } if (event.keyCode == $.ui.keyCode.SPACE || event.keyCode == $.ui.keyCode.ENTER) { $(this).addClass("ui-state-active") } }).bind("keyup.button", function () { $(this).removeClass("ui-state-active") }); if (this.buttonElement.is("a")) { this.buttonElement.keyup(function (event) { if (event.keyCode === $.ui.keyCode.SPACE) { $(this).click() } }) } } this._setOption("disabled", options.disabled) }, _determineButtonType: function () { if (this.element.is(":checkbox")) { this.type = "checkbox" } else { if (this.element.is(":radio")) { this.type = "radio" } else { if (this.element.is("input")) { this.type = "input" } else { this.type = "button" } } } if (this.type === "checkbox" || this.type === "radio") { var ancestor = this.element.parents().filter(":last"), labelSelector = "label[for=" + this.element.attr("id") + "]"; this.buttonElement = ancestor.find(labelSelector); if (!this.buttonElement.length) { ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings(); this.buttonElement = ancestor.filter(labelSelector); if (!this.buttonElement.length) { this.buttonElement = ancestor.find(labelSelector) } } this.element.addClass("ui-helper-hidden-accessible"); var checked = this.element.is(":checked"); if (checked) { this.buttonElement.addClass("ui-state-active") } this.buttonElement.attr("aria-pressed", checked) } else { this.buttonElement = this.element } }, widget: function () { return this.buttonElement }, destroy: function () { this.element.removeClass("ui-helper-hidden-accessible"); this.buttonElement.removeClass(baseClasses + " " + stateClasses + " " + typeClasses).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()); if (!this.hasTitle) { this.buttonElement.removeAttr("title") } $.Widget.prototype.destroy.call(this) }, _setOption: function (key, value) { $.Widget.prototype._setOption.apply(this, arguments); if (key === "disabled") { if (value) { this.element.attr("disabled", true) } else { this.element.removeAttr("disabled") } } this._resetButton() }, refresh: function () { var isDisabled = this.element.is(":disabled"); if (isDisabled !== this.options.disabled) { this._setOption("disabled", isDisabled) } if (this.type === "radio") { radioGroup(this.element[0]).each(function () { if ($(this).is(":checked")) { $(this).button("widget").addClass("ui-state-active").attr("aria-pressed", true) } else { $(this).button("widget").removeClass("ui-state-active").attr("aria-pressed", false) } }) } else if (this.type === "checkbox") { if (this.element.is(":checked")) { this.buttonElement.addClass("ui-state-active").attr("aria-pressed", true) } else { this.buttonElement.removeClass("ui-state-active").attr("aria-pressed", false) } } }, _resetButton: function () { if (this.type === "input") { if (this.options.label) { this.element.val(this.options.label) } return } var buttonElement = this.buttonElement.removeClass(typeClasses), buttonText = $("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(buttonElement.empty()).text(), icons = this.options.icons, multipleIcons = icons.primary && icons.secondary, buttonClasses = []; if (icons.primary || icons.secondary) { if (this.options.text) { buttonClasses.push("ui-button-text-icon" + (multipleIcons ? "s" : (icons.primary ? "-primary" : "-secondary"))) } if (icons.primary) { buttonElement.prepend("<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>") } if (icons.secondary) { buttonElement.append("<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>") } if (!this.options.text) { buttonClasses.push(multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only"); if (!this.hasTitle) { buttonElement.attr("title", buttonText) } } } else { buttonClasses.push("ui-button-text-only") } buttonElement.addClass(buttonClasses.join(" ")) } }); $.widget("ui.buttonset", { options: { items: ":button, :submit, :reset, :checkbox, :radio, a, :data(button)" }, _create: function () { this.element.addClass("ui-buttonset") }, _init: function () { this.refresh() }, _setOption: function (key, value) { if (key === "disabled") { this.buttons.button("option", key, value) } $.Widget.prototype._setOption.apply(this, arguments) }, refresh: function () { this.buttons = this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function () { return $(this).button("widget")[0] }).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end() }, destroy: function () { this.element.removeClass("ui-buttonset"); this.buttons.map(function () { return $(this).button("widget")[0] }).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); $.Widget.prototype.destroy.call(this) } }) } (jQuery)); (function ($, undefined) { var uiDialogClasses = 'ui-dialog ' + 'ui-widget ' + 'ui-widget-content ' + 'ui-corner-all ', sizeRelatedOptions = { buttons: true, height: true, maxHeight: true, maxWidth: true, minHeight: true, minWidth: true, width: true }, resizableRelatedOptions = { maxHeight: true, maxWidth: true, minHeight: true, minWidth: true }; $.widget("ui.dialog", { options: { autoOpen: true, buttons: {}, closeOnEscape: true, closeText: 'close', dialogClass: '', draggable: true, hide: null, height: 'auto', maxHeight: false, maxWidth: false, minHeight: 150, minWidth: 150, modal: false, position: { my: 'center', at: 'center', collision: 'fit', using: function (pos) { var topOffset = $(this).css(pos).offset().top; if (topOffset < 0) { $(this).css('top', pos.top - topOffset) } } }, resizable: true, show: null, stack: true, title: '', width: 300, zIndex: 1000 }, _create: function () { this.originalTitle = this.element.attr('title'); if (typeof this.originalTitle !== "string") { this.originalTitle = "" } this.options.title = this.options.title || this.originalTitle; var self = this, options = self.options, title = options.title || '&#160;', titleId = $.ui.dialog.getTitleId(self.element), uiDialog = (self.uiDialog = $('<div></div>')).appendTo(document.body).hide().addClass(uiDialogClasses + options.dialogClass).css({ zIndex: options.zIndex }).attr('tabIndex', -1).css('outline', 0).keydown(function (event) { if (options.closeOnEscape && event.keyCode && event.keyCode === $.ui.keyCode.ESCAPE) { self.close(event); event.preventDefault() } }).attr({ role: 'dialog', 'aria-labelledby': titleId }).mousedown(function (event) { self.moveToTop(false, event) }), uiDialogContent = self.element.show().removeAttr('title').addClass('ui-dialog-content ' + 'ui-widget-content').appendTo(uiDialog), uiDialogTitlebar = (self.uiDialogTitlebar = $('<div></div>')).addClass('ui-dialog-titlebar ' + 'ui-widget-header ' + 'ui-corner-all ' + 'ui-helper-clearfix').prependTo(uiDialog), uiDialogTitlebarClose = $('<a href="#"></a>').addClass('ui-dialog-titlebar-close ' + 'ui-corner-all').attr('role', 'button').hover(function () { uiDialogTitlebarClose.addClass('ui-state-hover') }, function () { uiDialogTitlebarClose.removeClass('ui-state-hover') }).focus(function () { uiDialogTitlebarClose.addClass('ui-state-focus') }).blur(function () { uiDialogTitlebarClose.removeClass('ui-state-focus') }).click(function (event) { self.close(event); return false }).appendTo(uiDialogTitlebar), uiDialogTitlebarCloseText = (self.uiDialogTitlebarCloseText = $('<span></span>')).addClass('ui-icon ' + 'ui-icon-closethick').text(options.closeText).appendTo(uiDialogTitlebarClose), uiDialogTitle = $('<span></span>').addClass('ui-dialog-title').attr('id', titleId).html(title).prependTo(uiDialogTitlebar); if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) { options.beforeClose = options.beforeclose } uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection(); if (options.draggable && $.fn.draggable) { self._makeDraggable() } if (options.resizable && $.fn.resizable) { self._makeResizable() } self._createButtons(options.buttons); self._isOpen = false; if ($.fn.bgiframe) { uiDialog.bgiframe() } }, _init: function () { if (this.options.autoOpen) { this.open() } }, destroy: function () { var self = this; if (self.overlay) { self.overlay.destroy() } self.uiDialog.hide(); self.element.unbind('.dialog').removeData('dialog').removeClass('ui-dialog-content ui-widget-content').hide().appendTo('body'); self.uiDialog.remove(); if (self.originalTitle) { self.element.attr('title', self.originalTitle) } return self }, widget: function () { return this.uiDialog }, close: function (event) { var self = this, maxZ, thisZ; if (false === self._trigger('beforeClose', event)) { return } if (self.overlay) { self.overlay.destroy() } self.uiDialog.unbind('keypress.ui-dialog'); self._isOpen = false; if (self.options.hide) { self.uiDialog.hide(self.options.hide, function () { self._trigger('close', event) }) } else { self.uiDialog.hide(); self._trigger('close', event) } $.ui.dialog.overlay.resize(); if (self.options.modal) { maxZ = 0; $('.ui-dialog').each(function () { if (this !== self.uiDialog[0]) { thisZ = $(this).css('z-index'); if (!isNaN(thisZ)) { maxZ = Math.max(maxZ, thisZ) } } }); $.ui.dialog.maxZ = maxZ } return self }, isOpen: function () { return this._isOpen }, moveToTop: function (force, event) { var self = this, options = self.options, saveScroll; if ((options.modal && !force) || (!options.stack && !options.modal)) { return self._trigger('focus', event) } if (options.zIndex > $.ui.dialog.maxZ) { $.ui.dialog.maxZ = options.zIndex } if (self.overlay) { $.ui.dialog.maxZ += 1; self.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ) } saveScroll = { scrollTop: self.element.attr('scrollTop'), scrollLeft: self.element.attr('scrollLeft') }; $.ui.dialog.maxZ += 1; self.uiDialog.css('z-index', $.ui.dialog.maxZ); self.element.attr(saveScroll); self._trigger('focus', event); return self }, open: function () { if (this._isOpen) { return } var self = this, options = self.options, uiDialog = self.uiDialog; self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null; self._size(); self._position(options.position); uiDialog.show(options.show); self.moveToTop(true); if (options.modal) { uiDialog.bind('keypress.ui-dialog', function (event) { if (event.keyCode !== $.ui.keyCode.TAB) { return } var tabbables = $(':tabbable', this), first = tabbables.filter(':first'), last = tabbables.filter(':last'); if (event.target === last[0] && !event.shiftKey) { first.focus(1); return false } else if (event.target === first[0] && event.shiftKey) { last.focus(1); return false } }) } $(self.element.find(':tabbable').get().concat(uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat(uiDialog.get()))).eq(0).focus(); self._isOpen = true; self._trigger('open'); return self }, _createButtons: function (buttons) { var self = this, hasButtons = false, uiDialogButtonPane = $('<div></div>').addClass('ui-dialog-buttonpane ' + 'ui-widget-content ' + 'ui-helper-clearfix'), uiButtonSet = $("<div></div>").addClass("ui-dialog-buttonset").appendTo(uiDialogButtonPane); self.uiDialog.find('.ui-dialog-buttonpane').remove(); if (typeof buttons === 'object' && buttons !== null) { $.each(buttons, function () { return !(hasButtons = true) }) } if (hasButtons) { $.each(buttons, function (name, props) { props = $.isFunction(props) ? { click: props, text: name} : props; var button = $('<button type="button"></button>').attr(props, true).unbind('click').click(function () { props.click.apply(self.element[0], arguments) }).appendTo(uiButtonSet); if ($.fn.button) { button.button() } }); uiDialogButtonPane.appendTo(self.uiDialog) } }, _makeDraggable: function () { var self = this, options = self.options, doc = $(document), heightBeforeDrag; function filteredUi(ui) { return { position: ui.position, offset: ui.offset} } self.uiDialog.draggable({ cancel: '.ui-dialog-content, .ui-dialog-titlebar-close', handle: '.ui-dialog-titlebar', containment: 'document', start: function (event, ui) { heightBeforeDrag = options.height === "auto" ? "auto" : $(this).height(); $(this).height($(this).height()).addClass("ui-dialog-dragging"); self._trigger('dragStart', event, filteredUi(ui)) }, drag: function (event, ui) { self._trigger('drag', event, filteredUi(ui)) }, stop: function (event, ui) { options.position = [ui.position.left - doc.scrollLeft(), ui.position.top - doc.scrollTop()]; $(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag); self._trigger('dragStop', event, filteredUi(ui)); $.ui.dialog.overlay.resize() } }) }, _makeResizable: function (handles) { handles = (handles === undefined ? this.options.resizable : handles); var self = this, options = self.options, position = self.uiDialog.css('position'), resizeHandles = (typeof handles === 'string' ? handles : 'n,e,s,w,se,sw,ne,nw'); function filteredUi(ui) { return { originalPosition: ui.originalPosition, originalSize: ui.originalSize, position: ui.position, size: ui.size} } self.uiDialog.resizable({ cancel: '.ui-dialog-content', containment: 'document', alsoResize: self.element, maxWidth: options.maxWidth, maxHeight: options.maxHeight, minWidth: options.minWidth, minHeight: self._minHeight(), handles: resizeHandles, start: function (event, ui) { $(this).addClass("ui-dialog-resizing"); self._trigger('resizeStart', event, filteredUi(ui)) }, resize: function (event, ui) { self._trigger('resize', event, filteredUi(ui)) }, stop: function (event, ui) { $(this).removeClass("ui-dialog-resizing"); options.height = $(this).height(); options.width = $(this).width(); self._trigger('resizeStop', event, filteredUi(ui)); $.ui.dialog.overlay.resize() } }).css('position', position).find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se') }, _minHeight: function () { var options = this.options; if (options.height === 'auto') { return options.minHeight } else { return Math.min(options.minHeight, options.height) } }, _position: function (position) { var myAt = [], offset = [0, 0], isVisible; if (position) { if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) { myAt = position.split ? position.split(' ') : [position[0], position[1]]; if (myAt.length === 1) { myAt[1] = myAt[0] } $.each(['left', 'top'], function (i, offsetPosition) { if (+myAt[i] === myAt[i]) { offset[i] = myAt[i]; myAt[i] = offsetPosition } }); position = { my: myAt.join(" "), at: myAt.join(" "), offset: offset.join(" ")} } position = $.extend({}, $.ui.dialog.prototype.options.position, position) } else { position = $.ui.dialog.prototype.options.position } isVisible = this.uiDialog.is(':visible'); if (!isVisible) { this.uiDialog.show() } this.uiDialog.css({ top: 0, left: 0 }).position($.extend({ of: window }, position)); if (!isVisible) { this.uiDialog.hide() } }, _setOptions: function (options) { var self = this, resizableOptions = {}, resize = false; $.each(options, function (key, value) { self._setOption(key, value); if (key in sizeRelatedOptions) { resize = true } if (key in resizableRelatedOptions) { resizableOptions[key] = value } }); if (resize) { this._size() } if (this.uiDialog.is(":data(resizable)")) { this.uiDialog.resizable("option", resizableOptions) } }, _setOption: function (key, value) { var self = this, uiDialog = self.uiDialog; switch (key) { case "beforeclose": key = "beforeClose"; break; case "buttons": self._createButtons(value); break; case "closeText": self.uiDialogTitlebarCloseText.text("" + value); break; case "dialogClass": uiDialog.removeClass(self.options.dialogClass).addClass(uiDialogClasses + value); break; case "disabled": if (value) { uiDialog.addClass('ui-dialog-disabled') } else { uiDialog.removeClass('ui-dialog-disabled') } break; case "draggable": var isDraggable = uiDialog.is(":data(draggable)"); if (isDraggable && !value) { uiDialog.draggable("destroy") } if (!isDraggable && value) { self._makeDraggable() } break; case "position": self._position(value); break; case "resizable": var isResizable = uiDialog.is(":data(resizable)"); if (isResizable && !value) { uiDialog.resizable('destroy') } if (isResizable && typeof value === 'string') { uiDialog.resizable('option', 'handles', value) } if (!isResizable && value !== false) { self._makeResizable(value) } break; case "title": $(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || '&#160;')); break } $.Widget.prototype._setOption.apply(self, arguments) }, _size: function () { var options = this.options, nonContentHeight, minContentHeight, isVisible = this.uiDialog.is(":visible"); this.element.show().css({ width: 'auto', minHeight: 0, height: 0 }); if (options.minWidth > options.width) { options.width = options.minWidth } nonContentHeight = this.uiDialog.css({ height: 'auto', width: options.width }).height(); minContentHeight = Math.max(0, options.minHeight - nonContentHeight); if (options.height === "auto") { if ($.support.minHeight) { this.element.css({ minHeight: minContentHeight, height: "auto" }) } else { this.uiDialog.show(); var autoHeight = this.element.css("height", "auto").height(); if (!isVisible) { this.uiDialog.hide() } this.element.height(Math.max(autoHeight, minContentHeight)) } } else { this.element.height(Math.max(options.height - nonContentHeight, 0)) } if (this.uiDialog.is(':data(resizable)')) { this.uiDialog.resizable('option', 'minHeight', this._minHeight()) } } }); $.extend($.ui.dialog, { version: "1.8.11", uuid: 0, maxZ: 0, getTitleId: function ($el) { var id = $el.attr('id'); if (!id) { this.uuid += 1; id = this.uuid } return 'ui-dialog-title-' + id }, overlay: function (dialog) { this.$el = $.ui.dialog.overlay.create(dialog) } }); $.extend($.ui.dialog.overlay, { instances: [], oldInstances: [], maxZ: 0, events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','), function (event) { return event + '.dialog-overlay' }).join(' '), create: function (dialog) { if (this.instances.length === 0) { setTimeout(function () { if ($.ui.dialog.overlay.instances.length) { $(document).bind($.ui.dialog.overlay.events, function (event) { if ($(event.target).zIndex() < $.ui.dialog.overlay.maxZ) { return false } }) } }, 1); $(document).bind('keydown.dialog-overlay', function (event) { if (dialog.options.closeOnEscape && event.keyCode && event.keyCode === $.ui.keyCode.ESCAPE) { dialog.close(event); event.preventDefault() } }); $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize) } var $el = (this.oldInstances.pop() || $('<div></div>').addClass('ui-widget-overlay')).appendTo(document.body).css({ width: this.width(), height: this.height() }); if ($.fn.bgiframe) { $el.bgiframe() } this.instances.push($el); return $el }, destroy: function ($el) { var indexOf = $.inArray($el, this.instances); if (indexOf != -1) { this.oldInstances.push(this.instances.splice(indexOf, 1)[0]) } if (this.instances.length === 0) { $([document, window]).unbind('.dialog-overlay') } $el.remove(); var maxZ = 0; $.each(this.instances, function () { maxZ = Math.max(maxZ, this.css('z-index')) }); this.maxZ = maxZ }, height: function () { var scrollHeight, offsetHeight; if ($.browser.msie && $.browser.version < 7) { scrollHeight = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight); offsetHeight = Math.max(document.documentElement.offsetHeight, document.body.offsetHeight); if (scrollHeight < offsetHeight) { return $(window).height() + 'px' } else { return scrollHeight + 'px' } } else { return $(document).height() + 'px' } }, width: function () { var scrollWidth, offsetWidth; if ($.browser.msie && $.browser.version < 7) { scrollWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth); offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth); if (scrollWidth < offsetWidth) { return $(window).width() + 'px' } else { return scrollWidth + 'px' } } else { return $(document).width() + 'px' } }, resize: function () { var $overlays = $([]); $.each($.ui.dialog.overlay.instances, function () { $overlays = $overlays.add(this) }); $overlays.css({ width: 0, height: 0 }).css({ width: $.ui.dialog.overlay.width(), height: $.ui.dialog.overlay.height() }) } }); $.extend($.ui.dialog.overlay.prototype, { destroy: function () { $.ui.dialog.overlay.destroy(this.$el) } }) } (jQuery)); (function ($, undefined) { var numPages = 5; $.widget("ui.slider", $.ui.mouse, { widgetEventPrefix: "slide", options: { animate: false, distance: 0, max: 100, min: 0, orientation: "horizontal", range: false, step: 1, value: 0, values: null }, _create: function () { var self = this, o = this.options; this._keySliding = false; this._mouseSliding = false; this._animateOff = true; this._handleIndex = null; this._detectOrientation(); this._mouseInit(); this.element.addClass("ui-slider" + " ui-slider-" + this.orientation + " ui-widget" + " ui-widget-content" + " ui-corner-all"); if (o.disabled) { this.element.addClass("ui-slider-disabled ui-disabled") } this.range = $([]); if (o.range) { if (o.range === true) { this.range = $("<div></div>"); if (!o.values) { o.values = [this._valueMin(), this._valueMin()] } if (o.values.length && o.values.length !== 2) { o.values = [o.values[0], o.values[0]] } } else { this.range = $("<div></div>") } this.range.appendTo(this.element).addClass("ui-slider-range"); if (o.range === "min" || o.range === "max") { this.range.addClass("ui-slider-range-" + o.range) } this.range.addClass("ui-widget-header") } if ($(".ui-slider-handle", this.element).length === 0) { $("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle") } if (o.values && o.values.length) { while ($(".ui-slider-handle", this.element).length < o.values.length) { $("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle") } } this.handles = $(".ui-slider-handle", this.element).addClass("ui-state-default" + " ui-corner-all"); this.handle = this.handles.eq(0); this.handles.add(this.range).filter("a").click(function (event) { event.preventDefault() }).hover(function () { if (!o.disabled) { $(this).addClass("ui-state-hover") } }, function () { $(this).removeClass("ui-state-hover") }).focus(function () { if (!o.disabled) { $(".ui-slider .ui-state-focus").removeClass("ui-state-focus"); $(this).addClass("ui-state-focus") } else { $(this).blur() } }).blur(function () { $(this).removeClass("ui-state-focus") }); this.handles.each(function (i) { $(this).data("index.ui-slider-handle", i) }); this.handles.keydown(function (event) { var ret = true, index = $(this).data("index.ui-slider-handle"), allowed, curVal, newVal, step; if (self.options.disabled) { return } switch (event.keyCode) { case $.ui.keyCode.HOME: case $.ui.keyCode.END: case $.ui.keyCode.PAGE_UP: case $.ui.keyCode.PAGE_DOWN: case $.ui.keyCode.UP: case $.ui.keyCode.RIGHT: case $.ui.keyCode.DOWN: case $.ui.keyCode.LEFT: ret = false; if (!self._keySliding) { self._keySliding = true; $(this).addClass("ui-state-active"); allowed = self._start(event, index); if (allowed === false) { return } } break } step = self.options.step; if (self.options.values && self.options.values.length) { curVal = newVal = self.values(index) } else { curVal = newVal = self.value() } switch (event.keyCode) { case $.ui.keyCode.HOME: newVal = self._valueMin(); break; case $.ui.keyCode.END: newVal = self._valueMax(); break; case $.ui.keyCode.PAGE_UP: newVal = self._trimAlignValue(curVal + ((self._valueMax() - self._valueMin()) / numPages)); break; case $.ui.keyCode.PAGE_DOWN: newVal = self._trimAlignValue(curVal - ((self._valueMax() - self._valueMin()) / numPages)); break; case $.ui.keyCode.UP: case $.ui.keyCode.RIGHT: if (curVal === self._valueMax()) { return } newVal = self._trimAlignValue(curVal + step); break; case $.ui.keyCode.DOWN: case $.ui.keyCode.LEFT: if (curVal === self._valueMin()) { return } newVal = self._trimAlignValue(curVal - step); break } self._slide(event, index, newVal); return ret }).keyup(function (event) { var index = $(this).data("index.ui-slider-handle"); if (self._keySliding) { self._keySliding = false; self._stop(event, index); self._change(event, index); $(this).removeClass("ui-state-active") } }); this._refreshValue(); this._animateOff = false }, destroy: function () { this.handles.remove(); this.range.remove(); this.element.removeClass("ui-slider" + " ui-slider-horizontal" + " ui-slider-vertical" + " ui-slider-disabled" + " ui-widget" + " ui-widget-content" + " ui-corner-all").removeData("slider").unbind(".slider"); this._mouseDestroy(); return this }, _mouseCapture: function (event) { var o = this.options, position, normValue, distance, closestHandle, self, index, allowed, offset, mouseOverHandle; if (o.disabled) { return false } this.elementSize = { width: this.element.outerWidth(), height: this.element.outerHeight() }; this.elementOffset = this.element.offset(); position = { x: event.pageX, y: event.pageY }; normValue = this._normValueFromMouse(position); distance = this._valueMax() - this._valueMin() + 1; self = this; this.handles.each(function (i) { var thisDistance = Math.abs(normValue - self.values(i)); if (distance > thisDistance) { distance = thisDistance; closestHandle = $(this); index = i } }); if (o.range === true && this.values(1) === o.min) { index += 1; closestHandle = $(this.handles[index]) } allowed = this._start(event, index); if (allowed === false) { return false } this._mouseSliding = true; self._handleIndex = index; closestHandle.addClass("ui-state-active").focus(); offset = closestHandle.offset(); mouseOverHandle = !$(event.target).parents().andSelf().is(".ui-slider-handle"); this._clickOffset = mouseOverHandle ? { left: 0, top: 0} : { left: event.pageX - offset.left - (closestHandle.width() / 2), top: event.pageY - offset.top - (closestHandle.height() / 2) - (parseInt(closestHandle.css("borderTopWidth"), 10) || 0) - (parseInt(closestHandle.css("borderBottomWidth"), 10) || 0) + (parseInt(closestHandle.css("marginTop"), 10) || 0) }; if (!this.handles.hasClass("ui-state-hover")) { this._slide(event, index, normValue) } this._animateOff = true; return true }, _mouseStart: function (event) { return true }, _mouseDrag: function (event) { var position = { x: event.pageX, y: event.pageY }, normValue = this._normValueFromMouse(position); this._slide(event, this._handleIndex, normValue); return false }, _mouseStop: function (event) { this.handles.removeClass("ui-state-active"); this._mouseSliding = false; this._stop(event, this._handleIndex); this._change(event, this._handleIndex); this._handleIndex = null; this._clickOffset = null; this._animateOff = false; return false }, _detectOrientation: function () { this.orientation = (this.options.orientation === "vertical") ? "vertical" : "horizontal" }, _normValueFromMouse: function (position) { var pixelTotal, pixelMouse, percentMouse, valueTotal, valueMouse; if (this.orientation === "horizontal") { pixelTotal = this.elementSize.width; pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0) } else { pixelTotal = this.elementSize.height; pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0) } percentMouse = (pixelMouse / pixelTotal); if (percentMouse > 1) { percentMouse = 1 } if (percentMouse < 0) { percentMouse = 0 } if (this.orientation === "vertical") { percentMouse = 1 - percentMouse } valueTotal = this._valueMax() - this._valueMin(); valueMouse = this._valueMin() + percentMouse * valueTotal; return this._trimAlignValue(valueMouse) }, _start: function (event, index) { var uiHash = { handle: this.handles[index], value: this.value() }; if (this.options.values && this.options.values.length) { uiHash.value = this.values(index); uiHash.values = this.values() } return this._trigger("start", event, uiHash) }, _slide: function (event, index, newVal) { var otherVal, newValues, allowed; if (this.options.values && this.options.values.length) { otherVal = this.values(index ? 0 : 1); if ((this.options.values.length === 2 && this.options.range === true) && ((index === 0 && newVal > otherVal) || (index === 1 && newVal < otherVal))) { newVal = otherVal } if (newVal !== this.values(index)) { newValues = this.values(); newValues[index] = newVal; allowed = this._trigger("slide", event, { handle: this.handles[index], value: newVal, values: newValues }); otherVal = this.values(index ? 0 : 1); if (allowed !== false) { this.values(index, newVal, true) } } } else { if (newVal !== this.value()) { allowed = this._trigger("slide", event, { handle: this.handles[index], value: newVal }); if (allowed !== false) { this.value(newVal) } } } }, _stop: function (event, index) { var uiHash = { handle: this.handles[index], value: this.value() }; if (this.options.values && this.options.values.length) { uiHash.value = this.values(index); uiHash.values = this.values() } this._trigger("stop", event, uiHash) }, _change: function (event, index) { if (!this._keySliding && !this._mouseSliding) { var uiHash = { handle: this.handles[index], value: this.value() }; if (this.options.values && this.options.values.length) { uiHash.value = this.values(index); uiHash.values = this.values() } this._trigger("change", event, uiHash) } }, value: function (newValue) { if (arguments.length) { this.options.value = this._trimAlignValue(newValue); this._refreshValue(); this._change(null, 0) } return this._value() }, values: function (index, newValue) { var vals, newValues, i; if (arguments.length > 1) { this.options.values[index] = this._trimAlignValue(newValue); this._refreshValue(); this._change(null, index) } if (arguments.length) { if ($.isArray(arguments[0])) { vals = this.options.values; newValues = arguments[0]; for (i = 0; i < vals.length; i += 1) { vals[i] = this._trimAlignValue(newValues[i]); this._change(null, i) } this._refreshValue() } else { if (this.options.values && this.options.values.length) { return this._values(index) } else { return this.value() } } } else { return this._values() } }, _setOption: function (key, value) { var i, valsLength = 0; if ($.isArray(this.options.values)) { valsLength = this.options.values.length } $.Widget.prototype._setOption.apply(this, arguments); switch (key) { case "disabled": if (value) { this.handles.filter(".ui-state-focus").blur(); this.handles.removeClass("ui-state-hover"); this.handles.attr("disabled", "disabled"); this.element.addClass("ui-disabled") } else { this.handles.removeAttr("disabled"); this.element.removeClass("ui-disabled") } break; case "orientation": this._detectOrientation(); this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-" + this.orientation); this._refreshValue(); break; case "value": this._animateOff = true; this._refreshValue(); this._change(null, 0); this._animateOff = false; break; case "values": this._animateOff = true; this._refreshValue(); for (i = 0; i < valsLength; i += 1) { this._change(null, i) } this._animateOff = false; break } }, _value: function () { var val = this.options.value; val = this._trimAlignValue(val); return val }, _values: function (index) { var val, vals, i; if (arguments.length) { val = this.options.values[index]; val = this._trimAlignValue(val); return val } else { vals = this.options.values.slice(); for (i = 0; i < vals.length; i += 1) { vals[i] = this._trimAlignValue(vals[i]) } return vals } }, _trimAlignValue: function (val) { if (val <= this._valueMin()) { return this._valueMin() } if (val >= this._valueMax()) { return this._valueMax() } var step = (this.options.step > 0) ? this.options.step : 1, valModStep = (val - this._valueMin()) % step; alignValue = val - valModStep; if (Math.abs(valModStep) * 2 >= step) { alignValue += (valModStep > 0) ? step : (-step) } return parseFloat(alignValue.toFixed(5)) }, _valueMin: function () { return this.options.min }, _valueMax: function () { return this.options.max }, _refreshValue: function () { var oRange = this.options.range, o = this.options, self = this, animate = (!this._animateOff) ? o.animate : false, valPercent, _set = {}, lastValPercent, value, valueMin, valueMax; if (this.options.values && this.options.values.length) { this.handles.each(function (i, j) { valPercent = (self.values(i) - self._valueMin()) / (self._valueMax() - self._valueMin()) * 100; _set[self.orientation === "horizontal" ? "left" : "bottom"] = valPercent + "%"; $(this).stop(1, 1)[animate ? "animate" : "css"](_set, o.animate); if (self.options.range === true) { if (self.orientation === "horizontal") { if (i === 0) { self.range.stop(1, 1)[animate ? "animate" : "css"]({ left: valPercent + "%" }, o.animate) } if (i === 1) { self.range[animate ? "animate" : "css"]({ width: (valPercent - lastValPercent) + "%" }, { queue: false, duration: o.animate }) } } else { if (i === 0) { self.range.stop(1, 1)[animate ? "animate" : "css"]({ bottom: (valPercent) + "%" }, o.animate) } if (i === 1) { self.range[animate ? "animate" : "css"]({ height: (valPercent - lastValPercent) + "%" }, { queue: false, duration: o.animate }) } } } lastValPercent = valPercent }) } else { value = this.value(); valueMin = this._valueMin(); valueMax = this._valueMax(); valPercent = (valueMax !== valueMin) ? (value - valueMin) / (valueMax - valueMin) * 100 : 0; _set[self.orientation === "horizontal" ? "left" : "bottom"] = valPercent + "%"; this.handle.stop(1, 1)[animate ? "animate" : "css"](_set, o.animate); if (oRange === "min" && this.orientation === "horizontal") { this.range.stop(1, 1)[animate ? "animate" : "css"]({ width: valPercent + "%" }, o.animate) } if (oRange === "max" && this.orientation === "horizontal") { this.range[animate ? "animate" : "css"]({ width: (100 - valPercent) + "%" }, { queue: false, duration: o.animate }) } if (oRange === "min" && this.orientation === "vertical") { this.range.stop(1, 1)[animate ? "animate" : "css"]({ height: valPercent + "%" }, o.animate) } if (oRange === "max" && this.orientation === "vertical") { this.range[animate ? "animate" : "css"]({ height: (100 - valPercent) + "%" }, { queue: false, duration: o.animate }) } } } }); $.extend($.ui.slider, { version: "1.8.11" }) } (jQuery)); (function ($, undefined) { var tabId = 0, listId = 0; function getNextTabId() { return ++tabId } function getNextListId() { return ++listId } $.widget("ui.tabs", { options: { add: null, ajaxOptions: null, cache: false, cookie: null, collapsible: false, disable: null, disabled: [], enable: null, event: "click", fx: null, idPrefix: "ui-tabs-", load: null, panelTemplate: "<div></div>", remove: null, select: null, show: null, spinner: "<em>Loading&#8230;</em>", tabTemplate: "<li><a href='#{href}'><span>#{label}</span></a></li>" }, _create: function () { this._tabify(true) }, _setOption: function (key, value) { if (key == "selected") { if (this.options.collapsible && value == this.options.selected) { return } this.select(value) } else { this.options[key] = value; this._tabify() } }, _tabId: function (a) { return a.title && a.title.replace(/\s/g, "_").replace(/[^\w\u00c0-\uFFFF-]/g, "") || this.options.idPrefix + getNextTabId() }, _sanitizeSelector: function (hash) { return hash.replace(/:/g, "\\:") }, _cookie: function () { var cookie = this.cookie || (this.cookie = this.options.cookie.name || "ui-tabs-" + getNextListId()); return $.cookie.apply(null, [cookie].concat($.makeArray(arguments))) }, _ui: function (tab, panel) { return { tab: tab, panel: panel, index: this.anchors.index(tab)} }, _cleanup: function () { this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function () { var el = $(this); el.html(el.data("label.tabs")).removeData("label.tabs") }) }, _tabify: function (init) { var self = this, o = this.options, fragmentId = /^#.+/; this.list = this.element.find("ol,ul").eq(0); this.lis = $(" > li:has(a[href])", this.list); this.anchors = this.lis.map(function () { return $("a", this)[0] }); this.panels = $([]); this.anchors.each(function (i, a) { var href = $(a).attr("href"); var hrefBase = href.split("#")[0], baseEl; if (hrefBase && (hrefBase === location.toString().split("#")[0] || (baseEl = $("base")[0]) && hrefBase === baseEl.href)) { href = a.hash; a.href = href } if (fragmentId.test(href)) { self.panels = self.panels.add(self.element.find(self._sanitizeSelector(href))) } else if (href && href !== "#") { $.data(a, "href.tabs", href); $.data(a, "load.tabs", href.replace(/#.*$/, "")); var id = self._tabId(a); a.href = "#" + id; var $panel = self.element.find("#" + id); if (!$panel.length) { $panel = $(o.panelTemplate).attr("id", id).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(self.panels[i - 1] || self.list); $panel.data("destroy.tabs", true) } self.panels = self.panels.add($panel) } else { o.disabled.push(i) } }); if (init) { this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"); this.lis.addClass("ui-state-default ui-corner-top"); this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"); if (o.selected === undefined) { if (location.hash) { this.anchors.each(function (i, a) { if (a.hash == location.hash) { o.selected = i; return false } }) } if (typeof o.selected !== "number" && o.cookie) { o.selected = parseInt(self._cookie(), 10) } if (typeof o.selected !== "number" && this.lis.filter(".ui-tabs-selected").length) { o.selected = this.lis.index(this.lis.filter(".ui-tabs-selected")) } o.selected = o.selected || (this.lis.length ? 0 : -1) } else if (o.selected === null) { o.selected = -1 } o.selected = ((o.selected >= 0 && this.anchors[o.selected]) || o.selected < 0) ? o.selected : 0; o.disabled = $.unique(o.disabled.concat($.map(this.lis.filter(".ui-state-disabled"), function (n, i) { return self.lis.index(n) }))).sort(); if ($.inArray(o.selected, o.disabled) != -1) { o.disabled.splice($.inArray(o.selected, o.disabled), 1) } this.panels.addClass("ui-tabs-hide"); this.lis.removeClass("ui-tabs-selected ui-state-active"); if (o.selected >= 0 && this.anchors.length) { self.element.find(self._sanitizeSelector(self.anchors[o.selected].hash)).removeClass("ui-tabs-hide"); this.lis.eq(o.selected).addClass("ui-tabs-selected ui-state-active"); self.element.queue("tabs", function () { self._trigger("show", null, self._ui(self.anchors[o.selected], self.element.find(self._sanitizeSelector(self.anchors[o.selected].hash))[0])) }); this.load(o.selected) } $(window).bind("unload", function () { self.lis.add(self.anchors).unbind(".tabs"); self.lis = self.anchors = self.panels = null }) } else { o.selected = this.lis.index(this.lis.filter(".ui-tabs-selected")) } this.element[o.collapsible ? "addClass" : "removeClass"]("ui-tabs-collapsible"); if (o.cookie) { this._cookie(o.selected, o.cookie) } for (var i = 0, li; (li = this.lis[i]); i++) { $(li)[$.inArray(i, o.disabled) != -1 && !$(li).hasClass("ui-tabs-selected") ? "addClass" : "removeClass"]("ui-state-disabled") } if (o.cache === false) { this.anchors.removeData("cache.tabs") } this.lis.add(this.anchors).unbind(".tabs"); if (o.event !== "mouseover") { var addState = function (state, el) { if (el.is(":not(.ui-state-disabled)")) { el.addClass("ui-state-" + state) } }; var removeState = function (state, el) { el.removeClass("ui-state-" + state) }; this.lis.bind("mouseover.tabs", function () { addState("hover", $(this)) }); this.lis.bind("mouseout.tabs", function () { removeState("hover", $(this)) }); this.anchors.bind("focus.tabs", function () { addState("focus", $(this).closest("li")) }); this.anchors.bind("blur.tabs", function () { removeState("focus", $(this).closest("li")) }) } var hideFx, showFx; if (o.fx) { if ($.isArray(o.fx)) { hideFx = o.fx[0]; showFx = o.fx[1] } else { hideFx = showFx = o.fx } } function resetStyle($el, fx) { $el.css("display", ""); if (!$.support.opacity && fx.opacity) { $el[0].style.removeAttribute("filter") } } var showTab = showFx ? function (clicked, $show) { $(clicked).closest("li").addClass("ui-tabs-selected ui-state-active"); $show.hide().removeClass("ui-tabs-hide").animate(showFx, showFx.duration || "normal", function () { resetStyle($show, showFx); self._trigger("show", null, self._ui(clicked, $show[0])) }) } : function (clicked, $show) { $(clicked).closest("li").addClass("ui-tabs-selected ui-state-active"); $show.removeClass("ui-tabs-hide"); self._trigger("show", null, self._ui(clicked, $show[0])) }; var hideTab = hideFx ? function (clicked, $hide) { $hide.animate(hideFx, hideFx.duration || "normal", function () { self.lis.removeClass("ui-tabs-selected ui-state-active"); $hide.addClass("ui-tabs-hide"); resetStyle($hide, hideFx); self.element.dequeue("tabs") }) } : function (clicked, $hide, $show) { self.lis.removeClass("ui-tabs-selected ui-state-active"); $hide.addClass("ui-tabs-hide"); self.element.dequeue("tabs") }; this.anchors.bind(o.event + ".tabs", function () { var el = this, $li = $(el).closest("li"), $hide = self.panels.filter(":not(.ui-tabs-hide)"), $show = self.element.find(self._sanitizeSelector(el.hash)); if (($li.hasClass("ui-tabs-selected") && !o.collapsible) || $li.hasClass("ui-state-disabled") || $li.hasClass("ui-state-processing") || self.panels.filter(":animated").length || self._trigger("select", null, self._ui(this, $show[0])) === false) { this.blur(); return false } o.selected = self.anchors.index(this); self.abort(); if (o.collapsible) { if ($li.hasClass("ui-tabs-selected")) { o.selected = -1; if (o.cookie) { self._cookie(o.selected, o.cookie) } self.element.queue("tabs", function () { hideTab(el, $hide) }).dequeue("tabs"); this.blur(); return false } else if (!$hide.length) { if (o.cookie) { self._cookie(o.selected, o.cookie) } self.element.queue("tabs", function () { showTab(el, $show) }); self.load(self.anchors.index(this)); this.blur(); return false } } if (o.cookie) { self._cookie(o.selected, o.cookie) } if ($show.length) { if ($hide.length) { self.element.queue("tabs", function () { hideTab(el, $hide) }) } self.element.queue("tabs", function () { showTab(el, $show) }); self.load(self.anchors.index(this)) } else { throw "jQuery UI Tabs: Mismatching fragment identifier." } if ($.browser.msie) { this.blur() } }); this.anchors.bind("click.tabs", function () { return false }) }, _getIndex: function (index) { if (typeof index == "string") { index = this.anchors.index(this.anchors.filter("[href$=" + index + "]")) } return index }, destroy: function () { var o = this.options; this.abort(); this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"); this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"); this.anchors.each(function () { var href = $.data(this, "href.tabs"); if (href) { this.href = href } var $this = $(this).unbind(".tabs"); $.each(["href", "load", "cache"], function (i, prefix) { $this.removeData(prefix + ".tabs") }) }); this.lis.unbind(".tabs").add(this.panels).each(function () { if ($.data(this, "destroy.tabs")) { $(this).remove() } else { $(this).removeClass(["ui-state-default", "ui-corner-top", "ui-tabs-selected", "ui-state-active", "ui-state-hover", "ui-state-focus", "ui-state-disabled", "ui-tabs-panel", "ui-widget-content", "ui-corner-bottom", "ui-tabs-hide"].join(" ")) } }); if (o.cookie) { this._cookie(null, o.cookie) } return this }, add: function (url, label, index) { if (index === undefined) { index = this.anchors.length } var self = this, o = this.options, $li = $(o.tabTemplate.replace(/#\{href\}/g, url).replace(/#\{label\}/g, label)), id = !url.indexOf("#") ? url.replace("#", "") : this._tabId($("a", $li)[0]); $li.addClass("ui-state-default ui-corner-top").data("destroy.tabs", true); var $panel = self.element.find("#" + id); if (!$panel.length) { $panel = $(o.panelTemplate).attr("id", id).data("destroy.tabs", true) } $panel.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"); if (index >= this.lis.length) { $li.appendTo(this.list); $panel.appendTo(this.list[0].parentNode) } else { $li.insertBefore(this.lis[index]); $panel.insertBefore(this.panels[index]) } o.disabled = $.map(o.disabled, function (n, i) { return n >= index ? ++n : n }); this._tabify(); if (this.anchors.length == 1) { o.selected = 0; $li.addClass("ui-tabs-selected ui-state-active"); $panel.removeClass("ui-tabs-hide"); this.element.queue("tabs", function () { self._trigger("show", null, self._ui(self.anchors[0], self.panels[0])) }); this.load(0) } this._trigger("add", null, this._ui(this.anchors[index], this.panels[index])); return this }, remove: function (index) { index = this._getIndex(index); var o = this.options, $li = this.lis.eq(index).remove(), $panel = this.panels.eq(index).remove(); if ($li.hasClass("ui-tabs-selected") && this.anchors.length > 1) { this.select(index + (index + 1 < this.anchors.length ? 1 : -1)) } o.disabled = $.map($.grep(o.disabled, function (n, i) { return n != index }), function (n, i) { return n >= index ? --n : n }); this._tabify(); this._trigger("remove", null, this._ui($li.find("a")[0], $panel[0])); return this }, enable: function (index) { index = this._getIndex(index); var o = this.options; if ($.inArray(index, o.disabled) == -1) { return } this.lis.eq(index).removeClass("ui-state-disabled"); o.disabled = $.grep(o.disabled, function (n, i) { return n != index }); this._trigger("enable", null, this._ui(this.anchors[index], this.panels[index])); return this }, disable: function (index) { index = this._getIndex(index); var self = this, o = this.options; if (index != o.selected) { this.lis.eq(index).addClass("ui-state-disabled"); o.disabled.push(index); o.disabled.sort(); this._trigger("disable", null, this._ui(this.anchors[index], this.panels[index])) } return this }, select: function (index) { index = this._getIndex(index); if (index == -1) { if (this.options.collapsible && this.options.selected != -1) { index = this.options.selected } else { return this } } this.anchors.eq(index).trigger(this.options.event + ".tabs"); return this }, load: function (index) { index = this._getIndex(index); var self = this, o = this.options, a = this.anchors.eq(index)[0], url = $.data(a, "load.tabs"); this.abort(); if (!url || this.element.queue("tabs").length !== 0 && $.data(a, "cache.tabs")) { this.element.dequeue("tabs"); return } this.lis.eq(index).addClass("ui-state-processing"); if (o.spinner) { var span = $("span", a); span.data("label.tabs", span.html()).html(o.spinner) } this.xhr = $.ajax($.extend({}, o.ajaxOptions, { url: url, success: function (r, s) { self.element.find(self._sanitizeSelector(a.hash)).html(r); self._cleanup(); if (o.cache) { $.data(a, "cache.tabs", true) } self._trigger("load", null, self._ui(self.anchors[index], self.panels[index])); try { o.ajaxOptions.success(r, s) } catch (e) { } }, error: function (xhr, s, e) { self._cleanup(); self._trigger("load", null, self._ui(self.anchors[index], self.panels[index])); try { o.ajaxOptions.error(xhr, s, index, a) } catch (e) { } } })); self.element.dequeue("tabs"); return this }, abort: function () { this.element.queue([]); this.panels.stop(false, true); this.element.queue("tabs", this.element.queue("tabs").splice(-2, 2)); if (this.xhr) { this.xhr.abort(); delete this.xhr } this._cleanup(); return this }, url: function (index, url) { this.anchors.eq(index).removeData("cache.tabs").data("load.tabs", url); return this }, length: function () { return this.anchors.length } }); $.extend($.ui.tabs, { version: "1.8.11" }); $.extend($.ui.tabs.prototype, { rotation: null, rotate: function (ms, continuing) { var self = this, o = this.options; var rotate = self._rotate || (self._rotate = function (e) { clearTimeout(self.rotation); self.rotation = setTimeout(function () { var t = o.selected; self.select(++t < self.anchors.length ? t : 0) }, ms); if (e) { e.stopPropagation() } }); var stop = self._unrotate || (self._unrotate = !continuing ? function (e) { if (e.clientX) { self.rotate(null) } } : function (e) { t = o.selected; rotate() }); if (ms) { this.element.bind("tabsshow", rotate); this.anchors.bind(o.event + ".tabs", stop); rotate() } else { clearTimeout(self.rotation); this.element.unbind("tabsshow", rotate); this.anchors.unbind(o.event + ".tabs", stop); delete this._rotate; delete this._unrotate } return this } }) })(jQuery); (function ($, undefined) { $.extend($.ui, { datepicker: { version: "1.8.11"} }); var PROP_NAME = 'datepicker'; var dpuuid = new Date().getTime(); function Datepicker() { this.debug = false; this._curInst = null; this._keyEvent = false; this._disabledInputs = []; this._datepickerShowing = false; this._inDialog = false; this._mainDivId = 'ui-datepicker-div'; this._inlineClass = 'ui-datepicker-inline'; this._appendClass = 'ui-datepicker-append'; this._triggerClass = 'ui-datepicker-trigger'; this._dialogClass = 'ui-datepicker-dialog'; this._disableClass = 'ui-datepicker-disabled'; this._unselectableClass = 'ui-datepicker-unselectable'; this._currentClass = 'ui-datepicker-current-day'; this._dayOverClass = 'ui-datepicker-days-cell-over'; this.regional = []; this.regional[''] = { closeText: 'Done', prevText: 'Prev', nextText: 'Next', currentText: 'Today', monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], weekHeader: 'Wk', dateFormat: 'mm/dd/yy', firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: '' }; this._defaults = { showOn: 'focus', showAnim: 'fadeIn', showOptions: {}, defaultDate: null, appendText: '', buttonText: '...', buttonImage: '', buttonImageOnly: false, hideIfNoPrevNext: false, navigationAsDateFormat: false, gotoCurrent: false, changeMonth: false, changeYear: false, yearRange: 'c-10:c+10', showOtherMonths: false, selectOtherMonths: false, showWeek: false, calculateWeek: this.iso8601Week, shortYearCutoff: '+10', minDate: null, maxDate: null, duration: 'fast', beforeShowDay: null, beforeShow: null, onSelect: null, onChangeMonthYear: null, onClose: null, numberOfMonths: 1, showCurrentAtPos: 0, stepMonths: 1, stepBigMonths: 12, altField: '', altFormat: '', constrainInput: true, showButtonPanel: false, autoSize: false }; $.extend(this._defaults, this.regional['']); this.dpDiv = $('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>') } $.extend(Datepicker.prototype, { markerClassName: 'hasDatepicker', log: function () { if (this.debug) console.log.apply('', arguments) }, _widgetDatepicker: function () { return this.dpDiv }, setDefaults: function (settings) { extendRemove(this._defaults, settings || {}); return this }, _attachDatepicker: function (target, settings) { var inlineSettings = null; for (var attrName in this._defaults) { var attrValue = target.getAttribute('date:' + attrName); if (attrValue) { inlineSettings = inlineSettings || {}; try { inlineSettings[attrName] = eval(attrValue) } catch (err) { inlineSettings[attrName] = attrValue } } } var nodeName = target.nodeName.toLowerCase(); var inline = (nodeName == 'div' || nodeName == 'span'); if (!target.id) { this.uuid += 1; target.id = 'dp' + this.uuid } var inst = this._newInst($(target), inline); inst.settings = $.extend({}, settings || {}, inlineSettings || {}); if (nodeName == 'input') { this._connectDatepicker(target, inst) } else if (inline) { this._inlineDatepicker(target, inst) } }, _newInst: function (target, inline) { var id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\$1'); return { id: id, input: target, selectedDay: 0, selectedMonth: 0, selectedYear: 0, drawMonth: 0, drawYear: 0, inline: inline, dpDiv: (!inline ? this.dpDiv : $('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))} }, _connectDatepicker: function (target, inst) { var input = $(target); inst.append = $([]); inst.trigger = $([]); if (input.hasClass(this.markerClassName)) return; this._attachments(input, inst); input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker", function (event, key, value) { inst.settings[key] = value }).bind("getData.datepicker", function (event, key) { return this._get(inst, key) }); this._autoSize(inst); $.data(target, PROP_NAME, inst) }, _attachments: function (input, inst) { var appendText = this._get(inst, 'appendText'); var isRTL = this._get(inst, 'isRTL'); if (inst.append) inst.append.remove(); if (appendText) { inst.append = $('<span class="' + this._appendClass + '">' + appendText + '</span>'); input[isRTL ? 'before' : 'after'](inst.append) } input.unbind('focus', this._showDatepicker); if (inst.trigger) inst.trigger.remove(); var showOn = this._get(inst, 'showOn'); if (showOn == 'focus' || showOn == 'both') input.focus(this._showDatepicker); if (showOn == 'button' || showOn == 'both') { var buttonText = this._get(inst, 'buttonText'); var buttonImage = this._get(inst, 'buttonImage'); inst.trigger = $(this._get(inst, 'buttonImageOnly') ? $('<img/>').addClass(this._triggerClass).attr({ src: buttonImage, alt: buttonText, title: buttonText }) : $('<button type="button"></button>').addClass(this._triggerClass).html(buttonImage == '' ? buttonText : $('<img/>').attr({ src: buttonImage, alt: buttonText, title: buttonText }))); input[isRTL ? 'before' : 'after'](inst.trigger); inst.trigger.click(function () { if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0]) $.datepicker._hideDatepicker(); else $.datepicker._showDatepicker(input[0]); return false }) } }, _autoSize: function (inst) { if (this._get(inst, 'autoSize') && !inst.inline) { var date = new Date(2009, 12 - 1, 20); var dateFormat = this._get(inst, 'dateFormat'); if (dateFormat.match(/[DM]/)) { var findMax = function (names) { var max = 0; var maxI = 0; for (var i = 0; i < names.length; i++) { if (names[i].length > max) { max = names[i].length; maxI = i } } return maxI }; date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ? 'monthNames' : 'monthNamesShort')))); date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ? 'dayNames' : 'dayNamesShort'))) + 20 - date.getDay()) } inst.input.attr('size', this._formatDate(inst, date).length) } }, _inlineDatepicker: function (target, inst) { var divSpan = $(target); if (divSpan.hasClass(this.markerClassName)) return; divSpan.addClass(this.markerClassName).append(inst.dpDiv).bind("setData.datepicker", function (event, key, value) { inst.settings[key] = value }).bind("getData.datepicker", function (event, key) { return this._get(inst, key) }); $.data(target, PROP_NAME, inst); this._setDate(inst, this._getDefaultDate(inst), true); this._updateDatepicker(inst); this._updateAlternate(inst); inst.dpDiv.show() }, _dialogDatepicker: function (input, date, onSelect, settings, pos) { var inst = this._dialogInst; if (!inst) { this.uuid += 1; var id = 'dp' + this.uuid; this._dialogInput = $('<input type="text" id="' + id + '" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'); this._dialogInput.keydown(this._doKeyDown); $('body').append(this._dialogInput); inst = this._dialogInst = this._newInst(this._dialogInput, false); inst.settings = {}; $.data(this._dialogInput[0], PROP_NAME, inst) } extendRemove(inst.settings, settings || {}); date = (date && date.constructor == Date ? this._formatDate(inst, date) : date); this._dialogInput.val(date); this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null); if (!this._pos) { var browserWidth = document.documentElement.clientWidth; var browserHeight = document.documentElement.clientHeight; var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; var scrollY = document.documentElement.scrollTop || document.body.scrollTop; this._pos = [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY] } this._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px'); inst.settings.onSelect = onSelect; this._inDialog = true; this.dpDiv.addClass(this._dialogClass); this._showDatepicker(this._dialogInput[0]); if ($.blockUI) $.blockUI(this.dpDiv); $.data(this._dialogInput[0], PROP_NAME, inst); return this }, _destroyDatepicker: function (target) { var $target = $(target); var inst = $.data(target, PROP_NAME); if (!$target.hasClass(this.markerClassName)) { return } var nodeName = target.nodeName.toLowerCase(); $.removeData(target, PROP_NAME); if (nodeName == 'input') { inst.append.remove(); inst.trigger.remove(); $target.removeClass(this.markerClassName).unbind('focus', this._showDatepicker).unbind('keydown', this._doKeyDown).unbind('keypress', this._doKeyPress).unbind('keyup', this._doKeyUp) } else if (nodeName == 'div' || nodeName == 'span') $target.removeClass(this.markerClassName).empty() }, _enableDatepicker: function (target) { var $target = $(target); var inst = $.data(target, PROP_NAME); if (!$target.hasClass(this.markerClassName)) { return } var nodeName = target.nodeName.toLowerCase(); if (nodeName == 'input') { target.disabled = false; inst.trigger.filter('button').each(function () { this.disabled = false }).end().filter('img').css({ opacity: '1.0', cursor: '' }) } else if (nodeName == 'div' || nodeName == 'span') { var inline = $target.children('.' + this._inlineClass); inline.children().removeClass('ui-state-disabled') } this._disabledInputs = $.map(this._disabledInputs, function (value) { return (value == target ? null : value) }) }, _disableDatepicker: function (target) { var $target = $(target); var inst = $.data(target, PROP_NAME); if (!$target.hasClass(this.markerClassName)) { return } var nodeName = target.nodeName.toLowerCase(); if (nodeName == 'input') { target.disabled = true; inst.trigger.filter('button').each(function () { this.disabled = true }).end().filter('img').css({ opacity: '0.5', cursor: 'default' }) } else if (nodeName == 'div' || nodeName == 'span') { var inline = $target.children('.' + this._inlineClass); inline.children().addClass('ui-state-disabled') } this._disabledInputs = $.map(this._disabledInputs, function (value) { return (value == target ? null : value) }); this._disabledInputs[this._disabledInputs.length] = target }, _isDisabledDatepicker: function (target) { if (!target) { return false } for (var i = 0; i < this._disabledInputs.length; i++) { if (this._disabledInputs[i] == target) return true } return false }, _getInst: function (target) { try { return $.data(target, PROP_NAME) } catch (err) { throw 'Missing instance data for this datepicker' } }, _optionDatepicker: function (target, name, value) { var inst = this._getInst(target); if (arguments.length == 2 && typeof name == 'string') { return (name == 'defaults' ? $.extend({}, $.datepicker._defaults) : (inst ? (name == 'all' ? $.extend({}, inst.settings) : this._get(inst, name)) : null)) } var settings = name || {}; if (typeof name == 'string') { settings = {}; settings[name] = value } if (inst) { if (this._curInst == inst) { this._hideDatepicker() } var date = this._getDateDatepicker(target, true); var minDate = this._getMinMaxDate(inst, 'min'); var maxDate = this._getMinMaxDate(inst, 'max'); extendRemove(inst.settings, settings); if (minDate !== null && settings['dateFormat'] !== undefined && settings['minDate'] === undefined) inst.settings.minDate = this._formatDate(inst, minDate); if (maxDate !== null && settings['dateFormat'] !== undefined && settings['maxDate'] === undefined) inst.settings.maxDate = this._formatDate(inst, maxDate); this._attachments($(target), inst); this._autoSize(inst); this._setDateDatepicker(target, date); this._updateDatepicker(inst) } }, _changeDatepicker: function (target, name, value) { this._optionDatepicker(target, name, value) }, _refreshDatepicker: function (target) { var inst = this._getInst(target); if (inst) { this._updateDatepicker(inst) } }, _setDateDatepicker: function (target, date) { var inst = this._getInst(target); if (inst) { this._setDate(inst, date); this._updateDatepicker(inst); this._updateAlternate(inst) } }, _getDateDatepicker: function (target, noDefault) { var inst = this._getInst(target); if (inst && !inst.inline) this._setDateFromField(inst, noDefault); return (inst ? this._getDate(inst) : null) }, _doKeyDown: function (event) { var inst = $.datepicker._getInst(event.target); var handled = true; var isRTL = inst.dpDiv.is('.ui-datepicker-rtl'); inst._keyEvent = true; if ($.datepicker._datepickerShowing) switch (event.keyCode) { case 9: $.datepicker._hideDatepicker(); handled = false; break; case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' + $.datepicker._currentClass + ')', inst.dpDiv); if (sel[0]) $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); else $.datepicker._hideDatepicker(); return false; break; case 27: $.datepicker._hideDatepicker(); break; case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ? -$.datepicker._get(inst, 'stepBigMonths') : -$.datepicker._get(inst, 'stepMonths')), 'M'); break; case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ? +$.datepicker._get(inst, 'stepBigMonths') : +$.datepicker._get(inst, 'stepMonths')), 'M'); break; case 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target); handled = event.ctrlKey || event.metaKey; break; case 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target); handled = event.ctrlKey || event.metaKey; break; case 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D'); handled = event.ctrlKey || event.metaKey; if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ? -$.datepicker._get(inst, 'stepBigMonths') : -$.datepicker._get(inst, 'stepMonths')), 'M'); break; case 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D'); handled = event.ctrlKey || event.metaKey; break; case 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D'); handled = event.ctrlKey || event.metaKey; if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ? +$.datepicker._get(inst, 'stepBigMonths') : +$.datepicker._get(inst, 'stepMonths')), 'M'); break; case 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D'); handled = event.ctrlKey || event.metaKey; break; default: handled = false } else if (event.keyCode == 36 && event.ctrlKey) $.datepicker._showDatepicker(this); else { handled = false } if (handled) { event.preventDefault(); event.stopPropagation() } }, _doKeyPress: function (event) { var inst = $.datepicker._getInst(event.target); if ($.datepicker._get(inst, 'constrainInput')) { var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')); var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode); return event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1) } }, _doKeyUp: function (event) { var inst = $.datepicker._getInst(event.target); if (inst.input.val() != inst.lastVal) { try { var date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'), (inst.input ? inst.input.val() : null), $.datepicker._getFormatConfig(inst)); if (date) { $.datepicker._setDateFromField(inst); $.datepicker._updateAlternate(inst); $.datepicker._updateDatepicker(inst) } } catch (event) { $.datepicker.log(event) } } return true }, _showDatepicker: function (input) { input = input.target || input; if (input.nodeName.toLowerCase() != 'input') input = $('input', input.parentNode)[0]; if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) return; var inst = $.datepicker._getInst(input); if ($.datepicker._curInst && $.datepicker._curInst != inst) { $.datepicker._curInst.dpDiv.stop(true, true) } var beforeShow = $.datepicker._get(inst, 'beforeShow'); extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {})); inst.lastVal = null; $.datepicker._lastInput = input; $.datepicker._setDateFromField(inst); if ($.datepicker._inDialog) input.value = ''; if (!$.datepicker._pos) { $.datepicker._pos = $.datepicker._findPos(input); $.datepicker._pos[1] += input.offsetHeight } var isFixed = false; $(input).parents().each(function () { isFixed |= $(this).css('position') == 'fixed'; return !isFixed }); if (isFixed && $.browser.opera) { $.datepicker._pos[0] -= document.documentElement.scrollLeft; $.datepicker._pos[1] -= document.documentElement.scrollTop } var offset = { left: $.datepicker._pos[0], top: $.datepicker._pos[1] }; $.datepicker._pos = null; inst.dpDiv.empty(); inst.dpDiv.css({ position: 'absolute', display: 'block', top: '-1000px' }); $.datepicker._updateDatepicker(inst); offset = $.datepicker._checkOffset(inst, offset, isFixed); inst.dpDiv.css({ position: ($.datepicker._inDialog && $.blockUI ? 'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none', left: offset.left + 'px', top: offset.top + 'px' }); if (!inst.inline) { var showAnim = $.datepicker._get(inst, 'showAnim'); var duration = $.datepicker._get(inst, 'duration'); var postProcess = function () { $.datepicker._datepickerShowing = true; var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); if (!!cover.length) { var borders = $.datepicker._getBorders(inst.dpDiv); cover.css({ left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight() }) } }; inst.dpDiv.zIndex($(input).zIndex() + 1); if ($.effects && $.effects[showAnim]) inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); else inst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess); if (!showAnim || !duration) postProcess(); if (inst.input.is(':visible') && !inst.input.is(':disabled')) inst.input.focus(); $.datepicker._curInst = inst } }, _updateDatepicker: function (inst) { var self = this; var borders = $.datepicker._getBorders(inst.dpDiv); inst.dpDiv.empty().append(this._generateHTML(inst)); var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); if (!!cover.length) { cover.css({ left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight() }) } inst.dpDiv.find('button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a').bind('mouseout', function () { $(this).removeClass('ui-state-hover'); if (this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover'); if (this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover') }).bind('mouseover', function () { if (!self._isDisabledDatepicker(inst.inline ? inst.dpDiv.parent()[0] : inst.input[0])) { $(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover'); $(this).addClass('ui-state-hover'); if (this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover'); if (this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover') } }).end().find('.' + this._dayOverClass + ' a').trigger('mouseover').end(); var numMonths = this._getNumberOfMonths(inst); var cols = numMonths[1]; var width = 17; if (cols > 1) inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em'); else inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width(''); inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') + 'Class']('ui-datepicker-multi'); inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') + 'Class']('ui-datepicker-rtl'); if (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input && inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement) inst.input.focus(); if (inst.yearshtml) { var origyearshtml = inst.yearshtml; setTimeout(function () { if (origyearshtml === inst.yearshtml) { inst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml) } origyearshtml = inst.yearshtml = null }, 0) } }, _getBorders: function (elem) { var convert = function (value) { return { thin: 1, medium: 2, thick: 3}[value] || value }; return [parseFloat(convert(elem.css('border-left-width'))), parseFloat(convert(elem.css('border-top-width')))] }, _checkOffset: function (inst, offset, isFixed) { var dpWidth = inst.dpDiv.outerWidth(); var dpHeight = inst.dpDiv.outerHeight(); var inputWidth = inst.input ? inst.input.outerWidth() : 0; var inputHeight = inst.input ? inst.input.outerHeight() : 0; var viewWidth = document.documentElement.clientWidth + $(document).scrollLeft(); var viewHeight = document.documentElement.clientHeight + $(document).scrollTop(); offset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0); offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0; offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? Math.abs(offset.left + dpWidth - viewWidth) : 0); offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? Math.abs(dpHeight + inputHeight) : 0); return offset }, _findPos: function (obj) { var inst = this._getInst(obj); var isRTL = this._get(inst, 'isRTL'); while (obj && (obj.type == 'hidden' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) { obj = obj[isRTL ? 'previousSibling' : 'nextSibling'] } var position = $(obj).offset(); return [position.left, position.top] }, _hideDatepicker: function (input) { var inst = this._curInst; if (!inst || (input && inst != $.data(input, PROP_NAME))) return; if (this._datepickerShowing) { var showAnim = this._get(inst, 'showAnim'); var duration = this._get(inst, 'duration'); var postProcess = function () { $.datepicker._tidyDialog(inst); this._curInst = null }; if ($.effects && $.effects[showAnim]) inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); else inst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' : (showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess); if (!showAnim) postProcess(); var onClose = this._get(inst, 'onClose'); if (onClose) onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ''), inst]); this._datepickerShowing = false; this._lastInput = null; if (this._inDialog) { this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' }); if ($.blockUI) { $.unblockUI(); $('body').append(this.dpDiv) } } this._inDialog = false } }, _tidyDialog: function (inst) { inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar') }, _checkExternalClick: function (event) { if (!$.datepicker._curInst) return; var $target = $(event.target); if ($target[0].id != $.datepicker._mainDivId && $target.parents('#' + $.datepicker._mainDivId).length == 0 && !$target.hasClass($.datepicker.markerClassName) && !$target.hasClass($.datepicker._triggerClass) && $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI)) $.datepicker._hideDatepicker() }, _adjustDate: function (id, offset, period) { var target = $(id); var inst = this._getInst(target[0]); if (this._isDisabledDatepicker(target[0])) { return } this._adjustInstDate(inst, offset + (period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), period); this._updateDatepicker(inst) }, _gotoToday: function (id) { var target = $(id); var inst = this._getInst(target[0]); if (this._get(inst, 'gotoCurrent') && inst.currentDay) { inst.selectedDay = inst.currentDay; inst.drawMonth = inst.selectedMonth = inst.currentMonth; inst.drawYear = inst.selectedYear = inst.currentYear } else { var date = new Date(); inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear() } this._notifyChange(inst); this._adjustDate(target) }, _selectMonthYear: function (id, select, period) { var target = $(id); var inst = this._getInst(target[0]); inst._selectingMonthYear = false; inst['selected' + (period == 'M' ? 'Month' : 'Year')] = inst['draw' + (period == 'M' ? 'Month' : 'Year')] = parseInt(select.options[select.selectedIndex].value, 10); this._notifyChange(inst); this._adjustDate(target) }, _clickMonthYear: function (id) { var target = $(id); var inst = this._getInst(target[0]); if (inst.input && inst._selectingMonthYear) { setTimeout(function () { inst.input.focus() }, 0) } inst._selectingMonthYear = !inst._selectingMonthYear }, _selectDay: function (id, month, year, td) { var target = $(id); if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) { return } var inst = this._getInst(target[0]); inst.selectedDay = inst.currentDay = $('a', td).html(); inst.selectedMonth = inst.currentMonth = month; inst.selectedYear = inst.currentYear = year; this._selectDate(id, this._formatDate(inst, inst.currentDay, inst.currentMonth, inst.currentYear)) }, _clearDate: function (id) { var target = $(id); var inst = this._getInst(target[0]); this._selectDate(target, '') }, _selectDate: function (id, dateStr) { var target = $(id); var inst = this._getInst(target[0]); dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); if (inst.input) inst.input.val(dateStr); this._updateAlternate(inst); var onSelect = this._get(inst, 'onSelect'); if (onSelect) onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); else if (inst.input) inst.input.trigger('change'); if (inst.inline) this._updateDatepicker(inst); else { this._hideDatepicker(); this._lastInput = inst.input[0]; if (typeof (inst.input[0]) != 'object') inst.input.focus(); this._lastInput = null } }, _updateAlternate: function (inst) { var altField = this._get(inst, 'altField'); if (altField) { var altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat'); var date = this._getDate(inst); var dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); $(altField).each(function () { $(this).val(dateStr) }) } }, noWeekends: function (date) { var day = date.getDay(); return [(day > 0 && day < 6), ''] }, iso8601Week: function (date) { var checkDate = new Date(date.getTime()); checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); var time = checkDate.getTime(); checkDate.setMonth(0); checkDate.setDate(1); return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1 }, parseDate: function (format, value, settings) { if (format == null || value == null) throw 'Invalid arguments'; value = (typeof value == 'object' ? value.toString() : value + ''); if (value == '') return null; var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff; shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; var year = -1; var month = -1; var day = -1; var doy = -1; var literal = false; var lookAhead = function (match) { var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); if (matches) iFormat++; return matches }; var getNumber = function (match) { var isDoubled = lookAhead(match); var size = (match == '@' ? 14 : (match == '!' ? 20 : (match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2)))); var digits = new RegExp('^\\d{1,' + size + '}'); var num = value.substring(iValue).match(digits); if (!num) throw 'Missing number at position ' + iValue; iValue += num[0].length; return parseInt(num[0], 10) }; var getName = function (match, shortNames, longNames) { var names = (lookAhead(match) ? longNames : shortNames); for (var i = 0; i < names.length; i++) { if (value.substr(iValue, names[i].length).toLowerCase() == names[i].toLowerCase()) { iValue += names[i].length; return i + 1 } } throw 'Unknown name at position ' + iValue }; var checkLiteral = function () { if (value.charAt(iValue) != format.charAt(iFormat)) throw 'Unexpected literal at position ' + iValue; iValue++ }; var iValue = 0; for (var iFormat = 0; iFormat < format.length; iFormat++) { if (literal) if (format.charAt(iFormat) == "'" && !lookAhead("'")) literal = false; else checkLiteral(); else switch (format.charAt(iFormat)) { case 'd': day = getNumber('d'); break; case 'D': getName('D', dayNamesShort, dayNames); break; case 'o': doy = getNumber('o'); break; case 'm': month = getNumber('m'); break; case 'M': month = getName('M', monthNamesShort, monthNames); break; case 'y': year = getNumber('y'); break; case '@': var date = new Date(getNumber('@')); year = date.getFullYear(); month = date.getMonth() + 1; day = date.getDate(); break; case '!': var date = new Date((getNumber('!') - this._ticksTo1970) / 10000); year = date.getFullYear(); month = date.getMonth() + 1; day = date.getDate(); break; case "'": if (lookAhead("'")) checkLiteral(); else literal = true; break; default: checkLiteral() } } if (year == -1) year = new Date().getFullYear(); else if (year < 100) year += new Date().getFullYear() - new Date().getFullYear() % 100 + (year <= shortYearCutoff ? 0 : -100); if (doy > -1) { month = 1; day = doy; do { var dim = this._getDaysInMonth(year, month - 1); if (day <= dim) break; month++; day -= dim } while (true) } var date = this._daylightSavingAdjust(new Date(year, month - 1, day)); if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) throw 'Invalid date'; return date }, ATOM: 'yy-mm-dd', COOKIE: 'D, dd M yy', ISO_8601: 'yy-mm-dd', RFC_822: 'D, d M y', RFC_850: 'DD, dd-M-y', RFC_1036: 'D, d M y', RFC_1123: 'D, d M yy', RFC_2822: 'D, d M yy', RSS: 'D, d M y', TICKS: '!', TIMESTAMP: '@', W3C: 'yy-mm-dd', _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000), formatDate: function (format, date, settings) { if (!date) return ''; var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames; var lookAhead = function (match) { var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); if (matches) iFormat++; return matches }; var formatNumber = function (match, value, len) { var num = '' + value; if (lookAhead(match)) while (num.length < len) num = '0' + num; return num }; var formatName = function (match, value, shortNames, longNames) { return (lookAhead(match) ? longNames[value] : shortNames[value]) }; var output = ''; var literal = false; if (date) for (var iFormat = 0; iFormat < format.length; iFormat++) { if (literal) if (format.charAt(iFormat) == "'" && !lookAhead("'")) literal = false; else output += format.charAt(iFormat); else switch (format.charAt(iFormat)) { case 'd': output += formatNumber('d', date.getDate(), 2); break; case 'D': output += formatName('D', date.getDay(), dayNamesShort, dayNames); break; case 'o': output += formatNumber('o', (date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000, 3); break; case 'm': output += formatNumber('m', date.getMonth() + 1, 2); break; case 'M': output += formatName('M', date.getMonth(), monthNamesShort, monthNames); break; case 'y': output += (lookAhead('y') ? date.getFullYear() : (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100); break; case '@': output += date.getTime(); break; case '!': output += date.getTime() * 10000 + this._ticksTo1970; break; case "'": if (lookAhead("'")) output += "'"; else literal = true; break; default: output += format.charAt(iFormat) } } return output }, _possibleChars: function (format) { var chars = ''; var literal = false; var lookAhead = function (match) { var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match); if (matches) iFormat++; return matches }; for (var iFormat = 0; iFormat < format.length; iFormat++) if (literal) if (format.charAt(iFormat) == "'" && !lookAhead("'")) literal = false; else chars += format.charAt(iFormat); else switch (format.charAt(iFormat)) { case 'd': case 'm': case 'y': case '@': chars += '0123456789'; break; case 'D': case 'M': return null; case "'": if (lookAhead("'")) chars += "'"; else literal = true; break; default: chars += format.charAt(iFormat) } return chars }, _get: function (inst, name) { return inst.settings[name] !== undefined ? inst.settings[name] : this._defaults[name] }, _setDateFromField: function (inst, noDefault) { if (inst.input.val() == inst.lastVal) { return } var dateFormat = this._get(inst, 'dateFormat'); var dates = inst.lastVal = inst.input ? inst.input.val() : null; var date, defaultDate; date = defaultDate = this._getDefaultDate(inst); var settings = this._getFormatConfig(inst); try { date = this.parseDate(dateFormat, dates, settings) || defaultDate } catch (event) { this.log(event); dates = (noDefault ? '' : dates) } inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); inst.currentDay = (dates ? date.getDate() : 0); inst.currentMonth = (dates ? date.getMonth() : 0); inst.currentYear = (dates ? date.getFullYear() : 0); this._adjustInstDate(inst) }, _getDefaultDate: function (inst) { return this._restrictMinMax(inst, this._determineDate(inst, this._get(inst, 'defaultDate'), new Date())) }, _determineDate: function (inst, date, defaultDate) { var offsetNumeric = function (offset) { var date = new Date(); date.setDate(date.getDate() + offset); return date }; var offsetString = function (offset) { try { return $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'), offset, $.datepicker._getFormatConfig(inst)) } catch (e) { } var date = (offset.toLowerCase().match(/^c/) ? $.datepicker._getDate(inst) : null) || new Date(); var year = date.getFullYear(); var month = date.getMonth(); var day = date.getDate(); var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g; var matches = pattern.exec(offset); while (matches) { switch (matches[2] || 'd') { case 'd': case 'D': day += parseInt(matches[1], 10); break; case 'w': case 'W': day += parseInt(matches[1], 10) * 7; break; case 'm': case 'M': month += parseInt(matches[1], 10); day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); break; case 'y': case 'Y': year += parseInt(matches[1], 10); day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); break } matches = pattern.exec(offset) } return new Date(year, month, day) }; var newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) : (typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); newDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate); if (newDate) { newDate.setHours(0); newDate.setMinutes(0); newDate.setSeconds(0); newDate.setMilliseconds(0) } return this._daylightSavingAdjust(newDate) }, _daylightSavingAdjust: function (date) { if (!date) return null; date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); return date }, _setDate: function (inst, date, noChange) { var clear = !date; var origMonth = inst.selectedMonth; var origYear = inst.selectedYear; var newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); inst.selectedDay = inst.currentDay = newDate.getDate(); inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth(); inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(); if ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange) this._notifyChange(inst); this._adjustInstDate(inst); if (inst.input) { inst.input.val(clear ? '' : this._formatDate(inst)) } }, _getDate: function (inst) { var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null : this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); return startDate }, _generateHTML: function (inst) { var today = new Date(); today = this._daylightSavingAdjust(new Date(today.getFullYear(), today.getMonth(), today.getDate())); var isRTL = this._get(inst, 'isRTL'); var showButtonPanel = this._get(inst, 'showButtonPanel'); var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext'); var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat'); var numMonths = this._getNumberOfMonths(inst); var showCurrentAtPos = this._get(inst, 'showCurrentAtPos'); var stepMonths = this._get(inst, 'stepMonths'); var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1); var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); var minDate = this._getMinMaxDate(inst, 'min'); var maxDate = this._getMinMaxDate(inst, 'max'); var drawMonth = inst.drawMonth - showCurrentAtPos; var drawYear = inst.drawYear; if (drawMonth < 0) { drawMonth += 12; drawYear-- } if (maxDate) { var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate())); maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw); while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) { drawMonth--; if (drawMonth < 0) { drawMonth = 11; drawYear-- } } } inst.drawMonth = drawMonth; inst.drawYear = drawYear; var prevText = this._get(inst, 'prevText'); prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), this._getFormatConfig(inst))); var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? '<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_' + dpuuid + '.datepicker._adjustDate(\'#' + inst.id + '\', -' + stepMonths + ', \'M\');"' + ' title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + (isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>' : (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + (isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>')); var nextText = this._get(inst, 'nextText'); nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), this._getFormatConfig(inst))); var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? '<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_' + dpuuid + '.datepicker._adjustDate(\'#' + inst.id + '\', +' + stepMonths + ', \'M\');"' + ' title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + (isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>' : (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + (isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>')); var currentText = this._get(inst, 'currentText'); var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today); currentText = (!navigationAsDateFormat ? currentText : this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); var controls = (!inst.inline ? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_' + dpuuid + '.datepicker._hideDatepicker();">' + this._get(inst, 'closeText') + '</button>' : ''); var buttonPanel = (showButtonPanel) ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (isRTL ? controls : '') + (this._isInRange(inst, gotoDate) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_' + dpuuid + '.datepicker._gotoToday(\'#' + inst.id + '\');"' + '>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : ''; var firstDay = parseInt(this._get(inst, 'firstDay'), 10); firstDay = (isNaN(firstDay) ? 0 : firstDay); var showWeek = this._get(inst, 'showWeek'); var dayNames = this._get(inst, 'dayNames'); var dayNamesShort = this._get(inst, 'dayNamesShort'); var dayNamesMin = this._get(inst, 'dayNamesMin'); var monthNames = this._get(inst, 'monthNames'); var monthNamesShort = this._get(inst, 'monthNamesShort'); var beforeShowDay = this._get(inst, 'beforeShowDay'); var showOtherMonths = this._get(inst, 'showOtherMonths'); var selectOtherMonths = this._get(inst, 'selectOtherMonths'); var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week; var defaultDate = this._getDefaultDate(inst); var html = ''; for (var row = 0; row < numMonths[0]; row++) { var group = ''; for (var col = 0; col < numMonths[1]; col++) { var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); var cornerClass = ' ui-corner-all'; var calender = ''; if (isMultiMonth) { calender += '<div class="ui-datepicker-group'; if (numMonths[1] > 1) switch (col) { case 0: calender += ' ui-datepicker-group-first'; cornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break; case numMonths[1] - 1: calender += ' ui-datepicker-group-last'; cornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break; default: calender += ' ui-datepicker-group-middle'; cornerClass = ''; break } calender += '">' } calender += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '">' + (/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') + (/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') + this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, row > 0 || col > 0, monthNames, monthNamesShort) + '</div><table class="ui-datepicker-calendar"><thead>' + '<tr>'; var thead = (showWeek ? '<th class="ui-datepicker-week-col">' + this._get(inst, 'weekHeader') + '</th>' : ''); for (var dow = 0; dow < 7; dow++) { var day = (dow + firstDay) % 7; thead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"' : '') + '>' + '<span title="' + dayNames[day] + '">' + dayNamesMin[day] + '</span></th>' } calender += thead + '</tr></thead><tbody>'; var daysInMonth = this._getDaysInMonth(drawYear, drawMonth); if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth) inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; var numRows = (isMultiMonth ? 6 : Math.ceil((leadDays + daysInMonth) / 7)); var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); for (var dRow = 0; dRow < numRows; dRow++) { calender += '<tr>'; var tbody = (!showWeek ? '' : '<td class="ui-datepicker-week-col">' + this._get(inst, 'calculateWeek')(printDate) + '</td>'); for (var dow = 0; dow < 7; dow++) { var daySettings = (beforeShowDay ? beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']); var otherMonth = (printDate.getMonth() != drawMonth); var unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] || (minDate && printDate < minDate) || (maxDate && printDate > maxDate); tbody += '<td class="' + ((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + (otherMonth ? ' ui-datepicker-other-month' : '') + ((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || (defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ? ' ' + this._dayOverClass : '') + (unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled' : '') + (otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + (printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + (printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' + ((!otherMonth || showOtherMonths) && daySettings[2] ? ' title="' + daySettings[2] + '"' : '') + (unselectable ? '' : ' onclick="DP_jQuery_' + dpuuid + '.datepicker._selectDay(\'#' + inst.id + '\',' + printDate.getMonth() + ',' + printDate.getFullYear() + ', this);return false;"') + '>' + (otherMonth && !showOtherMonths ? '&#xa0;' : (unselectable ? '<span class="ui-state-default">' + printDate.getDate() + '</span>' : '<a class="ui-state-default' + (printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') + (printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + (otherMonth ? ' ui-priority-secondary' : '') + '" href="#">' + printDate.getDate() + '</a>')) + '</td>'; printDate.setDate(printDate.getDate() + 1); printDate = this._daylightSavingAdjust(printDate) } calender += tbody + '</tr>' } drawMonth++; if (drawMonth > 11) { drawMonth = 0; drawYear++ } calender += '</tbody></table>' + (isMultiMonth ? '</div>' + ((numMonths[0] > 0 && col == numMonths[1] - 1) ? '<div class="ui-datepicker-row-break"></div>' : '') : ''); group += calender } html += group } html += buttonPanel + ($.browser.msie && parseInt($.browser.version, 10) < 7 && !inst.inline ? '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>' : ''); inst._keyEvent = false; return html }, _generateMonthYearHeader: function (inst, drawMonth, drawYear, minDate, maxDate, secondary, monthNames, monthNamesShort) { var changeMonth = this._get(inst, 'changeMonth'); var changeYear = this._get(inst, 'changeYear'); var showMonthAfterYear = this._get(inst, 'showMonthAfterYear'); var html = '<div class="ui-datepicker-title">'; var monthHtml = ''; if (secondary || !changeMonth) monthHtml += '<span class="ui-datepicker-month">' + monthNames[drawMonth] + '</span>'; else { var inMinYear = (minDate && minDate.getFullYear() == drawYear); var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear); monthHtml += '<select class="ui-datepicker-month" ' + 'onchange="DP_jQuery_' + dpuuid + '.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'M\');" ' + 'onclick="DP_jQuery_' + dpuuid + '.datepicker._clickMonthYear(\'#' + inst.id + '\');"' + '>'; for (var month = 0; month < 12; month++) { if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) monthHtml += '<option value="' + month + '"' + (month == drawMonth ? ' selected="selected"' : '') + '>' + monthNamesShort[month] + '</option>' } monthHtml += '</select>' } if (!showMonthAfterYear) html += monthHtml + (secondary || !(changeMonth && changeYear) ? '&#xa0;' : ''); inst.yearshtml = ''; if (secondary || !changeYear) html += '<span class="ui-datepicker-year">' + drawYear + '</span>'; else { var years = this._get(inst, 'yearRange').split(':'); var thisYear = new Date().getFullYear(); var determineYear = function (value) { var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) : (value.match(/[+-].*/) ? thisYear + parseInt(value, 10) : parseInt(value, 10))); return (isNaN(year) ? thisYear : year) }; var year = determineYear(years[0]); var endYear = Math.max(year, determineYear(years[1] || '')); year = (minDate ? Math.max(year, minDate.getFullYear()) : year); endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); inst.yearshtml += '<select class="ui-datepicker-year" ' + 'onchange="DP_jQuery_' + dpuuid + '.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' + 'onclick="DP_jQuery_' + dpuuid + '.datepicker._clickMonthYear(\'#' + inst.id + '\');"' + '>'; for (; year <= endYear; year++) { inst.yearshtml += '<option value="' + year + '"' + (year == drawYear ? ' selected="selected"' : '') + '>' + year + '</option>' } inst.yearshtml += '</select>'; if (!$.browser.mozilla) { html += inst.yearshtml; inst.yearshtml = null } else { html += '<select class="ui-datepicker-year"><option value="' + drawYear + '" selected="selected">' + drawYear + '</option></select>' } } html += this._get(inst, 'yearSuffix'); if (showMonthAfterYear) html += (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '') + monthHtml; html += '</div>'; return html }, _adjustInstDate: function (inst, offset, period) { var year = inst.drawYear + (period == 'Y' ? offset : 0); var month = inst.drawMonth + (period == 'M' ? offset : 0); var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period == 'D' ? offset : 0); var date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day))); inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); if (period == 'M' || period == 'Y') this._notifyChange(inst) }, _restrictMinMax: function (inst, date) { var minDate = this._getMinMaxDate(inst, 'min'); var maxDate = this._getMinMaxDate(inst, 'max'); var newDate = (minDate && date < minDate ? minDate : date); newDate = (maxDate && newDate > maxDate ? maxDate : newDate); return newDate }, _notifyChange: function (inst) { var onChange = this._get(inst, 'onChangeMonthYear'); if (onChange) onChange.apply((inst.input ? inst.input[0] : null), [inst.selectedYear, inst.selectedMonth + 1, inst]) }, _getNumberOfMonths: function (inst) { var numMonths = this._get(inst, 'numberOfMonths'); return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths)) }, _getMinMaxDate: function (inst, minMax) { return this._determineDate(inst, this._get(inst, minMax + 'Date'), null) }, _getDaysInMonth: function (year, month) { return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate() }, _getFirstDayOfMonth: function (year, month) { return new Date(year, month, 1).getDay() }, _canAdjustMonth: function (inst, offset, curYear, curMonth) { var numMonths = this._getNumberOfMonths(inst); var date = this._daylightSavingAdjust(new Date(curYear, curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); if (offset < 0) date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); return this._isInRange(inst, date) }, _isInRange: function (inst, date) { var minDate = this._getMinMaxDate(inst, 'min'); var maxDate = this._getMinMaxDate(inst, 'max'); return ((!minDate || date.getTime() >= minDate.getTime()) && (!maxDate || date.getTime() <= maxDate.getTime())) }, _getFormatConfig: function (inst) { var shortYearCutoff = this._get(inst, 'shortYearCutoff'); shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); return { shortYearCutoff: shortYearCutoff, dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'), monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')} }, _formatDate: function (inst, day, month, year) { if (!day) { inst.currentDay = inst.selectedDay; inst.currentMonth = inst.selectedMonth; inst.currentYear = inst.selectedYear } var date = (day ? (typeof day == 'object' ? day : this._daylightSavingAdjust(new Date(year, month, day))) : this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst)) } }); function extendRemove(target, props) { $.extend(target, props); for (var name in props) if (props[name] == null || props[name] == undefined) target[name] = props[name]; return target }; function isArray(a) { return (a && (($.browser.safari && typeof a == 'object' && a.length) || (a.constructor && a.constructor.toString().match(/\Array\(\)/)))) }; $.fn.datepicker = function (options) { if (!this.length) { return this } if (!$.datepicker.initialized) { $(document).mousedown($.datepicker._checkExternalClick).find('body').append($.datepicker.dpDiv); $.datepicker.initialized = true } var otherArgs = Array.prototype.slice.call(arguments, 1); if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget')) return $.datepicker['_' + options + 'Datepicker'].apply($.datepicker, [this[0]].concat(otherArgs)); if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string') return $.datepicker['_' + options + 'Datepicker'].apply($.datepicker, [this[0]].concat(otherArgs)); return this.each(function () { typeof options == 'string' ? $.datepicker['_' + options + 'Datepicker'].apply($.datepicker, [this].concat(otherArgs)) : $.datepicker._attachDatepicker(this, options) }) }; $.datepicker = new Datepicker(); $.datepicker.initialized = false; $.datepicker.uuid = new Date().getTime(); $.datepicker.version = "1.8.11"; window['DP_jQuery_' + dpuuid] = $ })(jQuery); (function ($, undefined) { $.widget("ui.progressbar", { options: { value: 0, max: 100 }, min: 0, _create: function () { this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({ role: "progressbar", "aria-valuemin": this.min, "aria-valuemax": this.options.max, "aria-valuenow": this._value() }); this.valueDiv = $("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element); this.oldValue = this._value(); this._refreshValue() }, destroy: function () { this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); this.valueDiv.remove(); $.Widget.prototype.destroy.apply(this, arguments) }, value: function (newValue) { if (newValue === undefined) { return this._value() } this._setOption("value", newValue); return this }, _setOption: function (key, value) { if (key === "value") { this.options.value = value; this._refreshValue(); if (this._value() === this.options.max) { this._trigger("complete") } } $.Widget.prototype._setOption.apply(this, arguments) }, _value: function () { var val = this.options.value; if (typeof val !== "number") { val = 0 } return Math.min(this.options.max, Math.max(this.min, val)) }, _percentage: function () { return 100 * this._value() / this.options.max }, _refreshValue: function () { var value = this.value(); var percentage = this._percentage(); if (this.oldValue !== value) { this.oldValue = value; this._trigger("change") } this.valueDiv.toggleClass("ui-corner-right", value === this.options.max).width(percentage.toFixed(0) + "%"); this.element.attr("aria-valuenow", value) } }); $.extend($.ui.progressbar, { version: "1.8.11" }) })(jQuery); jQuery.effects || (function ($, undefined) { $.effects = {}; $.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'borderColor', 'color', 'outlineColor'], function (i, attr) { $.fx.step[attr] = function (fx) { if (!fx.colorInit) { fx.start = getColor(fx.elem, attr); fx.end = getRGB(fx.end); fx.colorInit = true } fx.elem.style[attr] = 'rgb(' + Math.max(Math.min(parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0], 10), 255), 0) + ',' + Math.max(Math.min(parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1], 10), 255), 0) + ',' + Math.max(Math.min(parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2], 10), 255), 0) + ')' } }); function getRGB(color) { var result; if (color && color.constructor == Array && color.length == 3) return color; if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)) return [parseInt(result[1], 10), parseInt(result[2], 10), parseInt(result[3], 10)]; if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)) return [parseFloat(result[1]) * 2.55, parseFloat(result[2]) * 2.55, parseFloat(result[3]) * 2.55]; if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color)) return [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)]; if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color)) return [parseInt(result[1] + result[1], 16), parseInt(result[2] + result[2], 16), parseInt(result[3] + result[3], 16)]; if (result = /rgba\(0, 0, 0, 0\)/.exec(color)) return colors['transparent']; return colors[$.trim(color).toLowerCase()] } function getColor(elem, attr) { var color; do { color = $.curCSS(elem, attr); if (color != '' && color != 'transparent' || $.nodeName(elem, "body")) break; attr = "backgroundColor" } while (elem = elem.parentNode); return getRGB(color) }; var colors = { aqua: [0, 255, 255], azure: [240, 255, 255], beige: [245, 245, 220], black: [0, 0, 0], blue: [0, 0, 255], brown: [165, 42, 42], cyan: [0, 255, 255], darkblue: [0, 0, 139], darkcyan: [0, 139, 139], darkgrey: [169, 169, 169], darkgreen: [0, 100, 0], darkkhaki: [189, 183, 107], darkmagenta: [139, 0, 139], darkolivegreen: [85, 107, 47], darkorange: [255, 140, 0], darkorchid: [153, 50, 204], darkred: [139, 0, 0], darksalmon: [233, 150, 122], darkviolet: [148, 0, 211], fuchsia: [255, 0, 255], gold: [255, 215, 0], green: [0, 128, 0], indigo: [75, 0, 130], khaki: [240, 230, 140], lightblue: [173, 216, 230], lightcyan: [224, 255, 255], lightgreen: [144, 238, 144], lightgrey: [211, 211, 211], lightpink: [255, 182, 193], lightyellow: [255, 255, 224], lime: [0, 255, 0], magenta: [255, 0, 255], maroon: [128, 0, 0], navy: [0, 0, 128], olive: [128, 128, 0], orange: [255, 165, 0], pink: [255, 192, 203], purple: [128, 0, 128], violet: [128, 0, 128], red: [255, 0, 0], silver: [192, 192, 192], white: [255, 255, 255], yellow: [255, 255, 0], transparent: [255, 255, 255] }; var classAnimationActions = ['add', 'remove', 'toggle'], shorthandStyles = { border: 1, borderBottom: 1, borderColor: 1, borderLeft: 1, borderRight: 1, borderTop: 1, borderWidth: 1, margin: 1, padding: 1 }; function getElementStyles() { var style = document.defaultView ? document.defaultView.getComputedStyle(this, null) : this.currentStyle, newStyle = {}, key, camelCase; if (style && style.length && style[0] && style[style[0]]) { var len = style.length; while (len--) { key = style[len]; if (typeof style[key] == 'string') { camelCase = key.replace(/\-(\w)/g, function (all, letter) { return letter.toUpperCase() }); newStyle[camelCase] = style[key] } } } else { for (key in style) { if (typeof style[key] === 'string') { newStyle[key] = style[key] } } } return newStyle } function filterStyles(styles) { var name, value; for (name in styles) { value = styles[name]; if (value == null || $.isFunction(value) || name in shorthandStyles || (/scrollbar/).test(name) || (!(/color/i).test(name) && isNaN(parseFloat(value)))) { delete styles[name] } } return styles } function styleDifference(oldStyle, newStyle) { var diff = { _: 0 }, name; for (name in newStyle) { if (oldStyle[name] != newStyle[name]) { diff[name] = newStyle[name] } } return diff } $.effects.animateClass = function (value, duration, easing, callback) { if ($.isFunction(easing)) { callback = easing; easing = null } return this.queue('fx', function () { var that = $(this), originalStyleAttr = that.attr('style') || ' ', originalStyle = filterStyles(getElementStyles.call(this)), newStyle, className = that.attr('className'); $.each(classAnimationActions, function (i, action) { if (value[action]) { that[action + 'Class'](value[action]) } }); newStyle = filterStyles(getElementStyles.call(this)); that.attr('className', className); that.animate(styleDifference(originalStyle, newStyle), duration, easing, function () { $.each(classAnimationActions, function (i, action) { if (value[action]) { that[action + 'Class'](value[action]) } }); if (typeof that.attr('style') == 'object') { that.attr('style').cssText = ''; that.attr('style').cssText = originalStyleAttr } else { that.attr('style', originalStyleAttr) } if (callback) { callback.apply(this, arguments) } }); var queue = $.queue(this), anim = queue.splice(queue.length - 1, 1)[0]; queue.splice(1, 0, anim); $.dequeue(this) }) }; $.fn.extend({ _addClass: $.fn.addClass, addClass: function (classNames, speed, easing, callback) { return speed ? $.effects.animateClass.apply(this, [{ add: classNames }, speed, easing, callback]) : this._addClass(classNames) }, _removeClass: $.fn.removeClass, removeClass: function (classNames, speed, easing, callback) { return speed ? $.effects.animateClass.apply(this, [{ remove: classNames }, speed, easing, callback]) : this._removeClass(classNames) }, _toggleClass: $.fn.toggleClass, toggleClass: function (classNames, force, speed, easing, callback) { if (typeof force == "boolean" || force === undefined) { if (!speed) { return this._toggleClass(classNames, force) } else { return $.effects.animateClass.apply(this, [(force ? { add: classNames} : { remove: classNames }), speed, easing, callback]) } } else { return $.effects.animateClass.apply(this, [{ toggle: classNames }, force, speed, easing]) } }, switchClass: function (remove, add, speed, easing, callback) { return $.effects.animateClass.apply(this, [{ add: add, remove: remove }, speed, easing, callback]) } }); $.extend($.effects, { version: "1.8.11", save: function (element, set) { for (var i = 0; i < set.length; i++) { if (set[i] !== null) element.data("ec.storage." + set[i], element[0].style[set[i]]) } }, restore: function (element, set) { for (var i = 0; i < set.length; i++) { if (set[i] !== null) element.css(set[i], element.data("ec.storage." + set[i])) } }, setMode: function (el, mode) { if (mode == 'toggle') mode = el.is(':hidden') ? 'show' : 'hide'; return mode }, getBaseline: function (origin, original) { var y, x; switch (origin[0]) { case 'top': y = 0; break; case 'middle': y = 0.5; break; case 'bottom': y = 1; break; default: y = origin[0] / original.height }; switch (origin[1]) { case 'left': x = 0; break; case 'center': x = 0.5; break; case 'right': x = 1; break; default: x = origin[1] / original.width }; return { x: x, y: y} }, createWrapper: function (element) { if (element.parent().is('.ui-effects-wrapper')) { return element.parent() } var props = { width: element.outerWidth(true), height: element.outerHeight(true), 'float': element.css('float') }, wrapper = $('<div></div>').addClass('ui-effects-wrapper').css({ fontSize: '100%', background: 'transparent', border: 'none', margin: 0, padding: 0 }); element.wrap(wrapper); wrapper = element.parent(); if (element.css('position') == 'static') { wrapper.css({ position: 'relative' }); element.css({ position: 'relative' }) } else { $.extend(props, { position: element.css('position'), zIndex: element.css('z-index') }); $.each(['top', 'left', 'bottom', 'right'], function (i, pos) { props[pos] = element.css(pos); if (isNaN(parseInt(props[pos], 10))) { props[pos] = 'auto' } }); element.css({ position: 'relative', top: 0, left: 0, right: 'auto', bottom: 'auto' }) } return wrapper.css(props).show() }, removeWrapper: function (element) { if (element.parent().is('.ui-effects-wrapper')) return element.parent().replaceWith(element); return element }, setTransition: function (element, list, factor, value) { value = value || {}; $.each(list, function (i, x) { unit = element.cssUnit(x); if (unit[0] > 0) value[x] = unit[0] * factor + unit[1] }); return value } }); function _normalizeArguments(effect, options, speed, callback) { if (typeof effect == 'object') { callback = options; speed = null; options = effect; effect = options.effect } if ($.isFunction(options)) { callback = options; speed = null; options = {} } if (typeof options == 'number' || $.fx.speeds[options]) { callback = speed; speed = options; options = {} } if ($.isFunction(speed)) { callback = speed; speed = null } options = options || {}; speed = speed || options.duration; speed = $.fx.off ? 0 : typeof speed == 'number' ? speed : speed in $.fx.speeds ? $.fx.speeds[speed] : $.fx.speeds._default; callback = callback || options.complete; return [effect, options, speed, callback] } function standardSpeed(speed) { if (!speed || typeof speed === "number" || $.fx.speeds[speed]) { return true } if (typeof speed === "string" && !$.effects[speed]) { return true } return false } $.fn.extend({ effect: function (effect, options, speed, callback) { var args = _normalizeArguments.apply(this, arguments), args2 = { options: args[1], duration: args[2], callback: args[3] }, mode = args2.options.mode, effectMethod = $.effects[effect]; if ($.fx.off || !effectMethod) { if (mode) { return this[mode](args2.duration, args2.callback) } else { return this.each(function () { if (args2.callback) { args2.callback.call(this) } }) } } return effectMethod.call(this, args2) }, _show: $.fn.show, show: function (speed) { if (standardSpeed(speed)) { return this._show.apply(this, arguments) } else { var args = _normalizeArguments.apply(this, arguments); args[1].mode = 'show'; return this.effect.apply(this, args) } }, _hide: $.fn.hide, hide: function (speed) { if (standardSpeed(speed)) { return this._hide.apply(this, arguments) } else { var args = _normalizeArguments.apply(this, arguments); args[1].mode = 'hide'; return this.effect.apply(this, args) } }, __toggle: $.fn.toggle, toggle: function (speed) { if (standardSpeed(speed) || typeof speed === "boolean" || $.isFunction(speed)) { return this.__toggle.apply(this, arguments) } else { var args = _normalizeArguments.apply(this, arguments); args[1].mode = 'toggle'; return this.effect.apply(this, args) } }, cssUnit: function (key) { var style = this.css(key), val = []; $.each(['em', 'px', '%', 'pt'], function (i, unit) { if (style.indexOf(unit) > 0) val = [parseFloat(style), unit] }); return val } }); $.easing.jswing = $.easing.swing; $.extend($.easing, { def: 'easeOutQuad', swing: function (x, t, b, c, d) { return $.easing[$.easing.def](x, t, b, c, d) }, easeInQuad: function (x, t, b, c, d) { return c * (t /= d) * t + b }, easeOutQuad: function (x, t, b, c, d) { return -c * (t /= d) * (t - 2) + b }, easeInOutQuad: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t + b; return -c / 2 * ((--t) * (t - 2) - 1) + b }, easeInCubic: function (x, t, b, c, d) { return c * (t /= d) * t * t + b }, easeOutCubic: function (x, t, b, c, d) { return c * ((t = t / d - 1) * t * t + 1) + b }, easeInOutCubic: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t + b; return c / 2 * ((t -= 2) * t * t + 2) + b }, easeInQuart: function (x, t, b, c, d) { return c * (t /= d) * t * t * t + b }, easeOutQuart: function (x, t, b, c, d) { return -c * ((t = t / d - 1) * t * t * t - 1) + b }, easeInOutQuart: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b; return -c / 2 * ((t -= 2) * t * t * t - 2) + b }, easeInQuint: function (x, t, b, c, d) { return c * (t /= d) * t * t * t * t + b }, easeOutQuint: function (x, t, b, c, d) { return c * ((t = t / d - 1) * t * t * t * t + 1) + b }, easeInOutQuint: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b; return c / 2 * ((t -= 2) * t * t * t * t + 2) + b }, easeInSine: function (x, t, b, c, d) { return -c * Math.cos(t / d * (Math.PI / 2)) + c + b }, easeOutSine: function (x, t, b, c, d) { return c * Math.sin(t / d * (Math.PI / 2)) + b }, easeInOutSine: function (x, t, b, c, d) { return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b }, easeInExpo: function (x, t, b, c, d) { return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b }, easeOutExpo: function (x, t, b, c, d) { return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b }, easeInOutExpo: function (x, t, b, c, d) { if (t == 0) return b; if (t == d) return b + c; if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b; return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b }, easeInCirc: function (x, t, b, c, d) { return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b }, easeOutCirc: function (x, t, b, c, d) { return c * Math.sqrt(1 - (t = t / d - 1) * t) + b }, easeInOutCirc: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b; return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b }, easeInElastic: function (x, t, b, c, d) { var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < Math.abs(c)) { a = c; var s = p / 4 } else var s = p / (2 * Math.PI) * Math.asin(c / a); return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b }, easeOutElastic: function (x, t, b, c, d) { var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < Math.abs(c)) { a = c; var s = p / 4 } else var s = p / (2 * Math.PI) * Math.asin(c / a); return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b }, easeInOutElastic: function (x, t, b, c, d) { var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d / 2) == 2) return b + c; if (!p) p = d * (.3 * 1.5); if (a < Math.abs(c)) { a = c; var s = p / 4 } else var s = p / (2 * Math.PI) * Math.asin(c / a); if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b }, easeInBack: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * (t /= d) * t * ((s + 1) * t - s) + b }, easeOutBack: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b }, easeInOutBack: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b; return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b }, easeInBounce: function (x, t, b, c, d) { return c - $.easing.easeOutBounce(x, d - t, 0, c, d) + b }, easeOutBounce: function (x, t, b, c, d) { if ((t /= d) < (1 / 2.75)) { return c * (7.5625 * t * t) + b } else if (t < (2 / 2.75)) { return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b } else if (t < (2.5 / 2.75)) { return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b } else { return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b } }, easeInOutBounce: function (x, t, b, c, d) { if (t < d / 2) return $.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b; return $.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b } }) })(jQuery); (function ($, undefined) { $.effects.blind = function (o) { return this.queue(function () { var el = $(this), props = ['position', 'top', 'bottom', 'left', 'right']; var mode = $.effects.setMode(el, o.options.mode || 'hide'); var direction = o.options.direction || 'vertical'; $.effects.save(el, props); el.show(); var wrapper = $.effects.createWrapper(el).css({ overflow: 'hidden' }); var ref = (direction == 'vertical') ? 'height' : 'width'; var distance = (direction == 'vertical') ? wrapper.height() : wrapper.width(); if (mode == 'show') wrapper.css(ref, 0); var animation = {}; animation[ref] = mode == 'show' ? distance : 0; wrapper.animate(animation, o.duration, o.options.easing, function () { if (mode == 'hide') el.hide(); $.effects.restore(el, props); $.effects.removeWrapper(el); if (o.callback) o.callback.apply(el[0], arguments); el.dequeue() }) }) } })(jQuery); (function ($, undefined) { $.effects.bounce = function (o) { return this.queue(function () { var el = $(this), props = ['position', 'top', 'bottom', 'left', 'right']; var mode = $.effects.setMode(el, o.options.mode || 'effect'); var direction = o.options.direction || 'up'; var distance = o.options.distance || 20; var times = o.options.times || 5; var speed = o.duration || 250; if (/show|hide/.test(mode)) props.push('opacity'); $.effects.save(el, props); el.show(); $.effects.createWrapper(el); var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left'; var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg'; var distance = o.options.distance || (ref == 'top' ? el.outerHeight({ margin: true }) / 3 : el.outerWidth({ margin: true }) / 3); if (mode == 'show') el.css('opacity', 0).css(ref, motion == 'pos' ? -distance : distance); if (mode == 'hide') distance = distance / (times * 2); if (mode != 'hide') times--; if (mode == 'show') { var animation = { opacity: 1 }; animation[ref] = (motion == 'pos' ? '+=' : '-=') + distance; el.animate(animation, speed / 2, o.options.easing); distance = distance / 2; times-- }; for (var i = 0; i < times; i++) { var animation1 = {}, animation2 = {}; animation1[ref] = (motion == 'pos' ? '-=' : '+=') + distance; animation2[ref] = (motion == 'pos' ? '+=' : '-=') + distance; el.animate(animation1, speed / 2, o.options.easing).animate(animation2, speed / 2, o.options.easing); distance = (mode == 'hide') ? distance * 2 : distance / 2 }; if (mode == 'hide') { var animation = { opacity: 0 }; animation[ref] = (motion == 'pos' ? '-=' : '+=') + distance; el.animate(animation, speed / 2, o.options.easing, function () { el.hide(); $.effects.restore(el, props); $.effects.removeWrapper(el); if (o.callback) o.callback.apply(this, arguments) }) } else { var animation1 = {}, animation2 = {}; animation1[ref] = (motion == 'pos' ? '-=' : '+=') + distance; animation2[ref] = (motion == 'pos' ? '+=' : '-=') + distance; el.animate(animation1, speed / 2, o.options.easing).animate(animation2, speed / 2, o.options.easing, function () { $.effects.restore(el, props); $.effects.removeWrapper(el); if (o.callback) o.callback.apply(this, arguments) }) }; el.queue('fx', function () { el.dequeue() }); el.dequeue() }) } })(jQuery); (function ($, undefined) { $.effects.clip = function (o) { return this.queue(function () { var el = $(this), props = ['position', 'top', 'bottom', 'left', 'right', 'height', 'width']; var mode = $.effects.setMode(el, o.options.mode || 'hide'); var direction = o.options.direction || 'vertical'; $.effects.save(el, props); el.show(); var wrapper = $.effects.createWrapper(el).css({ overflow: 'hidden' }); var animate = el[0].tagName == 'IMG' ? wrapper : el; var ref = { size: (direction == 'vertical') ? 'height' : 'width', position: (direction == 'vertical') ? 'top' : 'left' }; var distance = (direction == 'vertical') ? animate.height() : animate.width(); if (mode == 'show') { animate.css(ref.size, 0); animate.css(ref.position, distance / 2) } var animation = {}; animation[ref.size] = mode == 'show' ? distance : 0; animation[ref.position] = mode == 'show' ? 0 : distance / 2; animate.animate(animation, { queue: false, duration: o.duration, easing: o.options.easing, complete: function () { if (mode == 'hide') el.hide(); $.effects.restore(el, props); $.effects.removeWrapper(el); if (o.callback) o.callback.apply(el[0], arguments); el.dequeue() } }) }) } })(jQuery); (function ($, undefined) { $.effects.drop = function (o) { return this.queue(function () { var el = $(this), props = ['position', 'top', 'bottom', 'left', 'right', 'opacity']; var mode = $.effects.setMode(el, o.options.mode || 'hide'); var direction = o.options.direction || 'left'; $.effects.save(el, props); el.show(); $.effects.createWrapper(el); var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left'; var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg'; var distance = o.options.distance || (ref == 'top' ? el.outerHeight({ margin: true }) / 2 : el.outerWidth({ margin: true }) / 2); if (mode == 'show') el.css('opacity', 0).css(ref, motion == 'pos' ? -distance : distance); var animation = { opacity: mode == 'show' ? 1 : 0 }; animation[ref] = (mode == 'show' ? (motion == 'pos' ? '+=' : '-=') : (motion == 'pos' ? '-=' : '+=')) + distance; el.animate(animation, { queue: false, duration: o.duration, easing: o.options.easing, complete: function () { if (mode == 'hide') el.hide(); $.effects.restore(el, props); $.effects.removeWrapper(el); if (o.callback) o.callback.apply(this, arguments); el.dequeue() } }) }) } })(jQuery); (function ($, undefined) { $.effects.explode = function (o) { return this.queue(function () { var rows = o.options.pieces ? Math.round(Math.sqrt(o.options.pieces)) : 3; var cells = o.options.pieces ? Math.round(Math.sqrt(o.options.pieces)) : 3; o.options.mode = o.options.mode == 'toggle' ? ($(this).is(':visible') ? 'hide' : 'show') : o.options.mode; var el = $(this).show().css('visibility', 'hidden'); var offset = el.offset(); offset.top -= parseInt(el.css("marginTop"), 10) || 0; offset.left -= parseInt(el.css("marginLeft"), 10) || 0; var width = el.outerWidth(true); var height = el.outerHeight(true); for (var i = 0; i < rows; i++) { for (var j = 0; j < cells; j++) { el.clone().appendTo('body').wrap('<div></div>').css({ position: 'absolute', visibility: 'visible', left: -j * (width / cells), top: -i * (height / rows) }).parent().addClass('ui-effects-explode').css({ position: 'absolute', overflow: 'hidden', width: width / cells, height: height / rows, left: offset.left + j * (width / cells) + (o.options.mode == 'show' ? (j - Math.floor(cells / 2)) * (width / cells) : 0), top: offset.top + i * (height / rows) + (o.options.mode == 'show' ? (i - Math.floor(rows / 2)) * (height / rows) : 0), opacity: o.options.mode == 'show' ? 0 : 1 }).animate({ left: offset.left + j * (width / cells) + (o.options.mode == 'show' ? 0 : (j - Math.floor(cells / 2)) * (width / cells)), top: offset.top + i * (height / rows) + (o.options.mode == 'show' ? 0 : (i - Math.floor(rows / 2)) * (height / rows)), opacity: o.options.mode == 'show' ? 1 : 0 }, o.duration || 500) } } setTimeout(function () { o.options.mode == 'show' ? el.css({ visibility: 'visible' }) : el.css({ visibility: 'visible' }).hide(); if (o.callback) o.callback.apply(el[0]); el.dequeue(); $('div.ui-effects-explode').remove() }, o.duration || 500) }) } })(jQuery); (function ($, undefined) { $.effects.fade = function (o) { return this.queue(function () { var elem = $(this), mode = $.effects.setMode(elem, o.options.mode || 'hide'); elem.animate({ opacity: mode }, { queue: false, duration: o.duration, easing: o.options.easing, complete: function () { (o.callback && o.callback.apply(this, arguments)); elem.dequeue() } }) }) } })(jQuery); (function ($, undefined) { $.effects.fold = function (o) { return this.queue(function () { var el = $(this), props = ['position', 'top', 'bottom', 'left', 'right']; var mode = $.effects.setMode(el, o.options.mode || 'hide'); var size = o.options.size || 15; var horizFirst = !(!o.options.horizFirst); var duration = o.duration ? o.duration / 2 : $.fx.speeds._default / 2; $.effects.save(el, props); el.show(); var wrapper = $.effects.createWrapper(el).css({ overflow: 'hidden' }); var widthFirst = ((mode == 'show') != horizFirst); var ref = widthFirst ? ['width', 'height'] : ['height', 'width']; var distance = widthFirst ? [wrapper.width(), wrapper.height()] : [wrapper.height(), wrapper.width()]; var percent = /([0-9]+)%/.exec(size); if (percent) size = parseInt(percent[1], 10) / 100 * distance[mode == 'hide' ? 0 : 1]; if (mode == 'show') wrapper.css(horizFirst ? { height: 0, width: size} : { height: size, width: 0 }); var animation1 = {}, animation2 = {}; animation1[ref[0]] = mode == 'show' ? distance[0] : size; animation2[ref[1]] = mode == 'show' ? distance[1] : 0; wrapper.animate(animation1, duration, o.options.easing).animate(animation2, duration, o.options.easing, function () { if (mode == 'hide') el.hide(); $.effects.restore(el, props); $.effects.removeWrapper(el); if (o.callback) o.callback.apply(el[0], arguments); el.dequeue() }) }) } })(jQuery); (function ($, undefined) { $.effects.highlight = function (o) { return this.queue(function () { var elem = $(this), props = ['backgroundImage', 'backgroundColor', 'opacity'], mode = $.effects.setMode(elem, o.options.mode || 'show'), animation = { backgroundColor: elem.css('backgroundColor') }; if (mode == 'hide') { animation.opacity = 0 } $.effects.save(elem, props); elem.show().css({ backgroundImage: 'none', backgroundColor: o.options.color || '#ffff99' }).animate(animation, { queue: false, duration: o.duration, easing: o.options.easing, complete: function () { (mode == 'hide' && elem.hide()); $.effects.restore(elem, props); (mode == 'show' && !$.support.opacity && this.style.removeAttribute('filter')); (o.callback && o.callback.apply(this, arguments)); elem.dequeue() } }) }) } })(jQuery); (function ($, undefined) { $.effects.pulsate = function (o) { return this.queue(function () { var elem = $(this), mode = $.effects.setMode(elem, o.options.mode || 'show'); times = ((o.options.times || 5) * 2) - 1; duration = o.duration ? o.duration / 2 : $.fx.speeds._default / 2, isVisible = elem.is(':visible'), animateTo = 0; if (!isVisible) { elem.css('opacity', 0).show(); animateTo = 1 } if ((mode == 'hide' && isVisible) || (mode == 'show' && !isVisible)) { times-- } for (var i = 0; i < times; i++) { elem.animate({ opacity: animateTo }, duration, o.options.easing); animateTo = (animateTo + 1) % 2 } elem.animate({ opacity: animateTo }, duration, o.options.easing, function () { if (animateTo == 0) { elem.hide() } (o.callback && o.callback.apply(this, arguments)) }); elem.queue('fx', function () { elem.dequeue() }).dequeue() }) } })(jQuery); (function ($, undefined) { $.effects.puff = function (o) { return this.queue(function () { var elem = $(this), mode = $.effects.setMode(elem, o.options.mode || 'hide'), percent = parseInt(o.options.percent, 10) || 150, factor = percent / 100, original = { height: elem.height(), width: elem.width() }; $.extend(o.options, { fade: true, mode: mode, percent: mode == 'hide' ? percent : 100, from: mode == 'hide' ? original : { height: original.height * factor, width: original.width * factor} }); elem.effect('scale', o.options, o.duration, o.callback); elem.dequeue() }) }; $.effects.scale = function (o) { return this.queue(function () { var el = $(this); var options = $.extend(true, {}, o.options); var mode = $.effects.setMode(el, o.options.mode || 'effect'); var percent = parseInt(o.options.percent, 10) || (parseInt(o.options.percent, 10) == 0 ? 0 : (mode == 'hide' ? 0 : 100)); var direction = o.options.direction || 'both'; var origin = o.options.origin; if (mode != 'effect') { options.origin = origin || ['middle', 'center']; options.restore = true } var original = { height: el.height(), width: el.width() }; el.from = o.options.from || (mode == 'show' ? { height: 0, width: 0} : original); var factor = { y: direction != 'horizontal' ? (percent / 100) : 1, x: direction != 'vertical' ? (percent / 100) : 1 }; el.to = { height: original.height * factor.y, width: original.width * factor.x }; if (o.options.fade) { if (mode == 'show') { el.from.opacity = 0; el.to.opacity = 1 }; if (mode == 'hide') { el.from.opacity = 1; el.to.opacity = 0 } }; options.from = el.from; options.to = el.to; options.mode = mode; el.effect('size', options, o.duration, o.callback); el.dequeue() }) }; $.effects.size = function (o) { return this.queue(function () { var el = $(this), props = ['position', 'top', 'bottom', 'left', 'right', 'width', 'height', 'overflow', 'opacity']; var props1 = ['position', 'top', 'bottom', 'left', 'right', 'overflow', 'opacity']; var props2 = ['width', 'height', 'overflow']; var cProps = ['fontSize']; var vProps = ['borderTopWidth', 'borderBottomWidth', 'paddingTop', 'paddingBottom']; var hProps = ['borderLeftWidth', 'borderRightWidth', 'paddingLeft', 'paddingRight']; var mode = $.effects.setMode(el, o.options.mode || 'effect'); var restore = o.options.restore || false; var scale = o.options.scale || 'both'; var origin = o.options.origin; var original = { height: el.height(), width: el.width() }; el.from = o.options.from || original; el.to = o.options.to || original; if (origin) { var baseline = $.effects.getBaseline(origin, original); el.from.top = (original.height - el.from.height) * baseline.y; el.from.left = (original.width - el.from.width) * baseline.x; el.to.top = (original.height - el.to.height) * baseline.y; el.to.left = (original.width - el.to.width) * baseline.x }; var factor = { from: { y: el.from.height / original.height, x: el.from.width / original.width }, to: { y: el.to.height / original.height, x: el.to.width / original.width} }; if (scale == 'box' || scale == 'both') { if (factor.from.y != factor.to.y) { props = props.concat(vProps); el.from = $.effects.setTransition(el, vProps, factor.from.y, el.from); el.to = $.effects.setTransition(el, vProps, factor.to.y, el.to) }; if (factor.from.x != factor.to.x) { props = props.concat(hProps); el.from = $.effects.setTransition(el, hProps, factor.from.x, el.from); el.to = $.effects.setTransition(el, hProps, factor.to.x, el.to) } }; if (scale == 'content' || scale == 'both') { if (factor.from.y != factor.to.y) { props = props.concat(cProps); el.from = $.effects.setTransition(el, cProps, factor.from.y, el.from); el.to = $.effects.setTransition(el, cProps, factor.to.y, el.to) } }; $.effects.save(el, restore ? props : props1); el.show(); $.effects.createWrapper(el); el.css('overflow', 'hidden').css(el.from); if (scale == 'content' || scale == 'both') { vProps = vProps.concat(['marginTop', 'marginBottom']).concat(cProps); hProps = hProps.concat(['marginLeft', 'marginRight']); props2 = props.concat(vProps).concat(hProps); el.find("*[width]").each(function () { child = $(this); if (restore) $.effects.save(child, props2); var c_original = { height: child.height(), width: child.width() }; child.from = { height: c_original.height * factor.from.y, width: c_original.width * factor.from.x }; child.to = { height: c_original.height * factor.to.y, width: c_original.width * factor.to.x }; if (factor.from.y != factor.to.y) { child.from = $.effects.setTransition(child, vProps, factor.from.y, child.from); child.to = $.effects.setTransition(child, vProps, factor.to.y, child.to) }; if (factor.from.x != factor.to.x) { child.from = $.effects.setTransition(child, hProps, factor.from.x, child.from); child.to = $.effects.setTransition(child, hProps, factor.to.x, child.to) }; child.css(child.from); child.animate(child.to, o.duration, o.options.easing, function () { if (restore) $.effects.restore(child, props2) }) }) }; el.animate(el.to, { queue: false, duration: o.duration, easing: o.options.easing, complete: function () { if (el.to.opacity === 0) { el.css('opacity', el.from.opacity) } if (mode == 'hide') el.hide(); $.effects.restore(el, restore ? props : props1); $.effects.removeWrapper(el); if (o.callback) o.callback.apply(this, arguments); el.dequeue() } }) }) } })(jQuery); (function ($, undefined) { $.effects.shake = function (o) { return this.queue(function () { var el = $(this), props = ['position', 'top', 'bottom', 'left', 'right']; var mode = $.effects.setMode(el, o.options.mode || 'effect'); var direction = o.options.direction || 'left'; var distance = o.options.distance || 20; var times = o.options.times || 3; var speed = o.duration || o.options.duration || 140; $.effects.save(el, props); el.show(); $.effects.createWrapper(el); var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left'; var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg'; var animation = {}, animation1 = {}, animation2 = {}; animation[ref] = (motion == 'pos' ? '-=' : '+=') + distance; animation1[ref] = (motion == 'pos' ? '+=' : '-=') + distance * 2; animation2[ref] = (motion == 'pos' ? '-=' : '+=') + distance * 2; el.animate(animation, speed, o.options.easing); for (var i = 1; i < times; i++) { el.animate(animation1, speed, o.options.easing).animate(animation2, speed, o.options.easing) }; el.animate(animation1, speed, o.options.easing).animate(animation, speed / 2, o.options.easing, function () { $.effects.restore(el, props); $.effects.removeWrapper(el); if (o.callback) o.callback.apply(this, arguments) }); el.queue('fx', function () { el.dequeue() }); el.dequeue() }) } })(jQuery); (function ($, undefined) { $.effects.slide = function (o) { return this.queue(function () { var el = $(this), props = ['position', 'top', 'bottom', 'left', 'right']; var mode = $.effects.setMode(el, o.options.mode || 'show'); var direction = o.options.direction || 'left'; $.effects.save(el, props); el.show(); $.effects.createWrapper(el).css({ overflow: 'hidden' }); var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left'; var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg'; var distance = o.options.distance || (ref == 'top' ? el.outerHeight({ margin: true }) : el.outerWidth({ margin: true })); if (mode == 'show') el.css(ref, motion == 'pos' ? (isNaN(distance) ? "-" + distance : -distance) : distance); var animation = {}; animation[ref] = (mode == 'show' ? (motion == 'pos' ? '+=' : '-=') : (motion == 'pos' ? '-=' : '+=')) + distance; el.animate(animation, { queue: false, duration: o.duration, easing: o.options.easing, complete: function () { if (mode == 'hide') el.hide(); $.effects.restore(el, props); $.effects.removeWrapper(el); if (o.callback) o.callback.apply(this, arguments); el.dequeue() } }) }) } })(jQuery); (function ($, undefined) { $.effects.transfer = function (o) { return this.queue(function () { var elem = $(this), target = $(o.options.to), endPosition = target.offset(), animation = { top: endPosition.top, left: endPosition.left, height: target.innerHeight(), width: target.innerWidth() }, startPosition = elem.offset(), transfer = $('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(o.options.className).css({ top: startPosition.top, left: startPosition.left, height: elem.innerHeight(), width: elem.innerWidth(), position: 'absolute' }).animate(animation, o.duration, o.options.easing, function () { transfer.remove(); (o.callback && o.callback.apply(elem[0], arguments)); elem.dequeue() }) }) } })(jQuery);
