;(function($) { $.ui = $.ui || {}; $.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) { return;}
for (var i = 0; i < set.length; i++) { if (instance.options[set[i][0]]) { set[i][1].apply(instance.element, args);}
}
}
}, cssCache: {}, css: function(name) { if ($.ui.cssCache[name]) { return $.ui.cssCache[name];}
var tmp = $('<div class="ui-resizable-gen">').addClass(name).css({position:'absolute', top:'-5000px', left:'-5000px', display:'block'}).appendTo('body'); $.ui.cssCache[name] = !!( (!(/auto|default/).test(tmp.css('cursor')) || (/^[1-9]/).test(tmp.css('height')) || (/^[1-9]/).test(tmp.css('width')) || !(/none/).test(tmp.css('backgroundImage')) || !(/transparent|rgba\(0, 0, 0, 0\)/).test(tmp.css('backgroundColor'))) ); try { $('body').get(0).removeChild(tmp.get(0));} catch(e){}
return $.ui.cssCache[name];}, disableSelection: function(e) { e.unselectable = "on"; e.onselectstart = function() { return false;}; if (e.style) { e.style.MozUserSelect = "none";}
}, enableSelection: function(e) { e.unselectable = "off"; e.onselectstart = function() { return true;}; if (e.style) { e.style.MozUserSelect = "";}
}, hasScroll: function(e, a) { var scroll = /top/.test(a||"top") ? 'scrollTop' : 'scrollLeft', has = false; if (e[scroll] > 0) return true; e[scroll] = 1; has = e[scroll] > 0 ? true : false; e[scroll] = 0; return has;}
}); var _remove = $.fn.remove; $.fn.remove = function() { $("*", this).add(this).trigger("remove"); return _remove.apply(this, arguments );}; function getter(namespace, plugin, method) { var methods = $[namespace][plugin].getter || []; methods = (typeof methods == "string" ? methods.split(/,?\s+/) : methods); return ($.inArray(method, methods) != -1);}; var widgetPrototype = { init: function() {}, destroy: function() {}, getData: function(e, key) { return this.options[key];}, setData: function(e, key, value) { this.options[key] = value;}, enable: function() { this.setData(null, 'disabled', false);}, disable: function() { this.setData(null, 'disabled', true);}
}; $.widget = function(name, prototype) { var namespace = name.split(".")[0]; name = name.split(".")[1]; $.fn[name] = function(options, data) { var isMethodCall = (typeof options == 'string'), args = arguments; if (isMethodCall && getter(namespace, name, options)) { var instance = $.data(this[0], name); return (instance ? instance[options](data) : undefined);}
return this.each(function() { var instance = $.data(this, name); if (!instance) { $.data(this, name, new $[namespace][name](this, options));} else if (isMethodCall) { instance[options].apply(instance, $.makeArray(args).slice(1));}
});}; $[namespace][name] = function(element, options) { var self = this; this.options = $.extend({}, $[namespace][name].defaults, options); this.element = $(element)
.bind('setData.' + name, function(e, key, value) { return self.setData(e, key, value);})
.bind('getData.' + name, function(e, key) { return self.getData(e, key);})
.bind('remove', function() { return self.destroy();}); this.init();}; $[namespace][name].prototype = $.extend({}, widgetPrototype, prototype);}; $.widget("ui.mouse", { init: function() { var self = this; this.element
.bind('mousedown.mouse', function() { return self.click.apply(self, arguments);})
.bind('mouseup.mouse', function() { (self.timer && clearInterval(self.timer));})
.bind('click.mouse', function() { if(self.initialized) { self.initialized = false; return false;} }); if ($.browser.msie) { this.unselectable = this.element.attr('unselectable'); this.element.attr('unselectable', 'on');}
}, destroy: function() { this.element.unbind('.mouse').removeData("mouse"); ($.browser.msie && this.element.attr('unselectable', this.unselectable));}, trigger: function() { return this.click.apply(this, arguments);}, click: function(e) { if( e.which != 1 || $.inArray(e.target.nodeName.toLowerCase(), this.options.dragPrevention || []) != -1 || (this.options.condition && !this.options.condition.apply(this.options.executor || this, [e, this.element])) ) { return true;}
var self = this; this.initialized = false; var initialize = function() { self._MP = { left: e.pageX, top: e.pageY }; $(document).bind('mouseup.mouse', function() { return self.stop.apply(self, arguments);}); $(document).bind('mousemove.mouse', function() { return self.drag.apply(self, arguments);}); if(!self.initalized && Math.abs(self._MP.left-e.pageX) >= self.options.distance || Math.abs(self._MP.top-e.pageY) >= self.options.distance) { (self.options.start && self.options.start.call(self.options.executor || self, e, self.element)); (self.options.drag && self.options.drag.call(self.options.executor || self, e, this.element)); self.initialized = true;}
}; if(this.options.delay) { if(this.timer) { clearInterval(this.timer);}
this.timer = setTimeout(initialize, this.options.delay);} else { initialize();}
return false;}, stop: function(e) { if(!this.initialized) { return $(document).unbind('mouseup.mouse').unbind('mousemove.mouse');}
(this.options.stop && this.options.stop.call(this.options.executor || this, e, this.element)); $(document).unbind('mouseup.mouse').unbind('mousemove.mouse'); return false;}, drag: function(e) { var o = this.options; if ($.browser.msie && !e.button) { return this.stop.call(this, e);}
if(!this.initialized && (Math.abs(this._MP.left-e.pageX) >= o.distance || Math.abs(this._MP.top-e.pageY) >= o.distance)) { (o.start && o.start.call(o.executor || this, e, this.element)); this.initialized = true;} else { if(!this.initialized) { return false;}
}
(o.drag && o.drag.call(this.options.executor || this, e, this.element)); return false;}
});})(jQuery); ;(function($) { $.widget("ui.draggable", { init: function() { var o = this.options; this.element.mouse({ executor: this, delay: o.delay, distance: o.distance, dragPrevention: o.cancel, start: this.start, stop: this.stop, drag: this.drag, condition: function(e) { var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false; if(!handle) $(this.options.handle, this.element).each(function() { if(this == e.target) handle = true;}); return !(e.target.className.indexOf("ui-resizable-handle") != -1 || this.options.disabled) && handle;}
}); if(o.helper == 'original' && !(/(relative|absolute|fixed)/).test(this.element.css('position')))
this.element.css('position', 'relative');}, start: function(e) { var o = this.options; if($.ui.ddmanager) $.ui.ddmanager.current = this; this.helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [e])) : (o.helper == 'clone' ? this.element.clone() : this.element); if(!this.helper.parents('body').length) this.helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo)); if(!this.helper.css("position") || this.helper.css("position") == "static") this.helper.css("position", "absolute"); this.margins = { left: (parseInt(this.element.css("marginLeft"),10) || 0), top: (parseInt(this.element.css("marginTop"),10) || 0)
}; this.cssPosition = this.helper.css("position"); this.offset = this.element.offset(); this.offset = { top: this.offset.top - this.margins.top, left: this.offset.left - this.margins.left
}; this.offset.click = { left: e.pageX - this.offset.left, top: e.pageY - this.offset.top
}; this.offsetParent = this.helper.offsetParent(); var po = this.offsetParent.offset(); this.offset.parent = { top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)
}; var p = this.element.position(); this.offset.relative = this.cssPosition == "relative" ? { top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.offsetParent[0].scrollTop, left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.offsetParent[0].scrollLeft
} : { top: 0, left: 0 }; this.originalPosition = this.generatePosition(e); this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight() }; if(o.cursorAt) { if(o.cursorAt.left != undefined) this.offset.click.left = o.cursorAt.left; if(o.cursorAt.right != undefined) this.offset.click.left = this.helperProportions.width - o.cursorAt.right; if(o.cursorAt.top != undefined) this.offset.click.top = o.cursorAt.top; if(o.cursorAt.bottom != undefined) this.offset.click.top = this.helperProportions.height - o.cursorAt.bottom;}
if(o.containment) { if(o.containment == 'parent') o.containment = this.helper[0].parentNode; if(o.containment == 'document') this.containment = [0,0,$(document).width(), ($(document).height() || document.body.parentNode.scrollHeight)]; if(!(/^(document|window|parent)$/).test(o.containment)) { var ce = $(o.containment)[0]; var co = $(o.containment).offset(); this.containment = [ co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) - this.offset.relative.left - this.offset.parent.left, co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) - this.offset.relative.top - this.offset.parent.top, co.left+Math.max(ce.scrollWidth,ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - this.offset.relative.left - this.offset.parent.left - this.helperProportions.width - this.margins.left - (parseInt(this.element.css("marginRight"),10) || 0), co.top+Math.max(ce.scrollHeight,ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - this.offset.relative.top - this.offset.parent.top - this.helperProportions.height - this.margins.top - (parseInt(this.element.css("marginBottom"),10) || 0) ];}
}
this.propagate("start", e); this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight() }; if ($.ui.ddmanager && !o.dropBehaviour) $.ui.ddmanager.prepareOffsets(this, e); return false;}, convertPositionTo: function(d, pos) { if(!pos) pos = this.position; var mod = d == "absolute" ? 1 : -1; return { top: ( pos.top + this.offset.relative.top * mod + this.offset.parent.top * mod - (this.cssPosition == "fixed" ? 0 : this.offsetParent[0].scrollTop) * mod + this.margins.top * mod ), left: ( pos.left + this.offset.relative.left * mod + this.offset.parent.left * mod - (this.cssPosition == "fixed" ? 0 : this.offsetParent[0].scrollLeft) * mod + this.margins.left * mod
)
};}, generatePosition: function(e) { var o = this.options; var position = { top: ( e.pageY - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (this.cssPosition == "fixed" ? 0 : this.offsetParent[0].scrollTop) ), left: ( e.pageX - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (this.cssPosition == "fixed" ? 0 : this.offsetParent[0].scrollLeft)
)
}; if(!this.originalPosition) return position; if(this.containment) { if(position.left < this.containment[0]) position.left = this.containment[0]; if(position.top < this.containment[1]) position.top = this.containment[1]; if(position.left > this.containment[2]) position.left = this.containment[2]; if(position.top > this.containment[3]) position.top = this.containment[3];}
if(o.grid) { var top = this.originalPosition.top + Math.round((position.top - this.originalPosition.top) / o.grid[1]) * o.grid[1]; position.top = this.containment ? (!(top < this.containment[1] || top > this.containment[3]) ? top : (!(top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; var left = this.originalPosition.left + Math.round((position.left - this.originalPosition.left) / o.grid[0]) * o.grid[0]; position.left = this.containment ? (!(left < this.containment[0] || left > this.containment[2]) ? left : (!(left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;}
return position;}, drag: function(e) { this.position = this.generatePosition(e); this.positionAbs = this.convertPositionTo("absolute"); this.position = this.propagate("drag", e) || this.position; if(!this.options.axis || this.options.axis == "x") this.helper[0].style.left = this.position.left+'px'; if(!this.options.axis || this.options.axis == "y") this.helper[0].style.top = this.position.top+'px'; if($.ui.ddmanager) $.ui.ddmanager.drag(this, e); return false;}, stop: function(e) { if ($.ui.ddmanager && !this.options.dropBehaviour)
$.ui.ddmanager.drop(this, e); if(this.options.revert) { var self = this; $(this.helper).animate(this.originalPosition, parseInt(this.options.revert, 10) || 500, function() { self.propagate("stop", e); self.clear();});} else { this.propagate("stop", e); this.clear();}
return false;}, clear: function() { if(this.options.helper != 'original' && !this.cancelHelperRemoval) this.helper.remove(); if($.ui.ddmanager) $.ui.ddmanager.current = null; this.helper = null; this.cancelHelperRemoval = false;}, plugins: {}, ui: function(e) { return { helper: this.helper, position: this.position, absolutePosition: this.positionAbs, options: this.options
};}, propagate: function(n,e) { $.ui.plugin.call(this, n, [e, this.ui()]); return this.element.triggerHandler(n == "drag" ? n : "drag"+n, [e, this.ui()], this.options[n]);}, destroy: function() { if(!this.element.data('draggable')) return; this.element.removeData("draggable").unbind(".draggable").mouse("destroy");}, enable: function() { this.options.disabled = false;}, disable: function() { this.options.disabled = true;}
}); $.ui.draggable.defaults = { helper: "original", appendTo: "parent", cancel: ['input','textarea','button','select','option'], distance: 1, delay: 0
}; $.ui.plugin.add("draggable", "cursor", { start: function(e, ui) { var t = $('body'); if (t.css("cursor")) ui.options._cursor = t.css("cursor"); t.css("cursor", ui.options.cursor);}, stop: function(e, ui) { if (ui.options._cursor) $('body').css("cursor", ui.options._cursor);}
}); $.ui.plugin.add("draggable", "zIndex", { start: function(e, ui) { var t = $(ui.helper); if(t.css("zIndex")) ui.options._zIndex = t.css("zIndex"); t.css('zIndex', ui.options.zIndex);}, stop: function(e, ui) { if(ui.options._zIndex) $(ui.helper).css('zIndex', ui.options._zIndex);}
}); $.ui.plugin.add("draggable", "opacity", { start: function(e, ui) { var t = $(ui.helper); if(t.css("opacity")) ui.options._opacity = t.css("opacity"); t.css('opacity', ui.options.opacity);}, stop: function(e, ui) { if(ui.options._opacity) $(ui.helper).css('opacity', ui.options._opacity);}
}); $.ui.plugin.add("draggable", "iframeFix", { start: function(e, ui) { $(ui.options.iframeFix === true ? "iframe" : ui.options.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(e, ui) { $("div.DragDropIframeFix").each(function() { this.parentNode.removeChild(this);});}
}); $.ui.plugin.add("draggable", "scroll", { start: function(e, ui) { var o = ui.options; var i = $(this).data("draggable"); o.scrollSensitivity = o.scrollSensitivity || 20; o.scrollSpeed = o.scrollSpeed || 20; i.overflowY = function(el) { do { if(/auto|scroll/.test(el.css('overflow')) || (/auto|scroll/).test(el.css('overflow-y'))) return el; el = el.parent();} while (el[0].parentNode); return $(document);}(this); i.overflowX = function(el) { do { if(/auto|scroll/.test(el.css('overflow')) || (/auto|scroll/).test(el.css('overflow-x'))) return el; el = el.parent();} while (el[0].parentNode); return $(document);}(this); if(i.overflowY[0] != document && i.overflowY[0].tagName != 'HTML') i.overflowYOffset = i.overflowY.offset(); if(i.overflowX[0] != document && i.overflowX[0].tagName != 'HTML') i.overflowXOffset = i.overflowX.offset();}, drag: function(e, ui) { var o = ui.options; var i = $(this).data("draggable"); if(i.overflowY[0] != document && i.overflowY[0].tagName != 'HTML') { if((i.overflowYOffset.top + i.overflowY[0].offsetHeight) - e.pageY < o.scrollSensitivity)
i.overflowY[0].scrollTop = i.overflowY[0].scrollTop + o.scrollSpeed; if(e.pageY - i.overflowYOffset.top < o.scrollSensitivity)
i.overflowY[0].scrollTop = i.overflowY[0].scrollTop - o.scrollSpeed;} else { if(e.pageY - $(document).scrollTop() < o.scrollSensitivity)
$(document).scrollTop($(document).scrollTop() - o.scrollSpeed); if($(window).height() - (e.pageY - $(document).scrollTop()) < o.scrollSensitivity)
$(document).scrollTop($(document).scrollTop() + o.scrollSpeed);}
if(i.overflowX[0] != document && i.overflowX[0].tagName != 'HTML') { if((i.overflowXOffset.left + i.overflowX[0].offsetWidth) - e.pageX < o.scrollSensitivity)
i.overflowX[0].scrollLeft = i.overflowX[0].scrollLeft + o.scrollSpeed; if(e.pageX - i.overflowXOffset.left < o.scrollSensitivity)
i.overflowX[0].scrollLeft = i.overflowX[0].scrollLeft - o.scrollSpeed;} else { if(e.pageX - $(document).scrollLeft() < o.scrollSensitivity)
$(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); if($(window).width() - (e.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
$(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);}
}
}); $.ui.plugin.add("draggable", "snap", { start: function(e, ui) { var inst = $(this).data("draggable"); inst.snapElements = []; $(ui.options.snap === true ? '.ui-draggable' : ui.options.snap).each(function() { var $t = $(this); var $o = $t.offset(); if(this != inst.element[0]) inst.snapElements.push({ item: this, width: $t.outerWidth(), height: $t.outerHeight(), top: $o.top, left: $o.left
});});}, drag: function(e, ui) { var inst = $(this).data("draggable"); var d = ui.options.snapTolerance || 20; var x1 = ui.absolutePosition.left, x2 = x1 + inst.helperProportions.width, y1 = ui.absolutePosition.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))) continue; if(ui.options.snapMode != 'inner') { var ts = Math.abs(t - y2) <= 20; var bs = Math.abs(b - y1) <= 20; var ls = Math.abs(l - x2) <= 20; var rs = Math.abs(r - x1) <= 20; if(ts) ui.position.top = inst.convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top; if(bs) ui.position.top = inst.convertPositionTo("relative", { top: b, left: 0 }).top; if(ls) ui.position.left = inst.convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left; if(rs) ui.position.left = inst.convertPositionTo("relative", { top: 0, left: r }).left;}
if(ui.options.snapMode != 'outer') { var ts = Math.abs(t - y1) <= 20; var bs = Math.abs(b - y2) <= 20; var ls = Math.abs(l - x1) <= 20; var rs = Math.abs(r - x2) <= 20; if(ts) ui.position.top = inst.convertPositionTo("relative", { top: t, left: 0 }).top; if(bs) ui.position.top = inst.convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top; if(ls) ui.position.left = inst.convertPositionTo("relative", { top: 0, left: l }).left; if(rs) ui.position.left = inst.convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left;}
};}
}); $.ui.plugin.add("draggable", "connectToSortable", { start: function(e,ui) { var inst = $(this).data("draggable"); inst.sortable = $.data($(ui.options.connectToSortable)[0], 'sortable'); inst.sortableOffset = inst.sortable.element.offset(); inst.sortableOuterWidth = inst.sortable.element.outerWidth(); inst.sortableOuterHeight = inst.sortable.element.outerHeight(); if(inst.sortable.options.revert) inst.sortable.shouldRevert = true;}, stop: function(e,ui) { var instDraggable = $(this).data("draggable"); var inst = instDraggable.sortable; if(inst.isOver) { inst.isOver = 0; instDraggable.cancelHelperRemoval = true; inst.cancelHelperRemoval = false; if(inst.shouldRevert) inst.options.revert = true; inst.stop(e); inst.options.helper = "original";}
}, drag: function(e,ui) { var instDraggable = $(this).data("draggable"); var inst = instDraggable.sortable; instDraggable.position.absolute = ui.absolutePosition; if(inst.intersectsWith.call(instDraggable, { left: instDraggable.sortableOffset.left, top: instDraggable.sortableOffset.top, width: instDraggable.sortableOuterWidth, height: instDraggable.sortableOuterHeight
})) { if(!inst.isOver) { inst.isOver = 1; var height = inst.options.placeholderElement ? $(inst.options.placeholderElement, $(inst.options.items, inst.element)).innerHeight() : $(inst.options.items, inst.element).innerHeight(); var width = inst.options.placeholderElement ? $(inst.options.placeholderElement, $(inst.options.items, inst.element)).innerWidth() : $(inst.options.items, inst.element).innerWidth(); inst.currentItem = $(this).clone().appendTo(inst.element); inst.options.helper = function() { return ui.helper[0];}; inst.start(e); inst.clickOffset.top = instDraggable.offset.click.top; inst.clickOffset.left = instDraggable.offset.click.left; inst.offset.left -= ui.absolutePosition.left - inst.position.absolute.left; inst.offset.top -= ui.absolutePosition.top - inst.position.absolute.top; inst.helperProportions = {width: width, height: height}; ui.helper.animate({height: height, width: width}, 500); instDraggable.propagate("toSortable", e);}
if(inst.currentItem) inst.drag(e);} else { if(inst.isOver) { inst.isOver = 0; inst.cancelHelperRemoval = true; inst.options.revert = false; inst.stop(e); inst.options.helper = "original"; inst.currentItem.remove(); inst.placeholder.remove(); ui.helper.animate({ height: this.innerHeight(), width: this.innerWidth() }, 500); instDraggable.propagate("fromSortable", e);}
};}
}); $.ui.plugin.add("draggable", "stack", { start: function(e,ui) { var group = $.makeArray($(ui.options.stack.group)).sort(function(a,b) { return (parseInt($(a).css("zIndex")) || ui.options.stack.min) - (parseInt($(b).css("zIndex")) || ui.options.stack.min);}); $(group).each(function(i) { this.style.zIndex = ui.options.stack.min + i;}); this[0].style.zIndex = ui.options.stack.min + group.length;}
});})(jQuery); ;(function($) { function contains(a, b) { var safari2 = $.browser.safari && $.browser.version < 522; if (a.contains && !safari2) { return a.contains(b);}
if (a.compareDocumentPosition)
return !!(a.compareDocumentPosition(b) & 16); while (b = b.parentNode)
if (b == a) return true; return false;}; $.widget("ui.sortable", { init: 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')) : false; if(!(/(relative|absolute|fixed)/).test(this.element.css('position'))) this.element.css('position', 'relative'); this.offset = this.element.offset(); this.element.mouse({ executor: this, delay: o.delay, distance: o.distance || 1, dragPrevention: o.prevention ? o.prevention.toLowerCase().split(',') : ['input','textarea','button','select','option'], start: this.start, stop: this.stop, drag: this.drag, condition: function(e) { if(this.options.disabled || this.options.type == 'static') return false; var currentItem = null, nodes = $(e.target).parents().each(function() { if($.data(this, 'sortable-item')) { currentItem = $(this); return false;}
}); if($.data(e.target, 'sortable-item')) currentItem = $(e.target); if(!currentItem) return false; if(this.options.handle) { var validHandle = false; $(this.options.handle, currentItem).each(function() { if(this == e.target) validHandle = true;}); if(!validHandle) return false;}
this.currentItem = currentItem; return true;}
});}, plugins: {}, ui: function(inst) { return { helper: (inst || this)["helper"], placeholder: (inst || this)["placeholder"] || $([]), position: (inst || this)["position"].current, absolutePosition: (inst || this)["position"].absolute, instance: this, options: this.options, element: this.element, item: (inst || this)["currentItem"], sender: inst ? inst.element : null
};}, propagate: function(n,e,inst) { $.ui.plugin.call(this, n, [e, this.ui(inst)]); this.element.triggerHandler(n == "sort" ? n : "sort"+n, [e, this.ui(inst)], this.options[n]);}, serialize: function(o) { var items = $(this.options.items, this.element).not('.ui-sortable-helper'); var str = []; o = o || {}; items.each(function() { var res = ($(this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/)); if(res) str.push((o.key || res[1])+'[]='+(o.key ? res[1] : res[2]));}); return str.join('&');}, toArray: function(attr) { var items = $(this.options.items, this.element).not('.ui-sortable-helper'); var ret = []; items.each(function() { ret.push($(this).attr(attr || 'id'));}); return ret;}, enable: function() { this.element.removeClass("ui-sortable-disabled"); this.options.disabled = false;}, disable: function() { this.element.addClass("ui-sortable-disabled"); this.options.disabled = true;}, intersectsWith: function(item) { var x1 = this.position.absolute.left, x2 = x1 + this.helperProportions.width, y1 = this.position.absolute.top, y2 = y1 + this.helperProportions.height; var l = item.left, r = l + item.width, t = item.top, b = t + item.height; if(this.options.tolerance == "pointer") { return (y1 + this.clickOffset.top > t && y1 + this.clickOffset.top < b && x1 + this.clickOffset.left > l && x1 + this.clickOffset.left < r);} 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 );}
}, intersectsWithEdge: function(item) { var x1 = this.position.absolute.left, x2 = x1 + this.helperProportions.width, y1 = this.position.absolute.top, y2 = y1 + this.helperProportions.height; var l = item.left, r = l + item.width, t = item.top, b = t + item.height; if(this.options.tolerance == "pointer") { if(!(y1 + this.clickOffset.top > t && y1 + this.clickOffset.top < b && x1 + this.clickOffset.left > l && x1 + this.clickOffset.left < r)) return false; if(this.floating) { if(x1 + this.clickOffset.left > l && x1 + this.clickOffset.left < l + item.width/2) return 2; if(x1 + this.clickOffset.left > l+item.width/2 && x1 + this.clickOffset.left < r) return 1;} else { if(y1 + this.clickOffset.top > t && y1 + this.clickOffset.top < t + item.height/2) return 2; if(y1 + this.clickOffset.top > t+item.height/2 && y1 + this.clickOffset.top < b) return 1;}
} else { if (!(l < x1 + (this.helperProportions.width / 2)
&& x2 - (this.helperProportions.width / 2) < r
&& t < y1 + (this.helperProportions.height / 2)
&& y2 - (this.helperProportions.height / 2) < b )) return false; if(this.floating) { if(x2 > l && x1 < l) return 2; if(x1 < r && x2 > r) return 1;} else { if(y2 > t && y1 < t) return 1; if(y1 < b && y2 > b) return 2;}
}
return false;}, inEmptyZone: function(container) { if(!$(container.options.items, container.element).length) { return container.options.dropOnEmpty ? true : false;}; var last = $(container.options.items, container.element).not('.ui-sortable-helper'); last = $(last[last.length-1]); var top = last.offset()[this.floating ? 'left' : 'top'] + last[0][this.floating ? 'offsetWidth' : 'offsetHeight']; return (this.position.absolute[this.floating ? 'left' : 'top'] > top);}, refresh: function() { this.refreshItems(); this.refreshPositions();}, refreshItems: function() { this.items = []; this.containers = [this]; var items = this.items; var queries = [$(this.options.items, this.element)]; if(this.options.connectWith) { for (var i = this.options.connectWith.length - 1; i >= 0; i--){ var cur = $(this.options.connectWith[i]); for (var j = cur.length - 1; j >= 0; j--){ var inst = $.data(cur[j], 'sortable'); if(inst && !inst.options.disabled) { queries.push($(inst.options.items, inst.element)); this.containers.push(inst);}
};};}
for (var i = queries.length - 1; i >= 0; i--){ queries[i].each(function() { $.data(this, 'sortable-item', true); items.push({ item: $(this), width: 0, height: 0, left: 0, top: 0
});});};}, refreshPositions: function(fast) { for (var i = this.items.length - 1; i >= 0; i--){ var t = this.items[i].item; if(!fast) this.items[i].width = (this.options.toleranceElement ? $(this.options.toleranceElement, t) : t).outerWidth(); if(!fast) this.items[i].height = (this.options.toleranceElement ? $(this.options.toleranceElement, t) : t).outerHeight(); var p = (this.options.toleranceElement ? $(this.options.toleranceElement, t) : t).offset(); this.items[i].left = p.left; this.items[i].top = p.top;}; 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();};}, destroy: function() { this.element
.removeClass("ui-sortable ui-sortable-disabled")
.removeData("sortable")
.unbind(".sortable")
.mouse("destroy"); for ( var i = this.items.length - 1; i >= 0; i-- )
this.items[i].item.removeData("sortable-item");}, createPlaceholder: function(that) { (that || this).placeholderElement = this.options.placeholderElement ? $(this.options.placeholderElement, (that || this).currentItem) : (that || this).currentItem; (that || this).placeholder = $('<div></div>')
.addClass(this.options.placeholder)
.appendTo('body')
.css({ position: 'absolute' })
.css((that || this).placeholderElement.offset())
.css({ width: (that || this).placeholderElement.outerWidth(), height: (that || this).placeholderElement.outerHeight() })
;}, contactContainers: function(e) { for (var i = this.containers.length - 1; i >= 0; i--){ if(this.intersectsWith(this.containers[i].containerCache)) { if(!this.containers[i].containerCache.over) { if(this.currentContainer != this.containers[i]) { var dist = 10000; var itemWithLeastDistance = null; var base = this.position.absolute[this.containers[i].floating ? 'left' : 'top']; for (var j = this.items.length - 1; j >= 0; j--) { if(!contains(this.containers[i].element[0], this.items[j].item[0])) continue; var cur = this.items[j][this.containers[i].floating ? 'left' : 'top']; if(Math.abs(cur - base) < dist) { dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];}
}
if(this.placeholder) this.placeholder.remove(); if(this.containers[i].options.placeholder) { this.containers[i].createPlaceholder(this);} else { this.placeholder = null; this.placeholderElement = null;}
itemWithLeastDistance ? this.rearrange(e, itemWithLeastDistance) : this.rearrange(e, null, this.containers[i].element); this.propagate("change", e); this.containers[i].propagate("change", e, this); this.currentContainer = this.containers[i];}
this.containers[i].propagate("over", e, this); this.containers[i].containerCache.over = 1;}
} else { if(this.containers[i].containerCache.over) { this.containers[i].propagate("out", e, this); this.containers[i].containerCache.over = 0;}
}
};}, start: function(e,el) { var o = this.options; this.currentContainer = this; this.refresh(); this.helper = typeof o.helper == 'function' ? $(o.helper.apply(this.element[0], [e, this.currentItem])) : this.currentItem.clone(); if(!this.helper.parents('body').length) this.helper.appendTo(o.appendTo || this.currentItem[0].parentNode); this.helper.css({ position: 'absolute', clear: 'both' }).addClass('ui-sortable-helper'); $.extend(this, { offsetParent: this.helper.offsetParent(), offsets: { absolute: this.currentItem.offset()
}, mouse: { start: { top: e.pageY, left: e.pageX }
}, margins: { top: parseInt(this.currentItem.css("marginTop")) || 0, left: parseInt(this.currentItem.css("marginLeft")) || 0
}
}); this.offsets.parent = this.offsetParent.offset(); this.clickOffset = { left: e.pageX - this.offsets.absolute.left, top: e.pageY - this.offsets.absolute.top }; this.originalPosition = { left: this.offsets.absolute.left - this.offsets.parent.left - this.margins.left, top: this.offsets.absolute.top - this.offsets.parent.top - this.margins.top
}
this.offset = { left: e.pageX - this.originalPosition.left, top: e.pageY - this.originalPosition.top
}; $.extend(this, { position: { current: { top: e.pageY - this.offset.top, left: e.pageX - this.offset.left }, absolute: { left: e.pageX - this.clickOffset.left, top: e.pageY - this.clickOffset.top }, dom: this.currentItem.prev()[0]
}
}); if(o.placeholder) this.createPlaceholder(); this.propagate("start", e); this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight() }; if(o.cursorAt) { if(o.cursorAt.top != undefined || o.cursorAt.bottom != undefined) { this.offset.top -= this.clickOffset.top - (o.cursorAt.top != undefined ? o.cursorAt.top : (this.helperProportions.height - o.cursorAt.bottom)); this.clickOffset.top = (o.cursorAt.top != undefined ? o.cursorAt.top : (this.helperProportions.height - o.cursorAt.bottom));}
if(o.cursorAt.left != undefined || o.cursorAt.right != undefined) { this.offset.left -= this.clickOffset.left - (o.cursorAt.left != undefined ? o.cursorAt.left : (this.helperProportions.width - o.cursorAt.right)); this.clickOffset.left = (o.cursorAt.left != undefined ? o.cursorAt.left : (this.helperProportions.width - o.cursorAt.right));}
}
if(this.options.placeholder != 'clone') $(this.currentItem).css('visibility', 'hidden'); for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i].propagate("activate", e, this);}
if($.ui.ddmanager) $.ui.ddmanager.current = this; if ($.ui.ddmanager && !o.dropBehaviour) $.ui.ddmanager.prepareOffsets(this, e); this.dragging = true; return false;}, stop: function(e) { this.propagate("stop", e); if(this.position.dom != this.currentItem.prev()[0]) this.propagate("update", e); if(!contains(this.element[0], this.currentItem[0])) { this.propagate("remove", e); for (var i = this.containers.length - 1; i >= 0; i--){ if(contains(this.containers[i].element[0], this.currentItem[0])) { this.containers[i].propagate("update", e, this); this.containers[i].propagate("receive", e, this);}
};}; for (var i = this.containers.length - 1; i >= 0; i--){ this.containers[i].propagate("deactivate", e, this); if(this.containers[i].containerCache.over) { this.containers[i].propagate("out", e, this); this.containers[i].containerCache.over = 0;}
}
if ($.ui.ddmanager && !this.options.dropBehaviour) $.ui.ddmanager.drop(this, e); this.dragging = false; if(this.cancelHelperRemoval) return false; $(this.currentItem).css('visibility', ''); if(this.placeholder) this.placeholder.remove(); this.helper.remove(); return false;}, drag: function(e) { this.position.current = { top: e.pageY - this.offset.top, left: e.pageX - this.offset.left }; this.position.absolute = { left: e.pageX - this.clickOffset.left, top: e.pageY - this.clickOffset.top }; for (var i = this.items.length - 1; i >= 0; i--) { var intersection = this.intersectsWithEdge(this.items[i]); if(!intersection) continue; if(this.items[i].item[0] != this.currentItem[0]
&& this.currentItem[intersection == 1 ? "next" : "prev"]()[0] != this.items[i].item[0]
&& !contains(this.currentItem[0], this.items[i].item[0])
&& (this.options.type == 'semi-dynamic' ? !contains(this.element[0], this.items[i].item[0]) : true) ) { this.direction = intersection == 1 ? "down" : "up"; this.rearrange(e, this.items[i]); this.propagate("change", e); break;}
}
this.contactContainers(e); if($.ui.ddmanager) $.ui.ddmanager.drag(this, e); this.propagate("sort", e); this.helper.css({ left: this.position.current.left+'px', top: this.position.current.top+'px' }); return false;}, rearrange: function(e, i, a) { a ? a.append(this.currentItem) : i.item[this.direction == 'down' ? 'before' : 'after'](this.currentItem); this.refreshPositions(true); if(this.placeholderElement) this.placeholder.css(this.placeholderElement.offset()); if(this.placeholderElement && this.placeholderElement.is(":visible")) this.placeholder.css({ width: this.placeholderElement.outerWidth(), height: this.placeholderElement.outerHeight() });}
}); $.extend($.ui.sortable, { getter: "serialize toArray", defaults: { items: '> *', zIndex: 1000
}
}); $.ui.plugin.add("sortable", "cursor", { start: function(e, ui) { var t = $('body'); if (t.css("cursor")) ui.options._cursor = t.css("cursor"); t.css("cursor", ui.options.cursor);}, stop: function(e, ui) { if (ui.options._cursor) $('body').css("cursor", ui.options._cursor);}
}); $.ui.plugin.add("sortable", "zIndex", { start: function(e, ui) { var t = ui.helper; if(t.css("zIndex")) ui.options._zIndex = t.css("zIndex"); t.css('zIndex', ui.options.zIndex);}, stop: function(e, ui) { if(ui.options._zIndex) $(ui.helper).css('zIndex', ui.options._zIndex);}
}); $.ui.plugin.add("sortable", "opacity", { start: function(e, ui) { var t = ui.helper; if(t.css("opacity")) ui.options._opacity = t.css("opacity"); t.css('opacity', ui.options.opacity);}, stop: function(e, ui) { if(ui.options._opacity) $(ui.helper).css('opacity', ui.options._opacity);}
}); $.ui.plugin.add("sortable", "revert", { stop: function(e, ui) { var self = ui.instance; self.cancelHelperRemoval = true; var cur = self.currentItem.offset(); var op = self.helper.offsetParent().offset(); if(ui.instance.options.zIndex) ui.helper.css('zIndex', ui.instance.options.zIndex); if(ui.instance.placeholder) ui.instance.placeholder.animate({ opacity: 'hide' }, parseInt(ui.options.revert, 10) || 500); ui.helper.animate({ left: cur.left - op.left - self.margins.left, top: cur.top - op.top - self.margins.top
}, parseInt(ui.options.revert, 10) || 500, function() { self.currentItem.css('visibility', 'visible'); window.setTimeout(function() { if(self.placeholder) self.placeholder.remove(); self.helper.remove(); if(ui.options._zIndex) ui.helper.css('zIndex', ui.options._zIndex);}, 50);});}
}); $.ui.plugin.add("sortable", "containment", { start: function(e, ui) { var o = ui.options; if((o.containment.left != undefined || o.containment.constructor == Array) && !o._containment) return; if(!o._containment) o._containment = o.containment; if(o._containment == 'parent') o._containment = this[0].parentNode; if(o._containment == 'sortable') o._containment = this[0]; if(o._containment == 'document') { o.containment = [ 0, 0, $(document).width(), ($(document).height() || document.body.parentNode.scrollHeight) ];} else { var ce = $(o._containment); var co = ce.offset(); o.containment = [ co.left, co.top, co.left+(ce.outerWidth() || ce[0].scrollWidth), co.top+(ce.outerHeight() || ce[0].scrollHeight) ];}
}, sort: function(e, ui) { var o = ui.options; var h = ui.helper; var c = o.containment; var self = ui.instance; var borderLeft = (parseInt(self.offsetParent.css("borderLeftWidth"), 10) || 0); var borderRight = (parseInt(self.offsetParent.css("borderRightWidth"), 10) || 0); var borderTop = (parseInt(self.offsetParent.css("borderTopWidth"), 10) || 0); var borderBottom = (parseInt(self.offsetParent.css("borderBottomWidth"), 10) || 0); if(c.constructor == Array) { if((self.position.absolute.left < c[0])) self.position.current.left = c[0] - self.offsets.parent.left - self.margins.left; if((self.position.absolute.top < c[1])) self.position.current.top = c[1] - self.offsets.parent.top - self.margins.top; if(self.position.absolute.left - c[2] + self.helperProportions.width >= 0) self.position.current.left = c[2] - self.offsets.parent.left - self.helperProportions.width - self.margins.left - borderLeft - borderRight; if(self.position.absolute.top - c[3] + self.helperProportions.height >= 0) self.position.current.top = c[3] - self.offsets.parent.top - self.helperProportions.height - self.margins.top - borderTop - borderBottom;} else { if((ui.position.left < c.left)) self.position.current.left = c.left; if((ui.position.top < c.top)) self.position.current.top = c.top; if(ui.position.left - self.offsetParent.innerWidth() + self.helperProportions.width + c.right + borderLeft + borderRight >= 0) self.position.current.left = self.offsetParent.innerWidth() - self.helperProportions.width - c.right - borderLeft - borderRight; if(ui.position.top - self.offsetParent.innerHeight() + self.helperProportions.height + c.bottom + borderTop + borderBottom >= 0) self.position.current.top = self.offsetParent.innerHeight() - self.helperProportions.height - c.bottom - borderTop - borderBottom;}
}
}); $.ui.plugin.add("sortable", "axis", { sort: function(e, ui) { var o = ui.options; if(o.constraint) o.axis = o.constraint; o.axis == 'x' ? ui.instance.position.current.top = ui.instance.originalPosition.top : ui.instance.position.current.left = ui.instance.originalPosition.left;}
}); $.ui.plugin.add("sortable", "scroll", { start: function(e, ui) { var o = ui.options; o.scrollSensitivity = o.scrollSensitivity || 20; o.scrollSpeed = o.scrollSpeed || 20; ui.instance.overflowY = function(el) { do { if((/auto|scroll/).test(el.css('overflow')) || (/auto|scroll/).test(el.css('overflow-y'))) return el; el = el.parent();} while (el[0].parentNode); return $(document);}(this); ui.instance.overflowX = function(el) { do { if((/auto|scroll/).test(el.css('overflow')) || (/auto|scroll/).test(el.css('overflow-x'))) return el; el = el.parent();} while (el[0].parentNode); return $(document);}(this); if(ui.instance.overflowY[0] != document && ui.instance.overflowY[0].tagName != 'HTML') ui.instance.overflowYstart = ui.instance.overflowY[0].scrollTop; if(ui.instance.overflowX[0] != document && ui.instance.overflowX[0].tagName != 'HTML') ui.instance.overflowXstart = ui.instance.overflowX[0].scrollLeft;}, sort: function(e, ui) { var o = ui.options; var i = ui.instance; if(i.overflowY[0] != document && i.overflowY[0].tagName != 'HTML') { if(i.overflowY[0].offsetHeight - (ui.position.top - i.overflowY[0].scrollTop + i.clickOffset.top) < o.scrollSensitivity)
i.overflowY[0].scrollTop = i.overflowY[0].scrollTop + o.scrollSpeed; if((ui.position.top - i.overflowY[0].scrollTop + i.clickOffset.top) < o.scrollSensitivity)
i.overflowY[0].scrollTop = i.overflowY[0].scrollTop - o.scrollSpeed;} else { if(e.pageY - $(document).scrollTop() < o.scrollSensitivity)
$(document).scrollTop($(document).scrollTop() - o.scrollSpeed); if($(window).height() - (e.pageY - $(document).scrollTop()) < o.scrollSensitivity)
$(document).scrollTop($(document).scrollTop() + o.scrollSpeed);}
if(i.overflowX[0] != document && i.overflowX[0].tagName != 'HTML') { if(i.overflowX[0].offsetWidth - (ui.position.left - i.overflowX[0].scrollLeft + i.clickOffset.left) < o.scrollSensitivity)
i.overflowX[0].scrollLeft = i.overflowX[0].scrollLeft + o.scrollSpeed; if((ui.position.top - i.overflowX[0].scrollLeft + i.clickOffset.left) < o.scrollSensitivity)
i.overflowX[0].scrollLeft = i.overflowX[0].scrollLeft - o.scrollSpeed;} else { if(e.pageX - $(document).scrollLeft() < o.scrollSensitivity)
$(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); if($(window).width() - (e.pageX - $(document).scrollLeft()) < o.scrollSensitivity)
$(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);}
i.offset = { left: i.mouse.start.left - i.originalPosition.left + (i.overflowXstart !== undefined ? i.overflowXstart - i.overflowX[0].scrollLeft : 0), top: i.mouse.start.top - i.originalPosition.top + (i.overflowYstart !== undefined ? i.overflowYstart - i.overflowX[0].scrollTop : 0)
};}
});})(jQuery); ;(function($) { $.widget("ui.tabs", { init: function() { var self = this; this.options.event += '.tabs'; $(this.element).bind('setData.tabs', function(event, key, value) { if ((/^selected/).test(key))
self.select(value); else { self.options[key] = value; self.tabify();}
}).bind('getData.tabs', function(event, key) { return self.options[key];}); this.tabify(true);}, length: function() { return this.$tabs.length;}, tabId: function(a) { return a.title && a.title.replace(/\s/g, '_').replace(/[^A-Za-z0-9\-_:\.]/g, '') || this.options.idPrefix + $.data(a);}, ui: function(tab, panel) { return { instance: this, options: this.options, tab: tab, panel: panel
};}, tabify: function(init) { this.$lis = $('li:has(a[href])', this.element); this.$tabs = this.$lis.map(function() { return $('a', this)[0];}); this.$panels = $([]); var self = this, o = this.options; this.$tabs.each(function(i, a) { if (a.hash && a.hash.replace('#', ''))
self.$panels = self.$panels.add(a.hash); else if ($(a).attr('href') != '#') { $.data(a, 'href.tabs', a.href); $.data(a, 'load.tabs', a.href); var id = self.tabId(a); a.href = '#' + id; var $panel = $('#' + id); if (!$panel.length) { $panel = $(o.panelTemplate).attr('id', id).addClass(o.panelClass)
.insertAfter( self.$panels[i - 1] || self.element ); $panel.data('destroy.tabs', true);}
self.$panels = self.$panels.add( $panel );}
else
o.disabled.push(i + 1);}); if (init) { $(this.element).hasClass(o.navClass) || $(this.element).addClass(o.navClass); this.$panels.each(function() { var $this = $(this); $this.hasClass(o.panelClass) || $this.addClass(o.panelClass);}); this.$tabs.each(function(i, a) { if (location.hash) { if (a.hash == location.hash) { o.selected = i; if ($.browser.msie || $.browser.opera) { var $toShow = $(location.hash), toShowId = $toShow.attr('id'); $toShow.attr('id', ''); setTimeout(function() { $toShow.attr('id', toShowId);}, 500);}
scrollTo(0, 0); return false;}
} else if (o.cookie) { var index = parseInt($.cookie('ui-tabs' + $.data(self.element)),10); if (index && self.$tabs[index]) { o.selected = index; return false;}
} else if ( self.$lis.eq(i).hasClass(o.selectedClass) ) { o.selected = i; return false;}
}); this.$panels.addClass(o.hideClass); this.$lis.removeClass(o.selectedClass); if (o.selected !== null) { this.$panels.eq(o.selected).show().removeClass(o.hideClass); this.$lis.eq(o.selected).addClass(o.selectedClass); var onShow = function() { $(self.element).triggerHandler('tabsshow', [self.ui(self.$tabs[o.selected], self.$panels[o.selected])], o.show);}; if ($.data(this.$tabs[o.selected], 'load.tabs'))
this.load(o.selected, onShow); else
onShow();}
o.disabled = $.unique(o.disabled.concat( $.map(this.$lis.filter('.' + o.disabledClass), function(n, i) { return self.$lis.index(n);} ) )).sort(); $(window).bind('unload', function() { self.$tabs.unbind('.tabs'); self.$lis = self.$tabs = self.$panels = null;});}
for (var i = 0, li; li = this.$lis[i]; i++)
$(li)[$.inArray(i, o.disabled) != -1 && !$(li).hasClass(o.selectedClass) ? 'addClass' : 'removeClass'](o.disabledClass); if (o.cache === false)
this.$tabs.removeData('cache.tabs'); var hideFx, showFx, baseFx = { 'min-width': 0, duration: 1 }, baseDuration = 'normal'; if (o.fx && o.fx.constructor == Array)
hideFx = o.fx[0] || baseFx, showFx = o.fx[1] || baseFx; else
hideFx = showFx = o.fx || baseFx; var resetCSS = { display: '', overflow: '', height: '' }; if (!$.browser.msie)
resetCSS.opacity = ''; function hideTab(clicked, $hide, $show) { $hide.animate(hideFx, hideFx.duration || baseDuration, function() { $hide.addClass(o.hideClass).css(resetCSS); if ($.browser.msie && hideFx.opacity)
$hide[0].style.filter = ''; if ($show)
showTab(clicked, $show, $hide);});}
function showTab(clicked, $show, $hide) { if (showFx === baseFx)
$show.css('display', 'block'); $show.animate(showFx, showFx.duration || baseDuration, function() { $show.removeClass(o.hideClass).css(resetCSS); if ($.browser.msie && showFx.opacity)
$show[0].style.filter = ''; $(self.element).triggerHandler('tabsshow', [self.ui(clicked, $show[0])], o.show);});}
function switchTab(clicked, $li, $hide, $show) { $li.addClass(o.selectedClass)
.siblings().removeClass(o.selectedClass); hideTab(clicked, $hide, $show);}
this.$tabs.unbind('.tabs').bind(o.event, function() { var $li = $(this).parents('li:eq(0)'), $hide = self.$panels.filter(':visible'), $show = $(this.hash); if (($li.hasClass(o.selectedClass) && !o.unselect) || $li.hasClass(o.disabledClass) || $(this).hasClass(o.loadingClass) || $(self.element).triggerHandler('tabsselect', [self.ui(this, $show[0])], o.select) === false ) { this.blur(); return false;}
self.options.selected = self.$tabs.index(this); if (o.unselect) { if ($li.hasClass(o.selectedClass)) { self.options.selected = null; $li.removeClass(o.selectedClass); self.$panels.stop(); hideTab(this, $hide); this.blur(); return false;} else if (!$hide.length) { self.$panels.stop(); var a = this; self.load(self.$tabs.index(this), function() { $li.addClass(o.selectedClass).addClass(o.unselectClass); showTab(a, $show);}); this.blur(); return false;}
}
if (o.cookie)
$.cookie('ui-tabs' + $.data(self.element), self.options.selected, o.cookie); self.$panels.stop(); if ($show.length) { var a = this; self.load(self.$tabs.index(this), $hide.length ?
function() { switchTab(a, $li, $hide, $show);} :
function() { $li.addClass(o.selectedClass); showTab(a, $show);} );} else
throw 'jQuery UI Tabs: Mismatching fragment identifier.'; if ($.browser.msie)
this.blur(); return false;}); if (!(/^click/).test(o.event))
this.$tabs.bind('click.tabs', function() { return false;});}, add: function(url, label, index) { if (index == undefined)
index = this.$tabs.length; var o = this.options; var $li = $(o.tabTemplate.replace(/#\{href\}/, url).replace(/#\{label\}/, label)); $li.data('destroy.tabs', true); var id = url.indexOf('#') == 0 ? url.replace('#', '') : this.tabId( $('a:first-child', $li)[0] ); var $panel = $('#' + id); if (!$panel.length) { $panel = $(o.panelTemplate).attr('id', id)
.addClass(o.panelClass).addClass(o.hideClass); $panel.data('destroy.tabs', true);}
if (index >= this.$lis.length) { $li.appendTo(this.element); $panel.appendTo(this.element[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.$tabs.length == 1) { $li.addClass(o.selectedClass); $panel.removeClass(o.hideClass); var href = $.data(this.$tabs[0], 'load.tabs'); if (href)
this.load(index, href);}
$(this.element).triggerHandler('tabsadd', [this.ui(this.$tabs[index], this.$panels[index])], o.add );}, remove: function(index) { var o = this.options, $li = this.$lis.eq(index).remove(), $panel = this.$panels.eq(index).remove(); if ($li.hasClass(o.selectedClass) && this.$tabs.length > 1)
this.select(index + (index + 1 < this.$tabs.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.element).triggerHandler('tabsremove', [this.ui($li.find('a')[0], $panel[0])], o.remove );}, enable: function(index) { var o = this.options; if ($.inArray(index, o.disabled) == -1)
return; var $li = this.$lis.eq(index).removeClass(o.disabledClass); if ($.browser.safari) { $li.css('display', 'inline-block'); setTimeout(function() { $li.css('display', 'block');}, 0);}
o.disabled = $.grep(o.disabled, function(n, i) { return n != index;}); $(this.element).triggerHandler('tabsenable', [this.ui(this.$tabs[index], this.$panels[index])], o.enable );}, disable: function(index) { var self = this, o = this.options; if (index != o.selected) { this.$lis.eq(index).addClass(o.disabledClass); o.disabled.push(index); o.disabled.sort(); $(this.element).triggerHandler('tabsdisable', [this.ui(this.$tabs[index], this.$panels[index])], o.disable );}
}, select: function(index) { if (typeof index == 'string')
index = this.$tabs.index( this.$tabs.filter('[href$=' + index + ']')[0] ); this.$tabs.eq(index).trigger(this.options.event);}, load: function(index, callback) { var self = this, o = this.options, $a = this.$tabs.eq(index), a = $a[0], bypassCache = callback == undefined || callback === false, url = $a.data('load.tabs'); callback = callback || function() {}; if (!url || ($.data(a, 'cache.tabs') && !bypassCache)) { callback(); return;}
if (o.spinner) { var $span = $('span', a); $span.data('label.tabs', $span.html()).html('<em>' + o.spinner + '</em>');}
var finish = function() { self.$tabs.filter('.' + o.loadingClass).each(function() { $(this).removeClass(o.loadingClass); if (o.spinner) { var $span = $('span', this); $span.html($span.data('label.tabs')).removeData('label.tabs');}
}); self.xhr = null;}; var ajaxOptions = $.extend({}, o.ajaxOptions, { url: url, success: function(r, s) { $(a.hash).html(r); finish(); if (o.cache)
$.data(a, 'cache.tabs', true); $(self.element).triggerHandler('tabsload', [self.ui(self.$tabs[index], self.$panels[index])], o.load ); o.ajaxOptions.success && o.ajaxOptions.success(r, s); callback();}
}); if (this.xhr) { this.xhr.abort(); finish();}
$a.addClass(o.loadingClass); setTimeout(function() { self.xhr = $.ajax(ajaxOptions);}, 0);}, url: function(index, url) { this.$tabs.eq(index).removeData('cache.tabs').data('load.tabs', url);}, destroy: function() { var o = this.options; $(this.element).unbind('.tabs')
.removeClass(o.navClass).removeData('tabs'); this.$tabs.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.add(this.$panels).each(function() { if ($.data(this, 'destroy.tabs'))
$(this).remove(); else
$(this).removeClass([o.selectedClass, o.unselectClass, o.disabledClass, o.panelClass, o.hideClass].join(' '));});}
}); $.ui.tabs.defaults = { selected: 0, unselect: false, event: 'click', disabled: [], cookie: null, spinner: 'Loading&#8230;', cache: false, idPrefix: 'ui-tabs-', ajaxOptions: {}, fx: null, tabTemplate: '<li><a href="#{href}"><span>#{label}</span></a></li>', panelTemplate: '<div></div>', navClass: 'ui-tabs-nav', selectedClass: 'ui-tabs-selected', unselectClass: 'ui-tabs-unselect', disabledClass: 'ui-tabs-disabled', panelClass: 'ui-tabs-panel', hideClass: 'ui-tabs-hide', loadingClass: 'ui-tabs-loading'
}; $.ui.tabs.getter = "length"; $.extend($.ui.tabs.prototype, { rotation: null, rotate: function(ms, continuing) { continuing = continuing || false; var self = this, t = this.options.selected; function start() { self.rotation = setInterval(function() { t = ++t < self.$tabs.length ? t : 0; self.select(t);}, ms);}
function stop(e) { if (!e || e.clientX) { clearInterval(self.rotation);}
}
if (ms) { start(); if (!continuing)
this.$tabs.bind(this.options.event, stop); else
this.$tabs.bind(this.options.event, function() { stop(); t = self.options.selected; start();});}
else { stop(); this.$tabs.unbind(this.options.event, stop);}
}
});})(jQuery);
