/*
 * 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)
						})
				}
			});
		
		 
