/*
 * jQuery 1.2.6 - New Wave Javascript
 *
 * Copyright (c) 2008 John Resig (jquery.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * $Date: 2008/10/13 11:14:26 $
 * $Rev: 5685 $
 */
( function() {
	var _jQuery = window.jQuery, _$ = window.$;
	var jQuery = window.jQuery = window.$ = function(selector, context) {
		return new jQuery.fn.init(selector, context);
	};
	var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/, isSimple = /^.[^:#\[\.]*$/,
	undefined;
	jQuery.fn = jQuery.prototype = {
		init : function(selector, context) {
			selector = selector || document;
			if (selector.nodeType) {
				this[0] = selector;
				this.length = 1;
				return this;
			}
			if (typeof selector == "string") {
				var match = quickExpr.exec(selector);
				if (match && (match[1] || !context)) {
					if (match[1])
						selector = jQuery.clean( [ match[1] ], context);
					else {
						var elem = document.getElementById(match[3]);
						if (elem) {
							if (elem.id != match[3])
								return jQuery().find(selector);
							return jQuery(elem);
						}
						selector = [];
					}
				} else
					return jQuery(context).find(selector);
			} else if (jQuery.isFunction(selector))
				return jQuery(document)[jQuery.fn.ready ? "ready" : "load"]
						(selector);
			return this.setArray(jQuery.makeArray(selector));
		},
		jquery :"1.2.6",
		size : function() {
			return this.length;
		},
		length :0,
		get : function(num) {
			return num == undefined ? jQuery.makeArray(this) : this[num];
		},
		pushStack : function(elems) {
			var ret = jQuery(elems);
			ret.prevObject = this;
			return ret;
		},
		setArray : function(elems) {
			this.length = 0;
			Array.prototype.push.apply(this, elems);
			return this;
		},
		each : function(callback, args) {
			return jQuery.each(this, callback, args);
		},
		index : function(elem) {
			var ret = -1;
			return jQuery.inArray(elem && elem.jquery ? elem[0] : elem, this);
		},
		attr : function(name, value, type) {
			var options = name;
			if (name.constructor == String)
				if (value === undefined)
					return this[0] && jQuery[type || "attr"](this[0], name);
				else {
					options = {};
					options[name] = value;
				}
			return this.each( function(i) {
				for (name in options)
					jQuery.attr(type ? this.style : this, name, jQuery.prop(
							this, options[name], type, i, name));
			});
		},
		css : function(key, value) {
			if ((key == 'width' || key == 'height') && parseFloat(value) < 0)
				value = undefined;
			return this.attr(key, value, "curCSS");
		},
		text : function(text) {
			if (typeof text != "object" && text != null)
				return this.empty().append(
						(this[0] && this[0].ownerDocument || document)
								.createTextNode(text));
			var ret = "";
			jQuery.each(text || this, function() {
				jQuery.each(this.childNodes, function() {
					if (this.nodeType != 8)
						ret += this.nodeType != 1 ? this.nodeValue : jQuery.fn
								.text( [ this ]);
				});
			});
			return ret;
		},
		wrapAll : function(html) {
			if (this[0])
				jQuery(html, this[0].ownerDocument).clone().insertBefore(
						this[0]).map( function() {
					var elem = this;
					while (elem.firstChild)
						elem = elem.firstChild;
					return elem;
				}).append(this);
			return this;
		},
		wrapInner : function(html) {
			return this.each( function() {
				jQuery(this).contents().wrapAll(html);
			});
		},
		wrap : function(html) {
			return this.each( function() {
				jQuery(this).wrapAll(html);
			});
		},
		append : function() {
			return this.domManip(arguments, true, false, function(elem) {
				if (this.nodeType == 1)
					this.appendChild(elem);
			});
		},
		prepend : function() {
			return this.domManip(arguments, true, true, function(elem) {
				if (this.nodeType == 1)
					this.insertBefore(elem, this.firstChild);
			});
		},
		before : function() {
			return this.domManip(arguments, false, false, function(elem) {
				this.parentNode.insertBefore(elem, this);
			});
		},
		after : function() {
			return this.domManip(arguments, false, true, function(elem) {
				this.parentNode.insertBefore(elem, this.nextSibling);
			});
		},
		end : function() {
			return this.prevObject || jQuery( []);
		},
		find : function(selector) {
			var elems = jQuery.map(this, function(elem) {
				return jQuery.find(selector, elem);
			});
			return this.pushStack(/[^+>] [^+>]/.test(selector)
					|| selector.indexOf("..") > -1 ? jQuery.unique(elems)
					: elems);
		},
		clone : function(events) {
			var ret = this.map( function() {
				if (jQuery.browser.msie && !jQuery.isXMLDoc(this)) {
					var clone = this.cloneNode(true), container = document
							.createElement("div");
					container.appendChild(clone);
					return jQuery.clean( [ container.innerHTML ])[0];
				} else
					return this.cloneNode(true);
			});
			var clone = ret.find("*").andSelf().each( function() {
				if (this[expando] != undefined)
					this[expando] = null;
			});
			if (events === true)
				this.find("*").andSelf().each(
						function(i) {
							if (this.nodeType == 3)
								return;
							var events = jQuery.data(this, "events");
							for ( var type in events)
								for ( var handler in events[type])
									jQuery.event.add(clone[i], type,
											events[type][handler],
											events[type][handler].data);
						});
			return ret;
		},
		filter : function(selector) {
			return this.pushStack(jQuery.isFunction(selector)
					&& jQuery.grep(this, function(elem, i) {
						return selector.call(elem, i);
					}) || jQuery.multiFilter(selector, this));
		},
		not : function(selector) {
			if (selector.constructor == String)
				if (isSimple.test(selector))
					return this.pushStack(jQuery.multiFilter(selector, this,
							true));
				else
					selector = jQuery.multiFilter(selector, this);
			var isArrayLike = selector.length
					&& selector[selector.length - 1] !== undefined
					&& !selector.nodeType;
			return this.filter( function() {
				return isArrayLike ? jQuery.inArray(this, selector) < 0
						: this != selector;
			});
		},
		add : function(selector) {
			return this.pushStack(jQuery.unique(jQuery.merge(this.get(),
					typeof selector == 'string' ? jQuery(selector) : jQuery
							.makeArray(selector))));
		},
		is : function(selector) {
			return !!selector && jQuery.multiFilter(selector, this).length > 0;
		},
		hasClass : function(selector) {
			return this.is("." + selector);
		},
		val : function(value) {
			if (value == undefined) {
				if (this.length) {
					var elem = this[0];
					if (jQuery.nodeName(elem, "select")) {
						var index = elem.selectedIndex, values = [], options = elem.options, one = elem.type == "select-one";
						if (index < 0)
							return null;
						for ( var i = one ? index : 0, max = one ? index + 1
								: options.length; i < max; i++) {
							var option = options[i];
							if (option.selected) {
								value = jQuery.browser.msie
										&& !option.attributes.value.specified ? option.text
										: option.value;
								if (one)
									return value;
								values.push(value);
							}
						}
						return values;
					} else
						return (this[0].value || "").replace(/\r/g, "");
				}
				return undefined;
			}
			if (value.constructor == Number)
				value += '';
			return this
					.each( function() {
						if (this.nodeType != 1)
							return;
						if (value.constructor == Array
								&& /radio|checkbox/.test(this.type))
							this.checked = (jQuery.inArray(this.value, value) >= 0 || jQuery
									.inArray(this.name, value) >= 0);
						else if (jQuery.nodeName(this, "select")) {
							var values = jQuery.makeArray(value);
							jQuery("option", this)
									.each(
											function() {
												this.selected = (jQuery
														.inArray(this.value,
																values) >= 0 || jQuery
														.inArray(this.text,
																values) >= 0);
											});
							if (!values.length)
								this.selectedIndex = -1;
						} else
							this.value = value;
					});
		},
		html : function(value) {
			return value == undefined ? (this[0] ? this[0].innerHTML : null)
					: this.empty().append(value);
		},
		replaceWith : function(value) {
			return this.after(value).remove();
		},
		eq : function(i) {
			return this.slice(i, i + 1);
		},
		slice : function() {
			return this.pushStack(Array.prototype.slice.apply(this, arguments));
		},
		map : function(callback) {
			return this.pushStack(jQuery.map(this, function(elem, i) {
				return callback.call(elem, i, elem);
			}));
		},
		andSelf : function() {
			return this.add(this.prevObject);
		},
		data : function(key, value) {
			var parts = key.split(".");
			parts[1] = parts[1] ? "." + parts[1] : "";
			if (value === undefined) {
				var data = this.triggerHandler("getData" + parts[1] + "!",
						[ parts[0] ]);
				if (data === undefined && this.length)
					data = jQuery.data(this[0], key);
				return data === undefined && parts[1] ? this.data(parts[0])
						: data;
			} else
				return this.trigger("setData" + parts[1] + "!",
						[ parts[0], value ]).each( function() {
					jQuery.data(this, key, value);
				});
		},
		removeData : function(key) {
			return this.each( function() {
				jQuery.removeData(this, key);
			});
		},
		domManip : function(args, table, reverse, callback) {
			var clone = this.length > 1, elems;
			return this.each( function() {
				if (!elems) {
					elems = jQuery.clean(args, this.ownerDocument);
					if (reverse)
						elems.reverse();
				}
				var obj = this;
				if (table && jQuery.nodeName(this, "table")
						&& jQuery.nodeName(elems[0], "tr"))
					obj = this.getElementsByTagName("tbody")[0]
							|| this.appendChild(this.ownerDocument
									.createElement("tbody"));
				var scripts = jQuery( []);
				jQuery.each(elems, function() {
					var elem = clone ? jQuery(this).clone(true)[0] : this;
					if (jQuery.nodeName(elem, "script"))
						scripts = scripts.add(elem);
					else {
						if (elem.nodeType == 1)
							scripts = scripts.add(jQuery("script", elem)
									.remove());
						callback.call(obj, elem);
					}
				});
				scripts.each(evalScript);
			});
		}
	};
	jQuery.fn.init.prototype = jQuery.fn;
	function evalScript(i, elem) {
		if (elem.src)
			jQuery.ajax( {
				url :elem.src,
				async :false,
				dataType :"script"
			});
		else
			jQuery.globalEval(elem.text || elem.textContent || elem.innerHTML
					|| "");
		if (elem.parentNode)
			elem.parentNode.removeChild(elem);
	}
	function now() {
		return +new Date;
	}
	jQuery.extend = jQuery.fn.extend = function() {
		var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
		if (target.constructor == Boolean) {
			deep = target;
			target = arguments[1] || {};
			i = 2;
		}
		if (typeof target != "object" && typeof target != "function")
			target = {};
		if (length == i) {
			target = this;
			--i;
		}
		for (; i < length; i++)
			if ((options = arguments[i]) != null)
				for ( var name in options) {
					var src = target[name], copy = options[name];
					if (target === copy)
						continue;
					if (deep && copy && typeof copy == "object"
							&& !copy.nodeType)
						target[name] = jQuery.extend(deep, src
								|| (copy.length != null ? [] : {}), copy);
					else if (copy !== undefined)
						target[name] = copy;
				}
		return target;
	};
	var expando = "jQuery" + now(), uuid = 0, windowData = {}, exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, defaultView = document.defaultView
			|| {};
	jQuery
			.extend( {
				noConflict : function(deep) {
					window.$ = _$;
					if (deep)
						window.jQuery = _jQuery;
					return jQuery;
				},
				isFunction : function(fn) {
					return !!fn && typeof fn != "string" && !fn.nodeName
							&& fn.constructor != Array
							&& /^[\s[]?function/.test(fn + "");
				},
				isXMLDoc : function(elem) {
					return elem.documentElement && !elem.body || elem.tagName
							&& elem.ownerDocument && !elem.ownerDocument.body;
				},
				globalEval : function(data) {
					data = jQuery.trim(data);
					if (data) {
						var head = document.getElementsByTagName("head")[0]
								|| document.documentElement, script = document
								.createElement("script");
						script.type = "text/javascript";
						if (jQuery.browser.msie)
							script.text = data;
						else
							script.appendChild(document.createTextNode(data));
						head.insertBefore(script, head.firstChild);
						head.removeChild(script);
					}
				},
				nodeName : function(elem, name) {
					return elem.nodeName
							&& elem.nodeName.toUpperCase() == name
									.toUpperCase();
				},
				cache : {},
				data : function(elem, name, data) {
					elem = elem == window ? windowData : elem;
					var id = elem[expando];
					if (!id)
						id = elem[expando] = ++uuid;
					if (name && !jQuery.cache[id])
						jQuery.cache[id] = {};
					if (data !== undefined)
						jQuery.cache[id][name] = data;
					return name ? jQuery.cache[id][name] : id;
				},
				removeData : function(elem, name) {
					elem = elem == window ? windowData : elem;
					var id = elem[expando];
					if (name) {
						if (jQuery.cache[id]) {
							delete jQuery.cache[id][name];
							name = "";
							for (name in jQuery.cache[id])
								break;
							if (!name)
								jQuery.removeData(elem);
						}
					} else {
						try {
							delete elem[expando];
						} catch (e) {
							if (elem.removeAttribute)
								elem.removeAttribute(expando);
						}
						delete jQuery.cache[id];
					}
				},
				each : function(object, callback, args) {
					var name, i = 0, length = object.length;
					if (args) {
						if (length == undefined) {
							for (name in object)
								if (callback.apply(object[name], args) === false)
									break;
						} else
							for (; i < length;)
								if (callback.apply(object[i++], args) === false)
									break;
					} else {
						if (length == undefined) {
							for (name in object)
								if (callback.call(object[name], name,
										object[name]) === false)
									break;
						} else
							for ( var value = object[0]; i < length
									&& callback.call(value, i, value) !== false; value = object[++i]) {
							}
					}
					return object;
				},
				prop : function(elem, value, type, i, name) {
					if (jQuery.isFunction(value))
						value = value.call(elem, i);
					return value && value.constructor == Number
							&& type == "curCSS" && !exclude.test(name) ? value
							+ "px" : value;
				},
				className : {
					add : function(elem, classNames) {
						jQuery.each((classNames || "").split(/\s+/), function(
								i, className) {
							if (elem.nodeType == 1
									&& !jQuery.className.has(elem.className,
											className))
								elem.className += (elem.className ? " " : "")
										+ className;
						});
					},
					remove : function(elem, classNames) {
						if (elem.nodeType == 1)
							elem.className = classNames != undefined ? jQuery
									.grep(
											elem.className.split(/\s+/),
											function(className) {
												return !jQuery.className.has(
														classNames, className);
											}).join(" ") : "";
					},
					has : function(elem, className) {
						return jQuery.inArray(className,
								(elem.className || elem).toString()
										.split(/\s+/)) > -1;
					}
				},
				swap : function(elem, options, callback) {
					var old = {};
					for ( var name in options) {
						old[name] = elem.style[name];
						elem.style[name] = options[name];
					}
					callback.call(elem);
					for ( var name in options)
						elem.style[name] = old[name];
				},
				css : function(elem, name, force) {
					if (name == "width" || name == "height") {
						var val, props = {
							position :"absolute",
							visibility :"hidden",
							display :"block"
						}, which = name == "width" ? [ "Left", "Right" ] : [
								"Top", "Bottom" ];
						function getWH() {
							val = name == "width" ? elem.offsetWidth
									: elem.offsetHeight;
							var padding = 0, border = 0;
							jQuery.each(which, function() {
								padding += parseFloat(jQuery.curCSS(elem,
										"padding" + this, true)) || 0;
								border += parseFloat(jQuery.curCSS(elem,
										"border" + this + "Width", true)) || 0;
							});
							val -= Math.round(padding + border);
						}
						if (jQuery(elem).is(":visible"))
							getWH();
						else
							jQuery.swap(elem, props, getWH);
						return Math.max(0, val);
					}
					return jQuery.curCSS(elem, name, force);
				},
				curCSS : function(elem, name, force) {
					var ret, style = elem.style;
					function color(elem) {
						if (!jQuery.browser.safari)
							return false;
						var ret = defaultView.getComputedStyle(elem, null);
						return !ret || ret.getPropertyValue("color") == "";
					}
					if (name == "opacity" && jQuery.browser.msie) {
						ret = jQuery.attr(style, "opacity");
						return ret == "" ? "1" : ret;
					}
					if (jQuery.browser.opera && name == "display") {
						var save = style.outline;
						style.outline = "0 solid black";
						style.outline = save;
					}
					if (name.match(/float/i))
						name = styleFloat;
					if (!force && style && style[name])
						ret = style[name];
					else if (defaultView.getComputedStyle) {
						if (name.match(/float/i))
							name = "float";
						name = name.replace(/([A-Z])/g, "-$1").toLowerCase();
						var computedStyle = defaultView.getComputedStyle(elem,
								null);
						if (computedStyle && !color(elem))
							ret = computedStyle.getPropertyValue(name);
						else {
							var swap = [], stack = [], a = elem, i = 0;
							for (; a && color(a); a = a.parentNode)
								stack.unshift(a);
							for (; i < stack.length; i++)
								if (color(stack[i])) {
									swap[i] = stack[i].style.display;
									stack[i].style.display = "block";
								}
							ret = name == "display"
									&& swap[stack.length - 1] != null ? "none"
									: (computedStyle && computedStyle
											.getPropertyValue(name))
											|| "";
							for (i = 0; i < swap.length; i++)
								if (swap[i] != null)
									stack[i].style.display = swap[i];
						}
						if (name == "opacity" && ret == "")
							ret = "1";
					} else if (elem.currentStyle) {
						var camelCase = name.replace(/\-(\w)/g, function(all,
								letter) {
							return letter.toUpperCase();
						});
						ret = elem.currentStyle[name]
								|| elem.currentStyle[camelCase];
						if (!/^\d+(px)?$/i.test(ret) && /^\d/.test(ret)) {
							var left = style.left, rsLeft = elem.runtimeStyle.left;
							elem.runtimeStyle.left = elem.currentStyle.left;
							style.left = ret || 0;
							ret = style.pixelLeft + "px";
							style.left = left;
							elem.runtimeStyle.left = rsLeft;
						}
					}
					return ret;
				},
				clean : function(elems, context) {
					var ret = [];
					context = context || document;
					if (typeof context.createElement == 'undefined')
						context = context.ownerDocument || context[0]
								&& context[0].ownerDocument || document;
					jQuery
							.each(
									elems,
									function(i, elem) {
										if (!elem)
											return;
										if (elem.constructor == Number)
											elem += '';
										if (typeof elem == "string") {
											elem = elem
													.replace(
															/(<(\w+)[^>]*?)\/>/g,
															function(all,
																	front, tag) {
																return tag
																		.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? all
																		: front
																				+ "></"
																				+ tag
																				+ ">";
															});
											var tags = jQuery.trim(elem)
													.toLowerCase(), div = context
													.createElement("div");
											var wrap = !tags.indexOf("<opt")
													&& [
															1,
															"<select multiple='multiple'>",
															"</select>" ]
													|| !tags.indexOf("<leg")
													&& [ 1, "<fieldset>",
															"</fieldset>" ]
													|| tags
															.match(/^<(thead|tbody|tfoot|colg|cap)/)
													&& [ 1, "<table>",
															"</table>" ]
													|| !tags.indexOf("<tr")
													&& [ 2, "<table><tbody>",
															"</tbody></table>" ]
													|| (!tags.indexOf("<td") || !tags
															.indexOf("<th"))
													&& [
															3,
															"<table><tbody><tr>",
															"</tr></tbody></table>" ]
													|| !tags.indexOf("<col")
													&& [
															2,
															"<table><tbody></tbody><colgroup>",
															"</colgroup></table>" ]
													|| jQuery.browser.msie
													&& [ 1, "div<div>",
															"</div>" ]
													|| [ 0, "", "" ];
											div.innerHTML = wrap[1] + elem
													+ wrap[2];
											while (wrap[0]--)
												div = div.lastChild;
											if (jQuery.browser.msie) {
												var tbody = !tags
														.indexOf("<table")
														&& tags
																.indexOf("<tbody") < 0 ? div.firstChild
														&& div.firstChild.childNodes
														: wrap[1] == "<table>"
																&& tags
																		.indexOf("<tbody") < 0 ? div.childNodes
																: [];
												for ( var j = tbody.length - 1; j >= 0; --j)
													if (jQuery.nodeName(
															tbody[j], "tbody")
															&& !tbody[j].childNodes.length)
														tbody[j].parentNode
																.removeChild(tbody[j]);
												if (/^\s/.test(elem))
													div
															.insertBefore(
																	context
																			.createTextNode(elem
																					.match(/^\s*/)[0]),
																	div.firstChild);
											}
											elem = jQuery
													.makeArray(div.childNodes);
										}
										if (elem.length === 0
												&& (!jQuery.nodeName(elem,
														"form") && !jQuery
														.nodeName(elem,
																"select")))
											return;
										if (elem[0] == undefined
												|| jQuery
														.nodeName(elem, "form")
												|| elem.options)
											ret.push(elem);
										else
											ret = jQuery.merge(ret, elem);
									});
					return ret;
				},
				attr : function(elem, name, value) {
					if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
						return undefined;
					var notxml = !jQuery.isXMLDoc(elem), set = value !== undefined, msie = jQuery.browser.msie;
					name = notxml && jQuery.props[name] || name;
					if (elem.tagName) {
						var special = /href|src|style/.test(name);
						if (name == "selected" && jQuery.browser.safari)
							elem.parentNode.selectedIndex;
						if (name in elem && notxml && !special) {
							if (set) {
								if (name == "type"
										&& jQuery.nodeName(elem, "input")
										&& elem.parentNode)
									throw "type property can't be changed";
								elem[name] = value;
							}
							if (jQuery.nodeName(elem, "form")
									&& elem.getAttributeNode(name))
								return elem.getAttributeNode(name).nodeValue;
							return elem[name];
						}
						if (msie && notxml && name == "style")
							return jQuery.attr(elem.style, "cssText", value);
						if (set)
							elem.setAttribute(name, "" + value);
						var attr = msie && notxml && special ? elem
								.getAttribute(name, 2) : elem
								.getAttribute(name);
						return attr === null ? undefined : attr;
					}
					if (msie && name == "opacity") {
						if (set) {
							elem.zoom = 1;
							elem.filter = (elem.filter || "").replace(
									/alpha\([^)]*\)/, "")
									+ (parseInt(value) + '' == "NaN" ? ""
											: "alpha(opacity=" + value * 100
													+ ")");
						}
						return elem.filter
								&& elem.filter.indexOf("opacity=") >= 0 ? (parseFloat(elem.filter
								.match(/opacity=([^)]*)/)[1]) / 100) + ''
								: "";
					}
					name = name.replace(/-([a-z])/ig, function(all, letter) {
						return letter.toUpperCase();
					});
					if (set)
						elem[name] = value;
					return elem[name];
				},
				trim : function(text) {
					return (text || "").replace(/^\s+|\s+$/g, "");
				},
				makeArray : function(array) {
					var ret = [];
					if (array != null) {
						var i = array.length;
						if (i == null || array.split || array.setInterval
								|| array.call)
							ret[0] = array;
						else
							while (i)
								ret[--i] = array[i];
					}
					return ret;
				},
				inArray : function(elem, array) {
					for ( var i = 0, length = array.length; i < length; i++)
						if (array[i] === elem)
							return i;
					return -1;
				},
				merge : function(first, second) {
					var i = 0, elem, pos = first.length;
					if (jQuery.browser.msie) {
						while (elem = second[i++])
							if (elem.nodeType != 8)
								first[pos++] = elem;
					} else
						while (elem = second[i++])
							first[pos++] = elem;
					return first;
				},
				unique : function(array) {
					var ret = [], done = {};
					try {
						for ( var i = 0, length = array.length; i < length; i++) {
							var id = jQuery.data(array[i]);
							if (!done[id]) {
								done[id] = true;
								ret.push(array[i]);
							}
						}
					} catch (e) {
						ret = array;
					}
					return ret;
				},
				grep : function(elems, callback, inv) {
					var ret = [];
					for ( var i = 0, length = elems.length; i < length; i++)
						if (!inv != !callback(elems[i], i))
							ret.push(elems[i]);
					return ret;
				},
				map : function(elems, callback) {
					var ret = [];
					for ( var i = 0, length = elems.length; i < length; i++) {
						var value = callback(elems[i], i);
						if (value != null)
							ret[ret.length] = value;
					}
					return ret.concat.apply( [], ret);
				}
			});
	var userAgent = navigator.userAgent.toLowerCase();
	jQuery.browser = {
		version :(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
		safari :/webkit/.test(userAgent),
		opera :/opera/.test(userAgent),
		msie :/msie/.test(userAgent) && !/opera/.test(userAgent),
		mozilla :/mozilla/.test(userAgent)
				&& !/(compatible|webkit)/.test(userAgent)
	};
	var styleFloat = jQuery.browser.msie ? "styleFloat" : "cssFloat";
	jQuery.extend( {
		boxModel :!jQuery.browser.msie || document.compatMode == "CSS1Compat",
		props : {
			"for" :"htmlFor",
			"class" :"className",
			"float" :styleFloat,
			cssFloat :styleFloat,
			styleFloat :styleFloat,
			readonly :"readOnly",
			maxlength :"maxLength",
			cellspacing :"cellSpacing"
		}
	});
	jQuery.each( {
		parent : function(elem) {
			return elem.parentNode;
		},
		parents : function(elem) {
			return jQuery.dir(elem, "parentNode");
		},
		next : function(elem) {
			return jQuery.nth(elem, 2, "nextSibling");
		},
		prev : function(elem) {
			return jQuery.nth(elem, 2, "previousSibling");
		},
		nextAll : function(elem) {
			return jQuery.dir(elem, "nextSibling");
		},
		prevAll : function(elem) {
			return jQuery.dir(elem, "previousSibling");
		},
		siblings : function(elem) {
			return jQuery.sibling(elem.parentNode.firstChild, elem);
		},
		children : function(elem) {
			return jQuery.sibling(elem.firstChild);
		},
		contents : function(elem) {
			return jQuery.nodeName(elem, "iframe") ? elem.contentDocument
					|| elem.contentWindow.document : jQuery
					.makeArray(elem.childNodes);
		}
	}, function(name, fn) {
		jQuery.fn[name] = function(selector) {
			var ret = jQuery.map(this, fn);
			if (selector && typeof selector == "string")
				ret = jQuery.multiFilter(selector, ret);
			return this.pushStack(jQuery.unique(ret));
		};
	});
	jQuery.each( {
		appendTo :"append",
		prependTo :"prepend",
		insertBefore :"before",
		insertAfter :"after",
		replaceAll :"replaceWith"
	}, function(name, original) {
		jQuery.fn[name] = function() {
			var args = arguments;
			return this.each( function() {
				for ( var i = 0, length = args.length; i < length; i++)
					jQuery(args[i])[original](this);
			});
		};
	});
	jQuery.each( {
		removeAttr : function(name) {
			jQuery.attr(this, name, "");
			if (this.nodeType == 1)
				this.removeAttribute(name);
		},
		addClass : function(classNames) {
			jQuery.className.add(this, classNames);
		},
		removeClass : function(classNames) {
			jQuery.className.remove(this, classNames);
		},
		toggleClass : function(classNames) {
			jQuery.className[jQuery.className.has(this, classNames) ? "remove"
					: "add"](this, classNames);
		},
		remove : function(selector) {
			if (!selector || jQuery.filter(selector, [ this ]).r.length) {
				jQuery("*", this).add(this).each( function() {
					jQuery.event.remove(this);
					jQuery.removeData(this);
				});
				if (this.parentNode)
					this.parentNode.removeChild(this);
			}
		},
		empty : function() {
			jQuery(">*", this).remove();
			while (this.firstChild)
				this.removeChild(this.firstChild);
		}
	}, function(name, fn) {
		jQuery.fn[name] = function() {
			return this.each(fn, arguments);
		};
	});
	jQuery.each( [ "Height", "Width" ], function(i, name) {
		var type = name.toLowerCase();
		jQuery.fn[type] = function(size) {
			return this[0] == window ? jQuery.browser.opera
					&& document.body["client" + name] || jQuery.browser.safari
					&& window["inner" + name]
					|| document.compatMode == "CSS1Compat"
					&& document.documentElement["client" + name]
					|| document.body["client" + name]
					: this[0] == document ? Math.max(Math.max(
							document.body["scroll" + name],
							document.documentElement["scroll" + name]), Math
							.max(document.body["offset" + name],
									document.documentElement["offset" + name]))
							: size == undefined ? (this.length ? jQuery.css(
									this[0], type) : null) : this.css(type,
									size.constructor == String ? size : size
											+ "px");
		};
	});
	function num(elem, prop) {
		return elem[0] && parseInt(jQuery.curCSS(elem[0], prop, true), 10) || 0;
	}
	var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ? "(?:[\\w*_-]|\\\\.)"
			: "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)", quickChild = new RegExp(
			"^>\\s*(" + chars + "+)"), quickID = new RegExp("^(" + chars
			+ "+)(#)(" + chars + "+)"), quickClass = new RegExp("^([#.]?)("
			+ chars + "*)");
	jQuery
			.extend( {
				expr : {
					"" : function(a, i, m) {
						return m[2] == "*" || jQuery.nodeName(a, m[2]);
					},
					"#" : function(a, i, m) {
						return a.getAttribute("id") == m[2];
					},
					":" : {
						lt : function(a, i, m) {
							return i < m[3] - 0;
						},
						gt : function(a, i, m) {
							return i > m[3] - 0;
						},
						nth : function(a, i, m) {
							return m[3] - 0 == i;
						},
						eq : function(a, i, m) {
							return m[3] - 0 == i;
						},
						first : function(a, i) {
							return i == 0;
						},
						last : function(a, i, m, r) {
							return i == r.length - 1;
						},
						even : function(a, i) {
							return i % 2 == 0;
						},
						odd : function(a, i) {
							return i % 2;
						},
						"first-child" : function(a) {
							return a.parentNode.getElementsByTagName("*")[0] == a;
						},
						"last-child" : function(a) {
							return jQuery.nth(a.parentNode.lastChild, 1,
									"previousSibling") == a;
						},
						"only-child" : function(a) {
							return !jQuery.nth(a.parentNode.lastChild, 2,
									"previousSibling");
						},
						parent : function(a) {
							return a.firstChild;
						},
						empty : function(a) {
							return !a.firstChild;
						},
						contains : function(a, i, m) {
							return (a.textContent || a.innerText
									|| jQuery(a).text() || "").indexOf(m[3]) >= 0;
						},
						visible : function(a) {
							return "hidden" != a.type
									&& jQuery.css(a, "display") != "none"
									&& jQuery.css(a, "visibility") != "hidden";
						},
						hidden : function(a) {
							return "hidden" == a.type
									|| jQuery.css(a, "display") == "none"
									|| jQuery.css(a, "visibility") == "hidden";
						},
						enabled : function(a) {
							return !a.disabled;
						},
						disabled : function(a) {
							return a.disabled;
						},
						checked : function(a) {
							return a.checked;
						},
						selected : function(a) {
							return a.selected || jQuery.attr(a, "selected");
						},
						text : function(a) {
							return "text" == a.type;
						},
						radio : function(a) {
							return "radio" == a.type;
						},
						checkbox : function(a) {
							return "checkbox" == a.type;
						},
						file : function(a) {
							return "file" == a.type;
						},
						password : function(a) {
							return "password" == a.type;
						},
						submit : function(a) {
							return "submit" == a.type;
						},
						image : function(a) {
							return "image" == a.type;
						},
						reset : function(a) {
							return "reset" == a.type;
						},
						button : function(a) {
							return "button" == a.type
									|| jQuery.nodeName(a, "button");
						},
						input : function(a) {
							return /input|select|textarea|button/i
									.test(a.nodeName);
						},
						has : function(a, i, m) {
							return jQuery.find(m[3], a).length;
						},
						header : function(a) {
							return /h\d/i.test(a.nodeName);
						},
						animated : function(a) {
							return jQuery.grep(jQuery.timers, function(fn) {
								return a == fn.elem;
							}).length;
						}
					}
				},
				parse : [ /^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,
						/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,
						new RegExp("^([:.#]*)(" + chars + "+)") ],
				multiFilter : function(expr, elems, not) {
					var old, cur = [];
					while (expr && expr != old) {
						old = expr;
						var f = jQuery.filter(expr, elems, not);
						expr = f.t.replace(/^\s*,\s*/, "");
						cur = not ? elems = f.r : jQuery.merge(cur, f.r);
					}
					return cur;
				},
				find : function(t, context) {
					if (typeof t != "string")
						return [ t ];
					if (context && context.nodeType != 1
							&& context.nodeType != 9)
						return [];
					context = context || document;
					var ret = [ context ], done = [], last, nodeName;
					while (t && last != t) {
						var r = [];
						last = t;
						t = jQuery.trim(t);
						var foundToken = false, re = quickChild, m = re.exec(t);
						if (m) {
							nodeName = m[1].toUpperCase();
							for ( var i = 0; ret[i]; i++)
								for ( var c = ret[i].firstChild; c; c = c.nextSibling)
									if (c.nodeType == 1
											&& (nodeName == "*" || c.nodeName
													.toUpperCase() == nodeName))
										r.push(c);
							ret = r;
							t = t.replace(re, "");
							if (t.indexOf(" ") == 0)
								continue;
							foundToken = true;
						} else {
							re = /^([>+~])\s*(\w*)/i;
							if ((m = re.exec(t)) != null) {
								r = [];
								var merge = {};
								nodeName = m[2].toUpperCase();
								m = m[1];
								for ( var j = 0, rl = ret.length; j < rl; j++) {
									var n = m == "~" || m == "+" ? ret[j].nextSibling
											: ret[j].firstChild;
									for (; n; n = n.nextSibling)
										if (n.nodeType == 1) {
											var id = jQuery.data(n);
											if (m == "~" && merge[id])
												break;
											if (!nodeName
													|| n.nodeName.toUpperCase() == nodeName) {
												if (m == "~")
													merge[id] = true;
												r.push(n);
											}
											if (m == "+")
												break;
										}
								}
								ret = r;
								t = jQuery.trim(t.replace(re, ""));
								foundToken = true;
							}
						}
						if (t && !foundToken) {
							if (!t.indexOf(",")) {
								if (context == ret[0])
									ret.shift();
								done = jQuery.merge(done, ret);
								r = ret = [ context ];
								t = " " + t.substr(1, t.length);
							} else {
								var re2 = quickID;
								var m = re2.exec(t);
								if (m) {
									m = [ 0, m[2], m[3], m[1] ];
								} else {
									re2 = quickClass;
									m = re2.exec(t);
								}
								m[2] = m[2].replace(/\\/g, "");
								var elem = ret[ret.length - 1];
								if (m[1] == "#" && elem && elem.getElementById
										&& !jQuery.isXMLDoc(elem)) {
									var oid = elem.getElementById(m[2]);
									if ((jQuery.browser.msie || jQuery.browser.opera)
											&& oid
											&& typeof oid.id == "string"
											&& oid.id != m[2])
										oid = jQuery('[@id="' + m[2] + '"]',
												elem)[0];
									ret = r = oid
											&& (!m[3] || jQuery.nodeName(oid,
													m[3])) ? [ oid ] : [];
								} else {
									for ( var i = 0; ret[i]; i++) {
										var tag = m[1] == "#" && m[3] ? m[3]
												: m[1] != "" || m[0] == "" ? "*"
														: m[2];
										if (tag == "*"
												&& ret[i].nodeName
														.toLowerCase() == "object")
											tag = "param";
										r = jQuery.merge(r, ret[i]
												.getElementsByTagName(tag));
									}
									if (m[1] == ".")
										r = jQuery.classFilter(r, m[2]);
									if (m[1] == "#") {
										var tmp = [];
										for ( var i = 0; r[i]; i++)
											if (r[i].getAttribute("id") == m[2]) {
												tmp = [ r[i] ];
												break;
											}
										r = tmp;
									}
									ret = r;
								}
								t = t.replace(re2, "");
							}
						}
						if (t) {
							var val = jQuery.filter(t, r);
							ret = r = val.r;
							t = jQuery.trim(val.t);
						}
					}
					if (t)
						ret = [];
					if (ret && context == ret[0])
						ret.shift();
					done = jQuery.merge(done, ret);
					return done;
				},
				classFilter : function(r, m, not) {
					m = " " + m + " ";
					var tmp = [];
					for ( var i = 0; r[i]; i++) {
						var pass = (" " + r[i].className + " ").indexOf(m) >= 0;
						if (!not && pass || not && !pass)
							tmp.push(r[i]);
					}
					return tmp;
				},
				filter : function(t, r, not) {
					var last;
					while (t && t != last) {
						last = t;
						var p = jQuery.parse, m;
						for ( var i = 0; p[i]; i++) {
							m = p[i].exec(t);
							if (m) {
								t = t.substring(m[0].length);
								m[2] = m[2].replace(/\\/g, "");
								break;
							}
						}
						if (!m)
							break;
						if (m[1] == ":" && m[2] == "not")
							r = isSimple.test(m[3]) ? jQuery.filter(m[3], r,
									true).r : jQuery(r).not(m[3]);
						else if (m[1] == ".")
							r = jQuery.classFilter(r, m[2], not);
						else if (m[1] == "[") {
							var tmp = [], type = m[3];
							for ( var i = 0, rl = r.length; i < rl; i++) {
								var a = r[i], z = a[jQuery.props[m[2]] || m[2]];
								if (z == null || /href|src|selected/.test(m[2]))
									z = jQuery.attr(a, m[2]) || '';
								if ((type == ""
										&& !!z
										|| type == "="
										&& z == m[5]
										|| type == "!="
										&& z != m[5]
										|| type == "^="
										&& z
										&& !z.indexOf(m[5])
										|| type == "$="
										&& z.substr(z.length - m[5].length) == m[5] || (type == "*=" || type == "~=")
										&& z.indexOf(m[5]) >= 0)
										^ not)
									tmp.push(a);
							}
							r = tmp;
						} else if (m[1] == ":" && m[2] == "nth-child") {
							var merge = {}, tmp = [], test = /(-?)(\d*)n((?:\+|-)?\d*)/
									.exec(m[3] == "even" && "2n"
											|| m[3] == "odd" && "2n+1"
											|| !/\D/.test(m[3]) && "0n+" + m[3]
											|| m[3]), first = (test[1] + (test[2] || 1)) - 0, last = test[3] - 0;
							for ( var i = 0, rl = r.length; i < rl; i++) {
								var node = r[i], parentNode = node.parentNode, id = jQuery
										.data(parentNode);
								if (!merge[id]) {
									var c = 1;
									for ( var n = parentNode.firstChild; n; n = n.nextSibling)
										if (n.nodeType == 1)
											n.nodeIndex = c++;
									merge[id] = true;
								}
								var add = false;
								if (first == 0) {
									if (node.nodeIndex == last)
										add = true;
								} else if ((node.nodeIndex - last) % first == 0
										&& (node.nodeIndex - last) / first >= 0)
									add = true;
								if (add ^ not)
									tmp.push(node);
							}
							r = tmp;
						} else {
							var fn = jQuery.expr[m[1]];
							if (typeof fn == "object")
								fn = fn[m[2]];
							if (typeof fn == "string")
								fn = eval("false||function(a,i){return " + fn
										+ ";}");
							r = jQuery.grep(r, function(elem, i) {
								return fn(elem, i, m, r);
							}, not);
						}
					}
					return {
						r :r,
						t :t
					};
				},
				dir : function(elem, dir) {
					var matched = [], cur = elem[dir];
					while (cur && cur != document) {
						if (cur.nodeType == 1)
							matched.push(cur);
						cur = cur[dir];
					}
					return matched;
				},
				nth : function(cur, result, dir, elem) {
					result = result || 1;
					var num = 0;
					for (; cur; cur = cur[dir])
						if (cur.nodeType == 1 && ++num == result)
							break;
					return cur;
				},
				sibling : function(n, elem) {
					var r = [];
					for (; n; n = n.nextSibling) {
						if (n.nodeType == 1 && n != elem)
							r.push(n);
					}
					return r;
				}
			});
	jQuery.event = {
		add : function(elem, types, handler, data) {
			if (elem.nodeType == 3 || elem.nodeType == 8)
				return;
			if (jQuery.browser.msie && elem.setInterval)
				elem = window;
			if (!handler.guid)
				handler.guid = this.guid++;
			if (data != undefined) {
				var fn = handler;
				handler = this.proxy(fn, function() {
					return fn.apply(this, arguments);
				});
				handler.data = data;
			}
			var events = jQuery.data(elem, "events")
					|| jQuery.data(elem, "events", {}), handle = jQuery.data(
					elem, "handle")
					|| jQuery.data(elem, "handle", function() {
						if (typeof jQuery != "undefined"
								&& !jQuery.event.triggered)
							return jQuery.event.handle.apply(
									arguments.callee.elem, arguments);
					});
			handle.elem = elem;
			jQuery.each(types.split(/\s+/),
					function(index, type) {
						var parts = type.split(".");
						type = parts[0];
						handler.type = parts[1];
						var handlers = events[type];
						if (!handlers) {
							handlers = events[type] = {};
							if (!jQuery.event.special[type]
									|| jQuery.event.special[type].setup
											.call(elem) === false) {
								if (elem.addEventListener)
									elem.addEventListener(type, handle, false);
								else if (elem.attachEvent)
									elem.attachEvent("on" + type, handle);
							}
						}
						handlers[handler.guid] = handler;
						jQuery.event.global[type] = true;
					});
			elem = null;
		},
		guid :1,
		global : {},
		remove : function(elem, types, handler) {
			if (elem.nodeType == 3 || elem.nodeType == 8)
				return;
			var events = jQuery.data(elem, "events"), ret, index;
			if (events) {
				if (types == undefined
						|| (typeof types == "string" && types.charAt(0) == "."))
					for ( var type in events)
						this.remove(elem, type + (types || ""));
				else {
					if (types.type) {
						handler = types.handler;
						types = types.type;
					}
					jQuery
							.each(
									types.split(/\s+/),
									function(index, type) {
										var parts = type.split(".");
										type = parts[0];
										if (events[type]) {
											if (handler)
												delete events[type][handler.guid];
											else
												for (handler in events[type])
													if (!parts[1]
															|| events[type][handler].type == parts[1])
														delete events[type][handler];
											for (ret in events[type])
												break;
											if (!ret) {
												if (!jQuery.event.special[type]
														|| jQuery.event.special[type].teardown
																.call(elem) === false) {
													if (elem.removeEventListener)
														elem
																.removeEventListener(
																		type,
																		jQuery
																				.data(
																						elem,
																						"handle"),
																		false);
													else if (elem.detachEvent)
														elem
																.detachEvent(
																		"on"
																				+ type,
																		jQuery
																				.data(
																						elem,
																						"handle"));
												}
												ret = null;
												delete events[type];
											}
										}
									});
				}
				for (ret in events)
					break;
				if (!ret) {
					var handle = jQuery.data(elem, "handle");
					if (handle)
						handle.elem = null;
					jQuery.removeData(elem, "events");
					jQuery.removeData(elem, "handle");
				}
			}
		},
		trigger : function(type, data, elem, donative, extra) {
			data = jQuery.makeArray(data);
			if (type.indexOf("!") >= 0) {
				type = type.slice(0, -1);
				var exclusive = true;
			}
			if (!elem) {
				if (this.global[type])
					jQuery("*").add( [ window, document ]).trigger(type, data);
			} else {
				if (elem.nodeType == 3 || elem.nodeType == 8)
					return undefined;
				var val, ret, fn = jQuery.isFunction(elem[type] || null), event = !data[0]
						|| !data[0].preventDefault;
				if (event) {
					data.unshift( {
						type :type,
						target :elem,
						preventDefault : function() {
						},
						stopPropagation : function() {
						},
						timeStamp :now()
					});
					data[0][expando] = true;
				}
				data[0].type = type;
				if (exclusive)
					data[0].exclusive = true;
				var handle = jQuery.data(elem, "handle");
				if (handle)
					val = handle.apply(elem, data);
				if ((!fn || (jQuery.nodeName(elem, 'a') && type == "click"))
						&& elem["on" + type]
						&& elem["on" + type].apply(elem, data) === false)
					val = false;
				if (event)
					data.shift();
				if (extra && jQuery.isFunction(extra)) {
					ret = extra.apply(elem, val == null ? data : data
							.concat(val));
					if (ret !== undefined)
						val = ret;
				}
				if (fn && donative !== false && val !== false
						&& !(jQuery.nodeName(elem, 'a') && type == "click")) {
					this.triggered = true;
					try {
						elem[type]();
					} catch (e) {
					}
				}
				this.triggered = false;
			}
			return val;
		},
		handle : function(event) {
			var val, ret, namespace, all, handlers;
			event = arguments[0] = jQuery.event.fix(event || window.event);
			namespace = event.type.split(".");
			event.type = namespace[0];
			namespace = namespace[1];
			all = !namespace && !event.exclusive;
			handlers = (jQuery.data(this, "events") || {})[event.type];
			for ( var j in handlers) {
				var handler = handlers[j];
				if (all || handler.type == namespace) {
					event.handler = handler;
					event.data = handler.data;
					ret = handler.apply(this, arguments);
					if (val !== false)
						val = ret;
					if (ret === false) {
						event.preventDefault();
						event.stopPropagation();
					}
				}
			}
			return val;
		},
		fix : function(event) {
			if (event[expando] == true)
				return event;
			var originalEvent = event;
			event = {
				originalEvent :originalEvent
			};
			var props = "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which"
					.split(" ");
			for ( var i = props.length; i; i--)
				event[props[i]] = originalEvent[props[i]];
			event[expando] = true;
			event.preventDefault = function() {
				if (originalEvent.preventDefault)
					originalEvent.preventDefault();
				originalEvent.returnValue = false;
			};
			event.stopPropagation = function() {
				if (originalEvent.stopPropagation)
					originalEvent.stopPropagation();
				originalEvent.cancelBubble = true;
			};
			event.timeStamp = event.timeStamp || now();
			if (!event.target)
				event.target = event.srcElement || document;
			if (event.target.nodeType == 3)
				event.target = event.target.parentNode;
			if (!event.relatedTarget && event.fromElement)
				event.relatedTarget = event.fromElement == event.target ? event.toElement
						: event.fromElement;
			if (event.pageX == null && event.clientX != null) {
				var doc = document.documentElement, body = document.body;
				event.pageX = event.clientX
						+ (doc && doc.scrollLeft || body && body.scrollLeft || 0)
						- (doc.clientLeft || 0);
				event.pageY = event.clientY
						+ (doc && doc.scrollTop || body && body.scrollTop || 0)
						- (doc.clientTop || 0);
			}
			if (!event.which
					&& ((event.charCode || event.charCode === 0) ? event.charCode
							: event.keyCode))
				event.which = event.charCode || event.keyCode;
			if (!event.metaKey && event.ctrlKey)
				event.metaKey = event.ctrlKey;
			if (!event.which && event.button)
				event.which = (event.button & 1 ? 1 : (event.button & 2 ? 3
						: (event.button & 4 ? 2 : 0)));
			return event;
		},
		proxy : function(fn, proxy) {
			proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
			return proxy;
		},
		special : {
			ready : {
				setup : function() {
					bindReady();
					return;
				},
				teardown : function() {
					return;
				}
			},
			mouseenter : {
				setup : function() {
					if (jQuery.browser.msie)
						return false;
					jQuery(this).bind("mouseover",
							jQuery.event.special.mouseenter.handler);
					return true;
				},
				teardown : function() {
					if (jQuery.browser.msie)
						return false;
					jQuery(this).unbind("mouseover",
							jQuery.event.special.mouseenter.handler);
					return true;
				},
				handler : function(event) {
					if (withinElement(event, this))
						return true;
					event.type = "mouseenter";
					return jQuery.event.handle.apply(this, arguments);
				}
			},
			mouseleave : {
				setup : function() {
					if (jQuery.browser.msie)
						return false;
					jQuery(this).bind("mouseout",
							jQuery.event.special.mouseleave.handler);
					return true;
				},
				teardown : function() {
					if (jQuery.browser.msie)
						return false;
					jQuery(this).unbind("mouseout",
							jQuery.event.special.mouseleave.handler);
					return true;
				},
				handler : function(event) {
					if (withinElement(event, this))
						return true;
					event.type = "mouseleave";
					return jQuery.event.handle.apply(this, arguments);
				}
			}
		}
	};
	jQuery.fn.extend( {
		bind : function(type, data, fn) {
			return type == "unload" ? this.one(type, data, fn) : this
					.each( function() {
						jQuery.event.add(this, type, fn || data, fn && data);
					});
		},
		one : function(type, data, fn) {
			var one = jQuery.event.proxy(fn || data, function(event) {
				jQuery(this).unbind(event, one);
				return (fn || data).apply(this, arguments);
			});
			return this.each( function() {
				jQuery.event.add(this, type, one, fn && data);
			});
		},
		unbind : function(type, fn) {
			return this.each( function() {
				jQuery.event.remove(this, type, fn);
			});
		},
		trigger : function(type, data, fn) {
			return this.each( function() {
				jQuery.event.trigger(type, data, this, true, fn);
			});
		},
		triggerHandler : function(type, data, fn) {
			return this[0]
					&& jQuery.event.trigger(type, data, this[0], false, fn);
		},
		toggle : function(fn) {
			var args = arguments, i = 1;
			while (i < args.length)
				jQuery.event.proxy(fn, args[i++]);
			return this.click(jQuery.event.proxy(fn, function(event) {
				this.lastToggle = (this.lastToggle || 0) % i;
				event.preventDefault();
				return args[this.lastToggle++].apply(this, arguments) || false;
			}));
		},
		hover : function(fnOver, fnOut) {
			return this.bind('mouseenter', fnOver).bind('mouseleave', fnOut);
		},
		ready : function(fn) {
			bindReady();
			if (jQuery.isReady)
				fn.call(document, jQuery);
			else
				jQuery.readyList.push( function() {
					return fn.call(this, jQuery);
				});
			return this;
		}
	});
	jQuery.extend( {
		isReady :false,
		readyList : [],
		ready : function() {
			if (!jQuery.isReady) {
				jQuery.isReady = true;
				if (jQuery.readyList) {
					jQuery.each(jQuery.readyList, function() {
						this.call(document);
					});
					jQuery.readyList = null;
				}
				jQuery(document).triggerHandler("ready");
			}
		}
	});
	var readyBound = false;
	function bindReady() {
		if (readyBound)
			return;
		readyBound = true;
		if (document.addEventListener && !jQuery.browser.opera)
			document.addEventListener("DOMContentLoaded", jQuery.ready, false);
		if (jQuery.browser.msie && window == top)
			( function() {
				if (jQuery.isReady)
					return;
				try {
					document.documentElement.doScroll("left");
				} catch (error) {
					setTimeout(arguments.callee, 0);
					return;
				}
				jQuery.ready();
			})();
		if (jQuery.browser.opera)
			document.addEventListener("DOMContentLoaded", function() {
				if (jQuery.isReady)
					return;
				for ( var i = 0; i < document.styleSheets.length; i++)
					if (document.styleSheets[i].disabled) {
						setTimeout(arguments.callee, 0);
						return;
					}
				jQuery.ready();
			}, false);
		if (jQuery.browser.safari) {
			var numStyles;
			( function() {
				if (jQuery.isReady)
					return;
				if (document.readyState != "loaded"
						&& document.readyState != "complete") {
					setTimeout(arguments.callee, 0);
					return;
				}
				if (numStyles === undefined)
					numStyles = jQuery("style, link[rel=stylesheet]").length;
				if (document.styleSheets.length != numStyles) {
					setTimeout(arguments.callee, 0);
					return;
				}
				jQuery.ready();
			})();
		}
		jQuery.event.add(window, "load", jQuery.ready);
	}
	jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"
			+ "mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"
			+ "submit,keydown,keypress,keyup,error").split(","), function(i,
			name) {
		jQuery.fn[name] = function(fn) {
			return fn ? this.bind(name, fn) : this.trigger(name);
		};
	});
	var withinElement = function(event, elem) {
		var parent = event.relatedTarget;
		while (parent && parent != elem)
			try {
				parent = parent.parentNode;
			} catch (error) {
				parent = elem;
			}
		return parent == elem;
	};
	jQuery(window).bind("unload", function() {
		jQuery("*").add(document).unbind();
	});
	jQuery.fn
			.extend( {
				_load :jQuery.fn.load,
				load : function(url, params, callback) {
					if (typeof url != 'string')
						return this._load(url);
					var off = url.indexOf(" ");
					if (off >= 0) {
						var selector = url.slice(off, url.length);
						url = url.slice(0, off);
					}
					callback = callback || function() {
					};
					var type = "GET";
					if (params)
						if (jQuery.isFunction(params)) {
							callback = params;
							params = null;
						} else {
							params = jQuery.param(params);
							type = "POST";
						}
					var self = this;
					jQuery
							.ajax( {
								url :url,
								type :type,
								dataType :"html",
								data :params,
								complete : function(res, status) {
									if (status == "success"
											|| status == "notmodified")
										self
												.html(selector ? jQuery(
														"<div/>")
														.append(
																res.responseText
																		.replace(
																				/<script(.|\s)*?\/script>/g,
																				""))
														.find(selector)
														: res.responseText);
									self.each(callback, [ res.responseText,
											status, res ]);
								}
							});
					return this;
				},
				serialize : function() {
					return jQuery.param(this.serializeArray());
				},
				serializeArray : function() {
					return this
							.map(
									function() {
										return jQuery.nodeName(this, "form") ? jQuery
												.makeArray(this.elements)
												: this;
									})
							.filter(
									function() {
										return this.name
												&& !this.disabled
												&& (this.checked
														|| /select|textarea/i
																.test(this.nodeName) || /text|hidden|password/i
														.test(this.type));
									})
							.map(
									function(i, elem) {
										var val = jQuery(this).val();
										return val == null ? null
												: val.constructor == Array ? jQuery
														.map(
																val,
																function(val, i) {
																	return {
																		name :elem.name,
																		value :val
																	};
																})
														: {
															name :elem.name,
															value :val
														};
									}).get();
				}
			});
	jQuery.each(
			"ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend"
					.split(","), function(i, o) {
				jQuery.fn[o] = function(f) {
					return this.bind(o, f);
				};
			});
	var jsc = now();
	jQuery
			.extend( {
				get : function(url, data, callback, type) {
					if (jQuery.isFunction(data)) {
						callback = data;
						data = null;
					}
					return jQuery.ajax( {
						type :"GET",
						url :url,
						data :data,
						success :callback,
						dataType :type
					});
				},
				getScript : function(url, callback) {
					return jQuery.get(url, null, callback, "script");
				},
				getJSON : function(url, data, callback) {
					return jQuery.get(url, data, callback, "json");
				},
				post : function(url, data, callback, type) {
					if (jQuery.isFunction(data)) {
						callback = data;
						data = {};
					}
					return jQuery.ajax( {
						type :"POST",
						url :url,
						data :data,
						success :callback,
						dataType :type
					});
				},
				ajaxSetup : function(settings) {
					jQuery.extend(jQuery.ajaxSettings, settings);
				},
				ajaxSettings : {
					url :location.href,
					global :true,
					type :"GET",
					timeout :0,
					contentType :"application/x-www-form-urlencoded",
					processData :true,
					async :true,
					data :null,
					username :null,
					password :null,
					accepts : {
						xml :"application/xml, text/xml",
						html :"text/html",
						script :"text/javascript, application/javascript",
						json :"application/json, text/javascript",
						text :"text/plain",
						_default :"*/*"
					}
				},
				lastModified : {},
				ajax : function(s) {
					s = jQuery.extend(true, s, jQuery.extend(true, {},
							jQuery.ajaxSettings, s));
					var jsonp, jsre = /=\?(&|$)/g, status, data, type = s.type
							.toUpperCase();
					if (s.data && s.processData && typeof s.data != "string")
						s.data = jQuery.param(s.data);
					if (s.dataType == "jsonp") {
						if (type == "GET") {
							if (!s.url.match(jsre))
								s.url += (s.url.match(/\?/) ? "&" : "?")
										+ (s.jsonp || "callback") + "=?";
						} else if (!s.data || !s.data.match(jsre))
							s.data = (s.data ? s.data + "&" : "")
									+ (s.jsonp || "callback") + "=?";
						s.dataType = "json";
					}
					if (s.dataType == "json"
							&& (s.data && s.data.match(jsre) || s.url
									.match(jsre))) {
						jsonp = "jsonp" + jsc++;
						if (s.data)
							s.data = (s.data + "").replace(jsre, "=" + jsonp
									+ "$1");
						s.url = s.url.replace(jsre, "=" + jsonp + "$1");
						s.dataType = "script";
						window[jsonp] = function(tmp) {
							data = tmp;
							success();
							complete();
							window[jsonp] = undefined;
							try {
								delete window[jsonp];
							} catch (e) {
							}
							if (head)
								head.removeChild(script);
						};
					}
					if (s.dataType == "script" && s.cache == null)
						s.cache = false;
					if (s.cache === false && type == "GET") {
						var ts = now();
						var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts
								+ "$2");
						s.url = ret
								+ ((ret == s.url) ? (s.url.match(/\?/) ? "&"
										: "?")
										+ "_=" + ts : "");
					}
					if (s.data && type == "GET") {
						s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
						s.data = null;
					}
					if (s.global && !jQuery.active++)
						jQuery.event.trigger("ajaxStart");
					var remote = /^(?:\w+:)?\/\/([^\/?#]+)/;
					if (s.dataType == "script" && type == "GET"
							&& remote.test(s.url)
							&& remote.exec(s.url)[1] != location.host) {
						var head = document.getElementsByTagName("head")[0];
						var script = document.createElement("script");
						script.src = s.url;
						if (s.scriptCharset)
							script.charset = s.scriptCharset;
						if (!jsonp) {
							var done = false;
							script.onload = script.onreadystatechange = function() {
								if (!done
										&& (!this.readyState
												|| this.readyState == "loaded" || this.readyState == "complete")) {
									done = true;
									success();
									complete();
									head.removeChild(script);
								}
							};
						}
						head.appendChild(script);
						return undefined;
					}
					var requestDone = false;
					var xhr = window.ActiveXObject ? new ActiveXObject(
							"Microsoft.XMLHTTP") : new XMLHttpRequest();
					if (s.username)
						xhr.open(type, s.url, s.async, s.username, s.password);
					else
						xhr.open(type, s.url, s.async);
					try {
						if (s.data)
							xhr.setRequestHeader("Content-Type", s.contentType);
						if (s.ifModified)
							xhr.setRequestHeader("If-Modified-Since",
									jQuery.lastModified[s.url]
											|| "Thu, 01 Jan 1970 00:00:00 GMT");
						xhr.setRequestHeader("X-Requested-With",
								"XMLHttpRequest");
						xhr
								.setRequestHeader(
										"Accept",
										s.dataType && s.accepts[s.dataType] ? s.accepts[s.dataType]
												+ ", */*"
												: s.accepts._default);
					} catch (e) {
					}
					if (s.beforeSend && s.beforeSend(xhr, s) === false) {
						s.global && jQuery.active--;
						xhr.abort();
						return false;
					}
					if (s.global)
						jQuery.event.trigger("ajaxSend", [ xhr, s ]);
					var onreadystatechange = function(isTimeout) {
						if (!requestDone
								&& xhr
								&& (xhr.readyState == 4 || isTimeout == "timeout")) {
							requestDone = true;
							if (ival) {
								clearInterval(ival);
								ival = null;
							}
							status = isTimeout == "timeout" && "timeout"
									|| !jQuery.httpSuccess(xhr) && "error"
									|| s.ifModified
									&& jQuery.httpNotModified(xhr, s.url)
									&& "notmodified" || "success";
							if (status == "success") {
								try {
									data = jQuery.httpData(xhr, s.dataType,
											s.dataFilter);
								} catch (e) {
									status = "parsererror";
								}
							}
							if (status == "success") {
								var modRes;
								try {
									modRes = xhr
											.getResponseHeader("Last-Modified");
								} catch (e) {
								}
								if (s.ifModified && modRes)
									jQuery.lastModified[s.url] = modRes;
								if (!jsonp)
									success();
							} else
								jQuery.handleError(s, xhr, status);
							complete();
							if (s.async)
								xhr = null;
						}
					};
					if (s.async) {
						var ival = setInterval(onreadystatechange, 13);
						if (s.timeout > 0)
							setTimeout( function() {
								if (xhr) {
									xhr.abort();
									if (!requestDone)
										onreadystatechange("timeout");
								}
							}, s.timeout);
					}
					try {
						xhr.send(s.data);
					} catch (e) {
						jQuery.handleError(s, xhr, null, e);
					}
					if (!s.async)
						onreadystatechange();
					function success() {
						if (s.success)
							s.success(data, status);
						if (s.global)
							jQuery.event.trigger("ajaxSuccess", [ xhr, s ]);
					}
					function complete() {
						if (s.complete)
							s.complete(xhr, status);
						if (s.global)
							jQuery.event.trigger("ajaxComplete", [ xhr, s ]);
						if (s.global && !--jQuery.active)
							jQuery.event.trigger("ajaxStop");
					}
					return xhr;
				},
				handleError : function(s, xhr, status, e) {
					if (s.error)
						s.error(xhr, status, e);
					if (s.global)
						jQuery.event.trigger("ajaxError", [ xhr, s, e ]);
				},
				active :0,
				httpSuccess : function(xhr) {
					try {
						return !xhr.status && location.protocol == "file:"
								|| (xhr.status >= 200 && xhr.status < 300)
								|| xhr.status == 304 || xhr.status == 1223
								|| jQuery.browser.safari
								&& xhr.status == undefined;
					} catch (e) {
					}
					return false;
				},
				httpNotModified : function(xhr, url) {
					try {
						var xhrRes = xhr.getResponseHeader("Last-Modified");
						return xhr.status == 304
								|| xhrRes == jQuery.lastModified[url]
								|| jQuery.browser.safari
								&& xhr.status == undefined;
					} catch (e) {
					}
					return false;
				},
				httpData : function(xhr, type, filter) {
					var ct = xhr.getResponseHeader("content-type"), xml = type == "xml"
							|| !type && ct && ct.indexOf("xml") >= 0, data = xml ? xhr.responseXML
							: xhr.responseText;
					if (xml && data.documentElement.tagName == "parsererror")
						throw "parsererror";
					if (filter)
						data = filter(data, type);
					if (type == "script")
						jQuery.globalEval(data);
					if (type == "json")
						data = eval("(" + data + ")");
					return data;
				},
				param : function(a) {
					var s = [];
					if (a.constructor == Array || a.jquery)
						jQuery.each(a, function() {
							s.push(encodeURIComponent(this.name) + "="
									+ encodeURIComponent(this.value));
						});
					else
						for ( var j in a)
							if (a[j] && a[j].constructor == Array)
								jQuery.each(a[j], function() {
									s.push(encodeURIComponent(j) + "="
											+ encodeURIComponent(this));
								});
							else
								s.push(encodeURIComponent(j)
										+ "="
										+ encodeURIComponent(jQuery
												.isFunction(a[j]) ? a[j]()
												: a[j]));
					return s.join("&").replace(/%20/g, "+");
				}
			});
	jQuery.fn
			.extend( {
				show : function(speed, callback) {
					return speed ? this.animate( {
						height :"show",
						width :"show",
						opacity :"show"
					}, speed, callback) : this.filter(":hidden").each(
							function() {
								this.style.display = this.oldblock || "";
								if (jQuery.css(this, "display") == "none") {
									var elem = jQuery(
											"<" + this.tagName + " />")
											.appendTo("body");
									this.style.display = elem.css("display");
									if (this.style.display == "none")
										this.style.display = "block";
									elem.remove();
								}
							}).end();
				},
				hide : function(speed, callback) {
					return speed ? this.animate( {
						height :"hide",
						width :"hide",
						opacity :"hide"
					}, speed, callback) : this.filter(":visible").each(
							function() {
								this.oldblock = this.oldblock
										|| jQuery.css(this, "display");
								this.style.display = "none";
							}).end();
				},
				_toggle :jQuery.fn.toggle,
				toggle : function(fn, fn2) {
					return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ? this._toggle
							.apply(this, arguments)
							: fn ? this.animate( {
								height :"toggle",
								width :"toggle",
								opacity :"toggle"
							}, fn, fn2)
									: this
											.each( function() {
												jQuery(this)[jQuery(this).is(
														":hidden") ? "show"
														: "hide"]();
											});
				},
				slideDown : function(speed, callback) {
					return this.animate( {
						height :"show"
					}, speed, callback);
				},
				slideUp : function(speed, callback) {
					return this.animate( {
						height :"hide"
					}, speed, callback);
				},
				slideToggle : function(speed, callback) {
					return this.animate( {
						height :"toggle"
					}, speed, callback);
				},
				fadeIn : function(speed, callback) {
					return this.animate( {
						opacity :"show"
					}, speed, callback);
				},
				fadeOut : function(speed, callback) {
					return this.animate( {
						opacity :"hide"
					}, speed, callback);
				},
				fadeTo : function(speed, to, callback) {
					return this.animate( {
						opacity :to
					}, speed, callback);
				},
				animate : function(prop, speed, easing, callback) {
					var optall = jQuery.speed(speed, easing, callback);
					return this[optall.queue === false ? "each" : "queue"]
							( function() {
								if (this.nodeType != 1)
									return false;
								var opt = jQuery.extend( {}, optall), p, hidden = jQuery(
										this).is(":hidden"), self = this;
								for (p in prop) {
									if (prop[p] == "hide" && hidden
											|| prop[p] == "show" && !hidden)
										return opt.complete.call(this);
									if (p == "height" || p == "width") {
										opt.display = jQuery.css(this,
												"display");
										opt.overflow = this.style.overflow;
									}
								}
								if (opt.overflow != null)
									this.style.overflow = "hidden";
								opt.curAnim = jQuery.extend( {}, prop);
								jQuery
										.each(
												prop,
												function(name, val) {
													var e = new jQuery.fx(self,
															opt, name);
													if (/toggle|show|hide/
															.test(val))
														e[val == "toggle" ? hidden ? "show"
																: "hide"
																: val](prop);
													else {
														var parts = val
																.toString()
																.match(
																		/^([+-]=)?([\d+-.]+)(.*)$/), start = e
																.cur(true) || 0;
														if (parts) {
															var end = parseFloat(parts[2]), unit = parts[3]
																	|| "px";
															if (unit != "px") {
																self.style[name] = (end || 1)
																		+ unit;
																start = ((end || 1) / e
																		.cur(true))
																		* start;
																self.style[name] = start
																		+ unit;
															}
															if (parts[1])
																end = ((parts[1] == "-=" ? -1
																		: 1) * end)
																		+ start;
															e.custom(start,
																	end, unit);
														} else
															e.custom(start,
																	val, "");
													}
												});
								return true;
							});
				},
				queue : function(type, fn) {
					if (jQuery.isFunction(type)
							|| (type && type.constructor == Array)) {
						fn = type;
						type = "fx";
					}
					if (!type || (typeof type == "string" && !fn))
						return queue(this[0], type);
					return this.each( function() {
						if (fn.constructor == Array)
							queue(this, type, fn);
						else {
							queue(this, type).push(fn);
							if (queue(this, type).length == 1)
								fn.call(this);
						}
					});
				},
				stop : function(clearQueue, gotoEnd) {
					var timers = jQuery.timers;
					if (clearQueue)
						this.queue( []);
					this.each( function() {
						for ( var i = timers.length - 1; i >= 0; i--)
							if (timers[i].elem == this) {
								if (gotoEnd)
									timers[i](true);
								timers.splice(i, 1);
							}
					});
					if (!gotoEnd)
						this.dequeue();
					return this;
				}
			});
	var queue = function(elem, type, array) {
		if (elem) {
			type = type || "fx";
			var q = jQuery.data(elem, type + "queue");
			if (!q || array)
				q = jQuery.data(elem, type + "queue", jQuery.makeArray(array));
		}
		return q;
	};
	jQuery.fn.dequeue = function(type) {
		type = type || "fx";
		return this.each( function() {
			var q = queue(this, type);
			q.shift();
			if (q.length)
				q[0].call(this);
		});
	};
	jQuery
			.extend( {
				speed : function(speed, easing, fn) {
					var opt = speed && speed.constructor == Object ? speed : {
						complete :fn || !fn && easing
								|| jQuery.isFunction(speed) && speed,
						duration :speed,
						easing :fn && easing || easing
								&& easing.constructor != Function && easing
					};
					opt.duration = (opt.duration
							&& opt.duration.constructor == Number ? opt.duration
							: jQuery.fx.speeds[opt.duration])
							|| jQuery.fx.speeds.def;
					opt.old = opt.complete;
					opt.complete = function() {
						if (opt.queue !== false)
							jQuery(this).dequeue();
						if (jQuery.isFunction(opt.old))
							opt.old.call(this);
					};
					return opt;
				},
				easing : {
					linear : function(p, n, firstNum, diff) {
						return firstNum + diff * p;
					},
					swing : function(p, n, firstNum, diff) {
						return ((-Math.cos(p * Math.PI) / 2) + 0.5) * diff
								+ firstNum;
					}
				},
				timers : [],
				timerId :null,
				fx : function(elem, options, prop) {
					this.options = options;
					this.elem = elem;
					this.prop = prop;
					if (!options.orig)
						options.orig = {};
				}
			});
	jQuery.fx.prototype = {
		update : function() {
			if (this.options.step)
				this.options.step.call(this.elem, this.now, this);
			(jQuery.fx.step[this.prop] || jQuery.fx.step._default)(this);
			if (this.prop == "height" || this.prop == "width")
				this.elem.style.display = "block";
		},
		cur : function(force) {
			if (this.elem[this.prop] != null
					&& this.elem.style[this.prop] == null)
				return this.elem[this.prop];
			var r = parseFloat(jQuery.css(this.elem, this.prop, force));
			return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem,
					this.prop)) || 0;
		},
		custom : function(from, to, unit) {
			this.startTime = now();
			this.start = from;
			this.end = to;
			this.unit = unit || this.unit || "px";
			this.now = this.start;
			this.pos = this.state = 0;
			this.update();
			var self = this;
			function t(gotoEnd) {
				return self.step(gotoEnd);
			}
			t.elem = this.elem;
			jQuery.timers.push(t);
			if (jQuery.timerId == null) {
				jQuery.timerId = setInterval( function() {
					var timers = jQuery.timers;
					for ( var i = 0; i < timers.length; i++)
						if (!timers[i]())
							timers.splice(i--, 1);
					if (!timers.length) {
						clearInterval(jQuery.timerId);
						jQuery.timerId = null;
					}
				}, 13);
			}
		},
		show : function() {
			this.options.orig[this.prop] = jQuery.attr(this.elem.style,
					this.prop);
			this.options.show = true;
			this.custom(0, this.cur());
			if (this.prop == "width" || this.prop == "height")
				this.elem.style[this.prop] = "1px";
			jQuery(this.elem).show();
		},
		hide : function() {
			this.options.orig[this.prop] = jQuery.attr(this.elem.style,
					this.prop);
			this.options.hide = true;
			this.custom(this.cur(), 0);
		},
		step : function(gotoEnd) {
			var t = now();
			if (gotoEnd || t > this.options.duration + this.startTime) {
				this.now = this.end;
				this.pos = this.state = 1;
				this.update();
				this.options.curAnim[this.prop] = true;
				var done = true;
				for ( var i in this.options.curAnim)
					if (this.options.curAnim[i] !== true)
						done = false;
				if (done) {
					if (this.options.display != null) {
						this.elem.style.overflow = this.options.overflow;
						this.elem.style.display = this.options.display;
						if (jQuery.css(this.elem, "display") == "none")
							this.elem.style.display = "block";
					}
					if (this.options.hide)
						this.elem.style.display = "none";
					if (this.options.hide || this.options.show)
						for ( var p in this.options.curAnim)
							jQuery.attr(this.elem.style, p,
									this.options.orig[p]);
				}
				if (done)
					this.options.complete.call(this.elem);
				return false;
			} else {
				var n = t - this.startTime;
				this.state = n / this.options.duration;
				this.pos = jQuery.easing[this.options.easing
						|| (jQuery.easing.swing ? "swing" : "linear")](
						this.state, n, 0, 1, this.options.duration);
				this.now = this.start + ((this.end - this.start) * this.pos);
				this.update();
			}
			return true;
		}
	};
	jQuery.extend(jQuery.fx, {
		speeds : {
			slow :600,
			fast :200,
			def :400
		},
		step : {
			scrollLeft : function(fx) {
				fx.elem.scrollLeft = fx.now;
			},
			scrollTop : function(fx) {
				fx.elem.scrollTop = fx.now;
			},
			opacity : function(fx) {
				jQuery.attr(fx.elem.style, "opacity", fx.now);
			},
			_default : function(fx) {
				fx.elem.style[fx.prop] = fx.now + fx.unit;
			}
		}
	});
	jQuery.fn.offset = function() {
		var left = 0, top = 0, elem = this[0], results;
		if (elem)
			with (jQuery.browser) {
				var parent = elem.parentNode, offsetChild = elem, offsetParent = elem.offsetParent, doc = elem.ownerDocument, safari2 = safari
						&& parseInt(version) < 522
						&& !/adobeair/i.test(userAgent), css = jQuery.curCSS, fixed = css(
						elem, "position") == "fixed";
				if (elem.getBoundingClientRect) {
					var box = elem.getBoundingClientRect();
					add(box.left
							+ Math.max(doc.documentElement.scrollLeft,
									doc.body.scrollLeft), box.top
							+ Math.max(doc.documentElement.scrollTop,
									doc.body.scrollTop));
					add(-doc.documentElement.clientLeft,
							-doc.documentElement.clientTop);
				} else {
					add(elem.offsetLeft, elem.offsetTop);
					while (offsetParent) {
						add(offsetParent.offsetLeft, offsetParent.offsetTop);
						if (mozilla
								&& !/^t(able|d|h)$/i.test(offsetParent.tagName)
								|| safari && !safari2)
							border(offsetParent);
						if (!fixed && css(offsetParent, "position") == "fixed")
							fixed = true;
						offsetChild = /^body$/i.test(offsetParent.tagName) ? offsetChild
								: offsetParent;
						offsetParent = offsetParent.offsetParent;
					}
					while (parent && parent.tagName
							&& !/^body|html$/i.test(parent.tagName)) {
						if (!/^inline|table.*$/i.test(css(parent, "display")))
							add(-parent.scrollLeft, -parent.scrollTop);
						if (mozilla && css(parent, "overflow") != "visible")
							border(parent);
						parent = parent.parentNode;
					}
					if ((safari2 && (fixed || css(offsetChild, "position") == "absolute"))
							|| (mozilla && css(offsetChild, "position") != "absolute"))
						add(-doc.body.offsetLeft, -doc.body.offsetTop);
					if (fixed)
						add(Math.max(doc.documentElement.scrollLeft,
								doc.body.scrollLeft), Math.max(
								doc.documentElement.scrollTop,
								doc.body.scrollTop));
				}
				results = {
					top :top,
					left :left
				};
			}
		function border(elem) {
			add(jQuery.curCSS(elem, "borderLeftWidth", true), jQuery.curCSS(
					elem, "borderTopWidth", true));
		}
		function add(l, t) {
			left += parseInt(l, 10) || 0;
			top += parseInt(t, 10) || 0;
		}
		return results;
	};
	jQuery.fn
			.extend( {
				position : function() {
					var left = 0, top = 0, results;
					if (this[0]) {
						var offsetParent = this.offsetParent(), offset = this
								.offset(), parentOffset = /^body|html$/i
								.test(offsetParent[0].tagName) ? {
							top :0,
							left :0
						} : offsetParent.offset();
						offset.top -= num(this, 'marginTop');
						offset.left -= num(this, 'marginLeft');
						parentOffset.top += num(offsetParent, 'borderTopWidth');
						parentOffset.left += num(offsetParent,
								'borderLeftWidth');
						results = {
							top :offset.top - parentOffset.top,
							left :offset.left - parentOffset.left
						};
					}
					return results;
				},
				offsetParent : function() {
					var offsetParent = this[0].offsetParent;
					while (offsetParent
							&& (!/^body|html$/i.test(offsetParent.tagName) && jQuery
									.css(offsetParent, 'position') == 'static'))
						offsetParent = offsetParent.offsetParent;
					return jQuery(offsetParent);
				}
			});
	jQuery
			.each(
					[ 'Left', 'Top' ],
					function(i, name) {
						var method = 'scroll' + name;
						jQuery.fn[method] = function(val) {
							if (!this[0])
								return;
							return val != undefined ? this.each( function() {
								this == window || this == document ? window
										.scrollTo(!i ? val : jQuery(window)
												.scrollLeft(), i ? val
												: jQuery(window).scrollTop())
										: this[method] = val;
							})
									: this[0] == window || this[0] == document ? self[i ? 'pageYOffset'
											: 'pageXOffset']
											|| jQuery.boxModel
											&& document.documentElement[method]
											|| document.body[method]
											: this[0][method];
						};
					});
	jQuery.each( [ "Height", "Width" ], function(i, name) {
		var tl = i ? "Left" : "Top", br = i ? "Right" : "Bottom";
		jQuery.fn["inner" + name] = function() {
			return this[name.toLowerCase()]() + num(this, "padding" + tl)
					+ num(this, "padding" + br);
		};
		jQuery.fn["outer" + name] = function(margin) {
			return this["inner" + name]()
					+ num(this, "border" + tl + "Width")
					+ num(this, "border" + br + "Width")
					+ (margin ? num(this, "margin" + tl)
							+ num(this, "margin" + br) : 0);
		};
	});
})();
				
				
				
