/*
 * jQuery JavaScript Library v1.3
 * http://jquery.com/
 *
 * Copyright (c) 2009 John Resig
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 *
 * Date: 2009-01-13 12:50:31 -0500 (Tue, 13 Jan 2009)
 * Revision: 6104
 */
(function() {
	var l = this,
	g, x = l.jQuery,
	o = l.$,
	n = l.jQuery = l.$ = function(D, E) {
		return new n.fn.init(D, E)
	},
	C = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
	f = /^.[^:#\[\.,]*$/;
	n.fn = n.prototype = {
		init: function(D, G) {
			D = D || document;
			if (D.nodeType) {
				this[0] = D;
				this.length = 1;
				this.context = D;
				return this
			}
			if (typeof D === "string") {
				var F = C.exec(D);
				if (F && (F[1] || !G)) {
					if (F[1]) {
						D = n.clean([F[1]], G)
					} else {
						var H = document.getElementById(F[3]);
						if (H) {
							if (H.id != F[3]) {
								return n().find(D)
							}
							var E = n(H);
							E.context = document;
							E.selector = D;
							return E
						}
						D = []
					}
				} else {
					return n(G).find(D)
				}
			} else {
				if (n.isFunction(D)) {
					return n(document).ready(D)
				}
			}
			if (D.selector && D.context) {
				this.selector = D.selector;
				this.context = D.context
			}
			return this.setArray(n.makeArray(D))
		},
		selector: "",
		jquery: "1.3",
		size: function() {
			return this.length
		},
		get: function(D) {
			return D === g ? n.makeArray(this) : this[D]
		},
		pushStack: function(E, G, D) {
			var F = n(E);
			F.prevObject = this;
			F.context = this.context;
			if (G === "find") {
				F.selector = this.selector + (this.selector ? " ": "") + D
			} else {
				if (G) {
					F.selector = this.selector + "." + G + "(" + D + ")"
				}
			}
			return F
		},
		setArray: function(D) {
			this.length = 0;
			Array.prototype.push.apply(this, D);
			return this
		},
		each: function(E, D) {
			return n.each(this, E, D)
		},
		index: function(D) {
			return n.inArray(D && D.jquery ? D[0] : D, this)
		},
		attr: function(E, G, F) {
			var D = E;
			if (typeof E === "string") {
				if (G === g) {
					return this[0] && n[F || "attr"](this[0], E)
				} else {
					D = {};
					D[E] = G
				}
			}
			return this.each(function(H) {
				for (E in D) {
					n.attr(F ? this.style: this, E, n.prop(this, D[E], F, H, E))
				}
			})
		},
		css: function(D, E) {
			if ((D == "width" || D == "height") && parseFloat(E) < 0) {
				E = g
			}
			return this.attr(D, E, "curCSS")
		},
		text: function(E) {
			if (typeof E !== "object" && E != null) {
				return this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(E))
			}
			var D = "";
			n.each(E || this,
			function() {
				n.each(this.childNodes,
				function() {
					if (this.nodeType != 8) {
						D += this.nodeType != 1 ? this.nodeValue: n.fn.text([this])
					}
				})
			});
			return D
		},
		wrapAll: function(D) {
			if (this[0]) {
				var E = n(D, this[0].ownerDocument).clone();
				if (this[0].parentNode) {
					E.insertBefore(this[0])
				}
				E.map(function() {
					var F = this;
					while (F.firstChild) {
						F = F.firstChild
					}
					return F
				}).append(this)
			}
			return this
		},
		wrapInner: function(D) {
			return this.each(function() {
				n(this).contents().wrapAll(D)
			})
		},
		wrap: function(D) {
			return this.each(function() {
				n(this).wrapAll(D)
			})
		},
		append: function() {
			return this.domManip(arguments, true,
			function(D) {
				if (this.nodeType == 1) {
					this.appendChild(D)
				}
			})
		},
		prepend: function() {
			return this.domManip(arguments, true,
			function(D) {
				if (this.nodeType == 1) {
					this.insertBefore(D, this.firstChild)
				}
			})
		},
		before: function() {
			return this.domManip(arguments, false,
			function(D) {
				this.parentNode.insertBefore(D, this)
			})
		},
		after: function() {
			return this.domManip(arguments, false,
			function(D) {
				this.parentNode.insertBefore(D, this.nextSibling)
			})
		},
		end: function() {
			return this.prevObject || n([])
		},
		push: [].push,
		find: function(D) {
			if (this.length === 1 && !/,/.test(D)) {
				var F = this.pushStack([], "find", D);
				F.length = 0;
				n.find(D, this[0], F);
				return F
			} else {
				var E = n.map(this,
				function(G) {
					return n.find(D, G)
				});
				return this.pushStack(/[^+>] [^+>]/.test(D) ? n.unique(E) : E, "find", D)
			}
		},
		clone: function(E) {
			var D = this.map(function() {
				if (!n.support.noCloneEvent && !n.isXMLDoc(this)) {
					var H = this.cloneNode(true),
					G = document.createElement("div");
					G.appendChild(H);
					return n.clean([G.innerHTML])[0]
				} else {
					return this.cloneNode(true)
				}
			});
			var F = D.find("*").andSelf().each(function() {
				if (this[h] !== g) {
					this[h] = null
				}
			});
			if (E === true) {
				this.find("*").andSelf().each(function(H) {
					if (this.nodeType == 3) {
						return
					}
					var G = n.data(this, "events");
					for (var J in G) {
						for (var I in G[J]) {
							n.event.add(F[H], J, G[J][I], G[J][I].data)
						}
					}
				})
			}
			return D
		},
		filter: function(D) {
			return this.pushStack(n.isFunction(D) && n.grep(this,
			function(F, E) {
				return D.call(F, E)
			}) || n.multiFilter(D, n.grep(this,
			function(E) {
				return E.nodeType === 1
			})), "filter", D)
		},
		closest: function(D) {
			var E = n.expr.match.POS.test(D) ? n(D) : null;
			return this.map(function() {
				var F = this;
				while (F && F.ownerDocument) {
					if (E ? E.index(F) > -1 : n(F).is(D)) {
						return F
					}
					F = F.parentNode
				}
			})
		},
		not: function(D) {
			if (typeof D === "string") {
				if (f.test(D)) {
					return this.pushStack(n.multiFilter(D, this, true), "not", D)
				} else {
					D = n.multiFilter(D, this)
				}
			}
			var E = D.length && D[D.length - 1] !== g && !D.nodeType;
			return this.filter(function() {
				return E ? n.inArray(this, D) < 0 : this != D
			})
		},
		add: function(D) {
			return this.pushStack(n.unique(n.merge(this.get(), typeof D === "string" ? n(D) : n.makeArray(D))))
		},
		is: function(D) {
			return !! D && n.multiFilter(D, this).length > 0
		},
		hasClass: function(D) {
			return !! D && this.is("." + D)
		},
		val: function(J) {
			if (J === g) {
				var D = this[0];
				if (D) {
					if (n.nodeName(D, "option")) {
						return (D.attributes.value || {}).specified ? D.value: D.text
					}
					if (n.nodeName(D, "select")) {
						var H = D.selectedIndex,
						K = [],
						L = D.options,
						G = D.type == "select-one";
						if (H < 0) {
							return null
						}
						for (var E = G ? H: 0, I = G ? H + 1 : L.length; E < I; E++) {
							var F = L[E];
							if (F.selected) {
								J = n(F).val();
								if (G) {
									return J
								}
								K.push(J)
							}
						}
						return K
					}
					return (D.value || "").replace(/\r/g, "")
				}
				return g
			}
			if (typeof J === "number") {
				J += ""
			}
			return this.each(function() {
				if (this.nodeType != 1) {
					return
				}
				if (n.isArray(J) && /radio|checkbox/.test(this.type)) {
					this.checked = (n.inArray(this.value, J) >= 0 || n.inArray(this.name, J) >= 0)
				} else {
					if (n.nodeName(this, "select")) {
						var M = n.makeArray(J);
						n("option", this).each(function() {
							this.selected = (n.inArray(this.value, M) >= 0 || n.inArray(this.text, M) >= 0)
						});
						if (!M.length) {
							this.selectedIndex = -1
						}
					} else {
						this.value = J
					}
				}
			})
		},
		html: function(D) {
			return D === g ? (this[0] ? this[0].innerHTML: null) : this.empty().append(D)
		},
		replaceWith: function(D) {
			return this.after(D).remove()
		},
		eq: function(D) {
			return this.slice(D, +D + 1)
		},
		slice: function() {
			return this.pushStack(Array.prototype.slice.apply(this, arguments), "slice", Array.prototype.slice.call(arguments).join(","))
		},
		map: function(D) {
			return this.pushStack(n.map(this,
			function(F, E) {
				return D.call(F, E, F)
			}))
		},
		andSelf: function() {
			return this.add(this.prevObject)
		},
		domManip: function(J, M, L) {
			if (this[0]) {
				var I = (this[0].ownerDocument || this[0]).createDocumentFragment(),
				F = n.clean(J, (this[0].ownerDocument || this[0]), I),
				H = I.firstChild,
				D = this.length > 1 ? I.cloneNode(true) : I;
				if (H) {
					for (var G = 0, E = this.length; G < E; G++) {
						L.call(K(this[G], H), G > 0 ? D.cloneNode(true) : I)
					}
				}
				if (F) {
					n.each(F, y)
				}
			}
			return this;
			function K(N, O) {
				return M && n.nodeName(N, "table") && n.nodeName(O, "tr") ? (N.getElementsByTagName("tbody")[0] || N.appendChild(N.ownerDocument.createElement("tbody"))) : N
			}
		}
	};
	n.fn.init.prototype = n.fn;
	function y(D, E) {
		if (E.src) {
			n.ajax({
				url: E.src,
				async: false,
				dataType: "script"
			})
		} else {
			n.globalEval(E.text || E.textContent || E.innerHTML || "")
		}
		if (E.parentNode) {
			E.parentNode.removeChild(E)
		}
	}
	function e() {
		return + new Date
	}
	n.extend = n.fn.extend = function() {
		var I = arguments[0] || {},
		G = 1,
		H = arguments.length,
		D = false,
		F;
		if (typeof I === "boolean") {
			D = I;
			I = arguments[1] || {};
			G = 2
		}
		if (typeof I !== "object" && !n.isFunction(I)) {
			I = {}
		}
		if (H == G) {
			I = this; --G
		}
		for (; G < H; G++) {
			if ((F = arguments[G]) != null) {
				for (var E in F) {
					var J = I[E],
					K = F[E];
					if (I === K) {
						continue
					}
					if (D && K && typeof K === "object" && !K.nodeType) {
						I[E] = n.extend(D, J || (K.length != null ? [] : {}), K)
					} else {
						if (K !== g) {
							I[E] = K
						}
					}
				}
			}
		}
		return I
	};
	var b = /z-?index|font-?weight|opacity|zoom|line-?height/i,
	p = document.defaultView || {},
	r = Object.prototype.toString;
	n.extend({
		noConflict: function(D) {
			l.$ = o;
			if (D) {
				l.jQuery = x
			}
			return n
		},
		isFunction: function(D) {
			return r.call(D) === "[object Function]"
		},
		isArray: function(D) {
			return r.call(D) === "[object Array]"
		},
		isXMLDoc: function(D) {
			return D.documentElement && !D.body || D.tagName && D.ownerDocument && !D.ownerDocument.body
		},
		globalEval: function(F) {
			F = n.trim(F);
			if (F) {
				var E = document.getElementsByTagName("head")[0] || document.documentElement,
				D = document.createElement("script");
				D.type = "text/javascript";
				if (n.support.scriptEval) {
					D.appendChild(document.createTextNode(F))
				} else {
					D.text = F
				}
				E.insertBefore(D, E.firstChild);
				E.removeChild(D)
			}
		},
		nodeName: function(E, D) {
			return E.nodeName && E.nodeName.toUpperCase() == D.toUpperCase()
		},
		each: function(F, J, E) {
			var D, G = 0,
			H = F.length;
			if (E) {
				if (H === g) {
					for (D in F) {
						if (J.apply(F[D], E) === false) {
							break
						}
					}
				} else {
					for (; G < H;) {
						if (J.apply(F[G++], E) === false) {
							break
						}
					}
				}
			} else {
				if (H === g) {
					for (D in F) {
						if (J.call(F[D], D, F[D]) === false) {
							break
						}
					}
				} else {
					for (var I = F[0]; G < H && J.call(I, G, I) !== false; I = F[++G]) {}
				}
			}
			return F
		},
		prop: function(G, H, F, E, D) {
			if (n.isFunction(H)) {
				H = H.call(G, E)
			}
			return typeof H === "number" && F == "curCSS" && !b.test(D) ? H + "px": H
		},
		className: {
			add: function(D, E) {
				n.each((E || "").split(/\s+/),
				function(F, G) {
					if (D.nodeType == 1 && !n.className.has(D.className, G)) {
						D.className += (D.className ? " ": "") + G
					}
				})
			},
			remove: function(D, E) {
				if (D.nodeType == 1) {
					D.className = E !== g ? n.grep(D.className.split(/\s+/),
					function(F) {
						return ! n.className.has(E, F)
					}).join(" ") : ""
				}
			},
			has: function(E, D) {
				return n.inArray(D, (E.className || E).toString().split(/\s+/)) > -1
			}
		},
		swap: function(G, F, H) {
			var D = {};
			for (var E in F) {
				D[E] = G.style[E];
				G.style[E] = F[E]
			}
			H.call(G);
			for (var E in F) {
				G.style[E] = D[E]
			}
		},
		css: function(F, D, H) {
			if (D == "width" || D == "height") {
				var J, E = {
					position: "absolute",
					visibility: "hidden",
					display: "block"
				},
				I = D == "width" ? ["Left", "Right"] : ["Top", "Bottom"];
				function G() {
					J = D == "width" ? F.offsetWidth: F.offsetHeight;
					var L = 0,
					K = 0;
					n.each(I,
					function() {
						L += parseFloat(n.curCSS(F, "padding" + this, true)) || 0;
						K += parseFloat(n.curCSS(F, "border" + this + "Width", true)) || 0
					});
					J -= Math.round(L + K)
				}
				if (n(F).is(":visible")) {
					G()
				} else {
					n.swap(F, E, G)
				}
				return Math.max(0, J)
			}
			return n.curCSS(F, D, H)
		},
		curCSS: function(H, E, F) {
			var K, D = H.style;
			if (E == "opacity" && !n.support.opacity) {
				K = n.attr(D, "opacity");
				return K == "" ? "1": K
			}
			if (E.match(/float/i)) {
				E = v
			}
			if (!F && D && D[E]) {
				K = D[E]
			} else {
				if (p.getComputedStyle) {
					if (E.match(/float/i)) {
						E = "float"
					}
					E = E.replace(/([A-Z])/g, "-$1").toLowerCase();
					var L = p.getComputedStyle(H, null);
					if (L) {
						K = L.getPropertyValue(E)
					}
					if (E == "opacity" && K == "") {
						K = "1"
					}
				} else {
					if (H.currentStyle) {
						var I = E.replace(/\-(\w)/g,
						function(M, N) {
							return N.toUpperCase()
						});
						K = H.currentStyle[E] || H.currentStyle[I];
						if (!/^\d+(px)?$/i.test(K) && /^\d/.test(K)) {
							var G = D.left,
							J = H.runtimeStyle.left;
							H.runtimeStyle.left = H.currentStyle.left;
							D.left = K || 0;
							K = D.pixelLeft + "px";
							D.left = G;
							H.runtimeStyle.left = J
						}
					}
				}
			}
			return K
		},
		clean: function(E, J, H) {
			J = J || document;
			if (typeof J.createElement === "undefined") {
				J = J.ownerDocument || J[0] && J[0].ownerDocument || document
			}
			if (!H && E.length === 1 && typeof E[0] === "string") {
				var G = /^<(\w+)\s*\/?>$/.exec(E[0]);
				if (G) {
					return [J.createElement(G[1])]
				}
			}
			var F = [],
			D = [],
			K = J.createElement("div");
			n.each(E,
			function(O, Q) {
				if (typeof Q === "number") {
					Q += ""
				}
				if (!Q) {
					return
				}
				if (typeof Q === "string") {
					Q = Q.replace(/(<(\w+)[^>]*?)\/>/g,
					function(S, T, R) {
						return R.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? S: T + "></" + R + ">"
					});
					var N = n.trim(Q).toLowerCase();
					var P = !N.indexOf("<opt") && [1, "<select multiple='multiple'>", "</select>"] || !N.indexOf("<leg") && [1, "<fieldset>", "</fieldset>"] || N.match(/^<(thead|tbody|tfoot|colg|cap)/) && [1, "<table>", "</table>"] || !N.indexOf("<tr") && [2, "<table><tbody>", "</tbody></table>"] || (!N.indexOf("<td") || !N.indexOf("<th")) && [3, "<table><tbody><tr>", "</tr></tbody></table>"] || !N.indexOf("<col") && [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"] || !n.support.htmlSerialize && [1, "div<div>", "</div>"] || [0, "", ""];
					K.innerHTML = P[1] + Q + P[2];
					while (P[0]--) {
						K = K.lastChild
					}
					if (!n.support.tbody) {
						var M = !N.indexOf("<table") && N.indexOf("<tbody") < 0 ? K.firstChild && K.firstChild.childNodes: P[1] == "<table>" && N.indexOf("<tbody") < 0 ? K.childNodes: [];
						for (var L = M.length - 1; L >= 0; --L) {
							if (n.nodeName(M[L], "tbody") && !M[L].childNodes.length) {
								M[L].parentNode.removeChild(M[L])
							}
						}
					}
					if (!n.support.leadingWhitespace && /^\s/.test(Q)) {
						K.insertBefore(J.createTextNode(Q.match(/^\s*/)[0]), K.firstChild)
					}
					Q = n.makeArray(K.childNodes)
				}
				if (Q.nodeType) {
					F.push(Q)
				} else {
					F = n.merge(F, Q)
				}
			});
			if (H) {
				for (var I = 0; F[I]; I++) {
					if (n.nodeName(F[I], "script") && (!F[I].type || F[I].type.toLowerCase() === "text/javascript")) {
						D.push(F[I].parentNode ? F[I].parentNode.removeChild(F[I]) : F[I])
					} else {
						if (F[I].nodeType === 1) {
							F.splice.apply(F, [I + 1, 0].concat(n.makeArray(F[I].getElementsByTagName("script"))))
						}
						H.appendChild(F[I])
					}
				}
				return D
			}
			return F
		},
		attr: function(I, F, J) {
			if (!I || I.nodeType == 3 || I.nodeType == 8) {
				return g
			}
			var G = !n.isXMLDoc(I),
			K = J !== g;
			F = G && n.props[F] || F;
			if (I.tagName) {
				var E = /href|src|style/.test(F);
				if (F == "selected" && I.parentNode) {
					I.parentNode.selectedIndex
				}
				if (F in I && G && !E) {
					if (K) {
						if (F == "type" && n.nodeName(I, "input") && I.parentNode) {
							throw "type property can't be changed"
						}
						I[F] = J
					}
					if (n.nodeName(I, "form") && I.getAttributeNode(F)) {
						return I.getAttributeNode(F).nodeValue
					}
					if (F == "tabIndex") {
						var H = I.getAttributeNode("tabIndex");
						return H && H.specified ? H.value: I.nodeName.match(/^(a|area|button|input|object|select|textarea)$/i) ? 0 : g
					}
					return I[F]
				}
				if (!n.support.style && G && F == "style") {
					return n.attr(I.style, "cssText", J)
				}
				if (K) {
					I.setAttribute(F, "" + J)
				}
				var D = !n.support.hrefNormalized && G && E ? I.getAttribute(F, 2) : I.getAttribute(F);
				return D === null ? g: D
			}
			if (!n.support.opacity && F == "opacity") {
				if (K) {
					I.zoom = 1;
					I.filter = (I.filter || "").replace(/alpha\([^)]*\)/, "") + (parseInt(J) + "" == "NaN" ? "": "alpha(opacity=" + J * 100 + ")")
				}
				return I.filter && I.filter.indexOf("opacity=") >= 0 ? (parseFloat(I.filter.match(/opacity=([^)]*)/)[1]) / 100) + "": ""
			}
			F = F.replace(/-([a-z])/ig,
			function(L, M) {
				return M.toUpperCase()
			});
			if (K) {
				I[F] = J
			}
			return I[F]
		},
		trim: function(D) {
			return (D || "").replace(/^\s+|\s+$/g, "")
		},
		makeArray: function(F) {
			var D = [];
			if (F != null) {
				var E = F.length;
				if (E == null || typeof F === "string" || n.isFunction(F) || F.setInterval) {
					D[0] = F
				} else {
					while (E) {
						D[--E] = F[E]
					}
				}
			}
			return D
		},
		inArray: function(F, G) {
			for (var D = 0, E = G.length; D < E; D++) {
				if (G[D] === F) {
					return D
				}
			}
			return - 1
		},
		merge: function(G, D) {
			var E = 0,
			F, H = G.length;
			if (!n.support.getAll) {
				while ((F = D[E++]) != null) {
					if (F.nodeType != 8) {
						G[H++] = F
					}
				}
			} else {
				while ((F = D[E++]) != null) {
					G[H++] = F
				}
			}
			return G
		},
		unique: function(J) {
			var E = [],
			D = {};
			try {
				for (var F = 0, G = J.length; F < G; F++) {
					var I = n.data(J[F]);
					if (!D[I]) {
						D[I] = true;
						E.push(J[F])
					}
				}
			} catch(H) {
				E = J
			}
			return E
		},
		grep: function(E, I, D) {
			var F = [];
			for (var G = 0, H = E.length; G < H; G++) {
				if (!D != !I(E[G], G)) {
					F.push(E[G])
				}
			}
			return F
		},
		map: function(D, I) {
			var E = [];
			for (var F = 0, G = D.length; F < G; F++) {
				var H = I(D[F], F);
				if (H != null) {
					E[E.length] = H
				}
			}
			return E.concat.apply([], E)
		}
	});
	var B = navigator.userAgent.toLowerCase();
	n.browser = {
		version: (B.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [0, "0"])[1],
		safari: /webkit/.test(B),
		opera: /opera/.test(B),
		msie: /msie/.test(B) && !/opera/.test(B),
		mozilla: /mozilla/.test(B) && !/(compatible|webkit)/.test(B)
	};
	n.each({
		parent: function(D) {
			return D.parentNode
		},
		parents: function(D) {
			return n.dir(D, "parentNode")
		},
		next: function(D) {
			return n.nth(D, 2, "nextSibling")
		},
		prev: function(D) {
			return n.nth(D, 2, "previousSibling")
		},
		nextAll: function(D) {
			return n.dir(D, "nextSibling")
		},
		prevAll: function(D) {
			return n.dir(D, "previousSibling")
		},
		siblings: function(D) {
			return n.sibling(D.parentNode.firstChild, D)
		},
		children: function(D) {
			return n.sibling(D.firstChild)
		},
		contents: function(D) {
			return n.nodeName(D, "iframe") ? D.contentDocument || D.contentWindow.document: n.makeArray(D.childNodes)
		}
	},
	function(D, E) {
		n.fn[D] = function(F) {
			var G = n.map(this, E);
			if (F && typeof F == "string") {
				G = n.multiFilter(F, G)
			}
			return this.pushStack(n.unique(G), D, F)
		}
	});
	n.each({
		appendTo: "append",
		prependTo: "prepend",
		insertBefore: "before",
		insertAfter: "after",
		replaceAll: "replaceWith"
	},
	function(D, E) {
		n.fn[D] = function() {
			var F = arguments;
			return this.each(function() {
				for (var G = 0, H = F.length; G < H; G++) {
					n(F[G])[E](this)
				}
			})
		}
	});
	n.each({
		removeAttr: function(D) {
			n.attr(this, D, "");
			if (this.nodeType == 1) {
				this.removeAttribute(D)
			}
		},
		addClass: function(D) {
			n.className.add(this, D)
		},
		removeClass: function(D) {
			n.className.remove(this, D)
		},
		toggleClass: function(E, D) {
			if (typeof D !== "boolean") {
				D = !n.className.has(this, E)
			}
			n.className[D ? "add": "remove"](this, E)
		},
		remove: function(D) {
			if (!D || n.filter(D, [this]).length) {
				n("*", this).add([this]).each(function() {
					n.event.remove(this);
					n.removeData(this)
				});
				if (this.parentNode) {
					this.parentNode.removeChild(this)
				}
			}
		},
		empty: function() {
			n(">*", this).remove();
			while (this.firstChild) {
				this.removeChild(this.firstChild)
			}
		}
	},
	function(D, E) {
		n.fn[D] = function() {
			return this.each(E, arguments)
		}
	});
	function j(D, E) {
		return D[0] && parseInt(n.curCSS(D[0], E, true), 10) || 0
	}
	var h = "jQuery" + e(),
	u = 0,
	z = {};
	n.extend({
		cache: {},
		data: function(E, D, F) {
			E = E == l ? z: E;
			var G = E[h];
			if (!G) {
				G = E[h] = ++u
			}
			if (D && !n.cache[G]) {
				n.cache[G] = {}
			}
			if (F !== g) {
				n.cache[G][D] = F
			}
			return D ? n.cache[G][D] : G
		},
		removeData: function(E, D) {
			E = E == l ? z: E;
			var G = E[h];
			if (D) {
				if (n.cache[G]) {
					delete n.cache[G][D];
					D = "";
					for (D in n.cache[G]) {
						break
					}
					if (!D) {
						n.removeData(E)
					}
				}
			} else {
				try {
					delete E[h]
				} catch(F) {
					if (E.removeAttribute) {
						E.removeAttribute(h)
					}
				}
				delete n.cache[G]
			}
		},
		queue: function(E, D, G) {
			if (E) {
				D = (D || "fx") + "queue";
				var F = n.data(E, D);
				if (!F || n.isArray(G)) {
					F = n.data(E, D, n.makeArray(G))
				} else {
					if (G) {
						F.push(G)
					}
				}
			}
			return F
		},
		dequeue: function(G, F) {
			var D = n.queue(G, F),
			E = D.shift();
			if (!F || F === "fx") {
				E = D[0]
			}
			if (E !== g) {
				E.call(G)
			}
		}
	});
	n.fn.extend({
		data: function(D, F) {
			var G = D.split(".");
			G[1] = G[1] ? "." + G[1] : "";
			if (F === g) {
				var E = this.triggerHandler("getData" + G[1] + "!", [G[0]]);
				if (E === g && this.length) {
					E = n.data(this[0], D)
				}
				return E === g && G[1] ? this.data(G[0]) : E
			} else {
				return this.trigger("setData" + G[1] + "!", [G[0], F]).each(function() {
					n.data(this, D, F)
				})
			}
		},
		removeData: function(D) {
			return this.each(function() {
				n.removeData(this, D)
			})
		},
		queue: function(D, E) {
			if (typeof D !== "string") {
				E = D;
				D = "fx"
			}
			if (E === g) {
				return n.queue(this[0], D)
			}
			return this.each(function() {
				var F = n.queue(this, D, E);
				if (D == "fx" && F.length == 1) {
					F[0].call(this)
				}
			})
		},
		dequeue: function(D) {
			return this.each(function() {
				n.dequeue(this, D)
			})
		}
	});
	/*
 * Sizzle CSS Selector Engine - v0.9.1
 *  Copyright 2009, The Dojo Foundation
 *  Released under the MIT, BSD, and GPL Licenses.
 *  More information: http://sizzlejs.com/
 */
	(function() {
		var N = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|[^[\]]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,
		I = 0,
		F = Object.prototype.toString;
		var E = function(ae, S, aa, V) {
			aa = aa || [];
			S = S || document;
			if (S.nodeType !== 1 && S.nodeType !== 9) {
				return []
			}
			if (!ae || typeof ae !== "string") {
				return aa
			}
			var ab = [],
			ac,
			Y,
			ah,
			ag,
			Z,
			R,
			Q = true;
			N.lastIndex = 0;
			while ((ac = N.exec(ae)) !== null) {
				ab.push(ac[1]);
				if (ac[2]) {
					R = RegExp.rightContext;
					break
				}
			}
			if (ab.length > 1 && G.match.POS.exec(ae)) {
				if (ab.length === 2 && G.relative[ab[0]]) {
					var U = "",
					X;
					while ((X = G.match.POS.exec(ae))) {
						U += X[0];
						ae = ae.replace(G.match.POS, "")
					}
					Y = E.filter(U, E(/\s$/.test(ae) ? ae + "*": ae, S))
				} else {
					Y = G.relative[ab[0]] ? [S] : E(ab.shift(), S);
					while (ab.length) {
						var P = [];
						ae = ab.shift();
						if (G.relative[ae]) {
							ae += ab.shift()
						}
						for (var af = 0, ad = Y.length; af < ad; af++) {
							E(ae, Y[af], P)
						}
						Y = P
					}
				}
			} else {
				var ai = V ? {
					expr: ab.pop(),
					set: D(V)
				}: E.find(ab.pop(), ab.length === 1 && S.parentNode ? S.parentNode: S);
				Y = E.filter(ai.expr, ai.set);
				if (ab.length > 0) {
					ah = D(Y)
				} else {
					Q = false
				}
				while (ab.length) {
					var T = ab.pop(),
					W = T;
					if (!G.relative[T]) {
						T = ""
					} else {
						W = ab.pop()
					}
					if (W == null) {
						W = S
					}
					G.relative[T](ah, W, M(S))
				}
			}
			if (!ah) {
				ah = Y
			}
			if (!ah) {
				throw "Syntax error, unrecognized expression: " + (T || ae)
			}
			if (F.call(ah) === "[object Array]") {
				if (!Q) {
					aa.push.apply(aa, ah)
				} else {
					if (S.nodeType === 1) {
						for (var af = 0; ah[af] != null; af++) {
							if (ah[af] && (ah[af] === true || ah[af].nodeType === 1 && H(S, ah[af]))) {
								aa.push(Y[af])
							}
						}
					} else {
						for (var af = 0; ah[af] != null; af++) {
							if (ah[af] && ah[af].nodeType === 1) {
								aa.push(Y[af])
							}
						}
					}
				}
			} else {
				D(ah, aa)
			}
			if (R) {
				E(R, S, aa, V)
			}
			return aa
		};
		E.matches = function(P, Q) {
			return E(P, null, null, Q)
		};
		E.find = function(V, S) {
			var W, Q;
			if (!V) {
				return []
			}
			for (var R = 0, P = G.order.length; R < P; R++) {
				var T = G.order[R],
				Q;
				if ((Q = G.match[T].exec(V))) {
					var U = RegExp.leftContext;
					if (U.substr(U.length - 1) !== "\\") {
						Q[1] = (Q[1] || "").replace(/\\/g, "");
						W = G.find[T](Q, S);
						if (W != null) {
							V = V.replace(G.match[T], "");
							break
						}
					}
				}
			}
			if (!W) {
				W = S.getElementsByTagName("*")
			}
			return {
				set: W,
				expr: V
			}
		};
		E.filter = function(S, ac, ad, T) {
			var Q = S,
			Y = [],
			ah = ac,
			V,
			ab;
			while (S && ac.length) {
				for (var U in G.filter) {
					if ((V = G.match[U].exec(S)) != null) {
						var Z = G.filter[U],
						R = null,
						X = 0,
						aa,
						ag;
						ab = false;
						if (ah == Y) {
							Y = []
						}
						if (G.preFilter[U]) {
							V = G.preFilter[U](V, ah, ad, Y, T);
							if (!V) {
								ab = aa = true
							} else {
								if (V === true) {
									continue
								} else {
									if (V[0] === true) {
										R = [];
										var W = null,
										af;
										for (var ae = 0;
										(af = ah[ae]) !== g; ae++) {
											if (af && W !== af) {
												R.push(af);
												W = af
											}
										}
									}
								}
							}
						}
						if (V) {
							for (var ae = 0;
							(ag = ah[ae]) !== g; ae++) {
								if (ag) {
									if (R && ag != R[X]) {
										X++
									}
									aa = Z(ag, V, X, R);
									var P = T ^ !!aa;
									if (ad && aa != null) {
										if (P) {
											ab = true
										} else {
											ah[ae] = false
										}
									} else {
										if (P) {
											Y.push(ag);
											ab = true
										}
									}
								}
							}
						}
						if (aa !== g) {
							if (!ad) {
								ah = Y
							}
							S = S.replace(G.match[U], "");
							if (!ab) {
								return []
							}
							break
						}
					}
				}
				S = S.replace(/\s*,\s*/, "");
				if (S == Q) {
					if (ab == null) {
						throw "Syntax error, unrecognized expression: " + S
					} else {
						break
					}
				}
				Q = S
			}
			return ah
		};
		var G = E.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(P) {
					return P.getAttribute("href")
				}
			},
			relative: {
				"+": function(T, Q) {
					for (var R = 0, P = T.length; R < P; R++) {
						var S = T[R];
						if (S) {
							var U = S.previousSibling;
							while (U && U.nodeType !== 1) {
								U = U.previousSibling
							}
							T[R] = typeof Q === "string" ? U || false: U === Q
						}
					}
					if (typeof Q === "string") {
						E.filter(Q, T, true)
					}
				},
				">": function(U, Q, V) {
					if (typeof Q === "string" && !/\W/.test(Q)) {
						Q = V ? Q: Q.toUpperCase();
						for (var R = 0, P = U.length; R < P; R++) {
							var T = U[R];
							if (T) {
								var S = T.parentNode;
								U[R] = S.nodeName === Q ? S: false
							}
						}
					} else {
						for (var R = 0, P = U.length; R < P; R++) {
							var T = U[R];
							if (T) {
								U[R] = typeof Q === "string" ? T.parentNode: T.parentNode === Q
							}
						}
						if (typeof Q === "string") {
							E.filter(Q, U, true)
						}
					}
				},
				"": function(S, Q, U) {
					var R = "done" + (I++),
					P = O;
					if (!Q.match(/\W/)) {
						var T = Q = U ? Q: Q.toUpperCase();
						P = L
					}
					P("parentNode", Q, R, S, T, U)
				},
				"~": function(S, Q, U) {
					var R = "done" + (I++),
					P = O;
					if (typeof Q === "string" && !Q.match(/\W/)) {
						var T = Q = U ? Q: Q.toUpperCase();
						P = L
					}
					P("previousSibling", Q, R, S, T, U)
				}
			},
			find: {
				ID: function(Q, R) {
					if (R.getElementById) {
						var P = R.getElementById(Q[1]);
						return P ? [P] : []
					}
				},
				NAME: function(P, Q) {
					return Q.getElementsByName ? Q.getElementsByName(P[1]) : null
				},
				TAG: function(P, Q) {
					return Q.getElementsByTagName(P[1])
				}
			},
			preFilter: {
				CLASS: function(S, Q, R, P, U) {
					S = " " + S[1].replace(/\\/g, "") + " ";
					for (var T = 0; Q[T]; T++) {
						if (U ^ (" " + Q[T].className + " ").indexOf(S) >= 0) {
							if (!R) {
								P.push(Q[T])
							}
						} else {
							if (R) {
								Q[T] = false
							}
						}
					}
					return false
				},
				ID: function(P) {
					return P[1].replace(/\\/g, "")
				},
				TAG: function(Q, P) {
					for (var R = 0; ! P[R]; R++) {}
					return M(P[R]) ? Q[1] : Q[1].toUpperCase()
				},
				CHILD: function(P) {
					if (P[1] == "nth") {
						var Q = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(P[2] == "even" && "2n" || P[2] == "odd" && "2n+1" || !/\D/.test(P[2]) && "0n+" + P[2] || P[2]);
						P[2] = (Q[1] + (Q[2] || 1)) - 0;
						P[3] = Q[3] - 0
					}
					P[0] = "done" + (I++);
					return P
				},
				ATTR: function(Q) {
					var P = Q[1];
					if (G.attrMap[P]) {
						Q[1] = G.attrMap[P]
					}
					if (Q[2] === "~=") {
						Q[4] = " " + Q[4] + " "
					}
					return Q
				},
				PSEUDO: function(T, Q, R, P, U) {
					if (T[1] === "not") {
						if (T[3].match(N).length > 1) {
							T[3] = E(T[3], null, null, Q)
						} else {
							var S = E.filter(T[3], Q, R, true ^ U);
							if (!R) {
								P.push.apply(P, S)
							}
							return false
						}
					} else {
						if (G.match.POS.test(T[0])) {
							return true
						}
					}
					return T
				},
				POS: function(P) {
					P.unshift(true);
					return P
				}
			},
			filters: {
				enabled: function(P) {
					return P.disabled === false && P.type !== "hidden"
				},
				disabled: function(P) {
					return P.disabled === true
				},
				checked: function(P) {
					return P.checked === true
				},
				selected: function(P) {
					P.parentNode.selectedIndex;
					return P.selected === true
				},
				parent: function(P) {
					return !! P.firstChild
				},
				empty: function(P) {
					return ! P.firstChild
				},
				has: function(R, Q, P) {
					return !! E(P[3], R).length
				},
				header: function(P) {
					return /h\d/i.test(P.nodeName)
				},
				text: function(P) {
					return "text" === P.type
				},
				radio: function(P) {
					return "radio" === P.type
				},
				checkbox: function(P) {
					return "checkbox" === P.type
				},
				file: function(P) {
					return "file" === P.type
				},
				password: function(P) {
					return "password" === P.type
				},
				submit: function(P) {
					return "submit" === P.type
				},
				image: function(P) {
					return "image" === P.type
				},
				reset: function(P) {
					return "reset" === P.type
				},
				button: function(P) {
					return "button" === P.type || P.nodeName.toUpperCase() === "BUTTON"
				},
				input: function(P) {
					return /input|select|textarea|button/i.test(P.nodeName)
				}
			},
			setFilters: {
				first: function(Q, P) {
					return P === 0
				},
				last: function(R, Q, P, S) {
					return Q === S.length - 1
				},
				even: function(Q, P) {
					return P % 2 === 0
				},
				odd: function(Q, P) {
					return P % 2 === 1
				},
				lt: function(R, Q, P) {
					return Q < P[3] - 0
				},
				gt: function(R, Q, P) {
					return Q > P[3] - 0
				},
				nth: function(R, Q, P) {
					return P[3] - 0 == Q
				},
				eq: function(R, Q, P) {
					return P[3] - 0 == Q
				}
			},
			filter: {
				CHILD: function(P, S) {
					var V = S[1],
					W = P.parentNode;
					var U = "child" + W.childNodes.length;
					if (W && (!W[U] || !P.nodeIndex)) {
						var T = 1;
						for (var Q = W.firstChild; Q; Q = Q.nextSibling) {
							if (Q.nodeType == 1) {
								Q.nodeIndex = T++
							}
						}
						W[U] = T - 1
					}
					if (V == "first") {
						return P.nodeIndex == 1
					} else {
						if (V == "last") {
							return P.nodeIndex == W[U]
						} else {
							if (V == "only") {
								return W[U] == 1
							} else {
								if (V == "nth") {
									var Y = false,
									R = S[2],
									X = S[3];
									if (R == 1 && X == 0) {
										return true
									}
									if (R == 0) {
										if (P.nodeIndex == X) {
											Y = true
										}
									} else {
										if ((P.nodeIndex - X) % R == 0 && (P.nodeIndex - X) / R >= 0) {
											Y = true
										}
									}
									return Y
								}
							}
						}
					}
				},
				PSEUDO: function(V, R, S, W) {
					var Q = R[1],
					T = G.filters[Q];
					if (T) {
						return T(V, S, R, W)
					} else {
						if (Q === "contains") {
							return (V.textContent || V.innerText || "").indexOf(R[3]) >= 0
						} else {
							if (Q === "not") {
								var U = R[3];
								for (var S = 0, P = U.length; S < P; S++) {
									if (U[S] === V) {
										return false
									}
								}
								return true
							}
						}
					}
				},
				ID: function(Q, P) {
					return Q.nodeType === 1 && Q.getAttribute("id") === P
				},
				TAG: function(Q, P) {
					return (P === "*" && Q.nodeType === 1) || Q.nodeName === P
				},
				CLASS: function(Q, P) {
					return P.test(Q.className)
				},
				ATTR: function(T, R) {
					var P = G.attrHandle[R[1]] ? G.attrHandle[R[1]](T) : T[R[1]] || T.getAttribute(R[1]),
					U = P + "",
					S = R[2],
					Q = R[4];
					return P == null ? false: S === "=" ? U === Q: S === "*=" ? U.indexOf(Q) >= 0 : S === "~=" ? (" " + U + " ").indexOf(Q) >= 0 : !R[4] ? P: S === "!=" ? U != Q: S === "^=" ? U.indexOf(Q) === 0 : S === "$=" ? U.substr(U.length - Q.length) === Q: S === "|=" ? U === Q || U.substr(0, Q.length + 1) === Q + "-": false
				},
				POS: function(T, Q, R, U) {
					var P = Q[2],
					S = G.setFilters[P];
					if (S) {
						return S(T, R, Q, U)
					}
				}
			}
		};
		for (var K in G.match) {
			G.match[K] = RegExp(G.match[K].source + /(?![^\[]*\])(?![^\(]*\))/.source)
		}
		var D = function(Q, P) {
			Q = Array.prototype.slice.call(Q);
			if (P) {
				P.push.apply(P, Q);
				return P
			}
			return Q
		};
		try {
			Array.prototype.slice.call(document.documentElement.childNodes)
		} catch(J) {
			D = function(T, S) {
				var Q = S || [];
				if (F.call(T) === "[object Array]") {
					Array.prototype.push.apply(Q, T)
				} else {
					if (typeof T.length === "number") {
						for (var R = 0, P = T.length; R < P; R++) {
							Q.push(T[R])
						}
					} else {
						for (var R = 0; T[R]; R++) {
							Q.push(T[R])
						}
					}
				}
				return Q
			}
		} (function() {
			var Q = document.createElement("form"),
			R = "script" + (new Date).getTime();
			Q.innerHTML = "<input name='" + R + "'/>";
			var P = document.documentElement;
			P.insertBefore(Q, P.firstChild);
			if ( !! document.getElementById(R)) {
				G.find.ID = function(T, U) {
					if (U.getElementById) {
						var S = U.getElementById(T[1]);
						return S ? S.id === T[1] || S.getAttributeNode && S.getAttributeNode("id").nodeValue === T[1] ? [S] : g: []
					}
				};
				G.filter.ID = function(U, S) {
					var T = U.getAttributeNode && U.getAttributeNode("id");
					return U.nodeType === 1 && T && T.nodeValue === S
				}
			}
			P.removeChild(Q)
		})();
		(function() {
			var P = document.createElement("div");
			P.appendChild(document.createComment(""));
			if (P.getElementsByTagName("*").length > 0) {
				G.find.TAG = function(Q, U) {
					var T = U.getElementsByTagName(Q[1]);
					if (Q[1] === "*") {
						var S = [];
						for (var R = 0; T[R]; R++) {
							if (T[R].nodeType === 1) {
								S.push(T[R])
							}
						}
						T = S
					}
					return T
				}
			}
			P.innerHTML = "<a href='#'></a>";
			if (P.firstChild.getAttribute("href") !== "#") {
				G.attrHandle.href = function(Q) {
					return Q.getAttribute("href", 2)
				}
			}
		})();
		if (document.querySelectorAll) { (function() {
				var P = E;
				E = function(T, S, Q, R) {
					S = S || document;
					if (!R && S.nodeType === 9) {
						try {
							return D(S.querySelectorAll(T), Q)
						} catch(U) {}
					}
					return P(T, S, Q, R)
				};
				E.find = P.find;
				E.filter = P.filter;
				E.selectors = P.selectors;
				E.matches = P.matches
			})()
		}
		if (document.documentElement.getElementsByClassName) {
			G.order.splice(1, 0, "CLASS");
			G.find.CLASS = function(P, Q) {
				return Q.getElementsByClassName(P[1])
			}
		}
		function L(Q, W, V, Z, X, Y) {
			for (var T = 0, R = Z.length; T < R; T++) {
				var P = Z[T];
				if (P) {
					P = P[Q];
					var U = false;
					while (P && P.nodeType) {
						var S = P[V];
						if (S) {
							U = Z[S];
							break
						}
						if (P.nodeType === 1 && !Y) {
							P[V] = T
						}
						if (P.nodeName === W) {
							U = P;
							break
						}
						P = P[Q]
					}
					Z[T] = U
				}
			}
		}
		function O(Q, V, U, Y, W, X) {
			for (var S = 0, R = Y.length; S < R; S++) {
				var P = Y[S];
				if (P) {
					P = P[Q];
					var T = false;
					while (P && P.nodeType) {
						if (P[U]) {
							T = Y[P[U]];
							break
						}
						if (P.nodeType === 1) {
							if (!X) {
								P[U] = S
							}
							if (typeof V !== "string") {
								if (P === V) {
									T = true;
									break
								}
							} else {
								if (E.filter(V, [P]).length > 0) {
									T = P;
									break
								}
							}
						}
						P = P[Q]
					}
					Y[S] = T
				}
			}
		}
		var H = document.compareDocumentPosition ?
		function(Q, P) {
			return Q.compareDocumentPosition(P) & 16
		}: function(Q, P) {
			return Q !== P && (Q.contains ? Q.contains(P) : true)
		};
		var M = function(P) {
			return P.documentElement && !P.body || P.tagName && P.ownerDocument && !P.ownerDocument.body
		};
		n.find = E;
		n.filter = E.filter;
		n.expr = E.selectors;
		n.expr[":"] = n.expr.filters;
		E.selectors.filters.hidden = function(P) {
			return "hidden" === P.type || n.css(P, "display") === "none" || n.css(P, "visibility") === "hidden"
		};
		E.selectors.filters.visible = function(P) {
			return "hidden" !== P.type && n.css(P, "display") !== "none" && n.css(P, "visibility") !== "hidden"
		};
		E.selectors.filters.animated = function(P) {
			return n.grep(n.timers,
			function(Q) {
				return P === Q.elem
			}).length
		};
		n.multiFilter = function(R, P, Q) {
			if (Q) {
				R = ":not(" + R + ")"
			}
			return E.matches(R, P)
		};
		n.dir = function(R, Q) {
			var P = [],
			S = R[Q];
			while (S && S != document) {
				if (S.nodeType == 1) {
					P.push(S)
				}
				S = S[Q]
			}
			return P
		};
		n.nth = function(T, P, R, S) {
			P = P || 1;
			var Q = 0;
			for (; T; T = T[R]) {
				if (T.nodeType == 1 && ++Q == P) {
					break
				}
			}
			return T
		};
		n.sibling = function(R, Q) {
			var P = [];
			for (; R; R = R.nextSibling) {
				if (R.nodeType == 1 && R != Q) {
					P.push(R)
				}
			}
			return P
		};
		return;
		l.Sizzle = E
	})();
	n.event = {
		add: function(H, E, G, J) {
			if (H.nodeType == 3 || H.nodeType == 8) {
				return
			}
			if (H.setInterval && H != l) {
				H = l
			}
			if (!G.guid) {
				G.guid = this.guid++
			}
			if (J !== g) {
				var F = G;
				G = this.proxy(F);
				G.data = J
			}
			var D = n.data(H, "events") || n.data(H, "events", {}),
			I = n.data(H, "handle") || n.data(H, "handle",
			function() {
				return typeof n !== "undefined" && !n.event.triggered ? n.event.handle.apply(arguments.callee.elem, arguments) : g
			});
			I.elem = H;
			n.each(E.split(/\s+/),
			function(L, M) {
				var N = M.split(".");
				M = N.shift();
				G.type = N.slice().sort().join(".");
				var K = D[M];
				if (n.event.specialAll[M]) {
					n.event.specialAll[M].setup.call(H, J, N)
				}
				if (!K) {
					K = D[M] = {};
					if (!n.event.special[M] || n.event.special[M].setup.call(H, J, N) === false) {
						if (H.addEventListener) {
							H.addEventListener(M, I, false)
						} else {
							if (H.attachEvent) {
								H.attachEvent("on" + M, I)
							}
						}
					}
				}
				K[G.guid] = G;
				n.event.global[M] = true
			});
			H = null
		},
		guid: 1,
		global: {},
		remove: function(J, G, I) {
			if (J.nodeType == 3 || J.nodeType == 8) {
				return
			}
			var F = n.data(J, "events"),
			E,
			D;
			if (F) {
				if (G === g || (typeof G === "string" && G.charAt(0) == ".")) {
					for (var H in F) {
						this.remove(J, H + (G || ""))
					}
				} else {
					if (G.type) {
						I = G.handler;
						G = G.type
					}
					n.each(G.split(/\s+/),
					function(L, N) {
						var P = N.split(".");
						N = P.shift();
						var M = RegExp("(^|\\.)" + P.slice().sort().join(".*\\.") + "(\\.|$)");
						if (F[N]) {
							if (I) {
								delete F[N][I.guid]
							} else {
								for (var O in F[N]) {
									if (M.test(F[N][O].type)) {
										delete F[N][O]
									}
								}
							}
							if (n.event.specialAll[N]) {
								n.event.specialAll[N].teardown.call(J, P)
							}
							for (E in F[N]) {
								break
							}
							if (!E) {
								if (!n.event.special[N] || n.event.special[N].teardown.call(J, P) === false) {
									if (J.removeEventListener) {
										J.removeEventListener(N, n.data(J, "handle"), false)
									} else {
										if (J.detachEvent) {
											J.detachEvent("on" + N, n.data(J, "handle"))
										}
									}
								}
								E = null;
								delete F[N]
							}
						}
					})
				}
				for (E in F) {
					break
				}
				if (!E) {
					var K = n.data(J, "handle");
					if (K) {
						K.elem = null
					}
					n.removeData(J, "events");
					n.removeData(J, "handle")
				}
			}
		},
		trigger: function(H, J, G, D) {
			var F = H.type || H;
			if (!D) {
				H = typeof H === "object" ? H[h] ? H: n.extend(n.Event(F), H) : n.Event(F);
				if (F.indexOf("!") >= 0) {
					H.type = F = F.slice(0, -1);
					H.exclusive = true
				}
				if (!G) {
					H.stopPropagation();
					if (this.global[F]) {
						n.each(n.cache,
						function() {
							if (this.events && this.events[F]) {
								n.event.trigger(H, J, this.handle.elem)
							}
						})
					}
				}
				if (!G || G.nodeType == 3 || G.nodeType == 8) {
					return g
				}
				H.result = g;
				H.target = G;
				J = n.makeArray(J);
				J.unshift(H)
			}
			H.currentTarget = G;
			var I = n.data(G, "handle");
			if (I) {
				I.apply(G, J)
			}
			if ((!G[F] || (n.nodeName(G, "a") && F == "click")) && G["on" + F] && G["on" + F].apply(G, J) === false) {
				H.result = false
			}
			if (!D && G[F] && !H.isDefaultPrevented() && !(n.nodeName(G, "a") && F == "click")) {
				this.triggered = true;
				try {
					G[F]()
				} catch(K) {}
			}
			this.triggered = false;
			if (!H.isPropagationStopped()) {
				var E = G.parentNode || G.ownerDocument;
				if (E) {
					n.event.trigger(H, J, E, true)
				}
			}
		},
		handle: function(J) {
			var I, D;
			J = arguments[0] = n.event.fix(J || l.event);
			var K = J.type.split(".");
			J.type = K.shift();
			I = !K.length && !J.exclusive;
			var H = RegExp("(^|\\.)" + K.slice().sort().join(".*\\.") + "(\\.|$)");
			D = (n.data(this, "events") || {})[J.type];
			for (var F in D) {
				var G = D[F];
				if (I || H.test(G.type)) {
					J.handler = G;
					J.data = G.data;
					var E = G.apply(this, arguments);
					if (E !== g) {
						J.result = E;
						if (E === false) {
							J.preventDefault();
							J.stopPropagation()
						}
					}
					if (J.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(G) {
			if (G[h]) {
				return G
			}
			var E = G;
			G = n.Event(E);
			for (var F = this.props.length, I; F;) {
				I = this.props[--F];
				G[I] = E[I]
			}
			if (!G.target) {
				G.target = G.srcElement || document
			}
			if (G.target.nodeType == 3) {
				G.target = G.target.parentNode
			}
			if (!G.relatedTarget && G.fromElement) {
				G.relatedTarget = G.fromElement == G.target ? G.toElement: G.fromElement
			}
			if (G.pageX == null && G.clientX != null) {
				var H = document.documentElement,
				D = document.body;
				G.pageX = G.clientX + (H && H.scrollLeft || D && D.scrollLeft || 0) - (H.clientLeft || 0);
				G.pageY = G.clientY + (H && H.scrollTop || D && D.scrollTop || 0) - (H.clientTop || 0)
			}
			if (!G.which && ((G.charCode || G.charCode === 0) ? G.charCode: G.keyCode)) {
				G.which = G.charCode || G.keyCode
			}
			if (!G.metaKey && G.ctrlKey) {
				G.metaKey = G.ctrlKey
			}
			if (!G.which && G.button) {
				G.which = (G.button & 1 ? 1 : (G.button & 2 ? 3 : (G.button & 4 ? 2 : 0)))
			}
			return G
		},
		proxy: function(E, D) {
			D = D ||
			function() {
				return E.apply(this, arguments)
			};
			D.guid = E.guid = E.guid || D.guid || this.guid++;
			return D
		},
		special: {
			ready: {
				setup: A,
				teardown: function() {}
			}
		},
		specialAll: {
			live: {
				setup: function(D, E) {
					n.event.add(this, E[0], c)
				},
				teardown: function(F) {
					if (F.length) {
						var D = 0,
						E = RegExp("(^|\\.)" + F[0] + "(\\.|$)");
						n.each((n.data(this, "events").live || {}),
						function() {
							if (E.test(this.type)) {
								D++
							}
						});
						if (D < 1) {
							n.event.remove(this, F[0], c)
						}
					}
				}
			}
		}
	};
	n.Event = function(D) {
		if (!this.preventDefault) {
			return new n.Event(D)
		}
		if (D && D.type) {
			this.originalEvent = D;
			this.type = D.type;
			this.timeStamp = D.timeStamp
		} else {
			this.type = D
		}
		if (!this.timeStamp) {
			this.timeStamp = e()
		}
		this[h] = true
	};
	function k() {
		return false
	}
	function t() {
		return true
	}
	n.Event.prototype = {
		preventDefault: function() {
			this.isDefaultPrevented = t;
			var D = this.originalEvent;
			if (!D) {
				return
			}
			if (D.preventDefault) {
				D.preventDefault()
			}
			D.returnValue = false
		},
		stopPropagation: function() {
			this.isPropagationStopped = t;
			var D = this.originalEvent;
			if (!D) {
				return
			}
			if (D.stopPropagation) {
				D.stopPropagation()
			}
			D.cancelBubble = true
		},
		stopImmediatePropagation: function() {
			this.isImmediatePropagationStopped = t;
			this.stopPropagation()
		},
		isDefaultPrevented: k,
		isPropagationStopped: k,
		isImmediatePropagationStopped: k
	};
	var a = function(E) {
		var D = E.relatedTarget;
		while (D && D != this) {
			try {
				D = D.parentNode
			} catch(F) {
				D = this
			}
		}
		if (D != this) {
			E.type = E.data;
			n.event.handle.apply(this, arguments)
		}
	};
	n.each({
		mouseover: "mouseenter",
		mouseout: "mouseleave"
	},
	function(E, D) {
		n.event.special[D] = {
			setup: function() {
				n.event.add(this, E, a, D)
			},
			teardown: function() {
				n.event.remove(this, E, a)
			}
		}
	});
	n.fn.extend({
		bind: function(E, F, D) {
			return E == "unload" ? this.one(E, F, D) : this.each(function() {
				n.event.add(this, E, D || F, D && F)
			})
		},
		one: function(F, G, E) {
			var D = n.event.proxy(E || G,
			function(H) {
				n(this).unbind(H, D);
				return (E || G).apply(this, arguments)
			});
			return this.each(function() {
				n.event.add(this, F, D, E && G)
			})
		},
		unbind: function(E, D) {
			return this.each(function() {
				n.event.remove(this, E, D)
			})
		},
		trigger: function(D, E) {
			return this.each(function() {
				n.event.trigger(D, E, this)
			})
		},
		triggerHandler: function(D, F) {
			if (this[0]) {
				var E = n.Event(D);
				E.preventDefault();
				E.stopPropagation();
				n.event.trigger(E, F, this[0]);
				return E.result
			}
		},
		toggle: function(F) {
			var D = arguments,
			E = 1;
			while (E < D.length) {
				n.event.proxy(F, D[E++])
			}
			return this.click(n.event.proxy(F,
			function(G) {
				this.lastToggle = (this.lastToggle || 0) % E;
				G.preventDefault();
				return D[this.lastToggle++].apply(this, arguments) || false
			}))
		},
		hover: function(D, E) {
			return this.mouseenter(D).mouseleave(E)
		},
		ready: function(D) {
			A();
			if (n.isReady) {
				D.call(document, n)
			} else {
				n.readyList.push(D)
			}
			return this
		},
		live: function(F, E) {
			var D = n.event.proxy(E);
			D.guid += this.selector + F;
			n(document).bind(i(F, this.selector), this.selector, D);
			return this
		},
		die: function(E, D) {
			n(document).unbind(i(E, this.selector), D ? {
				guid: D.guid + this.selector + E
			}: null);
			return this
		}
	});
	function c(G) {
		var D = RegExp("(^|\\.)" + G.type + "(\\.|$)"),
		F = true,
		E = [];
		n.each(n.data(this, "events").live || [],
		function(H, I) {
			if (D.test(I.type)) {
				var J = n(G.target).closest(I.data)[0];
				if (J) {
					E.push({
						elem: J,
						fn: I
					})
				}
			}
		});
		n.each(E,
		function() {
			if (!G.isImmediatePropagationStopped() && this.fn.call(this.elem, G, this.fn.data) === false) {
				F = false
			}
		});
		return F
	}
	function i(E, D) {
		return ["live", E, D.replace(/\./g, "`").replace(/ /g, "|")].join(".")
	}
	n.extend({
		isReady: false,
		readyList: [],
		ready: function() {
			if (!n.isReady) {
				n.isReady = true;
				if (n.readyList) {
					n.each(n.readyList,
					function() {
						this.call(document, n)
					});
					n.readyList = null
				}
				n(document).triggerHandler("ready")
			}
		}
	});
	var w = false;
	function A() {
		if (w) {
			return
		}
		w = true;
		if (document.addEventListener) {
			document.addEventListener("DOMContentLoaded",
			function() {
				document.removeEventListener("DOMContentLoaded", arguments.callee, false);
				n.ready()
			},
			false)
		} else {
			if (document.attachEvent) {
				document.attachEvent("onreadystatechange",
				function() {
					if (document.readyState === "complete") {
						document.detachEvent("onreadystatechange", arguments.callee);
						n.ready()
					}
				});
				if (document.documentElement.doScroll && !l.frameElement) { (function() {
						if (n.isReady) {
							return
						}
						try {
							document.documentElement.doScroll("left")
						} catch(D) {
							setTimeout(arguments.callee, 0);
							return
						}
						n.ready()
					})()
				}
			}
		}
		n.event.add(l, "load", n.ready)
	}
	n.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(E, D) {
		n.fn[D] = function(F) {
			return F ? this.bind(D, F) : this.trigger(D)
		}
	});
	n(l).bind("unload",
	function() {
		for (var D in n.cache) {
			if (D != 1 && n.cache[D].handle) {
				n.event.remove(n.cache[D].handle.elem)
			}
		}
	});
	(function() {
		n.support = {};
		var E = document.documentElement,
		F = document.createElement("script"),
		J = document.createElement("div"),
		I = "script" + (new Date).getTime();
		J.style.display = "none";
		J.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 G = J.getElementsByTagName("*"),
		D = J.getElementsByTagName("a")[0];
		if (!G || !G.length || !D) {
			return
		}
		n.support = {
			leadingWhitespace: J.firstChild.nodeType == 3,
			tbody: !J.getElementsByTagName("tbody").length,
			objectAll: !!J.getElementsByTagName("object")[0].getElementsByTagName("*").length,
			htmlSerialize: !!J.getElementsByTagName("link").length,
			style: /red/.test(D.getAttribute("style")),
			hrefNormalized: D.getAttribute("href") === "/a",
			opacity: D.style.opacity === "0.5",
			cssFloat: !!D.style.cssFloat,
			scriptEval: false,
			noCloneEvent: true,
			boxModel: null
		};
		F.type = "text/javascript";
		try {
			F.appendChild(document.createTextNode("window." + I + "=1;"))
		} catch(H) {}
		E.insertBefore(F, E.firstChild);
		if (l[I]) {
			n.support.scriptEval = true;
			delete l[I]
		}
		E.removeChild(F);
		if (J.attachEvent && J.fireEvent) {
			J.attachEvent("onclick",
			function() {
				n.support.noCloneEvent = false;
				J.detachEvent("onclick", arguments.callee)
			});
			J.cloneNode(true).fireEvent("onclick")
		}
		n(function() {
			var K = document.createElement("div");
			K.style.width = "1px";
			K.style.paddingLeft = "1px";
			document.body.appendChild(K);
			n.boxModel = n.support.boxModel = K.offsetWidth === 2;
			document.body.removeChild(K)
		})
	})();
	var v = n.support.cssFloat ? "cssFloat": "styleFloat";
	n.props = {
		"for": "htmlFor",
		"class": "className",
		"float": v,
		cssFloat: v,
		styleFloat: v,
		readonly: "readOnly",
		maxlength: "maxLength",
		cellspacing: "cellSpacing",
		rowspan: "rowSpan",
		tabindex: "tabIndex"
	};
	n.fn.extend({
		_load: n.fn.load,
		load: function(F, I, J) {
			if (typeof F !== "string") {
				return this._load(F)
			}
			var H = F.indexOf(" ");
			if (H >= 0) {
				var D = F.slice(H, F.length);
				F = F.slice(0, H)
			}
			var G = "GET";
			if (I) {
				if (n.isFunction(I)) {
					J = I;
					I = null
				} else {
					if (typeof I === "object") {
						I = n.param(I);
						G = "POST"
					}
				}
			}
			var E = this;
			n.ajax({
				url: F,
				type: G,
				dataType: "html",
				data: I,
				complete: function(L, K) {
					if (K == "success" || K == "notmodified") {
						E.html(D ? n("<div/>").append(L.responseText.replace(/<script(.|\s)*?\/script>/g, "")).find(D) : L.responseText)
					}
					if (J) {
						E.each(J, [L.responseText, K, L])
					}
				}
			});
			return this
		},
		serialize: function() {
			return n.param(this.serializeArray())
		},
		serializeArray: function() {
			return this.map(function() {
				return this.elements ? n.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(D, E) {
				var F = n(this).val();
				return F == null ? null: n.isArray(F) ? n.map(F,
				function(H, G) {
					return {
						name: E.name,
						value: H
					}
				}) : {
					name: E.name,
					value: F
				}
			}).get()
		}
	});
	n.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),
	function(D, E) {
		n.fn[E] = function(F) {
			return this.bind(E, F)
		}
	});
	var q = e();
	n.extend({
		get: function(D, F, G, E) {
			if (n.isFunction(F)) {
				G = F;
				F = null
			}
			return n.ajax({
				type: "GET",
				url: D,
				data: F,
				success: G,
				dataType: E
			})
		},
		getScript: function(D, E) {
			return n.get(D, null, E, "script")
		},
		getJSON: function(D, E, F) {
			return n.get(D, E, F, "json")
		},
		post: function(D, F, G, E) {
			if (n.isFunction(F)) {
				G = F;
				F = {}
			}
			return n.ajax({
				type: "POST",
				url: D,
				data: F,
				success: G,
				dataType: E
			})
		},
		ajaxSetup: function(D) {
			n.extend(n.ajaxSettings, D)
		},
		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(L) {
			L = n.extend(true, L, n.extend(true, {},
			n.ajaxSettings, L));
			var V, E = /=\?(&|$)/g,
			Q, U, F = L.type.toUpperCase();
			if (L.data && L.processData && typeof L.data !== "string") {
				L.data = n.param(L.data)
			}
			if (L.dataType == "jsonp") {
				if (F == "GET") {
					if (!L.url.match(E)) {
						L.url += (L.url.match(/\?/) ? "&": "?") + (L.jsonp || "callback") + "=?"
					}
				} else {
					if (!L.data || !L.data.match(E)) {
						L.data = (L.data ? L.data + "&": "") + (L.jsonp || "callback") + "=?"
					}
				}
				L.dataType = "json"
			}
			if (L.dataType == "json" && (L.data && L.data.match(E) || L.url.match(E))) {
				V = "jsonp" + q++;
				if (L.data) {
					L.data = (L.data + "").replace(E, "=" + V + "$1")
				}
				L.url = L.url.replace(E, "=" + V + "$1");
				L.dataType = "script";
				l[V] = function(W) {
					U = W;
					H();
					K();
					l[V] = g;
					try {
						delete l[V]
					} catch(X) {}
					if (G) {
						G.removeChild(S)
					}
				}
			}
			if (L.dataType == "script" && L.cache == null) {
				L.cache = false
			}
			if (L.cache === false && F == "GET") {
				var D = e();
				var T = L.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + D + "$2");
				L.url = T + ((T == L.url) ? (L.url.match(/\?/) ? "&": "?") + "_=" + D: "")
			}
			if (L.data && F == "GET") {
				L.url += (L.url.match(/\?/) ? "&": "?") + L.data;
				L.data = null
			}
			if (L.global && !n.active++) {
				n.event.trigger("ajaxStart")
			}
			var P = /^(\w+:)?\/\/([^\/?#]+)/.exec(L.url);
			if (L.dataType == "script" && F == "GET" && P && (P[1] && P[1] != location.protocol || P[2] != location.host)) {
				var G = document.getElementsByTagName("head")[0];
				var S = document.createElement("script");
				S.src = L.url;
				if (L.scriptCharset) {
					S.charset = L.scriptCharset
				}
				if (!V) {
					var N = false;
					S.onload = S.onreadystatechange = function() {
						if (!N && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
							N = true;
							H();
							K();
							G.removeChild(S)
						}
					}
				}
				G.appendChild(S);
				return g
			}
			var J = false;
			var I = L.xhr();
			if (L.username) {
				I.open(F, L.url, L.async, L.username, L.password)
			} else {
				I.open(F, L.url, L.async)
			}
			try {
				if (L.data) {
					I.setRequestHeader("Content-Type", L.contentType)
				}
				if (L.ifModified) {
					I.setRequestHeader("If-Modified-Since", n.lastModified[L.url] || "Thu, 01 Jan 1970 00:00:00 GMT")
				}
				I.setRequestHeader("X-Requested-With", "XMLHttpRequest");
				I.setRequestHeader("Accept", L.dataType && L.accepts[L.dataType] ? L.accepts[L.dataType] + ", */*": L.accepts._default)
			} catch(R) {}
			if (L.beforeSend && L.beforeSend(I, L) === false) {
				if (L.global && !--n.active) {
					n.event.trigger("ajaxStop")
				}
				I.abort();
				return false
			}
			if (L.global) {
				n.event.trigger("ajaxSend", [I, L])
			}
			var M = function(W) {
				if (I.readyState == 0) {
					if (O) {
						clearInterval(O);
						O = null;
						if (L.global && !--n.active) {
							n.event.trigger("ajaxStop")
						}
					}
				} else {
					if (!J && I && (I.readyState == 4 || W == "timeout")) {
						J = true;
						if (O) {
							clearInterval(O);
							O = null
						}
						Q = W == "timeout" ? "timeout": !n.httpSuccess(I) ? "error": L.ifModified && n.httpNotModified(I, L.url) ? "notmodified": "success";
						if (Q == "success") {
							try {
								U = n.httpData(I, L.dataType, L)
							} catch(Y) {
								Q = "parsererror"
							}
						}
						if (Q == "success") {
							var X;
							try {
								X = I.getResponseHeader("Last-Modified")
							} catch(Y) {}
							if (L.ifModified && X) {
								n.lastModified[L.url] = X
							}
							if (!V) {
								H()
							}
						} else {
							n.handleError(L, I, Q)
						}
						K();
						if (L.async) {
							I = null
						}
					}
				}
			};
			if (L.async) {
				var O = setInterval(M, 13);
				if (L.timeout > 0) {
					setTimeout(function() {
						if (I) {
							if (!J) {
								M("timeout")
							}
							if (I) {
								I.abort()
							}
						}
					},
					L.timeout)
				}
			}
			try {
				I.send(L.data)
			} catch(R) {
				n.handleError(L, I, null, R)
			}
			if (!L.async) {
				M()
			}
			function H() {
				if (L.success) {
					L.success(U, Q)
				}
				if (L.global) {
					n.event.trigger("ajaxSuccess", [I, L])
				}
			}
			function K() {
				if (L.complete) {
					L.complete(I, Q)
				}
				if (L.global) {
					n.event.trigger("ajaxComplete", [I, L])
				}
				if (L.global && !--n.active) {
					n.event.trigger("ajaxStop")
				}
			}
			return I
		},
		handleError: function(E, G, D, F) {
			if (E.error) {
				E.error(G, D, F)
			}
			if (E.global) {
				n.event.trigger("ajaxError", [G, E, F])
			}
		},
		active: 0,
		httpSuccess: function(E) {
			try {
				return ! E.status && location.protocol == "file:" || (E.status >= 200 && E.status < 300) || E.status == 304 || E.status == 1223
			} catch(D) {}
			return false
		},
		httpNotModified: function(F, D) {
			try {
				var G = F.getResponseHeader("Last-Modified");
				return F.status == 304 || G == n.lastModified[D]
			} catch(E) {}
			return false
		},
		httpData: function(I, G, F) {
			var E = I.getResponseHeader("content-type"),
			D = G == "xml" || !G && E && E.indexOf("xml") >= 0,
			H = D ? I.responseXML: I.responseText;
			if (D && H.documentElement.tagName == "parsererror") {
				throw "parsererror"
			}
			if (F && F.dataFilter) {
				H = F.dataFilter(H, G)
			}
			if (typeof H === "string") {
				if (G == "script") {
					n.globalEval(H)
				}
				if (G == "json") {
					H = l["eval"]("(" + H + ")")
				}
			}
			return H
		},
		param: function(D) {
			var F = [];
			function G(H, I) {
				F[F.length] = encodeURIComponent(H) + "=" + encodeURIComponent(I)
			}
			if (n.isArray(D) || D.jquery) {
				n.each(D,
				function() {
					G(this.name, this.value)
				})
			} else {
				for (var E in D) {
					if (n.isArray(D[E])) {
						n.each(D[E],
						function() {
							G(E, this)
						})
					} else {
						G(E, n.isFunction(D[E]) ? D[E]() : D[E])
					}
				}
			}
			return F.join("&").replace(/%20/g, "+")
		}
	});
	var m = {},
	d = [["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"], ["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"], ["opacity"]];
	function s(E, D) {
		var F = {};
		n.each(d.concat.apply([], d.slice(0, D)),
		function() {
			F[this] = E
		});
		return F
	}
	n.fn.extend({
		show: function(I, K) {
			if (I) {
				return this.animate(s("show", 3), I, K)
			} else {
				for (var G = 0, E = this.length; G < E; G++) {
					var D = n.data(this[G], "olddisplay");
					this[G].style.display = D || "";
					if (n.css(this[G], "display") === "none") {
						var F = this[G].tagName,
						J;
						if (m[F]) {
							J = m[F]
						} else {
							var H = n("<" + F + " />").appendTo("body");
							J = H.css("display");
							if (J === "none") {
								J = "block"
							}
							H.remove();
							m[F] = J
						}
						this[G].style.display = n.data(this[G], "olddisplay", J)
					}
				}
				return this
			}
		},
		hide: function(G, H) {
			if (G) {
				return this.animate(s("hide", 3), G, H)
			} else {
				for (var F = 0, E = this.length; F < E; F++) {
					var D = n.data(this[F], "olddisplay");
					if (!D && D !== "none") {
						n.data(this[F], "olddisplay", n.css(this[F], "display"))
					}
					this[F].style.display = "none"
				}
				return this
			}
		},
		_toggle: n.fn.toggle,
		toggle: function(F, E) {
			var D = typeof F === "boolean";
			return n.isFunction(F) && n.isFunction(E) ? this._toggle.apply(this, arguments) : F == null || D ? this.each(function() {
				var G = D ? F: n(this).is(":hidden");
				n(this)[G ? "show": "hide"]()
			}) : this.animate(s("toggle", 3), F, E)
		},
		fadeTo: function(D, F, E) {
			return this.animate({
				opacity: F
			},
			D, E)
		},
		animate: function(H, E, G, F) {
			var D = n.speed(E, G, F);
			return this[D.queue === false ? "each": "queue"](function() {
				var J = n.extend({},
				D),
				L,
				K = this.nodeType == 1 && n(this).is(":hidden"),
				I = this;
				for (L in H) {
					if (H[L] == "hide" && K || H[L] == "show" && !K) {
						return J.complete.call(this)
					}
					if ((L == "height" || L == "width") && this.style) {
						J.display = n.css(this, "display");
						J.overflow = this.style.overflow
					}
				}
				if (J.overflow != null) {
					this.style.overflow = "hidden"
				}
				J.curAnim = n.extend({},
				H);
				n.each(H,
				function(N, R) {
					var Q = new n.fx(I, J, N);
					if (/toggle|show|hide/.test(R)) {
						Q[R == "toggle" ? K ? "show": "hide": R](H)
					} else {
						var P = R.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
						S = Q.cur(true) || 0;
						if (P) {
							var M = parseFloat(P[2]),
							O = P[3] || "px";
							if (O != "px") {
								I.style[N] = (M || 1) + O;
								S = ((M || 1) / Q.cur(true)) * S;
								I.style[N] = S + O
							}
							if (P[1]) {
								M = ((P[1] == "-=" ? -1 : 1) * M) + S
							}
							Q.custom(S, M, O)
						} else {
							Q.custom(S, R, "")
						}
					}
				});
				return true
			})
		},
		stop: function(E, D) {
			var F = n.timers;
			if (E) {
				this.queue([])
			}
			this.each(function() {
				for (var G = F.length - 1; G >= 0; G--) {
					if (F[G].elem == this) {
						if (D) {
							F[G](true)
						}
						F.splice(G, 1)
					}
				}
			});
			if (!D) {
				this.dequeue()
			}
			return this
		}
	});
	n.each({
		slideDown: s("show", 1),
		slideUp: s("hide", 1),
		slideToggle: s("toggle", 1),
		fadeIn: {
			opacity: "show"
		},
		fadeOut: {
			opacity: "hide"
		}
	},
	function(D, E) {
		n.fn[D] = function(F, G) {
			return this.animate(E, F, G)
		}
	});
	n.extend({
		speed: function(F, G, E) {
			var D = typeof F === "object" ? F: {
				complete: E || !E && G || n.isFunction(F) && F,
				duration: F,
				easing: E && G || G && !n.isFunction(G) && G
			};
			D.duration = n.fx.off ? 0 : typeof D.duration === "number" ? D.duration: n.fx.speeds[D.duration] || n.fx.speeds._default;
			D.old = D.complete;
			D.complete = function() {
				if (D.queue !== false) {
					n(this).dequeue()
				}
				if (n.isFunction(D.old)) {
					D.old.call(this)
				}
			};
			return D
		},
		easing: {
			linear: function(F, G, D, E) {
				return D + E * F
			},
			swing: function(F, G, D, E) {
				return (( - Math.cos(F * Math.PI) / 2) + 0.5) * E + D
			}
		},
		timers: [],
		timerId: null,
		fx: function(E, D, F) {
			this.options = D;
			this.elem = E;
			this.prop = F;
			if (!D.orig) {
				D.orig = {}
			}
		}
	});
	n.fx.prototype = {
		update: function() {
			if (this.options.step) {
				this.options.step.call(this.elem, this.now, this)
			} (n.fx.step[this.prop] || n.fx.step._default)(this);
			if ((this.prop == "height" || this.prop == "width") && this.elem.style) {
				this.elem.style.display = "block"
			}
		},
		cur: function(E) {
			if (this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null)) {
				return this.elem[this.prop]
			}
			var D = parseFloat(n.css(this.elem, this.prop, E));
			return D && D > -10000 ? D: parseFloat(n.curCSS(this.elem, this.prop)) || 0
		},
		custom: function(H, G, F) {
			this.startTime = e();
			this.start = H;
			this.end = G;
			this.unit = F || this.unit || "px";
			this.now = this.start;
			this.pos = this.state = 0;
			var D = this;
			function E(I) {
				return D.step(I)
			}
			E.elem = this.elem;
			n.timers.push(E);
			if (E() && n.timerId == null) {
				n.timerId = setInterval(function() {
					var J = n.timers;
					for (var I = 0; I < J.length; I++) {
						if (!J[I]()) {
							J.splice(I--, 1)
						}
					}
					if (!J.length) {
						clearInterval(n.timerId);
						n.timerId = null
					}
				},
				13)
			}
		},
		show: function() {
			this.options.orig[this.prop] = n.attr(this.elem.style, this.prop);
			this.options.show = true;
			this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
			n(this.elem).show()
		},
		hide: function() {
			this.options.orig[this.prop] = n.attr(this.elem.style, this.prop);
			this.options.hide = true;
			this.custom(this.cur(), 0)
		},
		step: function(G) {
			var F = e();
			if (G || F >= this.options.duration + this.startTime) {
				this.now = this.end;
				this.pos = this.state = 1;
				this.update();
				this.options.curAnim[this.prop] = true;
				var D = true;
				for (var E in this.options.curAnim) {
					if (this.options.curAnim[E] !== true) {
						D = false
					}
				}
				if (D) {
					if (this.options.display != null) {
						this.elem.style.overflow = this.options.overflow;
						this.elem.style.display = this.options.display;
						if (n.css(this.elem, "display") == "none") {
							this.elem.style.display = "block"
						}
					}
					if (this.options.hide) {
						n(this.elem).hide()
					}
					if (this.options.hide || this.options.show) {
						for (var H in this.options.curAnim) {
							n.attr(this.elem.style, H, this.options.orig[H])
						}
					}
				}
				if (D) {
					this.options.complete.call(this.elem)
				}
				return false
			} else {
				var I = F - this.startTime;
				this.state = I / this.options.duration;
				this.pos = n.easing[this.options.easing || (n.easing.swing ? "swing": "linear")](this.state, I, 0, 1, this.options.duration);
				this.now = this.start + ((this.end - this.start) * this.pos);
				this.update()
			}
			return true
		}
	};
	n.extend(n.fx, {
		speeds: {
			slow: 600,
			fast: 200,
			_default: 400
		},
		step: {
			opacity: function(D) {
				n.attr(D.elem.style, "opacity", D.now)
			},
			_default: function(D) {
				if (D.elem.style && D.elem.style[D.prop] != null) {
					D.elem.style[D.prop] = D.now + D.unit
				} else {
					D.elem[D.prop] = D.now
				}
			}
		}
	});
	if (document.documentElement.getBoundingClientRect) {
		n.fn.offset = function() {
			if (!this[0]) {
				return {
					top: 0,
					left: 0
				}
			}
			if (this[0] === this[0].ownerDocument.body) {
				return n.offset.bodyOffset(this[0])
			}
			var F = this[0].getBoundingClientRect(),
			I = this[0].ownerDocument,
			E = I.body,
			D = I.documentElement,
			K = D.clientTop || E.clientTop || 0,
			J = D.clientLeft || E.clientLeft || 0,
			H = F.top + (self.pageYOffset || n.boxModel && D.scrollTop || E.scrollTop) - K,
			G = F.left + (self.pageXOffset || n.boxModel && D.scrollLeft || E.scrollLeft) - J;
			return {
				top: H,
				left: G
			}
		}
	} else {
		n.fn.offset = function() {
			if (!this[0]) {
				return {
					top: 0,
					left: 0
				}
			}
			if (this[0] === this[0].ownerDocument.body) {
				return n.offset.bodyOffset(this[0])
			}
			n.offset.initialized || n.offset.initialize();
			var I = this[0],
			F = I.offsetParent,
			E = I,
			N = I.ownerDocument,
			L,
			G = N.documentElement,
			J = N.body,
			K = N.defaultView,
			D = K.getComputedStyle(I, null),
			M = I.offsetTop,
			H = I.offsetLeft;
			while ((I = I.parentNode) && I !== J && I !== G) {
				L = K.getComputedStyle(I, null);
				M -= I.scrollTop,
				H -= I.scrollLeft;
				if (I === F) {
					M += I.offsetTop,
					H += I.offsetLeft;
					if (n.offset.doesNotAddBorder && !(n.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(I.tagName))) {
						M += parseInt(L.borderTopWidth, 10) || 0,
						H += parseInt(L.borderLeftWidth, 10) || 0
					}
					E = F,
					F = I.offsetParent
				}
				if (n.offset.subtractsBorderForOverflowNotVisible && L.overflow !== "visible") {
					M += parseInt(L.borderTopWidth, 10) || 0,
					H += parseInt(L.borderLeftWidth, 10) || 0
				}
				D = L
			}
			if (D.position === "relative" || D.position === "static") {
				M += J.offsetTop,
				H += J.offsetLeft
			}
			if (D.position === "fixed") {
				M += Math.max(G.scrollTop, J.scrollTop),
				H += Math.max(G.scrollLeft, J.scrollLeft)
			}
			return {
				top: M,
				left: H
			}
		}
	}
	n.offset = {
		initialize: function() {
			if (this.initialized) {
				return
			}
			var K = document.body,
			E = document.createElement("div"),
			G,
			F,
			M,
			H,
			L,
			D,
			I = K.style.marginTop,
			J = '<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>';
			L = {
				position: "absolute",
				top: 0,
				left: 0,
				margin: 0,
				border: 0,
				width: "1px",
				height: "1px",
				visibility: "hidden"
			};
			for (D in L) {
				E.style[D] = L[D]
			}
			E.innerHTML = J;
			K.insertBefore(E, K.firstChild);
			G = E.firstChild,
			F = G.firstChild,
			H = G.nextSibling.firstChild.firstChild;
			this.doesNotAddBorder = (F.offsetTop !== 5);
			this.doesAddBorderForTableAndCells = (H.offsetTop === 5);
			G.style.overflow = "hidden",
			G.style.position = "relative";
			this.subtractsBorderForOverflowNotVisible = (F.offsetTop === -5);
			K.style.marginTop = "1px";
			this.doesNotIncludeMarginInBodyOffset = (K.offsetTop === 0);
			K.style.marginTop = I;
			K.removeChild(E);
			this.initialized = true
		},
		bodyOffset: function(D) {
			n.offset.initialized || n.offset.initialize();
			var F = D.offsetTop,
			E = D.offsetLeft;
			if (n.offset.doesNotIncludeMarginInBodyOffset) {
				F += parseInt(n.curCSS(D, "marginTop", true), 10) || 0,
				E += parseInt(n.curCSS(D, "marginLeft", true), 10) || 0
			}
			return {
				top: F,
				left: E
			}
		}
	};
	n.fn.extend({
		position: function() {
			var H = 0,
			G = 0,
			E;
			if (this[0]) {
				var F = this.offsetParent(),
				I = this.offset(),
				D = /^body|html$/i.test(F[0].tagName) ? {
					top: 0,
					left: 0
				}: F.offset();
				I.top -= j(this, "marginTop");
				I.left -= j(this, "marginLeft");
				D.top += j(F, "borderTopWidth");
				D.left += j(F, "borderLeftWidth");
				E = {
					top: I.top - D.top,
					left: I.left - D.left
				}
			}
			return E
		},
		offsetParent: function() {
			var D = this[0].offsetParent || document.body;
			while (D && (!/^body|html$/i.test(D.tagName) && n.css(D, "position") == "static")) {
				D = D.offsetParent
			}
			return n(D)
		}
	});
	n.each(["Left", "Top"],
	function(E, D) {
		var F = "scroll" + D;
		n.fn[F] = function(G) {
			if (!this[0]) {
				return null
			}
			return G !== g ? this.each(function() {
				this == l || this == document ? l.scrollTo(!E ? G: n(l).scrollLeft(), E ? G: n(l).scrollTop()) : this[F] = G
			}) : this[0] == l || this[0] == document ? self[E ? "pageYOffset": "pageXOffset"] || n.boxModel && document.documentElement[F] || document.body[F] : this[0][F]
		}
	});
	n.each(["Height", "Width"],
	function(G, E) {
		var D = G ? "Left": "Top",
		F = G ? "Right": "Bottom";
		n.fn["inner" + E] = function() {
			return this[E.toLowerCase()]() + j(this, "padding" + D) + j(this, "padding" + F)
		};
		n.fn["outer" + E] = function(I) {
			return this["inner" + E]() + j(this, "border" + D + "Width") + j(this, "border" + F + "Width") + (I ? j(this, "margin" + D) + j(this, "margin" + F) : 0)
		};
		var H = E.toLowerCase();
		n.fn[H] = function(I) {
			return this[0] == l ? document.compatMode == "CSS1Compat" && document.documentElement["client" + E] || document.body["client" + E] : this[0] == document ? Math.max(document.documentElement["client" + E], document.body["scroll" + E], document.documentElement["scroll" + E], document.body["offset" + E], document.documentElement["offset" + E]) : I === g ? (this.length ? n.css(this[0], H) : null) : this.css(H, typeof I === "string" ? I: I + "px")
		}
	})
})();