;
(function($)
{
	$.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-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(el)
	{
		$(el).attr('unselectable', 'on').css('MozUserSelect', 'none');
	},enableSelection:function(el)
	{
		$(el).attr('unselectable', 'off').css('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).triggerHandler("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);
	}
	$.widget = function(name, prototype)
	{
		var namespace = name.split(".")[0];
		name = name.split(".")[1];
		$.fn[name] = function(options)
		{
			var isMethodCall = (typeof options == 'string'),args = Array.prototype.slice.call(arguments, 1);
			if (isMethodCall && getter(namespace, name, options))
			{
				var instance = $.data(this[0], name);
				return(instance ? instance[options].apply(instance, args) : undefined);
			}
			return this.each(function()
			{
				var instance = $.data(this, name);
				if (isMethodCall && instance && $.isFunction(instance[options]))
				{
					instance[options].apply(instance, args);
				}
				else if (!isMethodCall)
				{
					$.data(this, name, new $[namespace][name](this, options));
				}
			});
		};
		$[namespace][name] = function(element, options)
		{
			var self = this;
			this.widgetName = name;
			this.widgetBaseClass = namespace + '-' + name;
			this.options = $.extend({}, $.widget.defaults, $[namespace][name].defaults, options);
			this.element = $(element).bind('setData.' + name, function(e, key, value)
			{
				return self.setData(key, value);
			}).bind('getData.' + name, function(e, key)
			{
				return self.getData(key);
			}).bind('remove', function()
			{
				return self.destroy();
			});
			this.init();
		};
		$[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);
	};
	$.widget.prototype = {init:function()
	{
	},destroy:function()
	{
		this.element.removeData(this.widgetName);
	},getData:function(key)
	{
		return this.options[key];
	},setData:function(key, value)
	{
		this.options[key] = value;
		if (key == 'disabled')
		{
			this.element[value ? 'addClass' : 'removeClass'](this.widgetBaseClass + '-disabled');
		}
	},enable:function()
	{
		this.setData('disabled', false);
	},disable:function()
	{
		this.setData('disabled', true);
	}};
	$.widget.defaults = {disabled:false};
	$.ui.mouse = {mouseInit:function()
	{
		var self = this;
		this.element.bind('mousedown.' + this.widgetName, function(e)
		{
			return self.mouseDown(e);
		});
		if ($.browser.msie)
		{
			this._mouseUnselectable = this.element.attr('unselectable');
			this.element.attr('unselectable', 'on');
		}
		this.started = false;
	},mouseDestroy:function()
	{
		this.element.unbind('.' + this.widgetName);
		($.browser.msie && this.element.attr('unselectable', this._mouseUnselectable));
	},mouseDown:function(e)
	{
		(this._mouseStarted && this.mouseUp(e));
		this._mouseDownEvent = e;
		var self = this,btnIsLeft = (e.which == 1),elIsCancel = (typeof this.options.cancel == "string" ? $(e.target).parents().add(e.target).filter(this.options.cancel).length : false);
		if (!btnIsLeft || elIsCancel || !this.mouseCapture(e))
		{
			return true;
		}
		this._mouseDelayMet = !this.options.delay;
		if (!this._mouseDelayMet)
		{
			this._mouseDelayTimer = setTimeout(function()
			{
				self._mouseDelayMet = true;
			}, this.options.delay);
		}
		if (this.mouseDistanceMet(e) && this.mouseDelayMet(e))
		{
			this._mouseStarted = (this.mouseStart(e) !== false);
			if (!this._mouseStarted)
			{
				e.preventDefault();
				return true;
			}
		}
		this._mouseMoveDelegate = function(e)
		{
			return self.mouseMove(e);
		};
		this._mouseUpDelegate = function(e)
		{
			return self.mouseUp(e);
		};
		$(document).bind('mousemove.' + this.widgetName, this._mouseMoveDelegate).bind('mouseup.' + this.widgetName, this._mouseUpDelegate);
		return false;
	},mouseMove:function(e)
	{
		if ($.browser.msie && !e.button)
		{
			return this.mouseUp(e);
		}
		if (this._mouseStarted)
		{
			this.mouseDrag(e);
			return false;
		}
		if (this.mouseDistanceMet(e) && this.mouseDelayMet(e))
		{
			this._mouseStarted = (this.mouseStart(this._mouseDownEvent, e) !== false);
			(this._mouseStarted ? this.mouseDrag(e) : this.mouseUp(e));
		}
		return!this._mouseStarted;
	},mouseUp:function(e)
	{
		$(document).unbind('mousemove.' + this.widgetName, this._mouseMoveDelegate).unbind('mouseup.' + this.widgetName, this._mouseUpDelegate);
		if (this._mouseStarted)
		{
			this._mouseStarted = false;
			this.mouseStop(e);
		}
		return false;
	},mouseDistanceMet:function(e)
	{
		return(Math.max(Math.abs(this._mouseDownEvent.pageX - e.pageX), Math.abs(this._mouseDownEvent.pageY - e.pageY)) >= this.options.distance);
	},mouseDelayMet:function(e)
	{
		return this._mouseDelayMet;
	},mouseStart:function(e)
	{
	},mouseDrag:function(e)
	{
	},mouseStop:function(e)
	{
	},mouseCapture:function(e)
	{
		return true;
	}};
	$.ui.mouse.defaults = {cancel:null,distance:1,delay:0};
})(jQuery);
(function($)
{
	$.widget("ui.draggable", $.extend({}, $.ui.mouse, {init:function()
	{
		var o = this.options;
		if (o.helper == 'original' && !(/(relative|absolute|fixed)/).test(this.element.css('position')))
			this.element.css('position', 'relative');
		this.element.addClass('ui-draggable');
		(o.disabled && this.element.addClass('ui-draggable-disabled'));
		this.mouseInit();
	},mouseStart:function(e)
	{
		var o = this.options;
		if (this.helper || o.disabled || $(e.target).is('.ui-resizable-handle'))return false;
		var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;
		$(this.options.handle, this.element).find("*").andSelf().each(function()
		{
			if (this == e.target)handle = true;
		});
		if (!handle)return false;
		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[0] != this.element[0] && !(/(fixed|absolute)/).test(this.helper.css("position")))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();
		if (this.offsetParent[0] == document.body && $.browser.mozilla)po = {top:0,left:0};
		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 + this.margins.left;
			if (o.cursorAt.right != undefined)this.offset.click.left = this.helperProportions.width - o.cursorAt.right + this.margins.left;
			if (o.cursorAt.top != undefined)this.offset.click.top = o.cursorAt.top + this.margins.top;
			if (o.cursorAt.bottom != undefined)this.offset.click.top = this.helperProportions.height - o.cursorAt.bottom + this.margins.top;
		}
		if (o.containment)
		{
			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.offset.relative.left - this.offset.parent.left - this.helperProportions.width - this.margins.left - (parseInt(this.element.css("marginRight"), 10) || 0),($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.offset.relative.top - this.offset.parent.top - this.helperProportions.height - this.margins.top - (parseInt(this.element.css("marginBottom"), 10) || 0)];
			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);
		this.helper.addClass("ui-draggable-dragging");
		this.mouseDrag(e);
		return true;
	},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" || (this.cssPosition == "absolute" && this.offsetParent[0] == document.body) ? 0 : this.offsetParent[0].scrollTop) * mod
				+ (this.cssPosition == "fixed" ? $(document).scrollTop() : 0) * mod
				+ this.margins.top * mod),left:(pos.left
				+ this.offset.relative.left * mod
				+ this.offset.parent.left * mod
				- (this.cssPosition == "fixed" || (this.cssPosition == "absolute" && this.offsetParent[0] == document.body) ? 0 : this.offsetParent[0].scrollLeft) * mod
				+ (this.cssPosition == "fixed" ? $(document).scrollLeft() : 0) * 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" || (this.cssPosition == "absolute" && this.offsetParent[0] == document.body) ? 0 : this.offsetParent[0].scrollTop)
				- (this.cssPosition == "fixed" ? $(document).scrollTop() : 0)),left:(e.pageX
				- this.offset.click.left
				- this.offset.relative.left
				- this.offset.parent.left
				+ (this.cssPosition == "fixed" || (this.cssPosition == "absolute" && this.offsetParent[0] == document.body) ? 0 : this.offsetParent[0].scrollLeft)
				- (this.cssPosition == "fixed" ? $(document).scrollLeft() : 0))};
		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;
	},mouseDrag: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 != "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, e);
		return false;
	},mouseStop:function(e)
	{
		var dropped = false;
		if ($.ui.ddmanager && !this.options.dropBehaviour)
			var dropped = $.ui.ddmanager.drop(this, e);
		if ((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true)
		{
			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()
	{
		this.helper.removeClass("ui-draggable-dragging");
		if (this.options.helper != 'original' && !this.cancelHelperRemoval)this.helper.remove();
		this.helper = null;
		this.cancelHelperRemoval = false;
	},plugins:{},uiHash: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.uiHash()]);
		if (n == "drag")this.positionAbs = this.convertPositionTo("absolute");
		return this.element.triggerHandler(n == "drag" ? n : "drag" + n, [e,this.uiHash()], this.options[n]);
	},destroy:function()
	{
		if (!this.element.data('draggable'))return;
		this.element.removeData("draggable").unbind(".draggable").removeClass('ui-draggable');
		this.mouseDestroy();
	}}));
	$.extend($.ui.draggable, {defaults:{appendTo:"parent",axis:false,cancel:":input",delay:0,distance:1,helper:"original"}});
	$.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.sortables = [];
		$(ui.options.connectToSortable).each(function()
		{
			if ($.data(this, 'sortable'))
			{
				var sortable = $.data(this, 'sortable');
				inst.sortables.push({instance:sortable,shouldRevert:sortable.options.revert});
				sortable.refreshItems();
				sortable.propagate("activate", e, inst);
			}
		});
	},stop:function(e, ui)
	{
		var inst = $(this).data("draggable");
		$.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(e);
				this.instance.element.triggerHandler("sortreceive", [e,$.extend(this.instance.ui(), {sender:inst.element})], this.instance.options["receive"]);
				this.instance.options.helper = this.instance.options._helper;
			}
			else
			{
				this.instance.propagate("deactivate", e, inst);
			}
		});
	},drag:function(e, ui)
	{
		var inst = $(this).data("draggable"),self = this;
		var checkPos = function(o)
		{
			var l = o.left,r = l + o.width,t = o.top,b = t + o.height;
			return(l < (this.positionAbs.left + this.offset.click.left) && (this.positionAbs.left + this.offset.click.left) < r && t < (this.positionAbs.top + this.offset.click.top) && (this.positionAbs.top + this.offset.click.top) < b);
		};
		$.each(inst.sortables, function(i)
		{
			if (checkPos.call(inst, 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];
					};
					e.target = this.instance.currentItem[0];
					this.instance.mouseCapture(e, true);
					this.instance.mouseStart(e, 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.propagate("toSortable", e);
				}
				if (this.instance.currentItem)this.instance.mouseDrag(e);
			}
			else
			{
				if (this.instance.isOver)
				{
					this.instance.isOver = 0;
					this.instance.cancelHelperRemoval = true;
					this.instance.options.revert = false;
					this.instance.mouseStop(e, true);
					this.instance.options.helper = this.instance.options._helper;
					this.instance.currentItem.remove();
					if (this.instance.placeholder)this.instance.placeholder.remove();
					inst.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"), 10) || ui.options.stack.min) - (parseInt($(b).css("zIndex"), 10) || 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($)
{
	$.widget("ui.droppable", {init:function()
	{
		this.element.addClass("ui-droppable");
		this.isover = 0;
		this.isout = 1;
		var o = this.options,accept = o.accept;
		o = $.extend(o, {accept:o.accept && o.accept.constructor == Function ? o.accept : function(d)
		{
			return $(d).is(accept);
		}});
		this.proportions = {width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};
		$.ui.ddmanager.droppables.push(this);
	},plugins:{},ui:function(c)
	{
		return{draggable:(c.currentItem || c.element),helper:c.helper,position:c.position,absolutePosition:c.positionAbs,options:this.options,element:this.element};
	},destroy:function()
	{
		var drop = $.ui.ddmanager.droppables;
		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");
	},over:function(e)
	{
		var draggable = $.ui.ddmanager.current;
		if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0])return;
		if (this.options.accept.call(this.element, (draggable.currentItem || draggable.element)))
		{
			$.ui.plugin.call(this, 'over', [e,this.ui(draggable)]);
			this.element.triggerHandler("dropover", [e,this.ui(draggable)], this.options.over);
		}
	},out:function(e)
	{
		var draggable = $.ui.ddmanager.current;
		if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0])return;
		if (this.options.accept.call(this.element, (draggable.currentItem || draggable.element)))
		{
			$.ui.plugin.call(this, 'out', [e,this.ui(draggable)]);
			this.element.triggerHandler("dropout", [e,this.ui(draggable)], this.options.out);
		}
	},drop:function(e, 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(".ui-droppable").not(".ui-draggable-dragging").each(function()
		{
			var inst = $.data(this, 'droppable');
			if (inst.options.greedy && $.ui.intersect(draggable, $.extend(inst, {offset:inst.element.offset()}), inst.options.tolerance))
			{
				childrenIntersection = true;
				return false;
			}
		});
		if (childrenIntersection)return false;
		if (this.options.accept.call(this.element, (draggable.currentItem || draggable.element)))
		{
			$.ui.plugin.call(this, 'drop', [e,this.ui(draggable)]);
			this.element.triggerHandler("drop", [e,this.ui(draggable)], this.options.drop);
			return true;
		}
		return false;
	},activate:function(e)
	{
		var draggable = $.ui.ddmanager.current;
		$.ui.plugin.call(this, 'activate', [e,this.ui(draggable)]);
		if (draggable)this.element.triggerHandler("dropactivate", [e,this.ui(draggable)], this.options.activate);
	},deactivate:function(e)
	{
		var draggable = $.ui.ddmanager.current;
		$.ui.plugin.call(this, 'deactivate', [e,this.ui(draggable)]);
		if (draggable)this.element.triggerHandler("dropdeactivate", [e,this.ui(draggable)], this.options.deactivate);
	}});
	$.extend($.ui.droppable, {defaults:{disabled:false,tolerance:'intersect'}});
	$.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':return(l < ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left) && ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left) < r && t < ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top) && ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top) < b);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:[],prepareOffsets:function(t, e)
	{
		var m = $.ui.ddmanager.droppables;
		var type = e ? e.type : null;
		for (var i = 0; i < m.length; i++)
		{
			if (m[i].options.disabled || (t && !m[i].options.accept.call(m[i].element, (t.currentItem || t.element))))continue;
			m[i].visible = m[i].element.css("display") != "none";
			if (!m[i].visible)continue;
			m[i].offset = m[i].element.offset();
			m[i].proportions = {width:m[i].element[0].offsetWidth,height:m[i].element[0].offsetHeight};
			if (type == "dragstart" || type == "sortactivate")m[i].activate.call(m[i], e);
		}
	},drop:function(draggable, e)
	{
		var dropped = false;
		$.each($.ui.ddmanager.droppables, function()
		{
			if (!this.options)return;
			if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))
				dropped = this.drop.call(this, e);
			if (!this.options.disabled && this.visible && this.options.accept.call(this.element, (draggable.currentItem || draggable.element)))
			{
				this.isout = 1;
				this.isover = 0;
				this.deactivate.call(this, e);
			}
		});
		return dropped;
	},drag:function(draggable, e)
	{
		if (draggable.options.refreshPositions)$.ui.ddmanager.prepareOffsets(draggable, e);
		$.each($.ui.ddmanager.droppables, 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('.ui-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, e);
			}
			this[c] = 1;
			this[c == 'isout' ? 'isover' : 'isout'] = 0;
			this[c == "isover" ? "over" : "out"].call(this, e);
			if (parentInstance && c == 'isout')
			{
				parentInstance['isout'] = 0;
				parentInstance['isover'] = 1;
				parentInstance.over.call(parentInstance, e);
			}
		});
	}};
	$.ui.plugin.add("droppable", "activeClass", {activate:function(e, ui)
	{
		$(this).addClass(ui.options.activeClass);
	},deactivate:function(e, ui)
	{
		$(this).removeClass(ui.options.activeClass);
	},drop:function(e, ui)
	{
		$(this).removeClass(ui.options.activeClass);
	}});
	$.ui.plugin.add("droppable", "hoverClass", {over:function(e, ui)
	{
		$(this).addClass(ui.options.hoverClass);
	},out:function(e, ui)
	{
		$(this).removeClass(ui.options.hoverClass);
	},drop:function(e, ui)
	{
		$(this).removeClass(ui.options.hoverClass);
	}});
})(jQuery);
(function($)
{
	$.widget("ui.resizable", $.extend({}, $.ui.mouse, {init:function()
	{
		var self = this,o = this.options;
		var elpos = this.element.css('position');
		this.originalElement = this.element;
		this.element.addClass("ui-resizable").css({position:/static/.test(elpos) ? 'relative' : elpos});
		$.extend(o, {_aspectRatio:!!(o.aspectRatio),helper:o.helper || o.ghost || o.animate ? o.helper || 'proxy' : null,knobHandles:o.knobHandles === true ? 'ui-resizable-knob-handle' : o.knobHandles});
		var aBorder = '1px solid #DEDEDE';
		o.defaultTheme = {'ui-resizable':{display:'block'},'ui-resizable-handle':{position:'absolute',background:'#F2F2F2',fontSize:'0.1px'},'ui-resizable-n':{cursor:'n-resize',height:'4px',left:'0px',right:'0px',borderTop:aBorder},'ui-resizable-s':{cursor:'s-resize',height:'4px',left:'0px',right:'0px',borderBottom:aBorder},'ui-resizable-e':{cursor:'e-resize',width:'4px',top:'0px',bottom:'0px',borderRight:aBorder},'ui-resizable-w':{cursor:'w-resize',width:'4px',top:'0px',bottom:'0px',borderLeft:aBorder},'ui-resizable-se':{cursor:'se-resize',width:'4px',height:'4px',borderRight:aBorder,borderBottom:aBorder},'ui-resizable-sw':{cursor:'sw-resize',width:'4px',height:'4px',borderBottom:aBorder,borderLeft:aBorder},'ui-resizable-ne':{cursor:'ne-resize',width:'4px',height:'4px',borderRight:aBorder,borderTop:aBorder},'ui-resizable-nw':{cursor:'nw-resize',width:'4px',height:'4px',borderLeft:aBorder,borderTop:aBorder}};
		o.knobTheme = {'ui-resizable-handle':{background:'#F2F2F2',border:'1px solid #808080',height:'8px',width:'8px'},'ui-resizable-n':{cursor:'n-resize',top:'0px',left:'45%'},'ui-resizable-s':{cursor:'s-resize',bottom:'0px',left:'45%'},'ui-resizable-e':{cursor:'e-resize',right:'0px',top:'45%'},'ui-resizable-w':{cursor:'w-resize',left:'0px',top:'45%'},'ui-resizable-se':{cursor:'se-resize',right:'0px',bottom:'0px'},'ui-resizable-sw':{cursor:'sw-resize',left:'0px',bottom:'0px'},'ui-resizable-nw':{cursor:'nw-resize',left:'0px',top:'0px'},'ui-resizable-ne':{cursor:'ne-resize',right:'0px',top:'0px'}};
		o._nodeName = this.element[0].nodeName;
		if (o._nodeName.match(/canvas|textarea|input|select|button|img/i))
		{
			var el = this.element;
			if (/relative/.test(el.css('position')) && $.browser.opera)
				el.css({position:'relative',top:'auto',left:'auto'});
			el.wrap($('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:el.css('position'),width:el.outerWidth(),height:el.outerHeight(),top:el.css('top'),left:el.css('left')}));
			var oel = this.element;
			this.element = this.element.parent();
			this.element.data('resizable', this);
			this.element.css({marginLeft:oel.css("marginLeft"),marginTop:oel.css("marginTop"),marginRight:oel.css("marginRight"),marginBottom:oel.css("marginBottom")});
			oel.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});
			if ($.browser.safari && o.preventDefault)oel.css('resize', 'none');
			o.proportionallyResize = oel.css({position:'static',zoom:1,display:'block'});
			this.element.css({margin:oel.css('margin')});
			this._proportionallyResize();
		}
		if (!o.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 (o.handles.constructor == String)
		{
			o.zIndex = o.zIndex || 1000;
			if (o.handles == 'all')o.handles = 'n,e,s,w,se,sw,ne,nw';
			var n = o.handles.split(",");
			o.handles = {};
			var insertionsDefault = {handle:'position: absolute; display: none; overflow:hidden;',n:'top: 0pt; width:100%;',e:'right: 0pt; height:100%;',s:'bottom: 0pt; width:100%;',w:'left: 0pt; height:100%;',se:'bottom: 0pt; right: 0px;',sw:'bottom: 0pt; left: 0px;',ne:'top: 0pt; right: 0px;',nw:'top: 0pt; left: 0px;'};
			for (var i = 0; i < n.length; i++)
			{
				var handle = $.trim(n[i]),dt = o.defaultTheme,hname = 'ui-resizable-' + handle,loadDefault = !$.ui.css(hname) && !o.knobHandles,userKnobClass = $.ui.css('ui-resizable-knob-handle'),allDefTheme = $.extend(dt[hname], dt['ui-resizable-handle']),allKnobTheme = $.extend(o.knobTheme[hname], !userKnobClass ? o.knobTheme['ui-resizable-handle'] : {});
				var applyZIndex = /sw|se|ne|nw/.test(handle) ? {zIndex:++o.zIndex} : {};
				var defCss = (loadDefault ? insertionsDefault[handle] : ''),axis = $(['<div class="ui-resizable-handle ',hname,'" style="',defCss,insertionsDefault.handle,'"></div>'].join('')).css(applyZIndex);
				o.handles[handle] = '.ui-resizable-' + handle;
				this.element.append(axis.css(loadDefault ? allDefTheme : {}).css(o.knobHandles ? allKnobTheme : {}).addClass(o.knobHandles ? 'ui-resizable-knob-handle' : '').addClass(o.knobHandles));
			}
			if (o.knobHandles)this.element.addClass('ui-resizable-knob').css(!$.ui.css('ui-resizable-knob') ? {} : {});
		}
		this._renderAxis = function(target)
		{
			target = target || this.element;
			for (var i in o.handles)
			{
				if (o.handles[i].constructor == String)
					o.handles[i] = $(o.handles[i], this.element).show();
				if (o.transparent)
					o.handles[i].css({opacity:0});
				if (this.element.is('.ui-wrapper') && o._nodeName.match(/textarea|input|select|button/i))
				{
					var axis = $(o.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("");
					if (!o.transparent)
						target.css(padPos, padWrapper);
					this._proportionallyResize();
				}
				if (!$(o.handles[i]).length)continue;
			}
		};
		this._renderAxis(this.element);
		o._handles = $('.ui-resizable-handle', self.element);
		if (o.disableSelection)
			o._handles.each(function(i, e)
			{
				$.ui.disableSelection(e);
			});
		o._handles.mouseover(function()
		{
			if (!o.resizing)
			{
				if (this.className)
					var axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
				self.axis = o.axis = axis && axis[1] ? axis[1] : 'se';
			}
		});
		if (o.autoHide)
		{
			o._handles.hide();
			$(self.element).addClass("ui-resizable-autohide").hover(function()
			{
				$(this).removeClass("ui-resizable-autohide");
				o._handles.show();
			}, function()
			{
				if (!o.resizing)
				{
					$(this).addClass("ui-resizable-autohide");
					o._handles.hide();
				}
			});
		}
		this.mouseInit();
	},plugins:{},ui:function()
	{
		return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,options:this.options,originalSize:this.originalSize,originalPosition:this.originalPosition};
	},propagate:function(n, e)
	{
		$.ui.plugin.call(this, n, [e,this.ui()]);
		if (n != "resize")this.element.triggerHandler(["resize",n].join(""), [e,this.ui()], this.options[n]);
	},destroy:function()
	{
		var el = this.element,wrapped = el.children(".ui-resizable").get(0);
		this.mouseDestroy();
		var _destroy = function(exp)
		{
			$(exp).removeClass("ui-resizable ui-resizable-disabled").removeData("resizable").unbind(".resizable").find('.ui-resizable-handle').remove();
		};
		_destroy(el);
		if (el.is('.ui-wrapper') && wrapped)
		{
			el.parent().append($(wrapped).css({position:el.css('position'),width:el.outerWidth(),height:el.outerHeight(),top:el.css('top'),left:el.css('left')})).end().remove();
			_destroy(wrapped);
		}
	},mouseStart:function(e)
	{
		if (this.options.disabled)return false;
		var handle = false;
		for (var i in this.options.handles)
		{
			if ($(this.options.handles[i])[0] == e.target)handle = true;
		}
		if (!handle)return false;
		var o = this.options,iniPos = this.element.position(),el = this.element,num = function(v)
		{
			return parseInt(v, 10) || 0;
		},ie6 = $.browser.msie && $.browser.version < 7;
		o.resizing = true;
		o.documentScroll = {top:$(document).scrollTop(),left:$(document).scrollLeft()};
		if (el.is('.ui-draggable') || (/absolute/).test(el.css('position')))
		{
			var sOffset = $.browser.msie && !o.containment && (/absolute/).test(el.css('position')) && !(/relative/).test(el.parent().css('position'));
			var dscrollt = sOffset ? o.documentScroll.top : 0,dscrolll = sOffset ? o.documentScroll.left : 0;
			el.css({position:'absolute',top:(iniPos.top + dscrollt),left:(iniPos.left + dscrolll)});
		}
		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 = o.helper || ie6 ? {width:el.outerWidth(),height:el.outerHeight()} : {width:el.width(),height:el.height()};
		this.originalSize = o.helper || ie6 ? {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:e.pageX,top:e.pageY};
		o.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.height / this.originalSize.width) || 1);
		if (o.preserveCursor)
			$('body').css('cursor', this.axis + '-resize');
		this.propagate("start", e);
		return true;
	},mouseDrag:function(e)
	{
		var el = this.helper,o = this.options,props = {},self = this,smp = this.originalMousePosition,a = this.axis;
		var dx = (e.pageX - smp.left) || 0,dy = (e.pageY - smp.top) || 0;
		var trigger = this._change[a];
		if (!trigger)return false;
		var data = trigger.apply(this, [e,dx,dy]),ie6 = $.browser.msie && $.browser.version < 7,csdif = this.sizeDiff;
		if (o._aspectRatio || e.shiftKey)
			data = this._updateRatio(data, e);
		data = this._respectSize(data, e);
		this.propagate("resize", e);
		el.css({top:this.position.top + "px",left:this.position.left + "px",width:this.size.width + "px",height:this.size.height + "px"});
		if (!o.helper && o.proportionallyResize)
			this._proportionallyResize();
		this._updateCache(data);
		this.element.triggerHandler("resize", [e,this.ui()], this.options["resize"]);
		return false;
	},mouseStop:function(e)
	{
		this.options.resizing = false;
		var o = this.options,num = function(v)
		{
			return parseInt(v, 10) || 0;
		},self = this;
		if (o.helper)
		{
			var pr = o.proportionallyResize,ista = pr && (/textarea/i).test(pr.get(0).nodeName),soffseth = ista && $.ui.hasScroll(pr.get(0), 'left') ? 0 : self.sizeDiff.height,soffsetw = ista ? 0 : self.sizeDiff.width;
			var s = {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;
			if (!o.animate)
				this.element.css($.extend(s, {top:top,left:left}));
			if (o.helper && !o.animate)this._proportionallyResize();
		}
		if (o.preserveCursor)
			$('body').css('cursor', 'auto');
		this.propagate("stop", e);
		if (o.helper)this.helper.remove();
		return false;
	},_updateCache:function(data)
	{
		var o = this.options;
		this.offset = this.helper.offset();
		if (data.left)this.position.left = data.left;
		if (data.top)this.position.top = data.top;
		if (data.height)this.size.height = data.height;
		if (data.width)this.size.width = data.width;
	},_updateRatio:function(data, e)
	{
		var o = this.options,cpos = this.position,csize = this.size,a = this.axis;
		if (data.height)data.width = (csize.height / o.aspectRatio);
		else if (data.width)data.height = (csize.width * o.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, e)
	{
		var el = this.helper,o = this.options,pRatio = o._aspectRatio || e.shiftKey,a = this.axis,ismaxw = data.width && o.maxWidth && o.maxWidth < data.width,ismaxh = data.height && o.maxHeight && o.maxHeight < data.height,isminw = data.width && o.minWidth && o.minWidth > data.width,isminh = 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 (!o.proportionallyResize)return;
		var prel = o.proportionallyResize,el = this.helper || this.element;
		if (!o.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')];
			o.borderDif = $.map(b, function(v, i)
			{
				var border = parseInt(v, 10) || 0,padding = parseInt(p[i], 10) || 0;
				return border + padding;
			});
		}
		prel.css({height:(el.height() - o.borderDif[0] - o.borderDif[2]) + "px",width:(el.width() - o.borderDif[1] - o.borderDif[3]) + "px"});
	},_renderProxy:function()
	{
		var el = this.element,o = this.options;
		this.elementOffset = el.offset();
		if (o.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(o.helper).css({width:el.outerWidth() + pxyoffset,height:el.outerHeight() + pxyoffset,position:'absolute',left:this.elementOffset.left - ie6offset + 'px',top:this.elementOffset.top - ie6offset + 'px',zIndex:++o.zIndex});
			this.helper.appendTo("body");
			if (o.disableSelection)
				$.ui.disableSelection(this.helper.get(0));
		}
		else
		{
			this.helper = el;
		}
	},_change:{e:function(e, dx, dy)
	{
		return{width:this.originalSize.width + dx};
	},w:function(e, dx, dy)
	{
		var o = this.options,cs = this.originalSize,sp = this.originalPosition;
		return{left:sp.left + dx,width:cs.width - dx};
	},n:function(e, dx, dy)
	{
		var o = this.options,cs = this.originalSize,sp = this.originalPosition;
		return{top:sp.top + dy,height:cs.height - dy};
	},s:function(e, dx, dy)
	{
		return{height:this.originalSize.height + dy};
	},se:function(e, dx, dy)
	{
		return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [e,dx,dy]));
	},sw:function(e, dx, dy)
	{
		return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [e,dx,dy]));
	},ne:function(e, dx, dy)
	{
		return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [e,dx,dy]));
	},nw:function(e, dx, dy)
	{
		return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [e,dx,dy]));
	}}}));
	$.extend($.ui.resizable, {defaults:{cancel:":input",distance:1,delay:0,preventDefault:true,transparent:false,minWidth:10,minHeight:10,aspectRatio:false,disableSelection:true,preserveCursor:true,autoHide:false,knobHandles:false}});
	$.ui.plugin.add("resizable", "containment", {start:function(e, ui)
	{
		var o = ui.options,self = $(this).data("resizable"),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
		{
			self.containerOffset = $(ce).offset();
			self.containerPosition = $(ce).position();
			self.containerSize = {height:$(ce).innerHeight(),width:$(ce).innerWidth()};
			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(e, ui)
	{
		var o = ui.options,self = $(this).data("resizable"),ps = self.containerSize,co = self.containerOffset,cs = self.size,cp = self.position,pRatio = o._aspectRatio || e.shiftKey,cop = {top:0,left:0},ce = self.containerElement;
		if (ce[0] != document && /static/.test(ce.css('position')))
			cop = self.containerPosition;
		if (cp.left < (o.helper ? co.left : cop.left))
		{
			self.size.width = self.size.width + (o.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 : cop.left;
		}
		if (cp.top < (o.helper ? co.top : 0))
		{
			self.size.height = self.size.height + (o.helper ? (self.position.top - co.top) : self.position.top);
			if (pRatio)self.size.width = self.size.height / o.aspectRatio;
			self.position.top = o.helper ? co.top : 0;
		}
		var woset = (o.helper ? self.offset.left - co.left : (self.position.left - cop.left)) + self.sizeDiff.width,hoset = (o.helper ? self.offset.top - co.top : self.position.top) + self.sizeDiff.height;
		if (woset + self.size.width >= self.parentData.width)
		{
			self.size.width = self.parentData.width - woset;
			if (pRatio)self.size.height = self.size.width * o.aspectRatio;
		}
		if (hoset + self.size.height >= self.parentData.height)
		{
			self.size.height = self.parentData.height - hoset;
			if (pRatio)self.size.width = self.size.height / o.aspectRatio;
		}
	},stop:function(e, ui)
	{
		var o = ui.options,self = $(this).data("resizable"),cp = self.position,co = self.containerOffset,cop = self.containerPosition,ce = self.containerElement;
		var helper = $(self.helper),ho = helper.offset(),w = helper.innerWidth(),h = helper.innerHeight();
		if (o.helper && !o.animate && /relative/.test(ce.css('position')))
			$(this).css({left:(ho.left - co.left),top:(ho.top - co.top),width:w,height:h});
		if (o.helper && !o.animate && /static/.test(ce.css('position')))
			$(this).css({left:cop.left + (ho.left - co.left),top:cop.top + (ho.top - co.top),width:w,height:h});
	}});
	$.ui.plugin.add("resizable", "grid", {resize:function(e, ui)
	{
		var o = ui.options,self = $(this).data("resizable"),cs = self.size,os = self.originalSize,op = self.originalPosition,a = self.axis,ratio = o._aspectRatio || e.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;
		}
	}});
	$.ui.plugin.add("resizable", "animate", {stop:function(e, ui)
	{
		var o = ui.options,self = $(this).data("resizable");
		var pr = o.proportionallyResize,ista = pr && (/textarea/i).test(pr.get(0).nodeName),soffseth = ista && $.ui.hasScroll(pr.get(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 || "slow",easing:o.animateEasing || "swing",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.css({width:data.width,height:data.height});
			self._updateCache(data);
			self.propagate("animate", e);
		}});
	}});
	$.ui.plugin.add("resizable", "ghost", {start:function(e, ui)
	{
		var o = ui.options,self = $(this).data("resizable"),pr = o.proportionallyResize,cs = self.size;
		if (!pr)self.ghost = self.element.clone();
		else self.ghost = pr.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(e, ui)
	{
		var o = ui.options,self = $(this).data("resizable"),pr = o.proportionallyResize;
		if (self.ghost)self.ghost.css({position:'relative',height:self.size.height,width:self.size.width});
	},stop:function(e, ui)
	{
		var o = ui.options,self = $(this).data("resizable"),pr = o.proportionallyResize;
		if (self.ghost && self.helper)self.helper.get(0).removeChild(self.ghost.get(0));
	}});
	$.ui.plugin.add("resizable", "alsoResize", {start:function(e, ui)
	{
		var o = ui.options,self = $(this).data("resizable"),_store = function(exp)
		{
			$(exp).each(function()
			{
				$(this).data("resizable-alsoresize", {width:parseInt($(this).width(), 10),height:parseInt($(this).height(), 10),left:parseInt($(this).css('left'), 10),top:parseInt($(this).css('top'), 10)});
			});
		};
		if (typeof(o.alsoResize) == 'object')
		{
			if (o.alsoResize.length)
			{
				o.alsoResize = o.alsoResize[0];
				_store(o.alsoResize);
			}
			else
			{
				$.each(o.alsoResize, function(exp, c)
				{
					_store(exp);
				});
			}
		}
		else
		{
			_store(o.alsoResize);
		}
	},resize:function(e, ui)
	{
		var o = ui.options,self = $(this).data("resizable"),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 start = $(this).data("resizable-alsoresize"),style = {},css = c && c.length ? c : ['width','height','top','left'];
				$.each(css || ['width','height','top','left'], function(i, prop)
				{
					var sum = (start[prop] || 0) + (delta[prop] || 0);
					if (sum && sum >= 0)
						style[prop] = sum || null;
				});
				$(this).css(style);
			});
		};
		if (typeof(o.alsoResize) == 'object')
		{
			$.each(o.alsoResize, function(exp, c)
			{
				_alsoResize(exp, c);
			});
		}
		else
		{
			_alsoResize(o.alsoResize);
		}
	},stop:function(e, ui)
	{
		$(this).removeData("resizable-alsoresize-start");
	}});
})(jQuery);
(function($)
{
	$.widget("ui.selectable", $.extend({}, $.ui.mouse, {init: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.width(),bottom:pos.top + $this.height(),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 = $(document.createElement('div')).css({border:'1px dotted black'});
	},toggle:function()
	{
		if (this.options.disabled)
		{
			this.enable();
		}
		else
		{
			this.disable();
		}
	},destroy:function()
	{
		this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");
		this.mouseDestroy();
	},mouseStart:function(e)
	{
		var self = this;
		this.opos = [e.pageX,e.pageY];
		if (this.options.disabled)
			return;
		var options = this.options;
		this.selectees = $(options.filter, this.element[0]);
		this.element.triggerHandler("selectablestart", [e,{"selectable":this.element[0],"options":options}], options.start);
		$('body').append(this.helper);
		this.helper.css({"z-index":100,"position":"absolute","left":e.clientX,"top":e.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 (!e.ctrlKey)
			{
				selectee.$element.removeClass('ui-selected');
				selectee.selected = false;
				selectee.$element.addClass('ui-unselecting');
				selectee.unselecting = true;
				self.element.triggerHandler("selectableunselecting", [e,{selectable:self.element[0],unselecting:selectee.element,options:options}], options.unselecting);
			}
		});
		var isSelectee = false;
		$(e.target).parents().andSelf().each(function()
		{
			if ($.data(this, "selectable-item"))isSelectee = true;
		});
		return this.options.keyboard ? !isSelectee : true;
	},mouseDrag:function(e)
	{
		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 = e.pageX,y2 = e.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.element.triggerHandler("selectableselecting", [e,{selectable:self.element[0],selecting:selectee.element,options:options}], options.selecting);
				}
			}
			else
			{
				if (selectee.selecting)
				{
					if (e.ctrlKey && 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.element.triggerHandler("selectableunselecting", [e,{selectable:self.element[0],unselecting:selectee.element,options:options}], options.unselecting);
					}
				}
				if (selectee.selected)
				{
					if (!e.ctrlKey && !selectee.startselected)
					{
						selectee.$element.removeClass('ui-selected');
						selectee.selected = false;
						selectee.$element.addClass('ui-unselecting');
						selectee.unselecting = true;
						self.element.triggerHandler("selectableunselecting", [e,{selectable:self.element[0],unselecting:selectee.element,options:options}], options.unselecting);
					}
				}
			}
		});
		return false;
	},mouseStop:function(e)
	{
		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.element.triggerHandler("selectableunselected", [e,{selectable:self.element[0],unselected:selectee.element,options:options}], options.unselected);
		});
		$('.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.element.triggerHandler("selectableselected", [e,{selectable:self.element[0],selected:selectee.element,options:options}], options.selected);
		});
		this.element.triggerHandler("selectablestop", [e,{selectable:self.element[0],options:this.options}], this.options.stop);
		this.helper.remove();
		return false;
	}}));
	$.extend($.ui.selectable, {defaults:{distance:1,delay:0,cancel:":input",appendTo:'body',autoRefresh:true,filter:'*',tolerance:'touch'}});
})(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", $.extend({}, $.ui.mouse, {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.mouseInit();
	},plugins:{},ui:function(inst)
	{
		return{helper:(inst || this)["helper"],placeholder:(inst || this)["placeholder"] || $([]),position:(inst || this)["position"],absolutePosition:(inst || this)["positionAbs"],options:this.options,element:this.element,item:(inst || this)["currentItem"],sender:inst ? inst.element : null};
	},propagate:function(n, e, inst, noPropagation)
	{
		$.ui.plugin.call(this, n, [e,this.ui(inst)]);
		if (!noPropagation)this.element.triggerHandler(n == "sort" ? n : "sort" + n, [e,this.ui(inst)], this.options[n]);
	},serialize:function(o)
	{
		var items = ($.isFunction(this.options.items) ? this.options.items.call(this.element) : $(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 && o.expression ? res[1] : res[2]));
		});
		return str.join('&');
	},toArray:function(attr)
	{
		var items = ($.isFunction(this.options.items) ? this.options.items.call(this.element) : $(this.options.items, this.element)).not('.ui-sortable-helper');
		var ret = [];
		items.each(function()
		{
			ret.push($(this).attr(attr || '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;
		if (this.options.tolerance == "pointer" || this.options.forcePointerForContainers || (this.options.tolerance == "guess" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height']))
		{
			return(y1 + this.offset.click.top > t && y1 + this.offset.click.top < b && x1 + this.offset.click.left > l && x1 + this.offset.click.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.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;
		if (this.options.tolerance == "pointer" || (this.options.tolerance == "guess" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height']))
		{
			if (!(y1 + this.offset.click.top > t && y1 + this.offset.click.top < b && x1 + this.offset.click.left > l && x1 + this.offset.click.left < r))return false;
			if (this.floating)
			{
				if (x1 + this.offset.click.left > l && x1 + this.offset.click.left < l + item.width / 2)return 2;
				if (x1 + this.offset.click.left > l + item.width / 2 && x1 + this.offset.click.left < r)return 1;
			}
			else
			{
				if (y1 + this.offset.click.top > t && y1 + this.offset.click.top < t + item.height / 2)return 2;
				if (y1 + this.offset.click.top > t + item.height / 2 && y1 + this.offset.click.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;
	},refresh:function()
	{
		this.refreshItems();
		this.refreshPositions();
	},refreshItems:function()
	{
		this.items = [];
		this.containers = [this];
		var items = this.items;
		var self = this;
		var queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element, null, {options:this.options,item:this.currentItem}) : $(this.options.items, this.element),this]];
		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([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element),inst]);
						this.containers.push(inst);
					}
				}
				;
			}
			;
		}
		for (var i = queries.length - 1; i >= 0; i--)
		{
			queries[i][0].each(function()
			{
				$.data(this, 'sortable-item', queries[i][1]);
				items.push({item:$(this),instance:queries[i][1],width:0,height:0,left:0,top:0});
			});
		}
		;
	},refreshPositions:function(fast)
	{
		if (this.offsetParent)
		{
			var po = this.offsetParent.offset();
			this.offset.parent = {top:po.top + this.offsetParentBorders.top,left:po.left + this.offsetParentBorders.left};
		}
		for (var i = this.items.length - 1; i >= 0; i--)
		{
			if (this.items[i].instance != this.currentContainer && this.currentContainer && this.items[i].item[0] != this.currentItem[0])
				continue;
			var t = this.options.toleranceElement ? $(this.options.toleranceElement, this.items[i].item) : this.items[i].item;
			if (!fast)
			{
				this.items[i].width = t[0].offsetWidth;
				this.items[i].height = t[0].offsetHeight;
			}
			var p = t.offset();
			this.items[i].left = p.left;
			this.items[i].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();
			}
			;
		}
	},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");
	},createPlaceholder:function(that)
	{
		var self = that || this,o = self.options;
		if (o.placeholder.constructor == String)
		{
			var className = o.placeholder;
			o.placeholder = {element:function()
			{
				return $('<div></div>').addClass(className)[0];
			},update:function(i, p)
			{
				p.css(i.offset()).css({width:i.outerWidth(),height:i.outerHeight()});
			}};
		}
		self.placeholder = $(o.placeholder.element.call(self.element, self.currentItem)).appendTo('body').css({position:'absolute'});
		o.placeholder.update.call(self.element, self.currentItem, self.placeholder);
	},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.positionAbs[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 (!itemWithLeastDistance && !this.options.dropOnEmpty)
							continue;
						if (this.placeholder)this.placeholder.remove();
						if (this.containers[i].options.placeholder)
						{
							this.containers[i].createPlaceholder(this);
						}
						else
						{
							this.placeholder = null;
							;
						}
						this.currentContainer = this.containers[i];
						itemWithLeastDistance ? this.rearrange(e, itemWithLeastDistance, null, true) : this.rearrange(e, null, this.containers[i].element, true);
						this.propagate("change", e);
						this.containers[i].propagate("change", e, this);
					}
					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;
				}
			}
		}
		;
	},mouseCapture:function(e, overrideHandle)
	{
		if (this.options.disabled || this.options.type == 'static')return false;
		this.refreshItems();
		var currentItem = null,self = this,nodes = $(e.target).parents().each(function()
		{
			if ($.data(this, 'sortable-item') == self)
			{
				currentItem = $(this);
				return false;
			}
		});
		if ($.data(e.target, 'sortable-item') == self)currentItem = $(e.target);
		if (!currentItem)return false;
		if (this.options.handle && !overrideHandle)
		{
			var validHandle = false;
			$(this.options.handle, currentItem).find("*").andSelf().each(function()
			{
				if (this == e.target)validHandle = true;
			});
			if (!validHandle)return false;
		}
		this.currentItem = currentItem;
		return true;
	},mouseStart:function(e, overrideHandle, noActivation)
	{
		var o = this.options;
		this.currentContainer = this;
		this.refreshPositions();
		this.helper = typeof o.helper == 'function' ? $(o.helper.apply(this.element[0], [e,this.currentItem])) : this.currentItem.clone();
		if (!this.helper.parents('body').length)$(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(this.helper[0]);
		this.helper.css({position:'absolute',clear:'both'}).addClass('ui-sortable-helper');
		this.margins = {left:(parseInt(this.currentItem.css("marginLeft"), 10) || 0),top:(parseInt(this.currentItem.css("marginTop"), 10) || 0)};
		this.offset = this.currentItem.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.offsetParentBorders = {top:(parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),left:(parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)};
		this.offset.parent = {top:po.top + this.offsetParentBorders.top,left:po.left + this.offsetParentBorders.left};
		this.originalPosition = this.generatePosition(e);
		this.domPosition = {prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};
		this.helperProportions = {width:this.helper.outerWidth(),height:this.helper.outerHeight()};
		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.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' || o.containment == 'window')this.containment = [0 - this.offset.parent.left,0 - this.offset.parent.top,$(o.containment == 'document' ? document : window).width() - this.offset.parent.left - this.helperProportions.width - this.margins.left - (parseInt(this.element.css("marginRight"), 10) || 0),($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.offset.parent.top - this.helperProportions.height - this.margins.top - (parseInt(this.element.css("marginBottom"), 10) || 0)];
			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.parent.left,co.top + (parseInt($(ce).css("borderTopWidth"), 10) || 0) - this.offset.parent.top,co.left + Math.max(ce.scrollWidth, ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"), 10) || 0) - this.offset.parent.left - this.helperProportions.width - this.margins.left - (parseInt(this.currentItem.css("marginRight"), 10) || 0),co.top + Math.max(ce.scrollHeight, ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"), 10) || 0) - this.offset.parent.top - this.helperProportions.height - this.margins.top - (parseInt(this.currentItem.css("marginBottom"), 10) || 0)];
			}
		}
		if (this.options.placeholder != 'clone')
			this.currentItem.css('visibility', 'hidden');
		if (!noActivation)
		{
			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;
		this.mouseDrag(e);
		return true;
	},convertPositionTo:function(d, pos)
	{
		if (!pos)pos = this.position;
		var mod = d == "absolute" ? 1 : -1;
		return{top:(pos.top
				+ this.offset.parent.top * mod
				- (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop) * mod
				+ this.margins.top * mod),left:(pos.left
				+ this.offset.parent.left * mod
				- (this.offsetParent[0] == document.body ? 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.parent.top
				+ (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)),left:(e.pageX
				- this.offset.click.left
				- this.offset.parent.left
				+ (this.offsetParent[0] == document.body ? 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;
	},mouseDrag:function(e)
	{
		this.position = this.generatePosition(e);
		this.positionAbs = this.convertPositionTo("absolute");
		$.ui.plugin.call(this, "sort", [e,this.ui()]);
		this.positionAbs = this.convertPositionTo("absolute");
		this.helper[0].style.left = this.position.left + 'px';
		this.helper[0].style.top = this.position.top + 'px';
		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.element.triggerHandler("sort", [e,this.ui()], this.options["sort"]);
		return false;
	},rearrange:function(e, i, a, hardRefresh)
	{
		a ? a[0].appendChild(this.currentItem[0]) : i.item[0].parentNode.insertBefore(this.currentItem[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);
		if (this.options.placeholder)
			this.options.placeholder.update.call(this.element, this.currentItem, this.placeholder);
	},mouseStop:function(e, noPropagation)
	{
		if ($.ui.ddmanager && !this.options.dropBehaviour)
			$.ui.ddmanager.drop(this, e);
		if (this.options.revert)
		{
			var self = this;
			var cur = self.currentItem.offset();
			if (self.placeholder)self.placeholder.animate({opacity:'hide'}, (parseInt(this.options.revert, 10) || 500) - 50);
			$(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(e);
			});
		}
		else
		{
			this.clear(e, noPropagation);
		}
		return false;
	},clear:function(e, noPropagation)
	{
		if (this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0])this.propagate("update", e, null, noPropagation);
		if (!contains(this.element[0], this.currentItem[0]))
		{
			this.propagate("remove", e, null, noPropagation);
			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, noPropagation);
					this.containers[i].propagate("receive", e, this, noPropagation);
				}
			}
			;
		}
		;
		for (var i = this.containers.length - 1; i >= 0; i--)
		{
			this.containers[i].propagate("deactivate", e, this, noPropagation);
			if (this.containers[i].containerCache.over)
			{
				this.containers[i].propagate("out", e, this);
				this.containers[i].containerCache.over = 0;
			}
		}
		this.dragging = false;
		if (this.cancelHelperRemoval)
		{
			this.propagate("stop", e, null, noPropagation);
			return false;
		}
		$(this.currentItem).css('visibility', '');
		if (this.placeholder)this.placeholder.remove();
		this.helper.remove();
		this.helper = null;
		this.propagate("stop", e, null, noPropagation);
		return true;
	}}));
	$.extend($.ui.sortable, {getter:"serialize toArray",defaults:{helper:"clone",tolerance:"guess",distance:1,delay:0,scroll:true,scrollSensitivity:20,scrollSpeed:20,cancel:":input",items:'> *',zIndex:1000,dropOnEmpty:true,appendTo:"parent"}});
	$.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", "scroll", {start:function(e, ui)
	{
		var o = ui.options;
		var i = $(this).data("sortable");
		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);
		}(i.currentItem);
		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);
		}(i.currentItem);
		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();
	},sort:function(e, ui)
	{
		var o = ui.options;
		var i = $(this).data("sortable");
		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("sortable", "axis", {sort:function(e, ui)
	{
		var i = $(this).data("sortable");
		if (ui.options.axis == "y")i.position.left = i.originalPosition.left;
		if (ui.options.axis == "x")i.position.top = i.originalPosition.top;
	}});
})(jQuery);
(function($)
{
	$.widget("ui.accordion", {init:function()
	{
		var options = this.options;
		if (options.navigation)
		{
			var current = this.element.find("a").filter(options.navigationFilter);
			if (current.length)
			{
				if (current.filter(options.header).length)
				{
					options.active = current;
				}
				else
				{
					options.active = current.parent().parent().prev();
					current.addClass("current");
				}
			}
		}
		options.headers = this.element.find(options.header);
		options.active = findActive(options.headers, options.active);
		if ($.browser.msie)
		{
			this.element.find('a').css('zoom', '1');
		}
		if (!this.element.hasClass("ui-accordion"))
		{
			this.element.addClass("ui-accordion");
			$("<span class='ui-accordion-left'/>").insertBefore(options.headers);
			$("<span class='ui-accordion-right'/>").appendTo(options.headers);
			options.headers.addClass("ui-accordion-header").attr("tabindex", "0");
		}
		var maxHeight;
		if (options.fillSpace)
		{
			maxHeight = this.element.parent().height();
			options.headers.each(function()
			{
				maxHeight -= $(this).outerHeight();
			});
			var maxPadding = 0;
			options.headers.next().each(function()
			{
				maxPadding = Math.max(maxPadding, $(this).innerHeight() - $(this).height());
			}).height(maxHeight - maxPadding);
		}
		else if (options.autoHeight)
		{
			maxHeight = 0;
			options.headers.next().each(function()
			{
				maxHeight = Math.max(maxHeight, $(this).outerHeight());
			}).height(maxHeight);
		}
		options.headers.not(options.active || "").next().hide();
		options.active.parent().andSelf().addClass(options.selectedClass);
		if (options.event)
		{
			this.element.bind((options.event) + ".accordion", clickHandler);
		}
	},activate:function(index)
	{
		clickHandler.call(this.element[0], {target:findActive(this.options.headers, index)[0]});
	},destroy:function()
	{
		this.options.headers.next().css("display", "");
		if (this.options.fillSpace || this.options.autoHeight)
		{
			this.options.headers.next().css("height", "");
		}
		$.removeData(this.element[0], "accordion");
		this.element.removeClass("ui-accordion").unbind(".accordion");
	}});
	function scopeCallback(callback, scope)
	{
		return function()
		{
			return callback.apply(scope, arguments);
		};
	}
	;
	function completed(cancel)
	{
		if (!$.data(this, "accordion"))
		{
			return;
		}
		var instance = $.data(this, "accordion");
		var options = instance.options;
		options.running = cancel ? 0 : --options.running;
		if (options.running)
		{
			return;
		}
		if (options.clearStyle)
		{
			options.toShow.add(options.toHide).css({height:"",overflow:""});
		}
		$(this).triggerHandler("accordionchange", [$.event.fix({type:'accordionchange',target:instance.element[0]}),options.data], options.change);
	}
	function toggle(toShow, toHide, data, clickedActive, down)
	{
		var options = $.data(this, "accordion").options;
		options.toShow = toShow;
		options.toHide = toHide;
		options.data = data;
		var complete = scopeCallback(completed, this);
		options.running = toHide.size() === 0 ? toShow.size() : toHide.size();
		if (options.animated)
		{
			if (!options.alwaysOpen && clickedActive)
			{
				$.ui.accordion.animations[options.animated]({toShow:jQuery([]),toHide:toHide,complete:complete,down:down,autoHeight:options.autoHeight});
			}
			else
			{
				$.ui.accordion.animations[options.animated]({toShow:toShow,toHide:toHide,complete:complete,down:down,autoHeight:options.autoHeight});
			}
		}
		else
		{
			if (!options.alwaysOpen && clickedActive)
			{
				toShow.toggle();
			}
			else
			{
				toHide.hide();
				toShow.show();
			}
			complete(true);
		}
	}
	function clickHandler(event)
	{
		var options = $.data(this, "accordion").options;
		if (options.disabled)
		{
			return false;
		}
		if (!event.target && !options.alwaysOpen)
		{
			options.active.parent().andSelf().toggleClass(options.selectedClass);
			var toHide = options.active.next(),data = {options:options,newHeader:jQuery([]),oldHeader:options.active,newContent:jQuery([]),oldContent:toHide},toShow = (options.active = $([]));
			toggle.call(this, toShow, toHide, data);
			return false;
		}
		var clicked = $(event.target);
		clicked = $(clicked.parents(options.header)[0] || clicked);
		var clickedActive = clicked[0] == options.active[0];
		if (options.running || (options.alwaysOpen && clickedActive))
		{
			return false;
		}
		if (!clicked.is(options.header))
		{
			return;
		}
		options.active.parent().andSelf().toggleClass(options.selectedClass);
		if (!clickedActive)
		{
			clicked.parent().andSelf().addClass(options.selectedClass);
		}
		var toShow = clicked.next(),toHide = options.active.next(),data = {options:options,newHeader:clicked,oldHeader:options.active,newContent:toShow,oldContent:toHide},down = options.headers.index(options.active[0]) > options.headers.index(clicked[0]);
		options.active = clickedActive ? $([]) : clicked;
		toggle.call(this, toShow, toHide, data, clickedActive, down);
		return false;
	}
	;
	function findActive(headers, selector)
	{
		return selector != undefined ? typeof selector == "number" ? headers.filter(":eq(" + selector + ")") : headers.not(headers.not(selector)) : selector === false ? $([]) : headers.filter(":eq(0)");
	}
	$.extend($.ui.accordion, {defaults:{selectedClass:"selected",alwaysOpen:true,animated:'slide',event:"click",header:"a",autoHeight:true,running:0,navigationFilter:function()
	{
		return this.href.toLowerCase() == location.href.toLowerCase();
	}},animations:{slide:function(options, additions)
	{
		options = $.extend({easing:"swing",duration:300}, options, additions);
		if (!options.toHide.size())
		{
			options.toShow.animate({height:"show"}, options);
			return;
		}
		var hideHeight = options.toHide.height(),showHeight = options.toShow.height(),difference = showHeight / hideHeight;
		options.toShow.css({height:0,overflow:'hidden'}).show();
		options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate({height:"hide"}, {step:function(now)
		{
			var current = (hideHeight - now) * difference;
			if ($.browser.msie || $.browser.opera)
			{
				current = Math.ceil(current);
			}
			options.toShow.height(current);
		},duration:options.duration,easing:options.easing,complete:function()
		{
			if (!options.autoHeight)
			{
				options.toShow.css("height", "auto");
			}
			options.complete();
		}});
	},bounceslide:function(options)
	{
		this.slide(options, {easing:options.down ? "bounceout" : "swing",duration:options.down ? 1000 : 200});
	},easeslide:function(options)
	{
		this.slide(options, {easing:"easeinout",duration:700});
	}}});
	$.fn.activate = function(index)
	{
		return this.accordion("activate", index);
	};
})(jQuery);
(function($)
{
	var setDataSwitch = {dragStart:"start.draggable",drag:"drag.draggable",dragStop:"stop.draggable",maxHeight:"maxHeight.resizable",minHeight:"minHeight.resizable",maxWidth:"maxWidth.resizable",minWidth:"minWidth.resizable",resizeStart:"start.resizable",resize:"drag.resizable",resizeStop:"stop.resizable"};
	$.widget("ui.dialog", {init:function()
	{
		var self = this,options = this.options,resizeHandles = typeof options.resizable == 'string' ? options.resizable : 'n,e,s,w,se,sw,ne,nw',uiDialogContent = this.element.addClass('ui-dialog-content').wrap('<div/>').wrap('<div/>'),uiDialogContainer = (this.uiDialogContainer = uiDialogContent.parent().addClass('ui-dialog-container').css({position:'relative',width:'100%',height:'100%'})),title = options.title || uiDialogContent.attr('title') || '',uiDialogTitlebar = (this.uiDialogTitlebar = $('<div class="ui-dialog-titlebar"/>')).append('<span class="ui-dialog-title">' + title + '</span>').append('<a href="#" class="ui-dialog-titlebar-close"><span>X</span></a>').prependTo(uiDialogContainer),uiDialog = (this.uiDialog = uiDialogContainer.parent()).appendTo(document.body).hide().addClass('ui-dialog').addClass(options.dialogClass).addClass(uiDialogContent.attr('className')).removeClass('ui-dialog-content').css({position:'absolute',width:options.width,height:options.height,overflow:'hidden',zIndex:options.zIndex}).attr('tabIndex', -1).css('outline', 0).keydown(function(ev)
		{
			if (options.closeOnEscape)
			{
				var ESC = 27;
				(ev.keyCode && ev.keyCode == ESC && self.close());
			}
		}).mousedown(function()
		{
			self.moveToTop();
		}),uiDialogButtonPane = (this.uiDialogButtonPane = $('<div/>')).addClass('ui-dialog-buttonpane').css({position:'absolute',bottom:0}).appendTo(uiDialog);
		this.uiDialogTitlebarClose = $('.ui-dialog-titlebar-close', uiDialogTitlebar).hover(function()
		{
			$(this).addClass('ui-dialog-titlebar-close-hover');
		}, function()
		{
			$(this).removeClass('ui-dialog-titlebar-close-hover');
		}).mousedown(function(ev)
		{
			ev.stopPropagation();
		}).click(function()
		{
			self.close();
			return false;
		});
		this.uiDialogTitlebar.find("*").add(this.uiDialogTitlebar).each(function()
		{
			$.ui.disableSelection(this);
		});
		if ($.fn.draggable)
		{
			uiDialog.draggable({cancel:'.ui-dialog-content',helper:options.dragHelper,handle:'.ui-dialog-titlebar',start:function(e, ui)
			{
				self.moveToTop();
				(options.dragStart && options.dragStart.apply(self.element[0], arguments));
			},drag:function(e, ui)
			{
				(options.drag && options.drag.apply(self.element[0], arguments));
			},stop:function(e, ui)
			{
				(options.dragStop && options.dragStop.apply(self.element[0], arguments));
				$.ui.dialog.overlay.resize();
			}});
			(options.draggable || uiDialog.draggable('disable'));
		}
		if ($.fn.resizable)
		{
			uiDialog.resizable({cancel:'.ui-dialog-content',helper:options.resizeHelper,maxWidth:options.maxWidth,maxHeight:options.maxHeight,minWidth:options.minWidth,minHeight:options.minHeight,start:function()
			{
				(options.resizeStart && options.resizeStart.apply(self.element[0], arguments));
			},resize:function(e, ui)
			{
				(options.autoResize && self.size.apply(self));
				(options.resize && options.resize.apply(self.element[0], arguments));
			},handles:resizeHandles,stop:function(e, ui)
			{
				(options.autoResize && self.size.apply(self));
				(options.resizeStop && options.resizeStop.apply(self.element[0], arguments));
				$.ui.dialog.overlay.resize();
			}});
			(options.resizable || uiDialog.resizable('disable'));
		}
		this.createButtons(options.buttons);
		this.isOpen = false;
		(options.bgiframe && $.fn.bgiframe && uiDialog.bgiframe());
		(options.autoOpen && this.open());
	},setData:function(key, value)
	{
		(setDataSwitch[key] && this.uiDialog.data(setDataSwitch[key], value));
		switch (key)
				{case"buttons":this.createButtons(value);break;case"draggable":this.uiDialog.draggable(value ? 'enable' : 'disable');break;case"height":this.uiDialog.height(value);break;case"position":this.position(value);break;case"resizable":(typeof value == 'string' && this.uiDialog.data('handles.resizable', value));this.uiDialog.resizable(value ? 'enable' : 'disable');break;case"title":$(".ui-dialog-title", this.uiDialogTitlebar).text(value);break;case"width":this.uiDialog.width(value);break;}
		$.widget.prototype.setData.apply(this, arguments);
	},position:function(pos)
	{
		var wnd = $(window),doc = $(document),pTop = doc.scrollTop(),pLeft = doc.scrollLeft(),minTop = pTop;
		if ($.inArray(pos, ['center','top','right','bottom','left']) >= 0)
		{
			pos = [pos == 'right' || pos == 'left' ? pos : 'center',pos == 'top' || pos == 'bottom' ? pos : 'middle'];
		}
		if (pos.constructor != Array)
		{
			pos = ['center','middle'];
		}
		if (pos[0].constructor == Number)
		{
			pLeft += pos[0];
		}
		else
		{
			switch (pos[0])
					{case'left':pLeft += 0;break;case'right':pLeft += wnd.width() - this.uiDialog.width();break;default:case'center':pLeft += (wnd.width() - this.uiDialog.width()) / 2;}
		}
		if (pos[1].constructor == Number)
		{
			pTop += pos[1];
		}
		else
		{
			switch (pos[1])
					{case'top':pTop += 0;break;case'bottom':pTop += wnd.height() - this.uiDialog.height();break;default:case'middle':pTop += (wnd.height() - this.uiDialog.height()) / 2;}
		}
		pTop = Math.max(pTop, minTop);
		this.uiDialog.css({top:pTop,left:pLeft});
	},size:function()
	{
		var container = this.uiDialogContainer,titlebar = this.uiDialogTitlebar,content = this.element,tbMargin = parseInt(content.css('margin-top'), 10) + parseInt(content.css('margin-bottom'), 10),lrMargin = parseInt(content.css('margin-left'), 10) + parseInt(content.css('margin-right'), 10);
		content.height(container.height() - titlebar.outerHeight() - tbMargin);
		content.width(container.width() - lrMargin);
	},open:function()
	{
		if (this.isOpen)
		{
			return;
		}
		this.overlay = this.options.modal ? new $.ui.dialog.overlay(this) : null;
		(this.uiDialog.next().length > 0) && this.uiDialog.appendTo('body');
		this.position(this.options.position);
		this.uiDialog.show(this.options.show);
		this.options.autoResize && this.size();
		this.moveToTop(true);
		var openEV = null;
		var openUI = {options:this.options};
		this.uiDialogTitlebarClose.focus();
		this.element.triggerHandler("dialogopen", [openEV,openUI], this.options.open);
		this.isOpen = true;
	},moveToTop:function(force)
	{
		if ((this.options.modal && !force) || (!this.options.stack && !this.options.modal))
		{
			return this.element.triggerHandler("dialogfocus", [null,{options:this.options}], this.options.focus);
		}
		var maxZ = this.options.zIndex,options = this.options;
		$('.ui-dialog:visible').each(function()
		{
			maxZ = Math.max(maxZ, parseInt($(this).css('z-index'), 10) || options.zIndex);
		});
		(this.overlay && this.overlay.$el.css('z-index', ++maxZ));
		this.uiDialog.css('z-index', ++maxZ);
		this.element.triggerHandler("dialogfocus", [null,{options:this.options}], this.options.focus);
	},close:function()
	{
		(this.overlay && this.overlay.destroy());
		this.uiDialog.hide(this.options.hide);
		var closeEV = null;
		var closeUI = {options:this.options};
		this.element.triggerHandler("dialogclose", [closeEV,closeUI], this.options.close);
		$.ui.dialog.overlay.resize();
		this.isOpen = false;
	},destroy:function()
	{
		(this.overlay && this.overlay.destroy());
		this.uiDialog.hide();
		this.element.unbind('.dialog').removeData('dialog').removeClass('ui-dialog-content').hide().appendTo('body');
		this.uiDialog.remove();
	},createButtons:function(buttons)
	{
		var self = this,hasButtons = false,uiDialogButtonPane = this.uiDialogButtonPane;
		uiDialogButtonPane.empty().hide();
		$.each(buttons, function()
		{
			return!(hasButtons = true);
		});
		if (hasButtons)
		{
			uiDialogButtonPane.show();
			$.each(buttons, function(name, fn)
			{
				$('<button/>').text(name).click(function()
				{
					fn.apply(self.element[0], arguments);
				}).appendTo(uiDialogButtonPane);
			});
		}
	}});
	$.extend($.ui.dialog, {defaults:{autoOpen:true,autoResize:true,bgiframe:false,buttons:{},closeOnEscape:true,draggable:true,height:200,minHeight:100,minWidth:150,modal:false,overlay:{},position:'center',resizable:true,stack:true,width:300,zIndex:1000},overlay:function(dialog)
	{
		this.$el = $.ui.dialog.overlay.create(dialog);
	}});
	$.extend($.ui.dialog.overlay, {instances:[],events:$.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','), function(e)
	{
		return e + '.dialog-overlay';
	}).join(' '),create:function(dialog)
	{
		if (this.instances.length === 0)
		{
			setTimeout(function()
			{
				$('a, :input').bind($.ui.dialog.overlay.events, function()
				{
					var allow = false;
					var $dialog = $(this).parents('.ui-dialog');
					if ($dialog.length)
					{
						var $overlays = $('.ui-dialog-overlay');
						if ($overlays.length)
						{
							var maxZ = parseInt($overlays.css('z-index'), 10);
							$overlays.each(function()
							{
								maxZ = Math.max(maxZ, parseInt($(this).css('z-index'), 10));
							});
							allow = parseInt($dialog.css('z-index'), 10) > maxZ;
						}
						else
						{
							allow = true;
						}
					}
					return allow;
				});
			}, 1);
			$(document).bind('keydown.dialog-overlay', function(e)
			{
				var ESC = 27;
				(e.keyCode && e.keyCode == ESC && dialog.close());
			});
			$(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);
		}
		var $el = $('<div/>').appendTo(document.body).addClass('ui-dialog-overlay').css($.extend({borderWidth:0,margin:0,padding:0,position:'absolute',top:0,left:0,width:this.width(),height:this.height()}, dialog.options.overlay));
		(dialog.options.bgiframe && $.fn.bgiframe && $el.bgiframe());
		this.instances.push($el);
		return $el;
	},destroy:function($el)
	{
		this.instances.splice($.inArray(this.instances, $el), 1);
		if (this.instances.length === 0)
		{
			$('a, :input').add([document,window]).unbind('.dialog-overlay');
		}
		$el.remove();
	},height:function()
	{
		if ($.browser.msie && $.browser.version < 7)
		{
			var scrollHeight = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
			var 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()
	{
		if ($.browser.msie && $.browser.version < 7)
		{
			var scrollWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);
			var 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($)
{
	$.fn.unwrap = $.fn.unwrap || function(expr)
	{
		return this.each(function()
		{
			$(this).parents(expr).eq(0).after(this).remove();
		});
	};
	$.widget("ui.slider", {plugins:{},ui:function(e)
	{
		return{options:this.options,handle:this.currentHandle,value:this.options.axis != "both" || !this.options.axis ? Math.round(this.value(null, this.options.axis == "vertical" ? "y" : "x")) : {x:Math.round(this.value(null, "x")),y:Math.round(this.value(null, "y"))},range:this.getRange()};
	},propagate:function(n, e)
	{
		$.ui.plugin.call(this, n, [e,this.ui()]);
		this.element.triggerHandler(n == "slide" ? n : "slide" + n, [e,this.ui()], this.options[n]);
	},destroy:function()
	{
		this.element.removeClass("ui-slider ui-slider-disabled").removeData("slider").unbind(".slider");
		if (this.handle && this.handle.length)
		{
			this.handle.unwrap("a");
			this.handle.each(function()
			{
				$(this).data("mouse").mouseDestroy();
			});
		}
		this.generated && this.generated.remove();
	},setData:function(key, value)
	{
		$.widget.prototype.setData.apply(this, arguments);
		if (/min|max|steps/.test(key))
		{
			this.initBoundaries();
		}
		if (key == "range")
		{
			value ? this.handle.length == 2 && this.createRange() : this.removeRange();
		}
	},init:function()
	{
		var self = this;
		this.element.addClass("ui-slider");
		this.initBoundaries();
		this.handle = $(this.options.handle, this.element);
		if (!this.handle.length)
		{
			self.handle = self.generated = $(self.options.handles || [0]).map(function()
			{
				var handle = $("<div/>").addClass("ui-slider-handle").appendTo(self.element);
				if (this.id)
					handle.attr("id", this.id);
				return handle[0];
			});
		}
		var handleclass = function(el)
		{
			this.element = $(el);
			this.element.data("mouse", this);
			this.options = self.options;
			this.element.bind("mousedown", function()
			{
				if (self.currentHandle)this.blur(self.currentHandle);
				self.focus(this, 1);
			});
			this.mouseInit();
		};
		$.extend(handleclass.prototype, $.ui.mouse, {mouseStart:function(e)
		{
			return self.start.call(self, e, this.element[0]);
		},mouseStop:function(e)
		{
			return self.stop.call(self, e, this.element[0]);
		},mouseDrag:function(e)
		{
			return self.drag.call(self, e, this.element[0]);
		},mouseCapture:function()
		{
			return true;
		},trigger:function(e)
		{
			this.mouseDown(e);
		}});
		$(this.handle).each(function()
		{
			new handleclass(this);
		}).wrap('<a href="javascript:void(0)" style="outline:none;border:none;"></a>').parent().bind('focus', function(e)
		{
			self.focus(this.firstChild);
		}).bind('blur', function(e)
		{
			self.blur(this.firstChild);
		}).bind('keydown', function(e)
		{
			if (!self.options.noKeyboard)self.keydown(e.keyCode, this.firstChild);
		});
		this.element.bind('mousedown.slider', function(e)
		{
			self.click.apply(self, [e]);
			self.currentHandle.data("mouse").trigger(e);
			self.firstValue = self.firstValue + 1;
		});
		$.each(this.options.handles || [], function(index, handle)
		{
			self.moveTo(handle.start, index, true);
		});
		if (!isNaN(this.options.startValue))
			this.moveTo(this.options.startValue, 0, true);
		this.previousHandle = $(this.handle[0]);
		if (this.handle.length == 2 && this.options.range)this.createRange();
	},initBoundaries:function()
	{
		var element = this.element[0],o = this.options;
		this.actualSize = {width:this.element.outerWidth(),height:this.element.outerHeight()};
		$.extend(o, {axis:o.axis || (element.offsetWidth < element.offsetHeight ? 'vertical' : 'horizontal'),max:!isNaN(parseInt(o.max, 10)) ? {x:parseInt(o.max, 10),y:parseInt(o.max, 10)} : ({x:o.max && o.max.x || 100,y:o.max && o.max.y || 100}),min:!isNaN(parseInt(o.min, 10)) ? {x:parseInt(o.min, 10),y:parseInt(o.min, 10)} : ({x:o.min && o.min.x || 0,y:o.min && o.min.y || 0})});
		o.realMax = {x:o.max.x - o.min.x,y:o.max.y - o.min.y};
		o.stepping = {x:o.stepping && o.stepping.x || parseInt(o.stepping, 10) || (o.steps ? o.realMax.x / (o.steps.x || parseInt(o.steps, 10) || o.realMax.x) : 0),y:o.stepping && o.stepping.y || parseInt(o.stepping, 10) || (o.steps ? o.realMax.y / (o.steps.y || parseInt(o.steps, 10) || o.realMax.y) : 0)};
	},keydown:function(keyCode, handle)
	{
		if (/(37|38|39|40)/.test(keyCode))
		{
			this.moveTo({x:/(37|39)/.test(keyCode) ? (keyCode == 37 ? '-' : '+') + '=' + this.oneStep("x") : 0,y:/(38|40)/.test(keyCode) ? (keyCode == 38 ? '-' : '+') + '=' + this.oneStep("y") : 0}, handle);
		}
	},focus:function(handle, hard)
	{
		this.currentHandle = $(handle).addClass('ui-slider-handle-active');
		if (hard)
			this.currentHandle.parent()[0].focus();
	},blur:function(handle)
	{
		$(handle).removeClass('ui-slider-handle-active');
		if (this.currentHandle && this.currentHandle[0] == handle)
		{
			this.previousHandle = this.currentHandle;
			this.currentHandle = null;
		}
		;
	},click:function(e)
	{
		var pointer = [e.pageX,e.pageY];
		var clickedHandle = false;
		this.handle.each(function()
		{
			if (this == e.target)
				clickedHandle = true;
		});
		if (clickedHandle || this.options.disabled || !(this.currentHandle || this.previousHandle))
			return;
		if (!this.currentHandle && this.previousHandle)
			this.focus(this.previousHandle, true);
		this.offset = this.element.offset();
		this.moveTo({y:this.convertValue(e.pageY - this.offset.top - this.currentHandle[0].offsetHeight / 2, "y"),x:this.convertValue(e.pageX - this.offset.left - this.currentHandle[0].offsetWidth / 2, "x")}, null, !this.options.distance);
	},createRange:function()
	{
		if (this.rangeElement)return;
		this.rangeElement = $('<div></div>').addClass('ui-slider-range').css({position:'absolute'}).appendTo(this.element);
		this.updateRange();
	},removeRange:function()
	{
		this.rangeElement.remove();
		this.rangeElement = null;
	},updateRange:function()
	{
		var prop = this.options.axis == "vertical" ? "top" : "left";
		var size = this.options.axis == "vertical" ? "height" : "width";
		this.rangeElement.css(prop, (parseInt($(this.handle[0]).css(prop), 10) || 0) + this.handleSize(0, this.options.axis == "vertical" ? "y" : "x") / 2);
		this.rangeElement.css(size, (parseInt($(this.handle[1]).css(prop), 10) || 0) - (parseInt($(this.handle[0]).css(prop), 10) || 0));
	},getRange:function()
	{
		return this.rangeElement ? this.convertValue(parseInt(this.rangeElement.css(this.options.axis == "vertical" ? "height" : "width"), 10), this.options.axis == "vertical" ? "y" : "x") : null;
	},handleIndex:function()
	{
		return this.handle.index(this.currentHandle[0]);
	},value:function(handle, axis)
	{
		if (this.handle.length == 1)this.currentHandle = this.handle;
		if (!axis)axis = this.options.axis == "vertical" ? "y" : "x";
		var curHandle = $(handle != undefined && handle !== null ? this.handle[handle] || handle : this.currentHandle);
		if (curHandle.data("mouse").sliderValue)
		{
			return parseInt(curHandle.data("mouse").sliderValue[axis], 10);
		}
		else
		{
			return parseInt(((parseInt(curHandle.css(axis == "x" ? "left" : "top"), 10) / (this.actualSize[axis == "x" ? "width" : "height"] - this.handleSize(handle, axis))) * this.options.realMax[axis]) + this.options.min[axis], 10);
		}
	},convertValue:function(value, axis)
	{
		return this.options.min[axis] + (value / (this.actualSize[axis == "x" ? "width" : "height"] - this.handleSize(null, axis))) * this.options.realMax[axis];
	},translateValue:function(value, axis)
	{
		return((value - this.options.min[axis]) / this.options.realMax[axis]) * (this.actualSize[axis == "x" ? "width" : "height"] - this.handleSize(null, axis));
	},translateRange:function(value, axis)
	{
		if (this.rangeElement)
		{
			if (this.currentHandle[0] == this.handle[0] && value >= this.translateValue(this.value(1), axis))
				value = this.translateValue(this.value(1, axis) - this.oneStep(axis), axis);
			if (this.currentHandle[0] == this.handle[1] && value <= this.translateValue(this.value(0), axis))
				value = this.translateValue(this.value(0, axis) + this.oneStep(axis), axis);
		}
		if (this.options.handles)
		{
			var handle = this.options.handles[this.handleIndex()];
			if (value < this.translateValue(handle.min, axis))
			{
				value = this.translateValue(handle.min, axis);
			}
			else if (value > this.translateValue(handle.max, axis))
			{
				value = this.translateValue(handle.max, axis);
			}
		}
		return value;
	},translateLimits:function(value, axis)
	{
		if (value >= this.actualSize[axis == "x" ? "width" : "height"] - this.handleSize(null, axis))
			value = this.actualSize[axis == "x" ? "width" : "height"] - this.handleSize(null, axis);
		if (value <= 0)
			value = 0;
		return value;
	},handleSize:function(handle, axis)
	{
		return $(handle != undefined && handle !== null ? this.handle[handle] : this.currentHandle)[0]["offset" + (axis == "x" ? "Width" : "Height")];
	},oneStep:function(axis)
	{
		return this.options.stepping[axis] || 1;
	},start:function(e, handle)
	{
		var o = this.options;
		if (o.disabled)return false;
		this.actualSize = {width:this.element.outerWidth(),height:this.element.outerHeight()};
		if (!this.currentHandle)
			this.focus(this.previousHandle, true);
		this.offset = this.element.offset();
		this.handleOffset = this.currentHandle.offset();
		this.clickOffset = {top:e.pageY - this.handleOffset.top,left:e.pageX - this.handleOffset.left};
		this.firstValue = this.value();
		this.propagate('start', e);
		this.drag(e, handle);
		return true;
	},stop:function(e)
	{
		this.propagate('stop', e);
		if (this.firstValue != this.value())
			this.propagate('change', e);
		this.focus(this.currentHandle, true);
		return false;
	},drag:function(e, handle)
	{
		var o = this.options;
		var position = {top:e.pageY - this.offset.top - this.clickOffset.top,left:e.pageX - this.offset.left - this.clickOffset.left};
		if (!this.currentHandle)this.focus(this.previousHandle, true);
		position.left = this.translateLimits(position.left, "x");
		position.top = this.translateLimits(position.top, "y");
		if (o.stepping.x)
		{
			var value = this.convertValue(position.left, "x");
			value = Math.round(value / o.stepping.x) * o.stepping.x;
			position.left = this.translateValue(value, "x");
		}
		if (o.stepping.y)
		{
			var value = this.convertValue(position.top, "y");
			value = Math.round(value / o.stepping.y) * o.stepping.y;
			position.top = this.translateValue(value, "y");
		}
		position.left = this.translateRange(position.left, "x");
		position.top = this.translateRange(position.top, "y");
		if (o.axis != "vertical")this.currentHandle.css({left:position.left});
		if (o.axis != "horizontal")this.currentHandle.css({top:position.top});
		this.currentHandle.data("mouse").sliderValue = {x:Math.round(this.convertValue(position.left, "x")) || 0,y:Math.round(this.convertValue(position.top, "y")) || 0};
		if (this.rangeElement)
			this.updateRange();
		this.propagate('slide', e);
		return false;
	},moveTo:function(value, handle, noPropagation)
	{
		var o = this.options;
		this.actualSize = {width:this.element.outerWidth(),height:this.element.outerHeight()};
		if (handle == undefined && !this.currentHandle && this.handle.length != 1)
			return false;
		if (handle == undefined && !this.currentHandle)
			handle = 0;
		if (handle != undefined)
			this.currentHandle = this.previousHandle = $(this.handle[handle] || handle);
		if (value.x !== undefined && value.y !== undefined)
		{
			var x = value.x,y = value.y;
		}
		else
		{
			var x = value,y = value;
		}
		if (x !== undefined && x.constructor != Number)
		{
			var me = /^\-\=/.test(x),pe = /^\+\=/.test(x);
			if (me || pe)
			{
				x = this.value(null, "x") + parseInt(x.replace(me ? '=' : '+=', ''), 10);
			}
			else
			{
				x = isNaN(parseInt(x, 10)) ? undefined : parseInt(x, 10);
			}
		}
		if (y !== undefined && y.constructor != Number)
		{
			var me = /^\-\=/.test(y),pe = /^\+\=/.test(y);
			if (me || pe)
			{
				y = this.value(null, "y") + parseInt(y.replace(me ? '=' : '+=', ''), 10);
			}
			else
			{
				y = isNaN(parseInt(y, 10)) ? undefined : parseInt(y, 10);
			}
		}
		if (o.axis != "vertical" && x !== undefined)
		{
			if (o.stepping.x)x = Math.round(x / o.stepping.x) * o.stepping.x;
			x = this.translateValue(x, "x");
			x = this.translateLimits(x, "x");
			x = this.translateRange(x, "x");
			o.animate ? this.currentHandle.stop().animate({left:x}, (Math.abs(parseInt(this.currentHandle.css("left")) - x)) * (!isNaN(parseInt(o.animate)) ? o.animate : 5)) : this.currentHandle.css({left:x});
		}
		if (o.axis != "horizontal" && y !== undefined)
		{
			if (o.stepping.y)y = Math.round(y / o.stepping.y) * o.stepping.y;
			y = this.translateValue(y, "y");
			y = this.translateLimits(y, "y");
			y = this.translateRange(y, "y");
			o.animate ? this.currentHandle.stop().animate({top:y}, (Math.abs(parseInt(this.currentHandle.css("top")) - y)) * (!isNaN(parseInt(o.animate)) ? o.animate : 5)) : this.currentHandle.css({top:y});
		}
		if (this.rangeElement)
			this.updateRange();
		this.currentHandle.data("mouse").sliderValue = {x:Math.round(this.convertValue(x, "x")) || 0,y:Math.round(this.convertValue(y, "y")) || 0};
		if (!noPropagation)
		{
			this.propagate('start', null);
			this.propagate('stop', null);
			this.propagate('change', null);
			this.propagate("slide", null);
		}
	}});
	$.ui.slider.getter = "value";
	$.ui.slider.defaults = {handle:".ui-slider-handle",distance:1,animate:false};
})(jQuery);
(function($)
{
	$.widget("ui.tabs", {init:function()
	{
		this.options.event += '.tabs';
		this.tabify(true);
	},setData:function(key, value)
	{
		if ((/^selected/).test(key))
			this.select(value);
		else
		{
			this.options[key] = value;
			this.tabify();
		}
	},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{options:this.options,tab:tab,panel:panel,index:this.$tabs.index(tab)};
	},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.addClass(o.navClass);
			this.$panels.each(function()
			{
				var $this = $(this);
				$this.addClass(o.panelClass);
			});
			if (o.selected === undefined)
			{
				if (location.hash)
				{
					this.$tabs.each(function(i, a)
					{
						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;
				}
				else if (self.$lis.filter('.' + o.selectedClass).length)
					o.selected = self.$lis.index(self.$lis.filter('.' + o.selectedClass)[0]);
			}
			o.selected = o.selected === null || o.selected !== undefined ? o.selected : 0;
			o.disabled = $.unique(o.disabled.concat($.map(this.$lis.filter('.' + o.disabledClass), 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(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.fakeEvent('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();
			}
			$(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.fakeEvent('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.fakeEvent('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\}/g, url).replace(/#\{label\}/g, 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.hideClass).data('destroy.tabs', true);
		}
		$panel.addClass(o.panelClass);
		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.fakeEvent('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.fakeEvent('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.fakeEvent('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.fakeEvent('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 || !bypassCache && $.data(a, 'cache.tabs'))
		{
			callback();
			return;
		}
		var inner = function(parent)
		{
			var $parent = $(parent),$inner = $parent.find('*:last');
			return $inner.length && $inner.is(':not(img)') && $inner || $parent;
		};
		var cleanup = function()
		{
			self.$tabs.filter('.' + o.loadingClass).removeClass(o.loadingClass).each(function()
			{
				if (o.spinner)
					inner(this).parent().html(inner(this).data('label.tabs'));
			});
			self.xhr = null;
		};
		if (o.spinner)
		{
			var label = inner(a).html();
			inner(a).wrapInner('<em></em>').find('em').data('label.tabs', label).html(o.spinner);
		}
		var ajaxOptions = $.extend({}, o.ajaxOptions, {url:url,success:function(r, s)
		{
			$(a.hash).html(r);
			cleanup();
			if (o.cache)
				$.data(a, 'cache.tabs', true);
			$(self.element).triggerHandler('tabsload', [self.fakeEvent('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();
			cleanup();
		}
		$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(' '));
		});
	},fakeEvent:function(type)
	{
		return $.event.fix({type:type,target:this.element[0]});
	}});
	$.ui.tabs.defaults = {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);
(function($)
{
	var PROP_NAME = 'datepicker';
	function Datepicker()
	{
		this.debug = false;
		this._curInst = null;
		this._disabledInputs = [];
		this._datepickerShowing = false;
		this._inDialog = false;
		this._mainDivId = 'ui-datepicker-div';
		this._appendClass = 'ui-datepicker-append';
		this._triggerClass = 'ui-datepicker-trigger';
		this._dialogClass = 'ui-datepicker-dialog';
		this._promptClass = 'ui-datepicker-prompt';
		this._unselectableClass = 'ui-datepicker-unselectable';
		this._currentClass = 'ui-datepicker-current-day';
		this.regional = [];
		this.regional[''] = {clearText:'Clear',clearStatus:'Erase the current date',closeText:'Close',closeStatus:'Close without change',prevText:'&#x3c;Prev',prevStatus:'Show the previous month',nextText:'Next&#x3e;',nextStatus:'Show the next month',currentText:'Today',currentStatus:'Show the current month',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'],monthStatus:'Show a different month',yearStatus:'Show a different year',weekHeader:'Wk',weekStatus:'Week of the year',dayNames:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],dayNamesShort:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],dayNamesMin:['Su','Mo','Tu','We','Th','Fr','Sa'],dayStatus:'Set DD as first week day',dateStatus:'Select DD, M d',dateFormat:'mm/dd/yy',firstDay:0,initStatus:'Select a date',isRTL:false};
		this._defaults = {showOn:'focus',showAnim:'show',showOptions:{},defaultDate:null,appendText:'',buttonText:'...',buttonImage:'',buttonImageOnly:false,closeAtTop:true,mandatory:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:true,changeYear:true,yearRange:'-10:+10',changeFirstDay:true,highlightWeek:false,showOtherMonths:false,showWeeks:false,calculateWeek:this.iso8601Week,shortYearCutoff:'+10',showStatus:false,statusForDate:this.dateStatus,minDate:null,maxDate:null,duration:'normal',beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,stepMonths:1,rangeSelect:false,rangeSeparator:' - ',altField:'',altFormat:''};
		$.extend(this._defaults, this.regional['']);
		this.dpDiv = $('<div id="' + this._mainDivId + '" style="display: none;"></div>');
	}
	$.extend(Datepicker.prototype, {markerClassName:'hasDatepicker',log:function()
	{
		if (this.debug)
			console.log.apply('', arguments);
	},setDefaults:function(settings)
	{
		extendRemove(this._defaults, settings || {});
		return this;
	},_attachDatepicker:function(target, settings)
	{
		var inlineSettings = null;
		for (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)
			target.id = 'dp' + new Date().getTime();
		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)
	{
		return{id:target[0].id,input:target,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:inline,dpDiv:(!inline ? this.dpDiv : $('<div class="ui-datepicker-inline"></div>'))};
	},_connectDatepicker:function(target, inst)
	{
		var input = $(target);
		if (input.hasClass(this.markerClassName))
			return;
		var appendText = this._get(inst, 'appendText');
		var isRTL = this._get(inst, 'isRTL');
		if (appendText)
			input[isRTL ? 'before' : 'after']('<span class="' + this._appendClass + '">' + appendText + '</span>');
		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');
			var 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'](trigger);
			trigger.click(function()
			{
				if ($.datepicker._datepickerShowing && $.datepicker._lastInput == target)
					$.datepicker._hideDatepicker();
				else
					$.datepicker._showDatepicker(target);
				return false;
			});
		}
		input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).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);
	},_inlineDatepicker:function(target, inst)
	{
		var input = $(target);
		if (input.hasClass(this.markerClassName))
			return;
		input.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));
		this._updateDatepicker(inst);
	},_inlineShow:function(inst)
	{
		var numMonths = this._getNumberOfMonths(inst);
		inst.dpDiv.width(numMonths[1] * $('.ui-datepicker', inst.dpDiv[0]).width());
	},_dialogDatepicker:function(input, dateText, onSelect, settings, pos)
	{
		var inst = this._dialogInst;
		if (!inst)
		{
			var id = 'dp' + new Date().getTime();
			this._dialogInput = $('<input type="text" id="' + id + '" size="1" style="position: absolute; top: -100px;"/>');
			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 || {});
		this._dialogInput.val(dateText);
		this._pos = (pos ? (pos.length ? pos : [pos.pageX,pos.pageY]) : null);
		if (!this._pos)
		{
			var browserWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
			var browserHeight = window.innerHeight || document.documentElement.clientHeight || document.body.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] + '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 nodeName = target.nodeName.toLowerCase();
		var $target = $(target);
		$.removeData(target, PROP_NAME);
		if (nodeName == 'input')
		{
			$target.siblings('.' + this._appendClass).remove().end().siblings('.' + this._triggerClass).remove().end().removeClass(this.markerClassName).unbind('focus', this._showDatepicker).unbind('keydown', this._doKeyDown).unbind('keypress', this._doKeyPress);
		}
		else if (nodeName == 'div' || nodeName == 'span')
			$target.removeClass(this.markerClassName).empty();
	},_enableDatepicker:function(target)
	{
		target.disabled = false;
		$(target).siblings('button.' + this._triggerClass).each(function()
		{
			this.disabled = false;
		}).end().siblings('img.' + this._triggerClass).css({opacity:'1.0',cursor:''});
		this._disabledInputs = $.map(this._disabledInputs, function(value)
		{
			return(value == target ? null : value);
		});
	},_disableDatepicker:function(target)
	{
		target.disabled = true;
		$(target).siblings('button.' + this._triggerClass).each(function()
		{
			this.disabled = true;
		}).end().siblings('img.' + this._triggerClass).css({opacity:'0.5',cursor:'default'});
		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;
	},_changeDatepicker:function(target, name, value)
	{
		var settings = name || {};
		if (typeof name == 'string')
		{
			settings = {};
			settings[name] = value;
		}
		if (inst = $.data(target, PROP_NAME))
		{
			extendRemove(inst.settings, settings);
			this._updateDatepicker(inst);
		}
	},_setDateDatepicker:function(target, date, endDate)
	{
		var inst = $.data(target, PROP_NAME);
		if (inst)
		{
			this._setDate(inst, date, endDate);
			this._updateDatepicker(inst);
		}
	},_getDateDatepicker:function(target)
	{
		var inst = $.data(target, PROP_NAME);
		if (inst)
			this._setDateFromField(inst);
		return(inst ? this._getDate(inst) : null);
	},_doKeyDown:function(e)
	{
		var inst = $.data(e.target, PROP_NAME);
		var handled = true;
		if ($.datepicker._datepickerShowing)
			switch (e.keyCode)
					{case 9:$.datepicker._hideDatepicker(null, '');break;case 13:$.datepicker._selectDay(e.target, inst.selectedMonth, inst.selectedYear, $('td.ui-datepicker-days-cell-over', inst.dpDiv)[0]);return false;break;case 27:$.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration'));break;case 33:$.datepicker._adjustDate(e.target, (e.ctrlKey ? -1 : -$.datepicker._get(inst, 'stepMonths')), (e.ctrlKey ? 'Y' : 'M'));break;case 34:$.datepicker._adjustDate(e.target, (e.ctrlKey ? +1 : +$.datepicker._get(inst, 'stepMonths')), (e.ctrlKey ? 'Y' : 'M'));break;case 35:if (e.ctrlKey)$.datepicker._clearDate(e.target);break;case 36:if (e.ctrlKey)$.datepicker._gotoToday(e.target);break;case 37:if (e.ctrlKey)$.datepicker._adjustDate(e.target, -1, 'D');break;case 38:if (e.ctrlKey)$.datepicker._adjustDate(e.target, -7, 'D');break;case 39:if (e.ctrlKey)$.datepicker._adjustDate(e.target, +1, 'D');break;case 40:if (e.ctrlKey)$.datepicker._adjustDate(e.target, +7, 'D');break;default:handled = false;}
		else if (e.keyCode == 36 && e.ctrlKey)
			$.datepicker._showDatepicker(this);
		else
			handled = false;
		if (handled)
		{
			e.preventDefault();
			e.stopPropagation();
		}
	},_doKeyPress:function(e)
	{
		var inst = $.data(e.target, PROP_NAME);
		var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));
		var chr = String.fromCharCode(e.charCode == undefined ? e.keyCode : e.charCode);
		return e.ctrlKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);
	},_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 = $.data(input, PROP_NAME);
		var beforeShow = $.datepicker._get(inst, 'beforeShow');
		extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input,inst]) : {}));
		$.datepicker._hideDatepicker(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.rangeStart = null;
		inst.dpDiv.css({position:'absolute',display:'block',top:'-1000px'});
		$.datepicker._updateDatepicker(inst);
		inst.dpDiv.width($.datepicker._getNumberOfMonths(inst)[1] * $('.ui-datepicker', inst.dpDiv[0])[0].offsetWidth);
		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') || 'show';
			var duration = $.datepicker._get(inst, 'duration');
			var postProcess = function()
			{
				$.datepicker._datepickerShowing = true;
				if ($.browser.msie && parseInt($.browser.version) < 7)
					$('iframe.ui-datepicker-cover').css({width:inst.dpDiv.width() + 4,height:inst.dpDiv.height() + 4});
			};
			if ($.effects && $.effects[showAnim])
				inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);
			else
				inst.dpDiv[showAnim](duration, postProcess);
			if (duration == '')
				postProcess();
			if (inst.input[0].type != 'hidden')
				inst.input[0].focus();
			$.datepicker._curInst = inst;
		}
	},_updateDatepicker:function(inst)
	{
		var dims = {width:inst.dpDiv.width() + 4,height:inst.dpDiv.height() + 4};
		inst.dpDiv.empty().append(this._generateDatepicker(inst)).find('iframe.ui-datepicker-cover').css({width:dims.width,height:dims.height});
		var numMonths = this._getNumberOfMonths(inst);
		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.input && inst.input[0].type != 'hidden')
			$(inst.input[0]).focus();
	},_checkOffset:function(inst, offset, isFixed)
	{
		var pos = inst.input ? this._findPos(inst.input[0]) : null;
		var browserWidth = window.innerWidth || document.documentElement.clientWidth;
		var browserHeight = window.innerHeight || document.documentElement.clientHeight;
		var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
		var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
		if (this._get(inst, 'isRTL') || (offset.left + inst.dpDiv.width() - scrollX) > browserWidth)
			offset.left = Math.max((isFixed ? 0 : scrollX), pos[0] + (inst.input ? inst.input.width() : 0) - (isFixed ? scrollX : 0) - inst.dpDiv.width() -
			                                                (isFixed && $.browser.opera ? document.documentElement.scrollLeft : 0));
		else
			offset.left -= (isFixed ? scrollX : 0);
		if ((offset.top + inst.dpDiv.height() - scrollY) > browserHeight)
			offset.top = Math.max((isFixed ? 0 : scrollY), pos[1] - (isFixed ? scrollY : 0) - (this._inDialog ? 0 : inst.dpDiv.height()) -
			                                               (isFixed && $.browser.opera ? document.documentElement.scrollTop : 0));
		else
			offset.top -= (isFixed ? scrollY : 0);
		return offset;
	},_findPos:function(obj)
	{
		while (obj && (obj.type == 'hidden' || obj.nodeType != 1))
		{
			obj = obj.nextSibling;
		}
		var position = $(obj).offset();
		return[position.left,position.top];
	},_hideDatepicker:function(input, duration)
	{
		var inst = this._curInst;
		if (!inst)
			return;
		var rangeSelect = this._get(inst, 'rangeSelect');
		if (rangeSelect && this._stayOpen)
			this._selectDate('#' + inst.id, this._formatDate(inst, inst.currentDay, inst.currentMonth, inst.currentYear));
		this._stayOpen = false;
		if (this._datepickerShowing)
		{
			duration = (duration != null ? duration : this._get(inst, 'duration'));
			var showAnim = this._get(inst, 'showAnim');
			var postProcess = function()
			{
				$.datepicker._tidyDialog(inst);
			};
			if (duration != '' && $.effects && $.effects[showAnim])
				inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);
			else
				inst.dpDiv[(duration == '' ? 'hide' : (showAnim == 'slideDown' ? 'slideUp' : (showAnim == 'fadeIn' ? 'fadeOut' : 'hide')))](duration, postProcess);
			if (duration == '')
				this._tidyDialog(inst);
			var onClose = this._get(inst, 'onClose');
			if (onClose)
				onClose.apply((inst.input ? inst.input[0] : null), [this._getDate(inst),inst]);
			this._datepickerShowing = false;
			this._lastInput = null;
			inst.settings.prompt = null;
			if (this._inDialog)
			{
				this._dialogInput.css({position:'absolute',left:'0',top:'-100px'});
				if ($.blockUI)
				{
					$.unblockUI();
					$('body').append(this.dpDiv);
				}
			}
			this._inDialog = false;
		}
		this._curInst = null;
	},_tidyDialog:function(inst)
	{
		inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker');
		$('.' + this._promptClass, inst.dpDiv).remove();
	},_checkExternalClick:function(event)
	{
		if (!$.datepicker._curInst)
			return;
		var $target = $(event.target);
		if (($target.parents('#' + $.datepicker._mainDivId).length == 0) && !$target.hasClass($.datepicker.markerClassName) && !$target.hasClass($.datepicker._triggerClass) && $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI))
			$.datepicker._hideDatepicker(null, '');
	},_adjustDate:function(id, offset, period)
	{
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		this._adjustInstDate(inst, offset, period);
		this._updateDatepicker(inst);
	},_gotoToday:function(id)
	{
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		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._adjustDate(target);
		this._notifyChange(inst);
	},_selectMonthYear:function(id, select, period)
	{
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		inst._selectingMonthYear = false;
		inst[period == 'M' ? 'drawMonth' : 'drawYear'] = select.options[select.selectedIndex].value - 0;
		this._adjustDate(target);
		this._notifyChange(inst);
	},_clickMonthYear:function(id)
	{
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		if (inst.input && inst._selectingMonthYear && !$.browser.msie)
			inst.input[0].focus();
		inst._selectingMonthYear = !inst._selectingMonthYear;
	},_changeFirstDay:function(id, day)
	{
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		inst.settings.firstDay = day;
		this._updateDatepicker(inst);
	},_selectDay:function(id, month, year, td)
	{
		if ($(td).hasClass(this._unselectableClass))
			return;
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		var rangeSelect = this._get(inst, 'rangeSelect');
		if (rangeSelect)
		{
			this._stayOpen = !this._stayOpen;
			if (this._stayOpen)
			{
				$('.ui-datepicker td').removeClass(this._currentClass);
				$(td).addClass(this._currentClass);
			}
		}
		inst.selectedDay = inst.currentDay = $('a', td).html();
		inst.selectedMonth = inst.currentMonth = month;
		inst.selectedYear = inst.currentYear = year;
		if (this._stayOpen)
		{
			inst.endDay = inst.endMonth = inst.endYear = null;
		}
		else if (rangeSelect)
		{
			inst.endDay = inst.currentDay;
			inst.endMonth = inst.currentMonth;
			inst.endYear = inst.currentYear;
		}
		this._selectDate(id, this._formatDate(inst, inst.currentDay, inst.currentMonth, inst.currentYear));
		if (this._stayOpen)
		{
			inst.rangeStart = new Date(inst.currentYear, inst.currentMonth, inst.currentDay);
			this._updateDatepicker(inst);
		}
		else if (rangeSelect)
		{
			inst.selectedDay = inst.currentDay = inst.rangeStart.getDate();
			inst.selectedMonth = inst.currentMonth = inst.rangeStart.getMonth();
			inst.selectedYear = inst.currentYear = inst.rangeStart.getFullYear();
			inst.rangeStart = null;
			if (inst.inline)
				this._updateDatepicker(inst);
		}
	},_clearDate:function(id)
	{
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		if (this._get(inst, 'mandatory'))
			return;
		this._stayOpen = false;
		inst.endDay = inst.endMonth = inst.endYear = inst.rangeStart = null;
		this._selectDate(target, '');
	},_selectDate:function(id, dateStr)
	{
		var target = $(id);
		var inst = $.data(target[0], PROP_NAME);
		dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
		if (this._get(inst, 'rangeSelect') && dateStr)
			dateStr = (inst.rangeStart ? this._formatDate(inst, inst.rangeStart) : dateStr) + this._get(inst, 'rangeSeparator') + dateStr;
		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 if (!this._stayOpen)
		{
			this._hideDatepicker(null, this._get(inst, 'duration'));
			this._lastInput = inst.input[0];
			if (typeof(inst.input[0]) != 'object')
				inst.input[0].focus();
			this._lastInput = null;
		}
	},_updateAlternate:function(inst)
	{
		var altField = this._get(inst, 'altField');
		if (altField)
		{
			var altFormat = this._get(inst, 'altFormat');
			var date = this._getDate(inst);
			dateStr = (isArray(date) ? (!date[0] && !date[1] ? '' : this.formatDate(altFormat, date[0], this._getFormatConfig(inst)) +
			                                                        this._get(inst, 'rangeSeparator') + this.formatDate(altFormat, date[1] || date[0], this._getFormatConfig(inst))) : 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.getFullYear(), date.getMonth(), date.getDate(), (date.getTimezoneOffset() / -60));
		var firstMon = new Date(checkDate.getFullYear(), 1 - 1, 4);
		var firstDay = firstMon.getDay() || 7;
		firstMon.setDate(firstMon.getDate() + 1 - firstDay);
		if (firstDay < 4 && checkDate < firstMon)
		{
			checkDate.setDate(checkDate.getDate() - 3);
			return $.datepicker.iso8601Week(checkDate);
		}
		else if (checkDate > new Date(checkDate.getFullYear(), 12 - 1, 28))
		{
			firstDay = new Date(checkDate.getFullYear() + 1, 1 - 1, 4).getDay() || 7;
			if (firstDay > 4 && (checkDate.getDay() || 7) < firstDay - 3)
			{
				checkDate.setDate(checkDate.getDate() + 3);
				return $.datepicker.iso8601Week(checkDate);
			}
		}
		return Math.floor(((checkDate - firstMon) / 86400000) / 7) + 1;
	},dateStatus:function(date, inst)
	{
		return $.datepicker.formatDate($.datepicker._get(inst, 'dateStatus'), date, $.datepicker._getFormatConfig(inst));
	},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;
		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 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)
		{
			lookAhead(match);
			var origSize = (match == '@' ? 14 : (match == 'y' ? 4 : 2));
			var size = origSize;
			var num = 0;
			while (size > 0 && iValue < value.length && value.charAt(iValue) >= '0' && value.charAt(iValue) <= '9')
			{
				num = num * 10 + (value.charAt(iValue++) - 0);
				size--;
			}
			if (size == origSize)
				throw'Missing number at position ' + iValue;
			return num;
		};
		var getName = function(match, shortNames, longNames)
		{
			var names = (lookAhead(match) ? longNames : shortNames);
			var size = 0;
			for (var j = 0; j < names.length; j++)
				size = Math.max(size, names[j].length);
			var name = '';
			var iInit = iValue;
			while (size > 0 && iValue < value.length)
			{
				name += value.charAt(iValue++);
				for (var i = 0; i < names.length; i++)
					if (name == names[i])
						return i + 1;
				size--;
			}
			throw'Unknown name at position ' + iInit;
		};
		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'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"'":if (lookAhead("'"))
					checkLiteral();
				else
					literal = true;break;default:checkLiteral();}
		}
		if (year < 100)
			year += new Date().getFullYear() - new Date().getFullYear() % 100 +
			        (year <= shortYearCutoff ? 0 : -100);
		var date = 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',TIMESTAMP:'@',W3C:'yy-mm-dd',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)
		{
			return(lookAhead(match) && value < 10 ? '0' : '') + value;
		};
		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());break;case'D':output += formatName('D', date.getDay(), dayNamesShort, dayNames);break;case'm':output += formatNumber('m', date.getMonth() + 1);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"'":if (lookAhead("'"))
						output += "'";
					else
						literal = true;break;default:output += format.charAt(iFormat);}
			}
		return output;
	},_possibleChars:function(format)
	{
		var chars = '';
		var literal = false;
		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)
	{
		var dateFormat = this._get(inst, 'dateFormat');
		var dates = inst.input ? inst.input.val().split(this._get(inst, 'rangeSeparator')) : null;
		inst.endDay = inst.endMonth = inst.endYear = null;
		var date = defaultDate = this._getDefaultDate(inst);
		if (dates.length > 0)
		{
			var settings = this._getFormatConfig(inst);
			if (dates.length > 1)
			{
				date = this.parseDate(dateFormat, dates[1], settings) || defaultDate;
				inst.endDay = date.getDate();
				inst.endMonth = date.getMonth();
				inst.endYear = date.getFullYear();
			}
			try
			{
				date = this.parseDate(dateFormat, dates[0], settings) || defaultDate;
			}
			catch(e)
			{
				this.log(e);
				date = defaultDate;
			}
		}
		inst.selectedDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = date.getFullYear();
		inst.currentDay = (dates[0] ? date.getDate() : 0);
		inst.currentMonth = (dates[0] ? date.getMonth() : 0);
		inst.currentYear = (dates[0] ? date.getFullYear() : 0);
		this._adjustInstDate(inst);
	},_getDefaultDate:function(inst)
	{
		var date = this._determineDate(this._get(inst, 'defaultDate'), new Date());
		var minDate = this._getMinMaxDate(inst, 'min', true);
		var maxDate = this._getMinMaxDate(inst, 'max');
		date = (minDate && date < minDate ? minDate : date);
		date = (maxDate && date > maxDate ? maxDate : date);
		return date;
	},_determineDate:function(date, defaultDate)
	{
		var offsetNumeric = function(offset)
		{
			var date = new Date();
			date.setUTCDate(date.getUTCDate() + offset);
			return date;
		};
		var offsetString = function(offset, getDaysInMonth)
		{
			var date = 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 += (matches[1] - 0);break;case'w':case'W':day += (matches[1] * 7);break;case'm':case'M':month += (matches[1] - 0);day = Math.min(day, getDaysInMonth(year, month));break;case'y':case'Y':year += (matches[1] - 0);day = Math.min(day, getDaysInMonth(year, month));break;}
				matches = pattern.exec(offset);
			}
			return new Date(year, month, day);
		};
		return(date == null ? defaultDate : (typeof date == 'string' ? offsetString(date, this._getDaysInMonth) : (typeof date == 'number' ? offsetNumeric(date) : date)));
	},_setDate:function(inst, date, endDate)
	{
		var clear = !(date);
		date = this._determineDate(date, new Date());
		inst.selectedDay = inst.currentDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = inst.currentMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = inst.currentYear = date.getFullYear();
		if (this._get(inst, 'rangeSelect'))
		{
			if (endDate)
			{
				endDate = this._determineDate(endDate, null);
				inst.endDay = endDate.getDate();
				inst.endMonth = endDate.getMonth();
				inst.endYear = endDate.getFullYear();
			}
			else
			{
				inst.endDay = inst.currentDay;
				inst.endMonth = inst.currentMonth;
				inst.endYear = inst.currentYear;
			}
		}
		this._adjustInstDate(inst);
		if (inst.input)
			inst.input.val(clear ? '' : this._formatDate(inst) +
			                            (!this._get(inst, 'rangeSelect') ? '' : this._get(inst, 'rangeSeparator') +
			                                                                    this._formatDate(inst, inst.endDay, inst.endMonth, inst.endYear)));
	},_getDate:function(inst)
	{
		var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null : new Date(inst.currentYear, inst.currentMonth, inst.currentDay));
		if (this._get(inst, 'rangeSelect'))
		{
			return[inst.rangeStart || startDate,(!inst.endYear ? null : new Date(inst.endYear, inst.endMonth, inst.endDay))];
		}
		else
			return startDate;
	},_generateDatepicker:function(inst)
	{
		var today = new Date();
		today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
		var showStatus = this._get(inst, 'showStatus');
		var isRTL = this._get(inst, 'isRTL');
		var clear = (this._get(inst, 'mandatory') ? '' : '<div class="ui-datepicker-clear"><a onclick="jQuery.datepicker._clearDate(\'#' + inst.id + '\');"' +
		                                                 (showStatus ? this._addStatus(inst, this._get(inst, 'clearStatus') || '&#xa0;') : '') + '>' +
		                                                 this._get(inst, 'clearText') + '</a></div>');
		var controls = '<div class="ui-datepicker-control">' + (isRTL ? '' : clear) + '<div class="ui-datepicker-close"><a onclick="jQuery.datepicker._hideDatepicker();"' +
		               (showStatus ? this._addStatus(inst, this._get(inst, 'closeStatus') || '&#xa0;') : '') + '>' +
		               this._get(inst, 'closeText') + '</a></div>' + (isRTL ? clear : '') + '</div>';
		var prompt = this._get(inst, 'prompt');
		var closeAtTop = this._get(inst, 'closeAtTop');
		var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');
		var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');
		var numMonths = this._getNumberOfMonths(inst);
		var stepMonths = this._get(inst, 'stepMonths');
		var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);
		var currentDate = (!inst.currentDay ? new Date(9999, 9, 9) : new Date(inst.currentYear, inst.currentMonth, inst.currentDay));
		var minDate = this._getMinMaxDate(inst, 'min', true);
		var maxDate = this._getMinMaxDate(inst, 'max');
		var drawMonth = inst.drawMonth;
		var drawYear = inst.drawYear;
		if (maxDate)
		{
			var maxDraw = new Date(maxDate.getFullYear(), maxDate.getMonth() - numMonths[1] + 1, maxDate.getDate());
			maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
			while (new Date(drawYear, drawMonth, 1) > maxDraw)
			{
				drawMonth--;
				if (drawMonth < 0)
				{
					drawMonth = 11;
					drawYear--;
				}
			}
		}
		var prevText = this._get(inst, 'prevText');
		prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, new Date(drawYear, drawMonth - stepMonths, 1), this._getFormatConfig(inst)));
		var prev = '<div class="ui-datepicker-prev">' + (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? '<a onclick="jQuery.datepicker._adjustDate(\'#' + inst.id + '\', -' + stepMonths + ', \'M\');"' +
		                                                                                                       (showStatus ? this._addStatus(inst, this._get(inst, 'prevStatus') || '&#xa0;') : '') + '>' + prevText + '</a>' : (hideIfNoPrevNext ? '' : '<label>' + prevText + '</label>')) + '</div>';
		var nextText = this._get(inst, 'nextText');
		nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, new Date(drawYear, drawMonth + stepMonths, 1), this._getFormatConfig(inst)));
		var next = '<div class="ui-datepicker-next">' + (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? '<a onclick="jQuery.datepicker._adjustDate(\'#' + inst.id + '\', +' + stepMonths + ', \'M\');"' +
		                                                                                                       (showStatus ? this._addStatus(inst, this._get(inst, 'nextStatus') || '&#xa0;') : '') + '>' + nextText + '</a>' : (hideIfNoPrevNext ? '' : '<label>' + nextText + '</label>')) + '</div>';
		var currentText = this._get(inst, 'currentText');
		currentText = (!navigationAsDateFormat ? currentText : this.formatDate(currentText, today, this._getFormatConfig(inst)));
		var html = (prompt ? '<div class="' + this._promptClass + '">' + prompt + '</div>' : '') +
		           (closeAtTop && !inst.inline ? controls : '') + '<div class="ui-datepicker-links">' + (isRTL ? next : prev) +
		           (this._isInRange(inst, (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today)) ? '<div class="ui-datepicker-current">' + '<a onclick="jQuery.datepicker._gotoToday(\'#' + inst.id + '\');"' +
		                                                                                                               (showStatus ? this._addStatus(inst, this._get(inst, 'currentStatus') || '&#xa0;') : '') + '>' +
		                                                                                                               currentText + '</a></div>' : '') + (isRTL ? prev : next) + '</div>';
		var firstDay = this._get(inst, 'firstDay');
		var changeFirstDay = this._get(inst, 'changeFirstDay');
		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 beforeShowDay = this._get(inst, 'beforeShowDay');
		var highlightWeek = this._get(inst, 'highlightWeek');
		var showOtherMonths = this._get(inst, 'showOtherMonths');
		var showWeeks = this._get(inst, 'showWeeks');
		var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;
		var status = (showStatus ? this._get(inst, 'dayStatus') || '&#xa0;' : '');
		var dateStatus = this._get(inst, 'statusForDate') || this.dateStatus;
		var endDate = inst.endDay ? new Date(inst.endYear, inst.endMonth, inst.endDay) : currentDate;
		for (var row = 0; row < numMonths[0]; row++)
			for (var col = 0; col < numMonths[1]; col++)
			{
				var selectedDate = new Date(drawYear, drawMonth, inst.selectedDay);
				html += '<div class="ui-datepicker-one-month' + (col == 0 ? ' ui-datepicker-new-row' : '') + '">' +
				        this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, selectedDate, row > 0 || col > 0, showStatus, monthNames) + '<table class="ui-datepicker" cellpadding="0" cellspacing="0"><thead>' + '<tr class="ui-datepicker-title-row">' +
				        (showWeeks ? '<td>' + this._get(inst, 'weekHeader') + '</td>' : '');
				for (var dow = 0; dow < 7; dow++)
				{
					var day = (dow + firstDay) % 7;
					var dayStatus = (status.indexOf('DD') > -1 ? status.replace(/DD/, dayNames[day]) : status.replace(/D/, dayNamesShort[day]));
					html += '<td' + ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end-cell"' : '') + '>' +
					        (!changeFirstDay ? '<span' : '<a onclick="jQuery.datepicker._changeFirstDay(\'#' + inst.id + '\', ' + day + ');"') +
					        (showStatus ? this._addStatus(inst, dayStatus) : '') + ' title="' + dayNames[day] + '">' +
					        dayNamesMin[day] + (changeFirstDay ? '</a>' : '</span>') + '</td>';
				}
				html += '</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 printDate = new Date(drawYear, drawMonth, 1 - leadDays);
				var numRows = (isMultiMonth ? 6 : Math.ceil((leadDays + daysInMonth) / 7));
				for (var dRow = 0; dRow < numRows; dRow++)
				{
					html += '<tr class="ui-datepicker-days-row">' +
					        (showWeeks ? '<td class="ui-datepicker-week-col">' + 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 || !daySettings[0] || (minDate && printDate < minDate) || (maxDate && printDate > maxDate);
						html += '<td class="ui-datepicker-days-cell' +
						        ((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end-cell' : '') +
						        (otherMonth ? ' ui-datepicker-otherMonth' : '') +
						        (printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth ? ' ui-datepicker-days-cell-over' : '') +
						        (unselectable ? ' ' + this._unselectableClass : '') +
						        (otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] +
						                                               (printDate.getTime() >= currentDate.getTime() && printDate.getTime() <= endDate.getTime() ? ' ' + this._currentClass : '') +
						                                               (printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' +
						        ((!otherMonth || showOtherMonths) && daySettings[2] ? ' title="' + daySettings[2] + '"' : '') +
						        (unselectable ? (highlightWeek ? ' onmouseover="jQuery(this).parent().addClass(\'ui-datepicker-week-over\');"' + ' onmouseout="jQuery(this).parent().removeClass(\'ui-datepicker-week-over\');"' : '') : ' onmouseover="jQuery(this).addClass(\'ui-datepicker-days-cell-over\')' +
						                                                                                                                                                                                                                 (highlightWeek ? '.parent().addClass(\'ui-datepicker-week-over\')' : '') + ';' +
						                                                                                                                                                                                                                 (!showStatus || (otherMonth && !showOtherMonths) ? '' : 'jQuery(\'#ui-datepicker-status-' +
						                                                                                                                                                                                                                                                                         inst.id + '\').html(\'' + (dateStatus.apply((inst.input ? inst.input[0] : null), [printDate,inst]) || '&#xa0;') + '\');') + '"' + ' onmouseout="jQuery(this).removeClass(\'ui-datepicker-days-cell-over\')' +
						                                                                                                                                                                                                                 (highlightWeek ? '.parent().removeClass(\'ui-datepicker-week-over\')' : '') + ';' +
						                                                                                                                                                                                                                 (!showStatus || (otherMonth && !showOtherMonths) ? '' : 'jQuery(\'#ui-datepicker-status-' +
						                                                                                                                                                                                                                                                                         inst.id + '\').html(\'&#xa0;\');') + '" onclick="jQuery.datepicker._selectDay(\'#' +
						                                                                                                                                                                                                                 inst.id + '\',' + drawMonth + ',' + drawYear + ', this);"') + '>' +
						        (otherMonth ? (showOtherMonths ? printDate.getDate() : '&#xa0;') : (unselectable ? printDate.getDate() : '<a>' + printDate.getDate() + '</a>')) + '</td>';
						printDate.setUTCDate(printDate.getUTCDate() + 1);
					}
					html += '</tr>';
				}
				drawMonth++;
				if (drawMonth > 11)
				{
					drawMonth = 0;
					drawYear++;
				}
				html += '</tbody></table></div>';
			}
		html += (showStatus ? '<div style="clear: both;"></div><div id="ui-datepicker-status-' + inst.id + '" class="ui-datepicker-status">' + (this._get(inst, 'initStatus') || '&#xa0;') + '</div>' : '') +
		        (!closeAtTop && !inst.inline ? controls : '') + '<div style="clear: both;"></div>' +
		        ($.browser.msie && parseInt($.browser.version) < 7 && !inst.inline ? '<iframe src="javascript:false;" class="ui-datepicker-cover"></iframe>' : '');
		return html;
	},_generateMonthYearHeader:function(inst, drawMonth, drawYear, minDate, maxDate, selectedDate, secondary, showStatus, monthNames)
	{
		minDate = (inst.rangeStart && minDate && selectedDate < minDate ? selectedDate : minDate);
		var html = '<div class="ui-datepicker-header">';
		if (secondary || !this._get(inst, 'changeMonth'))
			html += monthNames[drawMonth] + '&#xa0;';
		else
		{
			var inMinYear = (minDate && minDate.getFullYear() == drawYear);
			var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);
			html += '<select class="ui-datepicker-new-month" ' + 'onchange="jQuery.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'M\');" ' + 'onclick="jQuery.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
			        (showStatus ? this._addStatus(inst, this._get(inst, 'monthStatus') || '&#xa0;') : '') + '>';
			for (var month = 0; month < 12; month++)
			{
				if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth()))
					html += '<option value="' + month + '"' +
					        (month == drawMonth ? ' selected="selected"' : '') + '>' + monthNames[month] + '</option>';
			}
			html += '</select>';
		}
		if (secondary || !this._get(inst, 'changeYear'))
			html += drawYear;
		else
		{
			var years = this._get(inst, 'yearRange').split(':');
			var year = 0;
			var endYear = 0;
			if (years.length != 2)
			{
				year = drawYear - 10;
				endYear = drawYear + 10;
			}
			else if (years[0].charAt(0) == '+' || years[0].charAt(0) == '-')
			{
				year = endYear = new Date().getFullYear();
				year += parseInt(years[0], 10);
				endYear += parseInt(years[1], 10);
			}
			else
			{
				year = parseInt(years[0], 10);
				endYear = parseInt(years[1], 10);
			}
			year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
			endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
			html += '<select class="ui-datepicker-new-year" ' + 'onchange="jQuery.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' + 'onclick="jQuery.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
			        (showStatus ? this._addStatus(inst, this._get(inst, 'yearStatus') || '&#xa0;') : '') + '>';
			for (; year <= endYear; year++)
			{
				html += '<option value="' + year + '"' +
				        (year == drawYear ? ' selected="selected"' : '') + '>' + year + '</option>';
			}
			html += '</select>';
		}
		html += '</div>';
		return html;
	},_addStatus:function(inst, text)
	{
		return' onmouseover="jQuery(\'#ui-datepicker-status-' + inst.id + '\').html(\'' + text + '\');" ' + 'onmouseout="jQuery(\'#ui-datepicker-status-' + inst.id + '\').html(\'&#xa0;\');"';
	},_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 = new Date(year, month, day);
		var minDate = this._getMinMaxDate(inst, 'min', true);
		var maxDate = this._getMinMaxDate(inst, 'max');
		date = (minDate && date < minDate ? minDate : date);
		date = (maxDate && date > maxDate ? maxDate : date);
		inst.selectedDay = date.getDate();
		inst.drawMonth = inst.selectedMonth = date.getMonth();
		inst.drawYear = inst.selectedYear = date.getFullYear();
		if (period == 'M' || period == 'Y')
			this._notifyChange(inst);
	},_notifyChange:function(inst)
	{
		var onChange = this._get(inst, 'onChangeMonthYear');
		if (onChange)
			onChange.apply((inst.input ? inst.input[0] : null), [new Date(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, checkRange)
	{
		var date = this._determineDate(this._get(inst, minMax + 'Date'), null);
		if (date)
		{
			date.setHours(0);
			date.setMinutes(0);
			date.setSeconds(0);
			date.setMilliseconds(0);
		}
		return(!checkRange || !inst.rangeStart ? date : (!date || inst.rangeStart > date ? inst.rangeStart : date));
	},_getDaysInMonth:function(year, month)
	{
		return 32 - 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 = new Date(curYear, curMonth + (offset < 0 ? offset : numMonths[1]), 1);
		if (offset < 0)
			date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
		return this._isInRange(inst, date);
	},_isInRange:function(inst, date)
	{
		var newMinDate = (!inst.rangeStart ? null : new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay));
		newMinDate = (newMinDate && inst.rangeStart < newMinDate ? inst.rangeStart : newMinDate);
		var minDate = newMinDate || this._getMinMaxDate(inst, 'min');
		var maxDate = this._getMinMaxDate(inst, 'max');
		return((!minDate || date >= minDate) && (!maxDate || date <= maxDate));
	},_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 : new Date(year, month, day)) : 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)
	{
		var otherArgs = Array.prototype.slice.call(arguments, 1);
		if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate'))
			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();
	$(document).ready(function()
	{
		$(document.body).append($.datepicker.dpDiv).mousedown($.datepicker._checkExternalClick);
	});
})(jQuery);
;
(function($)
{
	$.effects = $.effects || {};
	$.extend($.effects, {save:function(el, set)
	{
		for (var i = 0; i < set.length; i++)
		{
			if (set[i] !== null)$.data(el[0], "ec.storage." + set[i], el[0].style[set[i]]);
		}
	},restore:function(el, set)
	{
		for (var i = 0; i < set.length; i++)
		{
			if (set[i] !== null)el.css(set[i], $.data(el[0], "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(el)
	{
		if (el.parent().attr('id') == 'fxWrapper')
			return el;
		var props = {width:el.outerWidth({margin:true}),height:el.outerHeight({margin:true}),'float':el.css('float')};
		el.wrap('<div id="fxWrapper" style="font-size:100%;background:transparent;border:none;margin:0;padding:0"></div>');
		var wrapper = el.parent();
		if (el.css('position') == 'static')
		{
			wrapper.css({position:'relative'});
			el.css({position:'relative'});
		}
		else
		{
			var top = el.css('top');
			if (isNaN(parseInt(top)))top = 'auto';
			var left = el.css('left');
			if (isNaN(parseInt(left)))left = 'auto';
			wrapper.css({position:el.css('position'),top:top,left:left,zIndex:el.css('z-index')}).show();
			el.css({position:'relative',top:0,left:0});
		}
		wrapper.css(props);
		return wrapper;
	},removeWrapper:function(el)
	{
		if (el.parent().attr('id') == 'fxWrapper')
			return el.parent().replaceWith(el);
		return el;
	},setTransition:function(el, list, factor, val)
	{
		val = val || {};
		$.each(list, function(i, x)
		{
			unit = el.cssUnit(x);
			if (unit[0] > 0)val[x] = unit[0] * factor + unit[1];
		});
		return val;
	},animateClass:function(value, duration, easing, callback)
	{
		var cb = (typeof easing == "function" ? easing : (callback ? callback : null));
		var ea = (typeof easing == "object" ? easing : null);
		return this.each(function()
		{
			var offset = {};
			var that = $(this);
			var oldStyleAttr = that.attr("style") || '';
			if (typeof oldStyleAttr == 'object')oldStyleAttr = oldStyleAttr["cssText"];
			if (value.toggle)
			{
				that.hasClass(value.toggle) ? value.remove = value.toggle : value.add = value.toggle;
			}
			var oldStyle = $.extend({}, (document.defaultView ? document.defaultView.getComputedStyle(this, null) : this.currentStyle));
			if (value.add)that.addClass(value.add);
			if (value.remove)that.removeClass(value.remove);
			var newStyle = $.extend({}, (document.defaultView ? document.defaultView.getComputedStyle(this, null) : this.currentStyle));
			if (value.add)that.removeClass(value.add);
			if (value.remove)that.addClass(value.remove);
			for (var n in newStyle)
			{
				if (typeof newStyle[n] != "function" && newStyle[n] && n.indexOf("Moz") == -1 && n.indexOf("length") == -1 && newStyle[n] != oldStyle[n] && (n.match(/color/i) || (!n.match(/color/i) && !isNaN(parseInt(newStyle[n], 10)))) && (oldStyle.position != "static" || (oldStyle.position == "static" && !n.match(/left|top|bottom|right/))))offset[n] = newStyle[n];
			}
			that.animate(offset, duration, ea, function()
			{
				if (typeof $(this).attr("style") == 'object')
				{
					$(this).attr("style")["cssText"] = "";
					$(this).attr("style")["cssText"] = oldStyleAttr;
				}
				else $(this).attr("style", oldStyleAttr);
				if (value.add)$(this).addClass(value.add);
				if (value.remove)$(this).removeClass(value.remove);
				if (cb)cb.apply(this, arguments);
			});
		});
	}});
	$.fn.extend({_show:$.fn.show,_hide:$.fn.hide,__toggle:$.fn.toggle,_addClass:$.fn.addClass,_removeClass:$.fn.removeClass,_toggleClass:$.fn.toggleClass,effect:function(fx, o, speed, callback)
	{
		return $.effects[fx] ? $.effects[fx].call(this, {method:fx,options:o || {},duration:speed,callback:callback}) : null;
	},show:function()
	{
		if (!arguments[0] || (arguments[0].constructor == Number || /(slow|normal|fast)/.test(arguments[0])))
			return this._show.apply(this, arguments);
		else
		{
			var o = arguments[1] || {};
			o['mode'] = 'show';
			return this.effect.apply(this, [arguments[0],o,arguments[2] || o.duration,arguments[3] || o.callback]);
		}
	},hide:function()
	{
		if (!arguments[0] || (arguments[0].constructor == Number || /(slow|normal|fast)/.test(arguments[0])))
			return this._hide.apply(this, arguments);
		else
		{
			var o = arguments[1] || {};
			o['mode'] = 'hide';
			return this.effect.apply(this, [arguments[0],o,arguments[2] || o.duration,arguments[3] || o.callback]);
		}
	},toggle:function()
	{
		if (!arguments[0] || (arguments[0].constructor == Number || /(slow|normal|fast)/.test(arguments[0])) || (arguments[0].constructor == Function))
			return this.__toggle.apply(this, arguments);
		else
		{
			var o = arguments[1] || {};
			o['mode'] = 'toggle';
			return this.effect.apply(this, [arguments[0],o,arguments[2] || o.duration,arguments[3] || o.callback]);
		}
	},addClass:function(classNames, speed, easing, callback)
	{
		return speed ? $.effects.animateClass.apply(this, [{add:classNames},speed,easing,callback]) : this._addClass(classNames);
	},removeClass:function(classNames, speed, easing, callback)
	{
		return speed ? $.effects.animateClass.apply(this, [{remove:classNames},speed,easing,callback]) : this._removeClass(classNames);
	},toggleClass:function(classNames, speed, easing, callback)
	{
		return speed ? $.effects.animateClass.apply(this, [{toggle:classNames},speed,easing,callback]) : this._toggleClass(classNames);
	},morph:function(remove, add, speed, easing, callback)
	{
		return $.effects.animateClass.apply(this, [{add:add,remove:remove},speed,easing,callback]);
	},switchClass:function()
	{
		return this.morph.apply(this, arguments);
	},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;
	}});
	jQuery.each(['backgroundColor','borderBottomColor','borderLeftColor','borderRightColor','borderTopColor','color','outlineColor'], function(i, attr)
	{
		jQuery.fx.step[attr] = function(fx)
		{
			if (fx.state == 0)
			{
				fx.start = getColor(fx.elem, attr);
				fx.end = getRGB(fx.end);
			}
			fx.elem.style[attr] = "rgb(" + [Math.max(Math.min(parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),Math.max(Math.min(parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),Math.max(Math.min(parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)].join(",") + ")";
		}
	});
	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]),parseInt(result[2]),parseInt(result[3])];
		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[jQuery.trim(color).toLowerCase()];
	}
	function getColor(elem, attr)
	{
		var color;
		do{
			color = jQuery.curCSS(elem, attr);
			if (color != '' && color != 'transparent' || jQuery.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]};
	jQuery.easing['jswing'] = jQuery.easing['swing'];
	jQuery.extend(jQuery.easing, {def:'easeOutQuad',swing:function(x, t, b, c, d)
	{
		return jQuery.easing[jQuery.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 - jQuery.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 jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b;
		return jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b;
	}});
})(jQuery);
(function($)
{
	$.effects.blind = function(o)
	{
		return this.queue(function()
		{
			var el = $(this),props = ['position','top','left'];
			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($)
{
	$.effects.bounce = function(o)
	{
		return this.queue(function()
		{
			var el = $(this),props = ['position','top','left'];
			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($)
{
	$.effects.clip = function(o)
	{
		return this.queue(function()
		{
			var el = $(this),props = ['position','top','left','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($)
{
	$.effects.drop = function(o)
	{
		return this.queue(function()
		{
			var el = $(this),props = ['position','top','left','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($)
{
	$.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")) || 0;
			offset.left -= parseInt(el.css("marginLeft")) || 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('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();
				$('.effects-explode').remove();
			}, o.duration || 500);
		});
	};
})(jQuery);
(function($)
{
	$.effects.fold = function(o)
	{
		return this.queue(function()
		{
			var el = $(this),props = ['position','top','left'];
			var mode = $.effects.setMode(el, o.options.mode || 'hide');
			var size = o.options.size || 15;
			var horizFirst = !(!o.options.horizFirst);
			$.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]) / 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, o.duration / 2, o.options.easing).animate(animation2, o.duration / 2, 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($)
{
	$.effects.highlight = function(o)
	{
		return this.queue(function()
		{
			var el = $(this),props = ['backgroundImage','backgroundColor','opacity'];
			var mode = $.effects.setMode(el, o.options.mode || 'show');
			var color = o.options.color || "#ffff99";
			var oldColor = el.css("backgroundColor");
			$.effects.save(el, props);
			el.show();
			el.css({backgroundImage:'none',backgroundColor:color});
			var animation = {backgroundColor:oldColor};
			if (mode == "hide")animation['opacity'] = 0;
			el.animate(animation, {queue:false,duration:o.duration,easing:o.options.easing,complete:function()
			{
				if (mode == "hide")el.hide();
				$.effects.restore(el, props);
				if (mode == "show" && jQuery.browser.msie)this.style.removeAttribute('filter');
				if (o.callback)o.callback.apply(this, arguments);
				el.dequeue();
			}});
		});
	};
})(jQuery);
(function($)
{
	$.effects.pulsate = function(o)
	{
		return this.queue(function()
		{
			var el = $(this);
			var mode = $.effects.setMode(el, o.options.mode || 'show');
			var times = o.options.times || 5;
			if (mode == 'hide')times--;
			if (el.is(':hidden'))
			{
				el.css('opacity', 0);
				el.show();
				el.animate({opacity:1}, o.duration / 2, o.options.easing);
				times = times - 2;
			}
			for (var i = 0; i < times; i++)
			{
				el.animate({opacity:0}, o.duration / 2, o.options.easing).animate({opacity:1}, o.duration / 2, o.options.easing);
			}
			;
			if (mode == 'hide')
			{
				el.animate({opacity:0}, o.duration / 2, o.options.easing, function()
				{
					el.hide();
					if (o.callback)o.callback.apply(this, arguments);
				});
			}
			else
			{
				el.animate({opacity:0}, o.duration / 2, o.options.easing).animate({opacity:1}, o.duration / 2, o.options.easing, function()
				{
					if (o.callback)o.callback.apply(this, arguments);
				});
			}
			;
			el.queue('fx', function()
			{
				el.dequeue();
			});
			el.dequeue();
		});
	};
})(jQuery);
(function($)
{
	$.effects.puff = function(o)
	{
		return this.queue(function()
		{
			var el = $(this);
			var options = $.extend(true, {}, o.options);
			var mode = $.effects.setMode(el, o.options.mode || 'hide');
			var percent = parseInt(o.options.percent) || 150;
			options.fade = true;
			var original = {height:el.height(),width:el.width()};
			var factor = percent / 100;
			el.from = (mode == 'hide') ? original : {height:original.height * factor,width:original.width * factor};
			options.from = el.from;
			options.percent = (mode == 'hide') ? percent : 100;
			options.mode = mode;
			el.effect('scale', options, o.duration, o.callback);
			el.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) || (parseInt(o.options.percent) == 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','left','width','height','overflow','opacity'];
			var props1 = ['position','top','left','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 (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($)
{
	$.effects.shake = function(o)
	{
		return this.queue(function()
		{
			var el = $(this),props = ['position','top','left'];
			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($)
{
	$.effects.slide = function(o)
	{
		return this.queue(function()
		{
			var el = $(this),props = ['position','top','left'];
			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' ? -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($)
{
	$.effects.transfer = function(o)
	{
		return this.queue(function()
		{
			var el = $(this);
			var mode = $.effects.setMode(el, o.options.mode || 'effect');
			var target = $(o.options.to);
			var position = el.offset();
			var transfer = $('<div class="ui-effects-transfer"></div>').appendTo(document.body);
			if (o.options.className)transfer.addClass(o.options.className);
			transfer.addClass(o.options.className);
			transfer.css({top:position.top,left:position.left,height:el.outerHeight() - parseInt(transfer.css('borderTopWidth')) - parseInt(transfer.css('borderBottomWidth')),width:el.outerWidth() - parseInt(transfer.css('borderLeftWidth')) - parseInt(transfer.css('borderRightWidth')),position:'absolute'});
			position = target.offset();
			animation = {top:position.top,left:position.left,height:target.outerHeight() - parseInt(transfer.css('borderTopWidth')) - parseInt(transfer.css('borderBottomWidth')),width:target.outerWidth() - parseInt(transfer.css('borderLeftWidth')) - parseInt(transfer.css('borderRightWidth'))};
			transfer.animate(animation, o.duration, o.options.easing, function()
			{
				transfer.remove();
				if (o.callback)o.callback.apply(el[0], arguments);
				el.dequeue();
			});
		});
	};
})(jQuery);