/////this is image rotating script
				
				/*
				 * jQuery JavaScript Library v1.3.2
				 * http://jquery.com/
				 *
				 * Copyright (c) 2009 John Resig
				 * Dual licensed under the MIT and GPL licenses.
				 * http://docs.jquery.com/License
				 *
				 * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
				 * Revision: 6246
				 */
				( function() {
					var l = this, g, y = l.jQuery, p = l.$, o = l.jQuery = l.$ = function(E, F) {
						return new o.fn.init(E, F)
					}, D = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/, f = /^.[^:#\[\.,]*$/;
					o.fn = o.prototype = {
						init : function(E, H) {
							E = E || document;
							if (E.nodeType) {
								this[0] = E;
								this.length = 1;
								this.context = E;
								return this
							}
							if (typeof E === "string") {
								var G = D.exec(E);
								if (G && (G[1] || !H)) {
									if (G[1]) {
										E = o.clean( [ G[1] ], H)
									} else {
										var I = document.getElementById(G[3]);
										if (I && I.id != G[3]) {
											return o().find(E)
										}
										var F = o(I || []);
										F.context = document;
										F.selector = E;
										return F
									}
								} else {
									return o(H).find(E)
								}
							} else {
								if (o.isFunction(E)) {
									return o(document).ready(E)
								}
							}
							if (E.selector && E.context) {
								this.selector = E.selector;
								this.context = E.context
							}
							return this.setArray(o.isArray(E) ? E : o.makeArray(E))
						},
						selector :"",
						jquery :"1.3.2",
						size : function() {
							return this.length
						},
						get : function(E) {
							return E === g ? Array.prototype.slice.call(this) : this[E]
						},
						pushStack : function(F, H, E) {
							var G = o(F);
							G.prevObject = this;
							G.context = this.context;
							if (H === "find") {
								G.selector = this.selector + (this.selector ? " " : "") + E
							} else {
								if (H) {
									G.selector = this.selector + "." + H + "(" + E + ")"
								}
							}
							return G
						},
						setArray : function(E) {
							this.length = 0;
							Array.prototype.push.apply(this, E);
							return this
						},
						each : function(F, E) {
							return o.each(this, F, E)
						},
						index : function(E) {
							return o.inArray(E && E.jquery ? E[0] : E, this)
						},
						attr : function(F, H, G) {
							var E = F;
							if (typeof F === "string") {
								if (H === g) {
									return this[0] && o[G || "attr"](this[0], F)
								} else {
									E = {};
									E[F] = H
								}
							}
							return this.each( function(I) {
								for (F in E) {
									o.attr(G ? this.style : this, F, o
											.prop(this, E[F], G, I, F))
								}
							})
						},
						css : function(E, F) {
							if ((E == "width" || E == "height") && parseFloat(F) < 0) {
								F = g
							}
							return this.attr(E, F, "curCSS")
						},
						text : function(F) {
							if (typeof F !== "object" && F != null) {
								return this.empty().append(
										(this[0] && this[0].ownerDocument || document)
												.createTextNode(F))
							}
							var E = "";
							o.each(F || this, function() {
								o.each(this.childNodes, function() {
									if (this.nodeType != 8) {
										E += this.nodeType != 1 ? this.nodeValue : o.fn
												.text( [ this ])
									}
								})
							});
							return E
						},
						wrapAll : function(E) {
							if (this[0]) {
								var F = o(E, this[0].ownerDocument).clone();
								if (this[0].parentNode) {
									F.insertBefore(this[0])
								}
								F.map( function() {
									var G = this;
									while (G.firstChild) {
										G = G.firstChild
									}
									return G
								}).append(this)
							}
							return this
						},
						wrapInner : function(E) {
							return this.each( function() {
								o(this).contents().wrapAll(E)
							})
						},
						wrap : function(E) {
							return this.each( function() {
								o(this).wrapAll(E)
							})
						},
						append : function() {
							return this.domManip(arguments, true, function(E) {
								if (this.nodeType == 1) {
									this.appendChild(E)
								}
							})
						},
						prepend : function() {
							return this.domManip(arguments, true, function(E) {
								if (this.nodeType == 1) {
									this.insertBefore(E, this.firstChild)
								}
							})
						},
						before : function() {
							return this.domManip(arguments, false, function(E) {
								this.parentNode.insertBefore(E, this)
							})
						},
						after : function() {
							return this.domManip(arguments, false, function(E) {
								this.parentNode.insertBefore(E, this.nextSibling)
							})
						},
						end : function() {
							return this.prevObject || o( [])
						},
						push : [].push,
						sort : [].sort,
						splice : [].splice,
						find : function(E) {
							if (this.length === 1) {
								var F = this.pushStack( [], "find", E);
								F.length = 0;
								o.find(E, this[0], F);
								return F
							} else {
								return this.pushStack(o.unique(o.map(this, function(G) {
									return o.find(E, G)
								})), "find", E)
							}
						},
						clone : function(G) {
							var E = this.map( function() {
								if (!o.support.noCloneEvent && !o.isXMLDoc(this)) {
									var I = this.outerHTML;
									if (!I) {
										var J = this.ownerDocument.createElement("div");
										J.appendChild(this.cloneNode(true));
										I = J.innerHTML
									}
									return o.clean( [ I.replace(/ jQuery\d+="(?:\d+|null)"/g,
											"").replace(/^\s*/, "") ])[0]
								} else {
									return this.cloneNode(true)
								}
							});
							if (G === true) {
								var H = this.find("*").andSelf(), F = 0;
								E.find("*").andSelf().each( function() {
									if (this.nodeName !== H[F].nodeName) {
										return
									}
									var I = o.data(H[F], "events");
									for ( var K in I) {
										for ( var J in I[K]) {
											o.event.add(this, K, I[K][J], I[K][J].data)
										}
									}
									F++
								})
							}
							return E
						},
						filter : function(E) {
							return this.pushStack(o.isFunction(E)
									&& o.grep(this, function(G, F) {
										return E.call(G, F)
									}) || o.multiFilter(E, o.grep(this, function(F) {
										return F.nodeType === 1
									})), "filter", E)
						},
						closest : function(E) {
							var G = o.expr.match.POS.test(E) ? o(E) : null, F = 0;
							return this.map( function() {
								var H = this;
								while (H && H.ownerDocument) {
									if (G ? G.index(H) > -1 : o(H).is(E)) {
										o.data(H, "closest", F);
										return H
									}
									H = H.parentNode;
									F++
								}
							})
						},
						not : function(E) {
							if (typeof E === "string") {
								if (f.test(E)) {
									return this.pushStack(o.multiFilter(E, this, true), "not",
											E)
								} else {
									E = o.multiFilter(E, this)
								}
							}
							var F = E.length && E[E.length - 1] !== g && !E.nodeType;
							return this.filter( function() {
								return F ? o.inArray(this, E) < 0 : this != E
							})
						},
						add : function(E) {
							return this.pushStack(o.unique(o.merge(this.get(),
									typeof E === "string" ? o(E) : o.makeArray(E))))
						},
						is : function(E) {
							return !!E && o.multiFilter(E, this).length > 0
						},
						hasClass : function(E) {
							return !!E && this.is("." + E)
						},
						val : function(K) {
							if (K === g) {
								var E = this[0];
								if (E) {
									if (o.nodeName(E, "option")) {
										return (E.attributes.value || {}).specified ? E.value
												: E.text
									}
									if (o.nodeName(E, "select")) {
										var I = E.selectedIndex, L = [], M = E.options, H = E.type == "select-one";
										if (I < 0) {
											return null
										}
										for ( var F = H ? I : 0, J = H ? I + 1 : M.length; F < J; F++) {
											var G = M[F];
											if (G.selected) {
												K = o(G).val();
												if (H) {
													return K
												}
												L.push(K)
											}
										}
										return L
									}
									return (E.value || "").replace(/\r/g, "")
								}
								return g
							}
							if (typeof K === "number") {
								K += ""
							}
							return this
									.each( function() {
										if (this.nodeType != 1) {
											return
										}
										if (o.isArray(K) && /radio|checkbox/.test(this.type)) {
											this.checked = (o.inArray(this.value, K) >= 0 || o
													.inArray(this.name, K) >= 0)
										} else {
											if (o.nodeName(this, "select")) {
												var N = o.makeArray(K);
												o("option", this)
														.each(
																function() {
																	this.selected = (o.inArray(
																			this.value, N) >= 0 || o
																			.inArray(this.text,
																					N) >= 0)
																});
												if (!N.length) {
													this.selectedIndex = -1
												}
											} else {
												this.value = K
											}
										}
									})
						},
						html : function(E) {
							return E === g ? (this[0] ? this[0].innerHTML.replace(
									/ jQuery\d+="(?:\d+|null)"/g, "") : null) : this.empty()
									.append(E)
						},
						replaceWith : function(E) {
							return this.after(E).remove()
						},
						eq : function(E) {
							return this.slice(E, +E + 1)
						},
						slice : function() {
							return this.pushStack(Array.prototype.slice.apply(this, arguments),
									"slice", Array.prototype.slice.call(arguments).join(","))
						},
						map : function(E) {
							return this.pushStack(o.map(this, function(G, F) {
								return E.call(G, F, G)
							}))
						},
						andSelf : function() {
							return this.add(this.prevObject)
						},
						domManip : function(J, M, L) {
							if (this[0]) {
								var I = (this[0].ownerDocument || this[0])
										.createDocumentFragment(), F = o.clean(J,
										(this[0].ownerDocument || this[0]), I), H = I.firstChild;
								if (H) {
									for ( var G = 0, E = this.length; G < E; G++) {
										L.call(K(this[G], H), this.length > 1 || G > 0 ? I
												.cloneNode(true) : I)
									}
								}
								if (F) {
									o.each(F, z)
								}
							}
							return this;
							function K(N, O) {
								return M && o.nodeName(N, "table") && o.nodeName(O, "tr") ? (N
										.getElementsByTagName("tbody")[0] || N
										.appendChild(N.ownerDocument.createElement("tbody")))
										: N
							}
						}
					};
					o.fn.init.prototype = o.fn;
					function z(E, F) {
						if (F.src) {
							o.ajax( {
								url :F.src,
								async :false,
								dataType :"script"
							})
						} else {
							o.globalEval(F.text || F.textContent || F.innerHTML || "")
						}
						if (F.parentNode) {
							F.parentNode.removeChild(F)
						}
					}
					function e() {
						return +new Date
					}
					o.extend = o.fn.extend = function() {
						var J = arguments[0] || {}, H = 1, I = arguments.length, E = false, G;
						if (typeof J === "boolean") {
							E = J;
							J = arguments[1] || {};
							H = 2
						}
						if (typeof J !== "object" && !o.isFunction(J)) {
							J = {}
						}
						if (I == H) {
							J = this;
							--H
						}
						for (; H < I; H++) {
							if ((G = arguments[H]) != null) {
								for ( var F in G) {
									var K = J[F], L = G[F];
									if (J === L) {
										continue
									}
									if (E && L && typeof L === "object" && !L.nodeType) {
										J[F] = o
												.extend(E, K || (L.length != null ? [] : {}), L)
									} else {
										if (L !== g) {
											J[F] = L
										}
									}
								}
							}
						}
						return J
					};
					var b = /z-?index|font-?weight|opacity|zoom|line-?height/i, q = document.defaultView
							|| {}, s = Object.prototype.toString;
					o
							.extend( {
								noConflict : function(E) {
									l.$ = p;
									if (E) {
										l.jQuery = y
									}
									return o
								},
								isFunction : function(E) {
									return s.call(E) === "[object Function]"
								},
								isArray : function(E) {
									return s.call(E) === "[object Array]"
								},
								isXMLDoc : function(E) {
									return E.nodeType === 9
											&& E.documentElement.nodeName !== "HTML"
											|| !!E.ownerDocument && o.isXMLDoc(E.ownerDocument)
								},
								globalEval : function(G) {
									if (G && /\S/.test(G)) {
										var F = document.getElementsByTagName("head")[0]
												|| document.documentElement, E = document
												.createElement("script");
										E.type = "text/javascript";
										if (o.support.scriptEval) {
											E.appendChild(document.createTextNode(G))
										} else {
											E.text = G
										}
										F.insertBefore(E, F.firstChild);
										F.removeChild(E)
									}
								},
								nodeName : function(F, E) {
									return F.nodeName
											&& F.nodeName.toUpperCase() == E.toUpperCase()
								},
								each : function(G, K, F) {
									var E, H = 0, I = G.length;
									if (F) {
										if (I === g) {
											for (E in G) {
												if (K.apply(G[E], F) === false) {
													break
												}
											}
										} else {
											for (; H < I;) {
												if (K.apply(G[H++], F) === false) {
													break
												}
											}
										}
									} else {
										if (I === g) {
											for (E in G) {
												if (K.call(G[E], E, G[E]) === false) {
													break
												}
											}
										} else {
											for ( var J = G[0]; H < I
													&& K.call(J, H, J) !== false; J = G[++H]) {
											}
										}
									}
									return G
								},
								prop : function(H, I, G, F, E) {
									if (o.isFunction(I)) {
										I = I.call(H, F)
									}
									return typeof I === "number" && G == "curCSS" && !b.test(E) ? I
											+ "px"
											: I
								},
								className : {
									add : function(E, F) {
										o.each((F || "").split(/\s+/), function(G, H) {
											if (E.nodeType == 1
													&& !o.className.has(E.className, H)) {
												E.className += (E.className ? " " : "") + H
											}
										})
									},
									remove : function(E, F) {
										if (E.nodeType == 1) {
											E.className = F !== g ? o.grep(
													E.className.split(/\s+/), function(G) {
														return !o.className.has(F, G)
													}).join(" ") : ""
										}
									},
									has : function(F, E) {
										return F
												&& o.inArray(E, (F.className || F).toString()
														.split(/\s+/)) > -1
									}
								},
								swap : function(H, G, I) {
									var E = {};
									for ( var F in G) {
										E[F] = H.style[F];
										H.style[F] = G[F]
									}
									I.call(H);
									for ( var F in G) {
										H.style[F] = E[F]
									}
								},
								css : function(H, F, J, E) {
									if (F == "width" || F == "height") {
										var L, G = {
											position :"absolute",
											visibility :"hidden",
											display :"block"
										}, K = F == "width" ? [ "Left", "Right" ] : [ "Top",
												"Bottom" ];
										function I() {
											L = F == "width" ? H.offsetWidth : H.offsetHeight;
											if (E === "border") {
												return
											}
											o.each(K, function() {
												if (!E) {
													L -= parseFloat(o.curCSS(H, "padding"
															+ this, true)) || 0
												}
												if (E === "margin") {
													L += parseFloat(o.curCSS(H,
															"margin" + this, true)) || 0
												} else {
													L -= parseFloat(o.curCSS(H, "border" + this
															+ "Width", true)) || 0
												}
											})
										}
										if (H.offsetWidth !== 0) {
											I()
										} else {
											o.swap(H, G, I)
										}
										return Math.max(0, Math.round(L))
									}
									return o.curCSS(H, F, J)
								},
								curCSS : function(I, F, G) {
									var L, E = I.style;
									if (F == "opacity" && !o.support.opacity) {
										L = o.attr(E, "opacity");
										return L == "" ? "1" : L
									}
									if (F.match(/float/i)) {
										F = w
									}
									if (!G && E && E[F]) {
										L = E[F]
									} else {
										if (q.getComputedStyle) {
											if (F.match(/float/i)) {
												F = "float"
											}
											F = F.replace(/([A-Z])/g, "-$1").toLowerCase();
											var M = q.getComputedStyle(I, null);
											if (M) {
												L = M.getPropertyValue(F)
											}
											if (F == "opacity" && L == "") {
												L = "1"
											}
										} else {
											if (I.currentStyle) {
												var J = F.replace(/\-(\w)/g, function(N, O) {
													return O.toUpperCase()
												});
												L = I.currentStyle[F] || I.currentStyle[J];
												if (!/^\d+(px)?$/i.test(L) && /^\d/.test(L)) {
													var H = E.left, K = I.runtimeStyle.left;
													I.runtimeStyle.left = I.currentStyle.left;
													E.left = L || 0;
													L = E.pixelLeft + "px";
													E.left = H;
													I.runtimeStyle.left = K
												}
											}
										}
									}
									return L
								},
								clean : function(F, K, I) {
									K = K || document;
									if (typeof K.createElement === "undefined") {
										K = K.ownerDocument || K[0] && K[0].ownerDocument
												|| document
									}
									if (!I && F.length === 1 && typeof F[0] === "string") {
										var H = /^<(\w+)\s*\/?>$/.exec(F[0]);
										if (H) {
											return [ K.createElement(H[1]) ]
										}
									}
									var G = [], E = [], L = K.createElement("div");
									o
											.each(
													F,
													function(P, S) {
														if (typeof S === "number") {
															S += ""
														}
														if (!S) {
															return
														}
														if (typeof S === "string") {
															S = S
																	.replace(
																			/(<(\w+)[^>]*?)\/>/g,
																			function(U, V, T) {
																				return T
																						.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? U
																						: V
																								+ "></"
																								+ T
																								+ ">"
																			});
															var O = S.replace(/^\s+/, "")
																	.substring(0, 10)
																	.toLowerCase();
															var Q = !O.indexOf("<opt")
																	&& [
																			1,
																			"<select multiple='multiple'>",
																			"</select>" ]
																	|| !O.indexOf("<leg")
																	&& [ 1, "<fieldset>",
																			"</fieldset>" ]
																	|| O
																			.match(/^<(thead|tbody|tfoot|colg|cap)/)
																	&& [ 1, "<table>",
																			"</table>" ]
																	|| !O.indexOf("<tr")
																	&& [ 2, "<table><tbody>",
																			"</tbody></table>" ]
																	|| (!O.indexOf("<td") || !O
																			.indexOf("<th"))
																	&& [
																			3,
																			"<table><tbody><tr>",
																			"</tr></tbody></table>" ]
																	|| !O.indexOf("<col")
																	&& [
																			2,
																			"<table><tbody></tbody><colgroup>",
																			"</colgroup></table>" ]
																	|| !o.support.htmlSerialize
																	&& [ 1, "div<div>",
																			"</div>" ]
																	|| [ 0, "", "" ];
															L.innerHTML = Q[1] + S + Q[2];
															while (Q[0]--) {
																L = L.lastChild
															}
															if (!o.support.tbody) {
																var R = /<tbody/i.test(S), N = !O
																		.indexOf("<table")
																		&& !R ? L.firstChild
																		&& L.firstChild.childNodes
																		: Q[1] == "<table>"
																				&& !R ? L.childNodes
																				: [];
																for ( var M = N.length - 1; M >= 0; --M) {
																	if (o.nodeName(N[M],
																			"tbody")
																			&& !N[M].childNodes.length) {
																		N[M].parentNode
																				.removeChild(N[M])
																	}
																}
															}
															if (!o.support.leadingWhitespace
																	&& /^\s/.test(S)) {
																L
																		.insertBefore(
																				K
																						.createTextNode(S
																								.match(/^\s*/)[0]),
																				L.firstChild)
															}
															S = o.makeArray(L.childNodes)
														}
														if (S.nodeType) {
															G.push(S)
														} else {
															G = o.merge(G, S)
														}
													});
									if (I) {
										for ( var J = 0; G[J]; J++) {
											if (o.nodeName(G[J], "script")
													&& (!G[J].type || G[J].type.toLowerCase() === "text/javascript")) {
												E.push(G[J].parentNode ? G[J].parentNode
														.removeChild(G[J]) : G[J])
											} else {
												if (G[J].nodeType === 1) {
													G.splice
															.apply(
																	G,
																	[ J + 1, 0 ]
																			.concat(o
																					.makeArray(G[J]
																							.getElementsByTagName("script"))))
												}
												I.appendChild(G[J])
											}
										}
										return E
									}
									return G
								},
								attr : function(J, G, K) {
									if (!J || J.nodeType == 3 || J.nodeType == 8) {
										return g
									}
									var H = !o.isXMLDoc(J), L = K !== g;
									G = H && o.props[G] || G;
									if (J.tagName) {
										var F = /href|src|style/.test(G);
										if (G == "selected" && J.parentNode) {
											J.parentNode.selectedIndex
										}
										if (G in J && H && !F) {
											if (L) {
												if (G == "type" && o.nodeName(J, "input")
														&& J.parentNode) {
													throw "type property can't be changed"
												}
												J[G] = K
											}
											if (o.nodeName(J, "form") && J.getAttributeNode(G)) {
												return J.getAttributeNode(G).nodeValue
											}
											if (G == "tabIndex") {
												var I = J.getAttributeNode("tabIndex");
												return I && I.specified ? I.value
														: J.nodeName
																.match(/(button|input|object|select|textarea)/i) ? 0
																: J.nodeName
																		.match(/^(a|area)$/i)
																		&& J.href ? 0 : g
											}
											return J[G]
										}
										if (!o.support.style && H && G == "style") {
											return o.attr(J.style, "cssText", K)
										}
										if (L) {
											J.setAttribute(G, "" + K)
										}
										var E = !o.support.hrefNormalized && H && F ? J
												.getAttribute(G, 2) : J.getAttribute(G);
										return E === null ? g : E
									}
									if (!o.support.opacity && G == "opacity") {
										if (L) {
											J.zoom = 1;
											J.filter = (J.filter || "").replace(
													/alpha\([^)]*\)/, "")
													+ (parseInt(K) + "" == "NaN" ? ""
															: "alpha(opacity=" + K * 100 + ")")
										}
										return J.filter && J.filter.indexOf("opacity=") >= 0 ? (parseFloat(J.filter
												.match(/opacity=([^)]*)/)[1]) / 100)
												+ ""
												: ""
									}
									G = G.replace(/-([a-z])/ig, function(M, N) {
										return N.toUpperCase()
									});
									if (L) {
										J[G] = K
									}
									return J[G]
								},
								trim : function(E) {
									return (E || "").replace(/^\s+|\s+$/g, "")
								},
								makeArray : function(G) {
									var E = [];
									if (G != null) {
										var F = G.length;
										if (F == null || typeof G === "string"
												|| o.isFunction(G) || G.setInterval) {
											E[0] = G
										} else {
											while (F) {
												E[--F] = G[F]
											}
										}
									}
									return E
								},
								inArray : function(G, H) {
									for ( var E = 0, F = H.length; E < F; E++) {
										if (H[E] === G) {
											return E
										}
									}
									return -1
								},
								merge : function(H, E) {
									var F = 0, G, I = H.length;
									if (!o.support.getAll) {
										while ((G = E[F++]) != null) {
											if (G.nodeType != 8) {
												H[I++] = G
											}
										}
									} else {
										while ((G = E[F++]) != null) {
											H[I++] = G
										}
									}
									return H
								},
								unique : function(K) {
									var F = [], E = {};
									try {
										for ( var G = 0, H = K.length; G < H; G++) {
											var J = o.data(K[G]);
											if (!E[J]) {
												E[J] = true;
												F.push(K[G])
											}
										}
									} catch (I) {
										F = K
									}
									return F
								},
								grep : function(F, J, E) {
									var G = [];
									for ( var H = 0, I = F.length; H < I; H++) {
										if (!E != !J(F[H], H)) {
											G.push(F[H])
										}
									}
									return G
								},
								map : function(E, J) {
									var F = [];
									for ( var G = 0, H = E.length; G < H; G++) {
										var I = J(E[G], G);
										if (I != null) {
											F[F.length] = I
										}
									}
									return F.concat.apply( [], F)
								}
							});
					var C = navigator.userAgent.toLowerCase();
					o.browser = {
						version :(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [ 0, "0" ])[1],
						safari :/webkit/.test(C),
						opera :/opera/.test(C),
						msie :/msie/.test(C) && !/opera/.test(C),
						mozilla :/mozilla/.test(C) && !/(compatible|webkit)/.test(C)
					};
					o.each( {
						parent : function(E) {
							return E.parentNode
						},
						parents : function(E) {
							return o.dir(E, "parentNode")
						},
						next : function(E) {
							return o.nth(E, 2, "nextSibling")
						},
						prev : function(E) {
							return o.nth(E, 2, "previousSibling")
						},
						nextAll : function(E) {
							return o.dir(E, "nextSibling")
						},
						prevAll : function(E) {
							return o.dir(E, "previousSibling")
						},
						siblings : function(E) {
							return o.sibling(E.parentNode.firstChild, E)
						},
						children : function(E) {
							return o.sibling(E.firstChild)
						},
						contents : function(E) {
							return o.nodeName(E, "iframe") ? E.contentDocument
									|| E.contentWindow.document : o.makeArray(E.childNodes)
						}
					}, function(E, F) {
						o.fn[E] = function(G) {
							var H = o.map(this, F);
							if (G && typeof G == "string") {
								H = o.multiFilter(G, H)
							}
							return this.pushStack(o.unique(H), E, G)
						}
					});
					o.each( {
						appendTo :"append",
						prependTo :"prepend",
						insertBefore :"before",
						insertAfter :"after",
						replaceAll :"replaceWith"
					}, function(E, F) {
						o.fn[E] = function(G) {
							var J = [], L = o(G);
							for ( var K = 0, H = L.length; K < H; K++) {
								var I = (K > 0 ? this.clone(true) : this).get();
								o.fn[F].apply(o(L[K]), I);
								J = J.concat(I)
							}
							return this.pushStack(J, E, G)
						}
					});
					o.each( {
						removeAttr : function(E) {
							o.attr(this, E, "");
							if (this.nodeType == 1) {
								this.removeAttribute(E)
							}
						},
						addClass : function(E) {
							o.className.add(this, E)
						},
						removeClass : function(E) {
							o.className.remove(this, E)
						},
						toggleClass : function(F, E) {
							if (typeof E !== "boolean") {
								E = !o.className.has(this, F)
							}
							o.className[E ? "add" : "remove"](this, F)
						},
						remove : function(E) {
							if (!E || o.filter(E, [ this ]).length) {
								o("*", this).add( [ this ]).each( function() {
									o.event.remove(this);
									o.removeData(this)
								});
								if (this.parentNode) {
									this.parentNode.removeChild(this)
								}
							}
						},
						empty : function() {
							o(this).children().remove();
							while (this.firstChild) {
								this.removeChild(this.firstChild)
							}
						}
					}, function(E, F) {
						o.fn[E] = function() {
							return this.each(F, arguments)
						}
					});
					function j(E, F) {
						return E[0] && parseInt(o.curCSS(E[0], F, true), 10) || 0
					}
					var h = "jQuery" + e(), v = 0, A = {};
					o.extend( {
						cache : {},
						data : function(F, E, G) {
							F = F == l ? A : F;
							var H = F[h];
							if (!H) {
								H = F[h] = ++v
							}
							if (E && !o.cache[H]) {
								o.cache[H] = {}
							}
							if (G !== g) {
								o.cache[H][E] = G
							}
							return E ? o.cache[H][E] : H
						},
						removeData : function(F, E) {
							F = F == l ? A : F;
							var H = F[h];
							if (E) {
								if (o.cache[H]) {
									delete o.cache[H][E];
									E = "";
									for (E in o.cache[H]) {
										break
									}
									if (!E) {
										o.removeData(F)
									}
								}
							} else {
								try {
									delete F[h]
								} catch (G) {
									if (F.removeAttribute) {
										F.removeAttribute(h)
									}
								}
								delete o.cache[H]
							}
						},
						queue : function(F, E, H) {
							if (F) {
								E = (E || "fx") + "queue";
								var G = o.data(F, E);
								if (!G || o.isArray(H)) {
									G = o.data(F, E, o.makeArray(H))
								} else {
									if (H) {
										G.push(H)
									}
								}
							}
							return G
						},
						dequeue : function(H, G) {
							var E = o.queue(H, G), F = E.shift();
							if (!G || G === "fx") {
								F = E[0]
							}
							if (F !== g) {
								F.call(H)
							}
						}
					});
					o.fn.extend( {
						data : function(E, G) {
							var H = E.split(".");
							H[1] = H[1] ? "." + H[1] : "";
							if (G === g) {
								var F = this.triggerHandler("getData" + H[1] + "!", [ H[0] ]);
								if (F === g && this.length) {
									F = o.data(this[0], E)
								}
								return F === g && H[1] ? this.data(H[0]) : F
							} else {
								return this.trigger("setData" + H[1] + "!", [ H[0], G ]).each(
										function() {
											o.data(this, E, G)
										})
							}
						},
						removeData : function(E) {
							return this.each( function() {
								o.removeData(this, E)
							})
						},
						queue : function(E, F) {
							if (typeof E !== "string") {
								F = E;
								E = "fx"
							}
							if (F === g) {
								return o.queue(this[0], E)
							}
							return this.each( function() {
								var G = o.queue(this, E, F);
								if (E == "fx" && G.length == 1) {
									G[0].call(this)
								}
							})
						},
						dequeue : function(E) {
							return this.each( function() {
								o.dequeue(this, E)
							})
						}
					});
					/*
					 * Sizzle CSS Selector Engine - v0.9.3 Copyright 2009, The Dojo Foundation
					 * Released under the MIT, BSD, and GPL Licenses. More information:
					 * http://sizzlejs.com/
					 */

					( function() {
						var R = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g, L = 0, H = Object.prototype.toString;
						var F = function(Y, U, ab, ac) {
							ab = ab || [];
							U = U || document;
							if (U.nodeType !== 1 && U.nodeType !== 9) {
								return []
							}
							if (!Y || typeof Y !== "string") {
								return ab
							}
							var Z = [], W, af, ai, T, ad, V, X = true;
							R.lastIndex = 0;
							while ((W = R.exec(Y)) !== null) {
								Z.push(W[1]);
								if (W[2]) {
									V = RegExp.rightContext;
									break
								}
							}
							if (Z.length > 1 && M.exec(Y)) {
								if (Z.length === 2 && I.relative[Z[0]]) {
									af = J(Z[0] + Z[1], U)
								} else {
									af = I.relative[Z[0]] ? [ U ] : F(Z.shift(), U);
									while (Z.length) {
										Y = Z.shift();
										if (I.relative[Y]) {
											Y += Z.shift()
										}
										af = J(Y, af)
									}
								}
							} else {
								var ae = ac ? {
									expr :Z.pop(),
									set :E(ac)
								} : F
										.find(Z.pop(),
												Z.length === 1 && U.parentNode ? U.parentNode
														: U, Q(U));
								af = F.filter(ae.expr, ae.set);
								if (Z.length > 0) {
									ai = E(af)
								} else {
									X = false
								}
								while (Z.length) {
									var ah = Z.pop(), ag = ah;
									if (!I.relative[ah]) {
										ah = ""
									} else {
										ag = Z.pop()
									}
									if (ag == null) {
										ag = U
									}
									I.relative[ah](ai, ag, Q(U))
								}
							}
							if (!ai) {
								ai = af
							}
							if (!ai) {
								throw "Syntax error, unrecognized expression: " + (ah || Y)
							}
							if (H.call(ai) === "[object Array]") {
								if (!X) {
									ab.push.apply(ab, ai)
								} else {
									if (U.nodeType === 1) {
										for ( var aa = 0; ai[aa] != null; aa++) {
											if (ai[aa]
													&& (ai[aa] === true || ai[aa].nodeType === 1
															&& K(U, ai[aa]))) {
												ab.push(af[aa])
											}
										}
									} else {
										for ( var aa = 0; ai[aa] != null; aa++) {
											if (ai[aa] && ai[aa].nodeType === 1) {
												ab.push(af[aa])
											}
										}
									}
								}
							} else {
								E(ai, ab)
							}
							if (V) {
								F(V, U, ab, ac);
								if (G) {
									hasDuplicate = false;
									ab.sort(G);
									if (hasDuplicate) {
										for ( var aa = 1; aa < ab.length; aa++) {
											if (ab[aa] === ab[aa - 1]) {
												ab.splice(aa--, 1)
											}
										}
									}
								}
							}
							return ab
						};
						F.matches = function(T, U) {
							return F(T, null, null, U)
						};
						F.find = function(aa, T, ab) {
							var Z, X;
							if (!aa) {
								return []
							}
							for ( var W = 0, V = I.order.length; W < V; W++) {
								var Y = I.order[W], X;
								if ((X = I.match[Y].exec(aa))) {
									var U = RegExp.leftContext;
									if (U.substr(U.length - 1) !== "\\") {
										X[1] = (X[1] || "").replace(/\\/g, "");
										Z = I.find[Y](X, T, ab);
										if (Z != null) {
											aa = aa.replace(I.match[Y], "");
											break
										}
									}
								}
							}
							if (!Z) {
								Z = T.getElementsByTagName("*")
							}
							return {
								set :Z,
								expr :aa
							}
						};
						F.filter = function(ad, ac, ag, W) {
							var V = ad, ai = [], aa = ac, Y, T, Z = ac && ac[0] && Q(ac[0]);
							while (ad && ac.length) {
								for ( var ab in I.filter) {
									if ((Y = I.match[ab].exec(ad)) != null) {
										var U = I.filter[ab], ah, af;
										T = false;
										if (aa == ai) {
											ai = []
										}
										if (I.preFilter[ab]) {
											Y = I.preFilter[ab](Y, aa, ag, ai, W, Z);
											if (!Y) {
												T = ah = true
											} else {
												if (Y === true) {
													continue
												}
											}
										}
										if (Y) {
											for ( var X = 0; (af = aa[X]) != null; X++) {
												if (af) {
													ah = U(af, Y, X, aa);
													var ae = W ^ !!ah;
													if (ag && ah != null) {
														if (ae) {
															T = true
														} else {
															aa[X] = false
														}
													} else {
														if (ae) {
															ai.push(af);
															T = true
														}
													}
												}
											}
										}
										if (ah !== g) {
											if (!ag) {
												aa = ai
											}
											ad = ad.replace(I.match[ab], "");
											if (!T) {
												return []
											}
											break
										}
									}
								}
								if (ad == V) {
									if (T == null) {
										throw "Syntax error, unrecognized expression: " + ad
									} else {
										break
									}
								}
								V = ad
							}
							return aa
						};
						var I = F.selectors = {
							order : [ "ID", "NAME", "TAG" ],
							match : {
								ID :/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
								CLASS :/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
								NAME :/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
								ATTR :/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
								TAG :/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
								CHILD :/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
								POS :/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
								PSEUDO :/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
							},
							attrMap : {
								"class" :"className",
								"for" :"htmlFor"
							},
							attrHandle : {
								href : function(T) {
									return T.getAttribute("href")
								}
							},
							relative : {
								"+" : function(aa, T, Z) {
									var X = typeof T === "string", ab = X && !/\W/.test(T), Y = X
											&& !ab;
									if (ab && !Z) {
										T = T.toUpperCase()
									}
									for ( var W = 0, V = aa.length, U; W < V; W++) {
										if ((U = aa[W])) {
											while ((U = U.previousSibling) && U.nodeType !== 1) {
											}
											aa[W] = Y || U && U.nodeName === T ? U || false
													: U === T
										}
									}
									if (Y) {
										F.filter(T, aa, true)
									}
								},
								">" : function(Z, U, aa) {
									var X = typeof U === "string";
									if (X && !/\W/.test(U)) {
										U = aa ? U : U.toUpperCase();
										for ( var V = 0, T = Z.length; V < T; V++) {
											var Y = Z[V];
											if (Y) {
												var W = Y.parentNode;
												Z[V] = W.nodeName === U ? W : false
											}
										}
									} else {
										for ( var V = 0, T = Z.length; V < T; V++) {
											var Y = Z[V];
											if (Y) {
												Z[V] = X ? Y.parentNode : Y.parentNode === U
											}
										}
										if (X) {
											F.filter(U, Z, true)
										}
									}
								},
								"" : function(W, U, Y) {
									var V = L++, T = S;
									if (!U.match(/\W/)) {
										var X = U = Y ? U : U.toUpperCase();
										T = P
									}
									T("parentNode", U, V, W, X, Y)
								},
								"~" : function(W, U, Y) {
									var V = L++, T = S;
									if (typeof U === "string" && !U.match(/\W/)) {
										var X = U = Y ? U : U.toUpperCase();
										T = P
									}
									T("previousSibling", U, V, W, X, Y)
								}
							},
							find : {
								ID : function(U, V, W) {
									if (typeof V.getElementById !== "undefined" && !W) {
										var T = V.getElementById(U[1]);
										return T ? [ T ] : []
									}
								},
								NAME : function(V, Y, Z) {
									if (typeof Y.getElementsByName !== "undefined") {
										var U = [], X = Y.getElementsByName(V[1]);
										for ( var W = 0, T = X.length; W < T; W++) {
											if (X[W].getAttribute("name") === V[1]) {
												U.push(X[W])
											}
										}
										return U.length === 0 ? null : U
									}
								},
								TAG : function(T, U) {
									return U.getElementsByTagName(T[1])
								}
							},
							preFilter : {
								CLASS : function(W, U, V, T, Z, aa) {
									W = " " + W[1].replace(/\\/g, "") + " ";
									if (aa) {
										return W
									}
									for ( var X = 0, Y; (Y = U[X]) != null; X++) {
										if (Y) {
											if (Z
													^ (Y.className && (" " + Y.className + " ")
															.indexOf(W) >= 0)) {
												if (!V) {
													T.push(Y)
												}
											} else {
												if (V) {
													U[X] = false
												}
											}
										}
									}
									return false
								},
								ID : function(T) {
									return T[1].replace(/\\/g, "")
								},
								TAG : function(U, T) {
									for ( var V = 0; T[V] === false; V++) {
									}
									return T[V] && Q(T[V]) ? U[1] : U[1].toUpperCase()
								},
								CHILD : function(T) {
									if (T[1] == "nth") {
										var U = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2] == "even"
												&& "2n" || T[2] == "odd" && "2n+1"
												|| !/\D/.test(T[2]) && "0n+" + T[2] || T[2]);
										T[2] = (U[1] + (U[2] || 1)) - 0;
										T[3] = U[3] - 0
									}
									T[0] = L++;
									return T
								},
								ATTR : function(X, U, V, T, Y, Z) {
									var W = X[1].replace(/\\/g, "");
									if (!Z && I.attrMap[W]) {
										X[1] = I.attrMap[W]
									}
									if (X[2] === "~=") {
										X[4] = " " + X[4] + " "
									}
									return X
								},
								PSEUDO : function(X, U, V, T, Y) {
									if (X[1] === "not") {
										if (X[3].match(R).length > 1 || /^\w/.test(X[3])) {
											X[3] = F(X[3], null, null, U)
										} else {
											var W = F.filter(X[3], U, V, true ^ Y);
											if (!V) {
												T.push.apply(T, W)
											}
											return false
										}
									} else {
										if (I.match.POS.test(X[0]) || I.match.CHILD.test(X[0])) {
											return true
										}
									}
									return X
								},
								POS : function(T) {
									T.unshift(true);
									return T
								}
							},
							filters : {
								enabled : function(T) {
									return T.disabled === false && T.type !== "hidden"
								},
								disabled : function(T) {
									return T.disabled === true
								},
								checked : function(T) {
									return T.checked === true
								},
								selected : function(T) {
									T.parentNode.selectedIndex;
									return T.selected === true
								},
								parent : function(T) {
									return !!T.firstChild
								},
								empty : function(T) {
									return !T.firstChild
								},
								has : function(V, U, T) {
									return !!F(T[3], V).length
								},
								header : function(T) {
									return /h\d/i.test(T.nodeName)
								},
								text : function(T) {
									return "text" === T.type
								},
								radio : function(T) {
									return "radio" === T.type
								},
								checkbox : function(T) {
									return "checkbox" === T.type
								},
								file : function(T) {
									return "file" === T.type
								},
								password : function(T) {
									return "password" === T.type
								},
								submit : function(T) {
									return "submit" === T.type
								},
								image : function(T) {
									return "image" === T.type
								},
								reset : function(T) {
									return "reset" === T.type
								},
								button : function(T) {
									return "button" === T.type
											|| T.nodeName.toUpperCase() === "BUTTON"
								},
								input : function(T) {
									return /input|select|textarea|button/i.test(T.nodeName)
								}
							},
							setFilters : {
								first : function(U, T) {
									return T === 0
								},
								last : function(V, U, T, W) {
									return U === W.length - 1
								},
								even : function(U, T) {
									return T % 2 === 0
								},
								odd : function(U, T) {
									return T % 2 === 1
								},
								lt : function(V, U, T) {
									return U < T[3] - 0
								},
								gt : function(V, U, T) {
									return U > T[3] - 0
								},
								nth : function(V, U, T) {
									return T[3] - 0 == U
								},
								eq : function(V, U, T) {
									return T[3] - 0 == U
								}
							},
							filter : {
								PSEUDO : function(Z, V, W, aa) {
									var U = V[1], X = I.filters[U];
									if (X) {
										return X(Z, W, V, aa)
									} else {
										if (U === "contains") {
											return (Z.textContent || Z.innerText || "")
													.indexOf(V[3]) >= 0
										} else {
											if (U === "not") {
												var Y = V[3];
												for ( var W = 0, T = Y.length; W < T; W++) {
													if (Y[W] === Z) {
														return false
													}
												}
												return true
											}
										}
									}
								},
								CHILD : function(T, W) {
									var Z = W[1], U = T;
									switch (Z) {
									case "only":
									case "first":
										while (U = U.previousSibling) {
											if (U.nodeType === 1) {
												return false
											}
										}
										if (Z == "first") {
											return true
										}
										U = T;
									case "last":
										while (U = U.nextSibling) {
											if (U.nodeType === 1) {
												return false
											}
										}
										return true;
									case "nth":
										var V = W[2], ac = W[3];
										if (V == 1 && ac == 0) {
											return true
										}
										var Y = W[0], ab = T.parentNode;
										if (ab && (ab.sizcache !== Y || !T.nodeIndex)) {
											var X = 0;
											for (U = ab.firstChild; U; U = U.nextSibling) {
												if (U.nodeType === 1) {
													U.nodeIndex = ++X
												}
											}
											ab.sizcache = Y
										}
										var aa = T.nodeIndex - ac;
										if (V == 0) {
											return aa == 0
										} else {
											return (aa % V == 0 && aa / V >= 0)
										}
									}
								},
								ID : function(U, T) {
									return U.nodeType === 1 && U.getAttribute("id") === T
								},
								TAG : function(U, T) {
									return (T === "*" && U.nodeType === 1) || U.nodeName === T
								},
								CLASS : function(U, T) {
									return (" " + (U.className || U.getAttribute("class")) + " ")
											.indexOf(T) > -1
								},
								ATTR : function(Y, W) {
									var V = W[1], T = I.attrHandle[V] ? I.attrHandle[V](Y)
											: Y[V] != null ? Y[V] : Y.getAttribute(V), Z = T
											+ "", X = W[2], U = W[4];
									return T == null ? X === "!="
											: X === "=" ? Z === U
													: X === "*=" ? Z.indexOf(U) >= 0
															: X === "~=" ? (" " + Z + " ")
																	.indexOf(U) >= 0
																	: !U ? Z && T !== false
																			: X === "!=" ? Z != U
																					: X === "^=" ? Z
																							.indexOf(U) === 0
																							: X === "$=" ? Z
																									.substr(Z.length
																											- U.length) === U
																									: X === "|=" ? Z === U
																											|| Z
																													.substr(
																															0,
																															U.length + 1) === U
																													+ "-"
																											: false
								},
								POS : function(X, U, V, Y) {
									var T = U[2], W = I.setFilters[T];
									if (W) {
										return W(X, V, U, Y)
									}
								}
							}
						};
						var M = I.match.POS;
						for ( var O in I.match) {
							I.match[O] = RegExp(I.match[O].source
									+ /(?![^\[]*\])(?![^\(]*\))/.source)
						}
						var E = function(U, T) {
							U = Array.prototype.slice.call(U);
							if (T) {
								T.push.apply(T, U);
								return T
							}
							return U
						};
						try {
							Array.prototype.slice.call(document.documentElement.childNodes)
						} catch (N) {
							E = function(X, W) {
								var U = W || [];
								if (H.call(X) === "[object Array]") {
									Array.prototype.push.apply(U, X)
								} else {
									if (typeof X.length === "number") {
										for ( var V = 0, T = X.length; V < T; V++) {
											U.push(X[V])
										}
									} else {
										for ( var V = 0; X[V]; V++) {
											U.push(X[V])
										}
									}
								}
								return U
							}
						}
						var G;
						if (document.documentElement.compareDocumentPosition) {
							G = function(U, T) {
								var V = U.compareDocumentPosition(T) & 4 ? -1 : U === T ? 0 : 1;
								if (V === 0) {
									hasDuplicate = true
								}
								return V
							}
						} else {
							if ("sourceIndex" in document.documentElement) {
								G = function(U, T) {
									var V = U.sourceIndex - T.sourceIndex;
									if (V === 0) {
										hasDuplicate = true
									}
									return V
								}
							} else {
								if (document.createRange) {
									G = function(W, U) {
										var V = W.ownerDocument.createRange(), T = U.ownerDocument
												.createRange();
										V.selectNode(W);
										V.collapse(true);
										T.selectNode(U);
										T.collapse(true);
										var X = V.compareBoundaryPoints(Range.START_TO_END, T);
										if (X === 0) {
											hasDuplicate = true
										}
										return X
									}
								}
							}
						}
						( function() {
							var U = document.createElement("form"), V = "script"
									+ (new Date).getTime();
							U.innerHTML = "<input name='" + V + "'/>";
							var T = document.documentElement;
							T.insertBefore(U, T.firstChild);
							if (!!document.getElementById(V)) {
								I.find.ID = function(X, Y, Z) {
									if (typeof Y.getElementById !== "undefined" && !Z) {
										var W = Y.getElementById(X[1]);
										return W ? W.id === X[1]
												|| typeof W.getAttributeNode !== "undefined"
												&& W.getAttributeNode("id").nodeValue === X[1] ? [ W ]
												: g
												: []
									}
								};
								I.filter.ID = function(Y, W) {
									var X = typeof Y.getAttributeNode !== "undefined"
											&& Y.getAttributeNode("id");
									return Y.nodeType === 1 && X && X.nodeValue === W
								}
							}
							T.removeChild(U)
						})();
						( function() {
							var T = document.createElement("div");
							T.appendChild(document.createComment(""));
							if (T.getElementsByTagName("*").length > 0) {
								I.find.TAG = function(U, Y) {
									var X = Y.getElementsByTagName(U[1]);
									if (U[1] === "*") {
										var W = [];
										for ( var V = 0; X[V]; V++) {
											if (X[V].nodeType === 1) {
												W.push(X[V])
											}
										}
										X = W
									}
									return X
								}
							}
							T.innerHTML = "<a href='#'></a>";
							if (T.firstChild
									&& typeof T.firstChild.getAttribute !== "undefined"
									&& T.firstChild.getAttribute("href") !== "#") {
								I.attrHandle.href = function(U) {
									return U.getAttribute("href", 2)
								}
							}
						})();
						if (document.querySelectorAll) {
							( function() {
								var T = F, U = document.createElement("div");
								U.innerHTML = "<p class='TEST'></p>";
								if (U.querySelectorAll
										&& U.querySelectorAll(".TEST").length === 0) {
									return
								}
								F = function(Y, X, V, W) {
									X = X || document;
									if (!W && X.nodeType === 9 && !Q(X)) {
										try {
											return E(X.querySelectorAll(Y), V)
										} catch (Z) {
										}
									}
									return T(Y, X, V, W)
								};
								F.find = T.find;
								F.filter = T.filter;
								F.selectors = T.selectors;
								F.matches = T.matches
							})()
						}
						if (document.getElementsByClassName
								&& document.documentElement.getElementsByClassName) {
							( function() {
								var T = document.createElement("div");
								T.innerHTML = "<div class='test e'></div><div class='test'></div>";
								if (T.getElementsByClassName("e").length === 0) {
									return
								}
								T.lastChild.className = "e";
								if (T.getElementsByClassName("e").length === 1) {
									return
								}
								I.order.splice(1, 0, "CLASS");
								I.find.CLASS = function(U, V, W) {
									if (typeof V.getElementsByClassName !== "undefined" && !W) {
										return V.getElementsByClassName(U[1])
									}
								}
							})()
						}
						function P(U, Z, Y, ad, aa, ac) {
							var ab = U == "previousSibling" && !ac;
							for ( var W = 0, V = ad.length; W < V; W++) {
								var T = ad[W];
								if (T) {
									if (ab && T.nodeType === 1) {
										T.sizcache = Y;
										T.sizset = W
									}
									T = T[U];
									var X = false;
									while (T) {
										if (T.sizcache === Y) {
											X = ad[T.sizset];
											break
										}
										if (T.nodeType === 1 && !ac) {
											T.sizcache = Y;
											T.sizset = W
										}
										if (T.nodeName === Z) {
											X = T;
											break
										}
										T = T[U]
									}
									ad[W] = X
								}
							}
						}
						function S(U, Z, Y, ad, aa, ac) {
							var ab = U == "previousSibling" && !ac;
							for ( var W = 0, V = ad.length; W < V; W++) {
								var T = ad[W];
								if (T) {
									if (ab && T.nodeType === 1) {
										T.sizcache = Y;
										T.sizset = W
									}
									T = T[U];
									var X = false;
									while (T) {
										if (T.sizcache === Y) {
											X = ad[T.sizset];
											break
										}
										if (T.nodeType === 1) {
											if (!ac) {
												T.sizcache = Y;
												T.sizset = W
											}
											if (typeof Z !== "string") {
												if (T === Z) {
													X = true;
													break
												}
											} else {
												if (F.filter(Z, [ T ]).length > 0) {
													X = T;
													break
												}
											}
										}
										T = T[U]
									}
									ad[W] = X
								}
							}
						}
						var K = document.compareDocumentPosition ? function(U, T) {
							return U.compareDocumentPosition(T) & 16
						} : function(U, T) {
							return U !== T && (U.contains ? U.contains(T) : true)
						};
						var Q = function(T) {
							return T.nodeType === 9 && T.documentElement.nodeName !== "HTML"
									|| !!T.ownerDocument && Q(T.ownerDocument)
						};
						var J = function(T, aa) {
							var W = [], X = "", Y, V = aa.nodeType ? [ aa ] : aa;
							while ((Y = I.match.PSEUDO.exec(T))) {
								X += Y[0];
								T = T.replace(I.match.PSEUDO, "")
							}
							T = I.relative[T] ? T + "*" : T;
							for ( var Z = 0, U = V.length; Z < U; Z++) {
								F(T, V[Z], W)
							}
							return F.filter(X, W)
						};
						o.find = F;
						o.filter = F.filter;
						o.expr = F.selectors;
						o.expr[":"] = o.expr.filters;
						F.selectors.filters.hidden = function(T) {
							return T.offsetWidth === 0 || T.offsetHeight === 0
						};
						F.selectors.filters.visible = function(T) {
							return T.offsetWidth > 0 || T.offsetHeight > 0
						};
						F.selectors.filters.animated = function(T) {
							return o.grep(o.timers, function(U) {
								return T === U.elem
							}).length
						};
						o.multiFilter = function(V, T, U) {
							if (U) {
								V = ":not(" + V + ")"
							}
							return F.matches(V, T)
						};
						o.dir = function(V, U) {
							var T = [], W = V[U];
							while (W && W != document) {
								if (W.nodeType == 1) {
									T.push(W)
								}
								W = W[U]
							}
							return T
						};
						o.nth = function(X, T, V, W) {
							T = T || 1;
							var U = 0;
							for (; X; X = X[V]) {
								if (X.nodeType == 1 && ++U == T) {
									break
								}
							}
							return X
						};
						o.sibling = function(V, U) {
							var T = [];
							for (; V; V = V.nextSibling) {
								if (V.nodeType == 1 && V != U) {
									T.push(V)
								}
							}
							return T
						};
						return;
						l.Sizzle = F
					})();
					o.event = {
						add : function(I, F, H, K) {
							if (I.nodeType == 3 || I.nodeType == 8) {
								return
							}
							if (I.setInterval && I != l) {
								I = l
							}
							if (!H.guid) {
								H.guid = this.guid++
							}
							if (K !== g) {
								var G = H;
								H = this.proxy(G);
								H.data = K
							}
							var E = o.data(I, "events") || o.data(I, "events", {}), J = o.data(
									I, "handle")
									|| o
											.data(
													I,
													"handle",
													function() {
														return typeof o !== "undefined"
																&& !o.event.triggered ? o.event.handle
																.apply(arguments.callee.elem,
																		arguments)
																: g
													});
							J.elem = I;
							o
									.each(F.split(/\s+/),
											function(M, N) {
												var O = N.split(".");
												N = O.shift();
												H.type = O.slice().sort().join(".");
												var L = E[N];
												if (o.event.specialAll[N]) {
													o.event.specialAll[N].setup.call(I, K, O)
												}
												if (!L) {
													L = E[N] = {};
													if (!o.event.special[N]
															|| o.event.special[N].setup.call(I,
																	K, O) === false) {
														if (I.addEventListener) {
															I.addEventListener(N, J, false)
														} else {
															if (I.attachEvent) {
																I.attachEvent("on" + N, J)
															}
														}
													}
												}
												L[H.guid] = H;
												o.event.global[N] = true
											});
							I = null
						},
						guid :1,
						global : {},
						remove : function(K, H, J) {
							if (K.nodeType == 3 || K.nodeType == 8) {
								return
							}
							var G = o.data(K, "events"), F, E;
							if (G) {
								if (H === g || (typeof H === "string" && H.charAt(0) == ".")) {
									for ( var I in G) {
										this.remove(K, I + (H || ""))
									}
								} else {
									if (H.type) {
										J = H.handler;
										H = H.type
									}
									o.each(H.split(/\s+/), function(M, O) {
										var Q = O.split(".");
										O = Q.shift();
										var N = RegExp("(^|\\.)"
												+ Q.slice().sort().join(".*\\.") + "(\\.|$)");
										if (G[O]) {
											if (J) {
												delete G[O][J.guid]
											} else {
												for ( var P in G[O]) {
													if (N.test(G[O][P].type)) {
														delete G[O][P]
													}
												}
											}
											if (o.event.specialAll[O]) {
												o.event.specialAll[O].teardown.call(K, Q)
											}
											for (F in G[O]) {
												break
											}
											if (!F) {
												if (!o.event.special[O]
														|| o.event.special[O].teardown.call(K,
																Q) === false) {
													if (K.removeEventListener) {
														K.removeEventListener(O, o.data(K,
																"handle"), false)
													} else {
														if (K.detachEvent) {
															K.detachEvent("on" + O, o.data(K,
																	"handle"))
														}
													}
												}
												F = null;
												delete G[O]
											}
										}
									})
								}
								for (F in G) {
									break
								}
								if (!F) {
									var L = o.data(K, "handle");
									if (L) {
										L.elem = null
									}
									o.removeData(K, "events");
									o.removeData(K, "handle")
								}
							}
						},
						trigger : function(I, K, H, E) {
							var G = I.type || I;
							if (!E) {
								I = typeof I === "object" ? I[h] ? I : o.extend(o.Event(G), I)
										: o.Event(G);
								if (G.indexOf("!") >= 0) {
									I.type = G = G.slice(0, -1);
									I.exclusive = true
								}
								if (!H) {
									I.stopPropagation();
									if (this.global[G]) {
										o.each(o.cache, function() {
											if (this.events && this.events[G]) {
												o.event.trigger(I, K, this.handle.elem)
											}
										})
									}
								}
								if (!H || H.nodeType == 3 || H.nodeType == 8) {
									return g
								}
								I.result = g;
								I.target = H;
								K = o.makeArray(K);
								K.unshift(I)
							}
							I.currentTarget = H;
							var J = o.data(H, "handle");
							if (J) {
								J.apply(H, K)
							}
							if ((!H[G] || (o.nodeName(H, "a") && G == "click")) && H["on" + G]
									&& H["on" + G].apply(H, K) === false) {
								I.result = false
							}
							if (!E && H[G] && !I.isDefaultPrevented()
									&& !(o.nodeName(H, "a") && G == "click")) {
								this.triggered = true;
								try {
									H[G]()
								} catch (L) {
								}
							}
							this.triggered = false;
							if (!I.isPropagationStopped()) {
								var F = H.parentNode || H.ownerDocument;
								if (F) {
									o.event.trigger(I, K, F, true)
								}
							}
						},
						handle : function(K) {
							var J, E;
							K = arguments[0] = o.event.fix(K || l.event);
							K.currentTarget = this;
							var L = K.type.split(".");
							K.type = L.shift();
							J = !L.length && !K.exclusive;
							var I = RegExp("(^|\\.)" + L.slice().sort().join(".*\\.")
									+ "(\\.|$)");
							E = (o.data(this, "events") || {})[K.type];
							for ( var G in E) {
								var H = E[G];
								if (J || I.test(H.type)) {
									K.handler = H;
									K.data = H.data;
									var F = H.apply(this, arguments);
									if (F !== g) {
										K.result = F;
										if (F === false) {
											K.preventDefault();
											K.stopPropagation()
										}
									}
									if (K.isImmediatePropagationStopped()) {
										break
									}
								}
							}
						},
						props :"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which"
								.split(" "),
						fix : function(H) {
							if (H[h]) {
								return H
							}
							var F = H;
							H = o.Event(F);
							for ( var G = this.props.length, J; G;) {
								J = this.props[--G];
								H[J] = F[J]
							}
							if (!H.target) {
								H.target = H.srcElement || document
							}
							if (H.target.nodeType == 3) {
								H.target = H.target.parentNode
							}
							if (!H.relatedTarget && H.fromElement) {
								H.relatedTarget = H.fromElement == H.target ? H.toElement
										: H.fromElement
							}
							if (H.pageX == null && H.clientX != null) {
								var I = document.documentElement, E = document.body;
								H.pageX = H.clientX
										+ (I && I.scrollLeft || E && E.scrollLeft || 0)
										- (I.clientLeft || 0);
								H.pageY = H.clientY
										+ (I && I.scrollTop || E && E.scrollTop || 0)
										- (I.clientTop || 0)
							}
							if (!H.which
									&& ((H.charCode || H.charCode === 0) ? H.charCode
											: H.keyCode)) {
								H.which = H.charCode || H.keyCode
							}
							if (!H.metaKey && H.ctrlKey) {
								H.metaKey = H.ctrlKey
							}
							if (!H.which && H.button) {
								H.which = (H.button & 1 ? 1 : (H.button & 2 ? 3
										: (H.button & 4 ? 2 : 0)))
							}
							return H
						},
						proxy : function(F, E) {
							E = E || function() {
								return F.apply(this, arguments)
							};
							E.guid = F.guid = F.guid || E.guid || this.guid++;
							return E
						},
						special : {
							ready : {
								setup :B,
								teardown : function() {
								}
							}
						},
						specialAll : {
							live : {
								setup : function(E, F) {
									o.event.add(this, F[0], c)
								},
								teardown : function(G) {
									if (G.length) {
										var E = 0, F = RegExp("(^|\\.)" + G[0] + "(\\.|$)");
										o.each((o.data(this, "events").live || {}), function() {
											if (F.test(this.type)) {
												E++
											}
										});
										if (E < 1) {
											o.event.remove(this, G[0], c)
										}
									}
								}
							}
						}
					};
					o.Event = function(E) {
						if (!this.preventDefault) {
							return new o.Event(E)
						}
						if (E && E.type) {
							this.originalEvent = E;
							this.type = E.type
						} else {
							this.type = E
						}
						this.timeStamp = e();
						this[h] = true
					};
					function k() {
						return false
					}
					function u() {
						return true
					}
					o.Event.prototype = {
						preventDefault : function() {
							this.isDefaultPrevented = u;
							var E = this.originalEvent;
							if (!E) {
								return
							}
							if (E.preventDefault) {
								E.preventDefault()
							}
							E.returnValue = false
						},
						stopPropagation : function() {
							this.isPropagationStopped = u;
							var E = this.originalEvent;
							if (!E) {
								return
							}
							if (E.stopPropagation) {
								E.stopPropagation()
							}
							E.cancelBubble = true
						},
						stopImmediatePropagation : function() {
							this.isImmediatePropagationStopped = u;
							this.stopPropagation()
						},
						isDefaultPrevented :k,
						isPropagationStopped :k,
						isImmediatePropagationStopped :k
					};
					var a = function(F) {
						var E = F.relatedTarget;
						while (E && E != this) {
							try {
								E = E.parentNode
							} catch (G) {
								E = this
							}
						}
						if (E != this) {
							F.type = F.data;
							o.event.handle.apply(this, arguments)
						}
					};
					o.each( {
						mouseover :"mouseenter",
						mouseout :"mouseleave"
					}, function(F, E) {
						o.event.special[E] = {
							setup : function() {
								o.event.add(this, F, a, E)
							},
							teardown : function() {
								o.event.remove(this, F, a)
							}
						}
					});
					o.fn.extend( {
						bind : function(F, G, E) {
							return F == "unload" ? this.one(F, G, E) : this.each( function() {
								o.event.add(this, F, E || G, E && G)
							})
						},
						one : function(G, H, F) {
							var E = o.event.proxy(F || H, function(I) {
								o(this).unbind(I, E);
								return (F || H).apply(this, arguments)
							});
							return this.each( function() {
								o.event.add(this, G, E, F && H)
							})
						},
						unbind : function(F, E) {
							return this.each( function() {
								o.event.remove(this, F, E)
							})
						},
						trigger : function(E, F) {
							return this.each( function() {
								o.event.trigger(E, F, this)
							})
						},
						triggerHandler : function(E, G) {
							if (this[0]) {
								var F = o.Event(E);
								F.preventDefault();
								F.stopPropagation();
								o.event.trigger(F, G, this[0]);
								return F.result
							}
						},
						toggle : function(G) {
							var E = arguments, F = 1;
							while (F < E.length) {
								o.event.proxy(G, E[F++])
							}
							return this.click(o.event.proxy(G, function(H) {
								this.lastToggle = (this.lastToggle || 0) % F;
								H.preventDefault();
								return E[this.lastToggle++].apply(this, arguments) || false
							}))
						},
						hover : function(E, F) {
							return this.mouseenter(E).mouseleave(F)
						},
						ready : function(E) {
							B();
							if (o.isReady) {
								E.call(document, o)
							} else {
								o.readyList.push(E)
							}
							return this
						},
						live : function(G, F) {
							var E = o.event.proxy(F);
							E.guid += this.selector + G;
							o(document).bind(i(G, this.selector), this.selector, E);
							return this
						},
						die : function(F, E) {
							o(document).unbind(i(F, this.selector), E ? {
								guid :E.guid + this.selector + F
							} : null);
							return this
						}
					});
					function c(H) {
						var E = RegExp("(^|\\.)" + H.type + "(\\.|$)"), G = true, F = [];
						o.each(o.data(this, "events").live || [], function(I, J) {
							if (E.test(J.type)) {
								var K = o(H.target).closest(J.data)[0];
								if (K) {
									F.push( {
										elem :K,
										fn :J
									})
								}
							}
						});
						F.sort( function(J, I) {
							return o.data(J.elem, "closest") - o.data(I.elem, "closest")
						});
						o.each(F, function() {
							if (this.fn.call(this.elem, H, this.fn.data) === false) {
								return (G = false)
							}
						});
						return G
					}
					function i(F, E) {
						return [ "live", F, E.replace(/\./g, "`").replace(/ /g, "|") ]
								.join(".")
					}
					o.extend( {
						isReady :false,
						readyList : [],
						ready : function() {
							if (!o.isReady) {
								o.isReady = true;
								if (o.readyList) {
									o.each(o.readyList, function() {
										this.call(document, o)
									});
									o.readyList = null
								}
								o(document).triggerHandler("ready")
							}
						}
					});
					var x = false;
					function B() {
						if (x) {
							return
						}
						x = true;
						if (document.addEventListener) {
							document.addEventListener("DOMContentLoaded", function() {
								document.removeEventListener("DOMContentLoaded",
										arguments.callee, false);
								o.ready()
							}, false)
						} else {
							if (document.attachEvent) {
								document.attachEvent("onreadystatechange", function() {
									if (document.readyState === "complete") {
										document.detachEvent("onreadystatechange",
												arguments.callee);
										o.ready()
									}
								});
								if (document.documentElement.doScroll && l == l.top) {
									( function() {
										if (o.isReady) {
											return
										}
										try {
											document.documentElement.doScroll("left")
										} catch (E) {
											setTimeout(arguments.callee, 0);
											return
										}
										o.ready()
									})()
								}
							}
						}
						o.event.add(l, "load", o.ready)
					}
					o
							.each(
									("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error")
											.split(","), function(F, E) {
										o.fn[E] = function(G) {
											return G ? this.bind(E, G) : this.trigger(E)
										}
									});
					o(l).bind("unload", function() {
						for ( var E in o.cache) {
							if (E != 1 && o.cache[E].handle) {
								o.event.remove(o.cache[E].handle.elem)
							}
						}
					});
					( function() {
						o.support = {};
						var F = document.documentElement, G = document.createElement("script"), K = document
								.createElement("div"), J = "script" + (new Date).getTime();
						K.style.display = "none";
						K.innerHTML = '   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
						var H = K.getElementsByTagName("*"), E = K.getElementsByTagName("a")[0];
						if (!H || !H.length || !E) {
							return
						}
						o.support = {
							leadingWhitespace :K.firstChild.nodeType == 3,
							tbody :!K.getElementsByTagName("tbody").length,
							objectAll :!!K.getElementsByTagName("object")[0]
									.getElementsByTagName("*").length,
							htmlSerialize :!!K.getElementsByTagName("link").length,
							style :/red/.test(E.getAttribute("style")),
							hrefNormalized :E.getAttribute("href") === "/a",
							opacity :E.style.opacity === "0.5",
							cssFloat :!!E.style.cssFloat,
							scriptEval :false,
							noCloneEvent :true,
							boxModel :null
						};
						G.type = "text/javascript";
						try {
							G.appendChild(document.createTextNode("window." + J + "=1;"))
						} catch (I) {
						}
						F.insertBefore(G, F.firstChild);
						if (l[J]) {
							o.support.scriptEval = true;
							delete l[J]
						}
						F.removeChild(G);
						if (K.attachEvent && K.fireEvent) {
							K.attachEvent("onclick", function() {
								o.support.noCloneEvent = false;
								K.detachEvent("onclick", arguments.callee)
							});
							K.cloneNode(true).fireEvent("onclick")
						}
						o( function() {
							var L = document.createElement("div");
							L.style.width = L.style.paddingLeft = "1px";
							document.body.appendChild(L);
							o.boxModel = o.support.boxModel = L.offsetWidth === 2;
							document.body.removeChild(L).style.display = "none"
						})
					})();
					var w = o.support.cssFloat ? "cssFloat" : "styleFloat";
					o.props = {
						"for" :"htmlFor",
						"class" :"className",
						"float" :w,
						cssFloat :w,
						styleFloat :w,
						readonly :"readOnly",
						maxlength :"maxLength",
						cellspacing :"cellSpacing",
						rowspan :"rowSpan",
						tabindex :"tabIndex"
					};
					o.fn
							.extend( {
								_load :o.fn.load,
								load : function(G, J, K) {
									if (typeof G !== "string") {
										return this._load(G)
									}
									var I = G.indexOf(" ");
									if (I >= 0) {
										var E = G.slice(I, G.length);
										G = G.slice(0, I)
									}
									var H = "GET";
									if (J) {
										if (o.isFunction(J)) {
											K = J;
											J = null
										} else {
											if (typeof J === "object") {
												J = o.param(J);
												H = "POST"
											}
										}
									}
									var F = this;
									o
											.ajax( {
												url :G,
												type :H,
												dataType :"html",
												data :J,
												complete : function(M, L) {
													if (L == "success" || L == "notmodified") {
														F
																.html(E ? o("<div/>")
																		.append(
																				M.responseText
																						.replace(
																								/<script(.|\s)*?\/script>/g,
																								""))
																		.find(E)
																		: M.responseText)
													}
													if (K) {
														F.each(K, [ M.responseText, L, M ])
													}
												}
											});
									return this
								},
								serialize : function() {
									return o.param(this.serializeArray())
								},
								serializeArray : function() {
									return this
											.map(
													function() {
														return this.elements ? o
																.makeArray(this.elements)
																: this
													})
											.filter(
													function() {
														return this.name
																&& !this.disabled
																&& (this.checked
																		|| /select|textarea/i
																				.test(this.nodeName) || /text|hidden|password|search/i
																		.test(this.type))
													}).map(
													function(E, F) {
														var G = o(this).val();
														return G == null ? null
																: o.isArray(G) ? o.map(G,
																		function(I, H) {
																			return {
																				name :F.name,
																				value :I
																			}
																		}) : {
																	name :F.name,
																	value :G
																}
													}).get()
								}
							});
					o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend"
							.split(","), function(E, F) {
						o.fn[F] = function(G) {
							return this.bind(F, G)
						}
					});
					var r = e();
					o
							.extend( {
								get : function(E, G, H, F) {
									if (o.isFunction(G)) {
										H = G;
										G = null
									}
									return o.ajax( {
										type :"GET",
										url :E,
										data :G,
										success :H,
										dataType :F
									})
								},
								getScript : function(E, F) {
									return o.get(E, null, F, "script")
								},
								getJSON : function(E, F, G) {
									return o.get(E, F, G, "json")
								},
								post : function(E, G, H, F) {
									if (o.isFunction(G)) {
										H = G;
										G = {}
									}
									return o.ajax( {
										type :"POST",
										url :E,
										data :G,
										success :H,
										dataType :F
									})
								},
								ajaxSetup : function(E) {
									o.extend(o.ajaxSettings, E)
								},
								ajaxSettings : {
									url :location.href,
									global :true,
									type :"GET",
									contentType :"application/x-www-form-urlencoded",
									processData :true,
									async :true,
									xhr : function() {
										return l.ActiveXObject ? new ActiveXObject(
												"Microsoft.XMLHTTP") : new XMLHttpRequest()
									},
									accepts : {
										xml :"application/xml, text/xml",
										html :"text/html",
										script :"text/javascript, application/javascript",
										json :"application/json, text/javascript",
										text :"text/plain",
										_default :"*/*"
									}
								},
								lastModified : {},
								ajax : function(M) {
									M = o
											.extend(true, M, o.extend(true, {}, o.ajaxSettings,
													M));
									var W, F = /=\?(&|$)/g, R, V, G = M.type.toUpperCase();
									if (M.data && M.processData && typeof M.data !== "string") {
										M.data = o.param(M.data)
									}
									if (M.dataType == "jsonp") {
										if (G == "GET") {
											if (!M.url.match(F)) {
												M.url += (M.url.match(/\?/) ? "&" : "?")
														+ (M.jsonp || "callback") + "=?"
											}
										} else {
											if (!M.data || !M.data.match(F)) {
												M.data = (M.data ? M.data + "&" : "")
														+ (M.jsonp || "callback") + "=?"
											}
										}
										M.dataType = "json"
									}
									if (M.dataType == "json"
											&& (M.data && M.data.match(F) || M.url.match(F))) {
										W = "jsonp" + r++;
										if (M.data) {
											M.data = (M.data + "").replace(F, "=" + W + "$1")
										}
										M.url = M.url.replace(F, "=" + W + "$1");
										M.dataType = "script";
										l[W] = function(X) {
											V = X;
											I();
											L();
											l[W] = g;
											try {
												delete l[W]
											} catch (Y) {
											}
											if (H) {
												H.removeChild(T)
											}
										}
									}
									if (M.dataType == "script" && M.cache == null) {
										M.cache = false
									}
									if (M.cache === false && G == "GET") {
										var E = e();
										var U = M.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + E
												+ "$2");
										M.url = U
												+ ((U == M.url) ? (M.url.match(/\?/) ? "&"
														: "?")
														+ "_=" + E : "")
									}
									if (M.data && G == "GET") {
										M.url += (M.url.match(/\?/) ? "&" : "?") + M.data;
										M.data = null
									}
									if (M.global && !o.active++) {
										o.event.trigger("ajaxStart")
									}
									var Q = /^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);
									if (M.dataType == "script"
											&& G == "GET"
											&& Q
											&& (Q[1] && Q[1] != location.protocol || Q[2] != location.host)) {
										var H = document.getElementsByTagName("head")[0];
										var T = document.createElement("script");
										T.src = M.url;
										if (M.scriptCharset) {
											T.charset = M.scriptCharset
										}
										if (!W) {
											var O = false;
											T.onload = T.onreadystatechange = function() {
												if (!O
														&& (!this.readyState
																|| this.readyState == "loaded" || this.readyState == "complete")) {
													O = true;
													I();
													L();
													T.onload = T.onreadystatechange = null;
													H.removeChild(T)
												}
											}
										}
										H.appendChild(T);
										return g
									}
									var K = false;
									var J = M.xhr();
									if (M.username) {
										J.open(G, M.url, M.async, M.username, M.password)
									} else {
										J.open(G, M.url, M.async)
									}
									try {
										if (M.data) {
											J.setRequestHeader("Content-Type", M.contentType)
										}
										if (M.ifModified) {
											J.setRequestHeader("If-Modified-Since",
													o.lastModified[M.url]
															|| "Thu, 01 Jan 1970 00:00:00 GMT")
										}
										J
												.setRequestHeader("X-Requested-With",
														"XMLHttpRequest");
										J
												.setRequestHeader(
														"Accept",
														M.dataType && M.accepts[M.dataType] ? M.accepts[M.dataType]
																+ ", */*"
																: M.accepts._default)
									} catch (S) {
									}
									if (M.beforeSend && M.beforeSend(J, M) === false) {
										if (M.global && !--o.active) {
											o.event.trigger("ajaxStop")
										}
										J.abort();
										return false
									}
									if (M.global) {
										o.event.trigger("ajaxSend", [ J, M ])
									}
									var N = function(X) {
										if (J.readyState == 0) {
											if (P) {
												clearInterval(P);
												P = null;
												if (M.global && !--o.active) {
													o.event.trigger("ajaxStop")
												}
											}
										} else {
											if (!K && J
													&& (J.readyState == 4 || X == "timeout")) {
												K = true;
												if (P) {
													clearInterval(P);
													P = null
												}
												R = X == "timeout" ? "timeout"
														: !o.httpSuccess(J) ? "error"
																: M.ifModified
																		&& o.httpNotModified(J,
																				M.url) ? "notmodified"
																		: "success";
												if (R == "success") {
													try {
														V = o.httpData(J, M.dataType, M)
													} catch (Z) {
														R = "parsererror"
													}
												}
												if (R == "success") {
													var Y;
													try {
														Y = J
																.getResponseHeader("Last-Modified")
													} catch (Z) {
													}
													if (M.ifModified && Y) {
														o.lastModified[M.url] = Y
													}
													if (!W) {
														I()
													}
												} else {
													o.handleError(M, J, R)
												}
												L();
												if (X) {
													J.abort()
												}
												if (M.async) {
													J = null
												}
											}
										}
									};
									if (M.async) {
										var P = setInterval(N, 13);
										if (M.timeout > 0) {
											setTimeout( function() {
												if (J && !K) {
													N("timeout")
												}
											}, M.timeout)
										}
									}
									try {
										J.send(M.data)
									} catch (S) {
										o.handleError(M, J, null, S)
									}
									if (!M.async) {
										N()
									}
									function I() {
										if (M.success) {
											M.success(V, R)
										}
										if (M.global) {
											o.event.trigger("ajaxSuccess", [ J, M ])
										}
									}
									function L() {
										if (M.complete) {
											M.complete(J, R)
										}
										if (M.global) {
											o.event.trigger("ajaxComplete", [ J, M ])
										}
										if (M.global && !--o.active) {
											o.event.trigger("ajaxStop")
										}
									}
									return J
								},
								handleError : function(F, H, E, G) {
									if (F.error) {
										F.error(H, E, G)
									}
									if (F.global) {
										o.event.trigger("ajaxError", [ H, F, G ])
									}
								},
								active :0,
								httpSuccess : function(F) {
									try {
										return !F.status && location.protocol == "file:"
												|| (F.status >= 200 && F.status < 300)
												|| F.status == 304 || F.status == 1223
									} catch (E) {
									}
									return false
								},
								httpNotModified : function(G, E) {
									try {
										var H = G.getResponseHeader("Last-Modified");
										return G.status == 304 || H == o.lastModified[E]
									} catch (F) {
									}
									return false
								},
								httpData : function(J, H, G) {
									var F = J.getResponseHeader("content-type"), E = H == "xml"
											|| !H && F && F.indexOf("xml") >= 0, I = E ? J.responseXML
											: J.responseText;
									if (E && I.documentElement.tagName == "parsererror") {
										throw "parsererror"
									}
									if (G && G.dataFilter) {
										I = G.dataFilter(I, H)
									}
									if (typeof I === "string") {
										if (H == "script") {
											o.globalEval(I)
										}
										if (H == "json") {
											I = l["eval"]("(" + I + ")")
										}
									}
									return I
								},
								param : function(E) {
									var G = [];
									function H(I, J) {
										G[G.length] = encodeURIComponent(I) + "="
												+ encodeURIComponent(J)
									}
									if (o.isArray(E) || E.jquery) {
										o.each(E, function() {
											H(this.name, this.value)
										})
									} else {
										for ( var F in E) {
											if (o.isArray(E[F])) {
												o.each(E[F], function() {
													H(F, this)
												})
											} else {
												H(F, o.isFunction(E[F]) ? E[F]() : E[F])
											}
										}
									}
									return G.join("&").replace(/%20/g, "+")
								}
							});
					var m = {}, n, d = [
							[ "height", "marginTop", "marginBottom", "paddingTop",
									"paddingBottom" ],
							[ "width", "marginLeft", "marginRight", "paddingLeft",
									"paddingRight" ], [ "opacity" ] ];
					function t(F, E) {
						var G = {};
						o.each(d.concat.apply( [], d.slice(0, E)), function() {
							G[this] = F
						});
						return G
					}
					o.fn.extend( {
						show : function(J, L) {
							if (J) {
								return this.animate(t("show", 3), J, L)
							} else {
								for ( var H = 0, F = this.length; H < F; H++) {
									var E = o.data(this[H], "olddisplay");
									this[H].style.display = E || "";
									if (o.css(this[H], "display") === "none") {
										var G = this[H].tagName, K;
										if (m[G]) {
											K = m[G]
										} else {
											var I = o("<" + G + " />").appendTo("body");
											K = I.css("display");
											if (K === "none") {
												K = "block"
											}
											I.remove();
											m[G] = K
										}
										o.data(this[H], "olddisplay", K)
									}
								}
								for ( var H = 0, F = this.length; H < F; H++) {
									this[H].style.display = o.data(this[H], "olddisplay") || ""
								}
								return this
							}
						},
						hide : function(H, I) {
							if (H) {
								return this.animate(t("hide", 3), H, I)
							} else {
								for ( var G = 0, F = this.length; G < F; G++) {
									var E = o.data(this[G], "olddisplay");
									if (!E && E !== "none") {
										o
												.data(this[G], "olddisplay", o.css(this[G],
														"display"))
									}
								}
								for ( var G = 0, F = this.length; G < F; G++) {
									this[G].style.display = "none"
								}
								return this
							}
						},
						_toggle :o.fn.toggle,
						toggle : function(G, F) {
							var E = typeof G === "boolean";
							return o.isFunction(G) && o.isFunction(F) ? this._toggle.apply(
									this, arguments) : G == null || E ? this.each( function() {
								var H = E ? G : o(this).is(":hidden");
								o(this)[H ? "show" : "hide"]()
							}) : this.animate(t("toggle", 3), G, F)
						},
						fadeTo : function(E, G, F) {
							return this.animate( {
								opacity :G
							}, E, F)
						},
						animate : function(I, F, H, G) {
							var E = o.speed(F, H, G);
							return this[E.queue === false ? "each" : "queue"]( function() {
								var K = o.extend( {}, E), M, L = this.nodeType == 1
										&& o(this).is(":hidden"), J = this;
								for (M in I) {
									if (I[M] == "hide" && L || I[M] == "show" && !L) {
										return K.complete.call(this)
									}
									if ((M == "height" || M == "width") && this.style) {
										K.display = o.css(this, "display");
										K.overflow = this.style.overflow
									}
								}
								if (K.overflow != null) {
									this.style.overflow = "hidden"
								}
								K.curAnim = o.extend( {}, I);
								o.each(I,
										function(O, S) {
											var R = new o.fx(J, K, O);
											if (/toggle|show|hide/.test(S)) {
												R[S == "toggle" ? L ? "show" : "hide" : S](I)
											} else {
												var Q = S.toString().match(
														/^([+-]=)?([\d+-.]+)(.*)$/), T = R
														.cur(true) || 0;
												if (Q) {
													var N = parseFloat(Q[2]), P = Q[3] || "px";
													if (P != "px") {
														J.style[O] = (N || 1) + P;
														T = ((N || 1) / R.cur(true)) * T;
														J.style[O] = T + P
													}
													if (Q[1]) {
														N = ((Q[1] == "-=" ? -1 : 1) * N) + T
													}
													R.custom(T, N, P)
												} else {
													R.custom(T, S, "")
												}
											}
										});
								return true
							})
						},
						stop : function(F, E) {
							var G = o.timers;
							if (F) {
								this.queue( [])
							}
							this.each( function() {
								for ( var H = G.length - 1; H >= 0; H--) {
									if (G[H].elem == this) {
										if (E) {
											G[H](true)
										}
										G.splice(H, 1)
									}
								}
							});
							if (!E) {
								this.dequeue()
							}
							return this
						}
					});
					o.each( {
						slideDown :t("show", 1),
						slideUp :t("hide", 1),
						slideToggle :t("toggle", 1),
						fadeIn : {
							opacity :"show"
						},
						fadeOut : {
							opacity :"hide"
						}
					}, function(E, F) {
						o.fn[E] = function(G, H) {
							return this.animate(F, G, H)
						}
					});
					o.extend( {
						speed : function(G, H, F) {
							var E = typeof G === "object" ? G : {
								complete :F || !F && H || o.isFunction(G) && G,
								duration :G,
								easing :F && H || H && !o.isFunction(H) && H
							};
							E.duration = o.fx.off ? 0
									: typeof E.duration === "number" ? E.duration
											: o.fx.speeds[E.duration] || o.fx.speeds._default;
							E.old = E.complete;
							E.complete = function() {
								if (E.queue !== false) {
									o(this).dequeue()
								}
								if (o.isFunction(E.old)) {
									E.old.call(this)
								}
							};
							return E
						},
						easing : {
							linear : function(G, H, E, F) {
								return E + F * G
							},
							swing : function(G, H, E, F) {
								return ((-Math.cos(G * Math.PI) / 2) + 0.5) * F + E
							}
						},
						timers : [],
						fx : function(F, E, G) {
							this.options = E;
							this.elem = F;
							this.prop = G;
							if (!E.orig) {
								E.orig = {}
							}
						}
					});
					o.fx.prototype = {
						update : function() {
							if (this.options.step) {
								this.options.step.call(this.elem, this.now, this)
							}
							(o.fx.step[this.prop] || o.fx.step._default)(this);
							if ((this.prop == "height" || this.prop == "width")
									&& this.elem.style) {
								this.elem.style.display = "block"
							}
						},
						cur : function(F) {
							if (this.elem[this.prop] != null
									&& (!this.elem.style || this.elem.style[this.prop] == null)) {
								return this.elem[this.prop]
							}
							var E = parseFloat(o.css(this.elem, this.prop, F));
							return E && E > -10000 ? E : parseFloat(o.curCSS(this.elem,
									this.prop)) || 0
						},
						custom : function(I, H, G) {
							this.startTime = e();
							this.start = I;
							this.end = H;
							this.unit = G || this.unit || "px";
							this.now = this.start;
							this.pos = this.state = 0;
							var E = this;
							function F(J) {
								return E.step(J)
							}
							F.elem = this.elem;
							if (F() && o.timers.push(F) && !n) {
								n = setInterval( function() {
									var K = o.timers;
									for ( var J = 0; J < K.length; J++) {
										if (!K[J]()) {
											K.splice(J--, 1)
										}
									}
									if (!K.length) {
										clearInterval(n);
										n = g
									}
								}, 13)
							}
						},
						show : function() {
							this.options.orig[this.prop] = o.attr(this.elem.style, this.prop);
							this.options.show = true;
							this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0,
									this.cur());
							o(this.elem).show()
						},
						hide : function() {
							this.options.orig[this.prop] = o.attr(this.elem.style, this.prop);
							this.options.hide = true;
							this.custom(this.cur(), 0)
						},
						step : function(H) {
							var G = e();
							if (H || G >= this.options.duration + this.startTime) {
								this.now = this.end;
								this.pos = this.state = 1;
								this.update();
								this.options.curAnim[this.prop] = true;
								var E = true;
								for ( var F in this.options.curAnim) {
									if (this.options.curAnim[F] !== true) {
										E = false
									}
								}
								if (E) {
									if (this.options.display != null) {
										this.elem.style.overflow = this.options.overflow;
										this.elem.style.display = this.options.display;
										if (o.css(this.elem, "display") == "none") {
											this.elem.style.display = "block"
										}
									}
									if (this.options.hide) {
										o(this.elem).hide()
									}
									if (this.options.hide || this.options.show) {
										for ( var I in this.options.curAnim) {
											o.attr(this.elem.style, I, this.options.orig[I])
										}
									}
									this.options.complete.call(this.elem)
								}
								return false
							} else {
								var J = G - this.startTime;
								this.state = J / this.options.duration;
								this.pos = o.easing[this.options.easing
										|| (o.easing.swing ? "swing" : "linear")](this.state,
										J, 0, 1, this.options.duration);
								this.now = this.start + ((this.end - this.start) * this.pos);
								this.update()
							}
							return true
						}
					};
					o.extend(o.fx, {
						speeds : {
							slow :600,
							fast :200,
							_default :400
						},
						step : {
							opacity : function(E) {
								o.attr(E.elem.style, "opacity", E.now)
							},
							_default : function(E) {
								if (E.elem.style && E.elem.style[E.prop] != null) {
									E.elem.style[E.prop] = E.now + E.unit
								} else {
									E.elem[E.prop] = E.now
								}
							}
						}
					});
					if (document.documentElement.getBoundingClientRect) {
						o.fn.offset = function() {
							if (!this[0]) {
								return {
									top :0,
									left :0
								}
							}
							if (this[0] === this[0].ownerDocument.body) {
								return o.offset.bodyOffset(this[0])
							}
							var G = this[0].getBoundingClientRect(), J = this[0].ownerDocument, F = J.body, E = J.documentElement, L = E.clientTop
									|| F.clientTop || 0, K = E.clientLeft || F.clientLeft || 0, I = G.top
									+ (self.pageYOffset || o.boxModel && E.scrollTop || F.scrollTop)
									- L, H = G.left
									+ (self.pageXOffset || o.boxModel && E.scrollLeft || F.scrollLeft)
									- K;
							return {
								top :I,
								left :H
							}
						}
					} else {
						o.fn.offset = function() {
							if (!this[0]) {
								return {
									top :0,
									left :0
								}
							}
							if (this[0] === this[0].ownerDocument.body) {
								return o.offset.bodyOffset(this[0])
							}
							o.offset.initialized || o.offset.initialize();
							var J = this[0], G = J.offsetParent, F = J, O = J.ownerDocument, M, H = O.documentElement, K = O.body, L = O.defaultView, E = L
									.getComputedStyle(J, null), N = J.offsetTop, I = J.offsetLeft;
							while ((J = J.parentNode) && J !== K && J !== H) {
								M = L.getComputedStyle(J, null);
								N -= J.scrollTop, I -= J.scrollLeft;
								if (J === G) {
									N += J.offsetTop, I += J.offsetLeft;
									if (o.offset.doesNotAddBorder
											&& !(o.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i
													.test(J.tagName))) {
										N += parseInt(M.borderTopWidth, 10) || 0,
												I += parseInt(M.borderLeftWidth, 10) || 0
									}
									F = G, G = J.offsetParent
								}
								if (o.offset.subtractsBorderForOverflowNotVisible
										&& M.overflow !== "visible") {
									N += parseInt(M.borderTopWidth, 10) || 0, I += parseInt(
											M.borderLeftWidth, 10) || 0
								}
								E = M
							}
							if (E.position === "relative" || E.position === "static") {
								N += K.offsetTop, I += K.offsetLeft
							}
							if (E.position === "fixed") {
								N += Math.max(H.scrollTop, K.scrollTop), I += Math.max(
										H.scrollLeft, K.scrollLeft)
							}
							return {
								top :N,
								left :I
							}
						}
					}
					o.offset = {
						initialize : function() {
							if (this.initialized) {
								return
							}
							var L = document.body, F = document.createElement("div"), H, G, N, I, M, E, J = L.style.marginTop, K = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
							M = {
								position :"absolute",
								top :0,
								left :0,
								margin :0,
								border :0,
								width :"1px",
								height :"1px",
								visibility :"hidden"
							};
							for (E in M) {
								F.style[E] = M[E]
							}
							F.innerHTML = K;
							L.insertBefore(F, L.firstChild);
							H = F.firstChild, G = H.firstChild,
									I = H.nextSibling.firstChild.firstChild;
							this.doesNotAddBorder = (G.offsetTop !== 5);
							this.doesAddBorderForTableAndCells = (I.offsetTop === 5);
							H.style.overflow = "hidden", H.style.position = "relative";
							this.subtractsBorderForOverflowNotVisible = (G.offsetTop === -5);
							L.style.marginTop = "1px";
							this.doesNotIncludeMarginInBodyOffset = (L.offsetTop === 0);
							L.style.marginTop = J;
							L.removeChild(F);
							this.initialized = true
						},
						bodyOffset : function(E) {
							o.offset.initialized || o.offset.initialize();
							var G = E.offsetTop, F = E.offsetLeft;
							if (o.offset.doesNotIncludeMarginInBodyOffset) {
								G += parseInt(o.curCSS(E, "marginTop", true), 10) || 0,
										F += parseInt(o.curCSS(E, "marginLeft", true), 10) || 0
							}
							return {
								top :G,
								left :F
							}
						}
					};
					o.fn
							.extend( {
								position : function() {
									var I = 0, H = 0, F;
									if (this[0]) {
										var G = this.offsetParent(), J = this.offset(), E = /^body|html$/i
												.test(G[0].tagName) ? {
											top :0,
											left :0
										} : G.offset();
										J.top -= j(this, "marginTop");
										J.left -= j(this, "marginLeft");
										E.top += j(G, "borderTopWidth");
										E.left += j(G, "borderLeftWidth");
										F = {
											top :J.top - E.top,
											left :J.left - E.left
										}
									}
									return F
								},
								offsetParent : function() {
									var E = this[0].offsetParent || document.body;
									while (E
											&& (!/^body|html$/i.test(E.tagName) && o.css(E,
													"position") == "static")) {
										E = E.offsetParent
									}
									return o(E)
								}
							});
					o.each( [ "Left", "Top" ], function(F, E) {
						var G = "scroll" + E;
						o.fn[G] = function(H) {
							if (!this[0]) {
								return null
							}
							return H !== g ? this.each( function() {
								this == l || this == document ? l.scrollTo(!F ? H : o(l)
										.scrollLeft(), F ? H : o(l).scrollTop()) : this[G] = H
							}) : this[0] == l || this[0] == document ? self[F ? "pageYOffset"
									: "pageXOffset"]
									|| o.boxModel
									&& document.documentElement[G]
									|| document.body[G] : this[0][G]
						}
					});
					o.each( [ "Height", "Width" ], function(I, G) {
						var E = I ? "Left" : "Top", H = I ? "Right" : "Bottom", F = G
								.toLowerCase();
						o.fn["inner" + G] = function() {
							return this[0] ? o.css(this[0], F, false, "padding") : null
						};
						o.fn["outer" + G] = function(K) {
							return this[0] ? o.css(this[0], F, false, K ? "margin" : "border")
									: null
						};
						var J = G.toLowerCase();
						o.fn[J] = function(K) {
							return this[0] == l ? document.compatMode == "CSS1Compat"
									&& document.documentElement["client" + G]
									|| document.body["client" + G] : this[0] == document ? Math
									.max(document.documentElement["client" + G],
											document.body["scroll" + G],
											document.documentElement["scroll" + G],
											document.body["offset" + G],
											document.documentElement["offset" + G])
									: K === g ? (this.length ? o.css(this[0], J) : null) : this
											.css(J, typeof K === "string" ? K : K + "px")
						}
					})
				})();
