/*
 * jquery.tools 1.1.1 - The missing UI library for the Web
 * 
 * [tools.tabs-1.0.3, tools.tabs.slideshow-1.0.1, tools.tabs.history-1.0.1, tools.tooltip-1.1.1, tools.tooltip.slide-1.0.0, tools.tooltip.dynamic-1.0.1, tools.scrollable-1.1.1, tools.scrollable.circular-0.5.1, tools.scrollable.autoscroll-1.0.1, tools.scrollable.navigator-1.0.1, tools.scrollable.mousewheel-1.0.1, tools.overlay-1.1.1, tools.overlay.gallery-1.0.0, tools.overlay.apple-1.0.1, tools.expose-1.0.5]
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 * 
 * -----
 * 
 * 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
 *
 * Sizzle CSS Selector Engine - v0.9.3
 * Copyright 2009, The Dojo Foundation
 * Released under the MIT, BSD, and GPL Licenses.
 * More information: http://sizzlejs.com/
 * 
 * -----
 * 
 * jquery.event.wheel.js - rev 1 
 * Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
 * Liscensed under the MIT License (MIT-LICENSE.txt)
 * http://www.opensource.org/licenses/mit-license.php
 * Created: 2008-07-01 | Updated: 2008-07-14
 * 
 * -----
 * 
 * File generated: Fri Sep 18 05:25:32 EDT 2009
 */
(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)
			})
		}
	});
	(function() {
		var R = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g, L = 0, H = Object.prototype.toString;
		var F = function(Y, U, ab, ac) {
			ab = ab || [];
			U = U || document;
			if (U.nodeType !== 1 && U.nodeType !== 9) {
				return []
			}
			if (!Y || typeof Y !== "string") {
				return ab
			}
			var Z = [], W, af, ai, T, ad, V, X = true;
			R.lastIndex = 0;
			while ((W = R.exec(Y)) !== null) {
				Z.push(W[1]);
				if (W[2]) {
					V = RegExp.rightContext;
					break
				}
			}
			if (Z.length > 1 && M.exec(Y)) {
				if (Z.length === 2 && I.relative[Z[0]]) {
					af = J(Z[0] + Z[1], U)
				} else {
					af = I.relative[Z[0]] ? [ U ] : F(Z.shift(), U);
					while (Z.length) {
						Y = Z.shift();
						if (I.relative[Y]) {
							Y += Z.shift()
						}
						af = J(Y, af)
					}
				}
			} else {
				var ae = ac ? {
					expr : Z.pop(),
					set : E(ac)
				} : F
						.find(Z.pop(),
								Z.length === 1 && U.parentNode ? U.parentNode
										: U, Q(U));
				af = F.filter(ae.expr, ae.set);
				if (Z.length > 0) {
					ai = E(af)
				} else {
					X = false
				}
				while (Z.length) {
					var ah = Z.pop(), ag = ah;
					if (!I.relative[ah]) {
						ah = ""
					} else {
						ag = Z.pop()
					}
					if (ag == null) {
						ag = U
					}
					I.relative[ah](ai, ag, Q(U))
				}
			}
			if (!ai) {
				ai = af
			}
			if (!ai) {
				throw "Syntax error, unrecognized expression: " + (ah || Y)
			}
			if (H.call(ai) === "[object Array]") {
				if (!X) {
					ab.push.apply(ab, ai)
				} else {
					if (U.nodeType === 1) {
						for ( var aa = 0; ai[aa] != null; aa++) {
							if (ai[aa]
									&& (ai[aa] === true || ai[aa].nodeType === 1
											&& K(U, ai[aa]))) {
								ab.push(af[aa])
							}
						}
					} else {
						for ( var aa = 0; ai[aa] != null; aa++) {
							if (ai[aa] && ai[aa].nodeType === 1) {
								ab.push(af[aa])
							}
						}
					}
				}
			} else {
				E(ai, ab)
			}
			if (V) {
				F(V, U, ab, ac);
				if (G) {
					hasDuplicate = false;
					ab.sort(G);
					if (hasDuplicate) {
						for ( var aa = 1; aa < ab.length; aa++) {
							if (ab[aa] === ab[aa - 1]) {
								ab.splice(aa--, 1)
							}
						}
					}
				}
			}
			return ab
		};
		F.matches = function(T, U) {
			return F(T, null, null, U)
		};
		F.find = function(aa, T, ab) {
			var Z, X;
			if (!aa) {
				return []
			}
			for ( var W = 0, V = I.order.length; W < V; W++) {
				var Y = I.order[W], X;
				if ((X = I.match[Y].exec(aa))) {
					var U = RegExp.leftContext;
					if (U.substr(U.length - 1) !== "\\") {
						X[1] = (X[1] || "").replace(/\\/g, "");
						Z = I.find[Y](X, T, ab);
						if (Z != null) {
							aa = aa.replace(I.match[Y], "");
							break
						}
					}
				}
			}
			if (!Z) {
				Z = T.getElementsByTagName("*")
			}
			return {
				set : Z,
				expr : aa
			}
		};
		F.filter = function(ad, ac, ag, W) {
			var V = ad, ai = [], aa = ac, Y, T, Z = ac && ac[0] && Q(ac[0]);
			while (ad && ac.length) {
				for ( var ab in I.filter) {
					if ((Y = I.match[ab].exec(ad)) != null) {
						var U = I.filter[ab], ah, af;
						T = false;
						if (aa == ai) {
							ai = []
						}
						if (I.preFilter[ab]) {
							Y = I.preFilter[ab](Y, aa, ag, ai, W, Z);
							if (!Y) {
								T = ah = true
							} else {
								if (Y === true) {
									continue
								}
							}
						}
						if (Y) {
							for ( var X = 0; (af = aa[X]) != null; X++) {
								if (af) {
									ah = U(af, Y, X, aa);
									var ae = W ^ !!ah;
									if (ag && ah != null) {
										if (ae) {
											T = true
										} else {
											aa[X] = false
										}
									} else {
										if (ae) {
											ai.push(af);
											T = true
										}
									}
								}
							}
						}
						if (ah !== g) {
							if (!ag) {
								aa = ai
							}
							ad = ad.replace(I.match[ab], "");
							if (!T) {
								return []
							}
							break
						}
					}
				}
				if (ad == V) {
					if (T == null) {
						throw "Syntax error, unrecognized expression: " + ad
					} else {
						break
					}
				}
				V = ad
			}
			return aa
		};
		var I = F.selectors = {
			order : [ "ID", "NAME", "TAG" ],
			match : {
				ID : /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
				CLASS : /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
				NAME : /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
				ATTR : /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
				TAG : /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
				CHILD : /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
				POS : /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
				PSEUDO : /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
			},
			attrMap : {
				"class" : "className",
				"for" : "htmlFor"
			},
			attrHandle : {
				href : function(T) {
					return T.getAttribute("href")
				}
			},
			relative : {
				"+" : function(aa, T, Z) {
					var X = typeof T === "string", ab = X && !/\W/.test(T), Y = X
							&& !ab;
					if (ab && !Z) {
						T = T.toUpperCase()
					}
					for ( var W = 0, V = aa.length, U; W < V; W++) {
						if ((U = aa[W])) {
							while ((U = U.previousSibling) && U.nodeType !== 1) {
							}
							aa[W] = Y || U && U.nodeName === T ? U || false
									: U === T
						}
					}
					if (Y) {
						F.filter(T, aa, true)
					}
				},
				">" : function(Z, U, aa) {
					var X = typeof U === "string";
					if (X && !/\W/.test(U)) {
						U = aa ? U : U.toUpperCase();
						for ( var V = 0, T = Z.length; V < T; V++) {
							var Y = Z[V];
							if (Y) {
								var W = Y.parentNode;
								Z[V] = W.nodeName === U ? W : false
							}
						}
					} else {
						for ( var V = 0, T = Z.length; V < T; V++) {
							var Y = Z[V];
							if (Y) {
								Z[V] = X ? Y.parentNode : Y.parentNode === U
							}
						}
						if (X) {
							F.filter(U, Z, true)
						}
					}
				},
				"" : function(W, U, Y) {
					var V = L++, T = S;
					if (!U.match(/\W/)) {
						var X = U = Y ? U : U.toUpperCase();
						T = P
					}
					T("parentNode", U, V, W, X, Y)
				},
				"~" : function(W, U, Y) {
					var V = L++, T = S;
					if (typeof U === "string" && !U.match(/\W/)) {
						var X = U = Y ? U : U.toUpperCase();
						T = P
					}
					T("previousSibling", U, V, W, X, Y)
				}
			},
			find : {
				ID : function(U, V, W) {
					if (typeof V.getElementById !== "undefined" && !W) {
						var T = V.getElementById(U[1]);
						return T ? [ T ] : []
					}
				},
				NAME : function(V, Y, Z) {
					if (typeof Y.getElementsByName !== "undefined") {
						var U = [], X = Y.getElementsByName(V[1]);
						for ( var W = 0, T = X.length; W < T; W++) {
							if (X[W].getAttribute("name") === V[1]) {
								U.push(X[W])
							}
						}
						return U.length === 0 ? null : U
					}
				},
				TAG : function(T, U) {
					return U.getElementsByTagName(T[1])
				}
			},
			preFilter : {
				CLASS : function(W, U, V, T, Z, aa) {
					W = " " + W[1].replace(/\\/g, "") + " ";
					if (aa) {
						return W
					}
					for ( var X = 0, Y; (Y = U[X]) != null; X++) {
						if (Y) {
							if (Z
									^ (Y.className && (" " + Y.className + " ")
											.indexOf(W) >= 0)) {
								if (!V) {
									T.push(Y)
								}
							} else {
								if (V) {
									U[X] = false
								}
							}
						}
					}
					return false
				},
				ID : function(T) {
					return T[1].replace(/\\/g, "")
				},
				TAG : function(U, T) {
					for ( var V = 0; T[V] === false; V++) {
					}
					return T[V] && Q(T[V]) ? U[1] : U[1].toUpperCase()
				},
				CHILD : function(T) {
					if (T[1] == "nth") {
						var U = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2] == "even"
								&& "2n" || T[2] == "odd" && "2n+1"
								|| !/\D/.test(T[2]) && "0n+" + T[2] || T[2]);
						T[2] = (U[1] + (U[2] || 1)) - 0;
						T[3] = U[3] - 0
					}
					T[0] = L++;
					return T
				},
				ATTR : function(X, U, V, T, Y, Z) {
					var W = X[1].replace(/\\/g, "");
					if (!Z && I.attrMap[W]) {
						X[1] = I.attrMap[W]
					}
					if (X[2] === "~=") {
						X[4] = " " + X[4] + " "
					}
					return X
				},
				PSEUDO : function(X, U, V, T, Y) {
					if (X[1] === "not") {
						if (X[3].match(R).length > 1 || /^\w/.test(X[3])) {
							X[3] = F(X[3], null, null, U)
						} else {
							var W = F.filter(X[3], U, V, true ^ Y);
							if (!V) {
								T.push.apply(T, W)
							}
							return false
						}
					} else {
						if (I.match.POS.test(X[0]) || I.match.CHILD.test(X[0])) {
							return true
						}
					}
					return X
				},
				POS : function(T) {
					T.unshift(true);
					return T
				}
			},
			filters : {
				enabled : function(T) {
					return T.disabled === false && T.type !== "hidden"
				},
				disabled : function(T) {
					return T.disabled === true
				},
				checked : function(T) {
					return T.checked === true
				},
				selected : function(T) {
					T.parentNode.selectedIndex;
					return T.selected === true
				},
				parent : function(T) {
					return !!T.firstChild
				},
				empty : function(T) {
					return !T.firstChild
				},
				has : function(V, U, T) {
					return !!F(T[3], V).length
				},
				header : function(T) {
					return /h\d/i.test(T.nodeName)
				},
				text : function(T) {
					return "text" === T.type
				},
				radio : function(T) {
					return "radio" === T.type
				},
				checkbox : function(T) {
					return "checkbox" === T.type
				},
				file : function(T) {
					return "file" === T.type
				},
				password : function(T) {
					return "password" === T.type
				},
				submit : function(T) {
					return "submit" === T.type
				},
				image : function(T) {
					return "image" === T.type
				},
				reset : function(T) {
					return "reset" === T.type
				},
				button : function(T) {
					return "button" === T.type
							|| T.nodeName.toUpperCase() === "BUTTON"
				},
				input : function(T) {
					return /input|select|textarea|button/i.test(T.nodeName)
				}
			},
			setFilters : {
				first : function(U, T) {
					return T === 0
				},
				last : function(V, U, T, W) {
					return U === W.length - 1
				},
				even : function(U, T) {
					return T % 2 === 0
				},
				odd : function(U, T) {
					return T % 2 === 1
				},
				lt : function(V, U, T) {
					return U < T[3] - 0
				},
				gt : function(V, U, T) {
					return U > T[3] - 0
				},
				nth : function(V, U, T) {
					return T[3] - 0 == U
				},
				eq : function(V, U, T) {
					return T[3] - 0 == U
				}
			},
			filter : {
				PSEUDO : function(Z, V, W, aa) {
					var U = V[1], X = I.filters[U];
					if (X) {
						return X(Z, W, V, aa)
					} else {
						if (U === "contains") {
							return (Z.textContent || Z.innerText || "")
									.indexOf(V[3]) >= 0
						} else {
							if (U === "not") {
								var Y = V[3];
								for ( var W = 0, T = Y.length; W < T; W++) {
									if (Y[W] === Z) {
										return false
									}
								}
								return true
							}
						}
					}
				},
				CHILD : function(T, W) {
					var Z = W[1], U = T;
					switch (Z) {
					case "only":
					case "first":
						while (U = U.previousSibling) {
							if (U.nodeType === 1) {
								return false
							}
						}
						if (Z == "first") {
							return true
						}
						U = T;
					case "last":
						while (U = U.nextSibling) {
							if (U.nodeType === 1) {
								return false
							}
						}
						return true;
					case "nth":
						var V = W[2], ac = W[3];
						if (V == 1 && ac == 0) {
							return true
						}
						var Y = W[0], ab = T.parentNode;
						if (ab && (ab.sizcache !== Y || !T.nodeIndex)) {
							var X = 0;
							for (U = ab.firstChild; U; U = U.nextSibling) {
								if (U.nodeType === 1) {
									U.nodeIndex = ++X
								}
							}
							ab.sizcache = Y
						}
						var aa = T.nodeIndex - ac;
						if (V == 0) {
							return aa == 0
						} else {
							return (aa % V == 0 && aa / V >= 0)
						}
					}
				},
				ID : function(U, T) {
					return U.nodeType === 1 && U.getAttribute("id") === T
				},
				TAG : function(U, T) {
					return (T === "*" && U.nodeType === 1) || U.nodeName === T
				},
				CLASS : function(U, T) {
					return (" " + (U.className || U.getAttribute("class")) + " ")
							.indexOf(T) > -1
				},
				ATTR : function(Y, W) {
					var V = W[1], T = I.attrHandle[V] ? I.attrHandle[V](Y)
							: Y[V] != null ? Y[V] : Y.getAttribute(V), Z = T
							+ "", X = W[2], U = W[4];
					return T == null ? X === "!="
							: X === "=" ? Z === U
									: X === "*=" ? Z.indexOf(U) >= 0
											: X === "~=" ? (" " + Z + " ")
													.indexOf(U) >= 0
													: !U ? Z && T !== false
															: X === "!=" ? Z != U
																	: X === "^=" ? Z
																			.indexOf(U) === 0
																			: X === "$=" ? Z
																					.substr(Z.length
																							- U.length) === U
																					: X === "|=" ? Z === U
																							|| Z
																									.substr(
																											0,
																											U.length + 1) === U
																									+ "-"
																							: false
				},
				POS : function(X, U, V, Y) {
					var T = U[2], W = I.setFilters[T];
					if (W) {
						return W(X, V, U, Y)
					}
				}
			}
		};
		var M = I.match.POS;
		for ( var O in I.match) {
			I.match[O] = RegExp(I.match[O].source
					+ /(?![^\[]*\])(?![^\(]*\))/.source)
		}
		var E = function(U, T) {
			U = Array.prototype.slice.call(U);
			if (T) {
				T.push.apply(T, U);
				return T
			}
			return U
		};
		try {
			Array.prototype.slice.call(document.documentElement.childNodes)
		} catch (N) {
			E = function(X, W) {
				var U = W || [];
				if (H.call(X) === "[object Array]") {
					Array.prototype.push.apply(U, X)
				} else {
					if (typeof X.length === "number") {
						for ( var V = 0, T = X.length; V < T; V++) {
							U.push(X[V])
						}
					} else {
						for ( var V = 0; X[V]; V++) {
							U.push(X[V])
						}
					}
				}
				return U
			}
		}
		var G;
		if (document.documentElement.compareDocumentPosition) {
			G = function(U, T) {
				var V = U.compareDocumentPosition(T) & 4 ? -1 : U === T ? 0 : 1;
				if (V === 0) {
					hasDuplicate = true
				}
				return V
			}
		} else {
			if ("sourceIndex" in document.documentElement) {
				G = function(U, T) {
					var V = U.sourceIndex - T.sourceIndex;
					if (V === 0) {
						hasDuplicate = true
					}
					return V
				}
			} else {
				if (document.createRange) {
					G = function(W, U) {
						var V = W.ownerDocument.createRange(), T = U.ownerDocument
								.createRange();
						V.selectNode(W);
						V.collapse(true);
						T.selectNode(U);
						T.collapse(true);
						var X = V.compareBoundaryPoints(Range.START_TO_END, T);
						if (X === 0) {
							hasDuplicate = true
						}
						return X
					}
				}
			}
		}
		(function() {
			var U = document.createElement("form"), V = "script"
					+ (new Date).getTime();
			U.innerHTML = "<input name='" + V + "'/>";
			var T = document.documentElement;
			T.insertBefore(U, T.firstChild);
			if (!!document.getElementById(V)) {
				I.find.ID = function(X, Y, Z) {
					if (typeof Y.getElementById !== "undefined" && !Z) {
						var W = Y.getElementById(X[1]);
						return W ? W.id === X[1]
								|| typeof W.getAttributeNode !== "undefined"
								&& W.getAttributeNode("id").nodeValue === X[1] ? [ W ]
								: g
								: []
					}
				};
				I.filter.ID = function(Y, W) {
					var X = typeof Y.getAttributeNode !== "undefined"
							&& Y.getAttributeNode("id");
					return Y.nodeType === 1 && X && X.nodeValue === W
				}
			}
			T.removeChild(U)
		})();
		(function() {
			var T = document.createElement("div");
			T.appendChild(document.createComment(""));
			if (T.getElementsByTagName("*").length > 0) {
				I.find.TAG = function(U, Y) {
					var X = Y.getElementsByTagName(U[1]);
					if (U[1] === "*") {
						var W = [];
						for ( var V = 0; X[V]; V++) {
							if (X[V].nodeType === 1) {
								W.push(X[V])
							}
						}
						X = W
					}
					return X
				}
			}
			T.innerHTML = "<a href='#'></a>";
			if (T.firstChild
					&& typeof T.firstChild.getAttribute !== "undefined"
					&& T.firstChild.getAttribute("href") !== "#") {
				I.attrHandle.href = function(U) {
					return U.getAttribute("href", 2)
				}
			}
		})();
		if (document.querySelectorAll) {
			(function() {
				var T = F, U = document.createElement("div");
				U.innerHTML = "<p class='TEST'></p>";
				if (U.querySelectorAll
						&& U.querySelectorAll(".TEST").length === 0) {
					return
				}
				F = function(Y, X, V, W) {
					X = X || document;
					if (!W && X.nodeType === 9 && !Q(X)) {
						try {
							return E(X.querySelectorAll(Y), V)
						} catch (Z) {
						}
					}
					return T(Y, X, V, W)
				};
				F.find = T.find;
				F.filter = T.filter;
				F.selectors = T.selectors;
				F.matches = T.matches
			})()
		}
		if (document.getElementsByClassName
				&& document.documentElement.getElementsByClassName) {
			(function() {
				var T = document.createElement("div");
				T.innerHTML = "<div class='test e'></div><div class='test'></div>";
				if (T.getElementsByClassName("e").length === 0) {
					return
				}
				T.lastChild.className = "e";
				if (T.getElementsByClassName("e").length === 1) {
					return
				}
				I.order.splice(1, 0, "CLASS");
				I.find.CLASS = function(U, V, W) {
					if (typeof V.getElementsByClassName !== "undefined" && !W) {
						return V.getElementsByClassName(U[1])
					}
				}
			})()
		}
		function P(U, Z, Y, ad, aa, ac) {
			var ab = U == "previousSibling" && !ac;
			for ( var W = 0, V = ad.length; W < V; W++) {
				var T = ad[W];
				if (T) {
					if (ab && T.nodeType === 1) {
						T.sizcache = Y;
						T.sizset = W
					}
					T = T[U];
					var X = false;
					while (T) {
						if (T.sizcache === Y) {
							X = ad[T.sizset];
							break
						}
						if (T.nodeType === 1 && !ac) {
							T.sizcache = Y;
							T.sizset = W
						}
						if (T.nodeName === Z) {
							X = T;
							break
						}
						T = T[U]
					}
					ad[W] = X
				}
			}
		}
		function S(U, Z, Y, ad, aa, ac) {
			var ab = U == "previousSibling" && !ac;
			for ( var W = 0, V = ad.length; W < V; W++) {
				var T = ad[W];
				if (T) {
					if (ab && T.nodeType === 1) {
						T.sizcache = Y;
						T.sizset = W
					}
					T = T[U];
					var X = false;
					while (T) {
						if (T.sizcache === Y) {
							X = ad[T.sizset];
							break
						}
						if (T.nodeType === 1) {
							if (!ac) {
								T.sizcache = Y;
								T.sizset = W
							}
							if (typeof Z !== "string") {
								if (T === Z) {
									X = true;
									break
								}
							} else {
								if (F.filter(Z, [ T ]).length > 0) {
									X = T;
									break
								}
							}
						}
						T = T[U]
					}
					ad[W] = X
				}
			}
		}
		var K = document.compareDocumentPosition ? function(U, T) {
			return U.compareDocumentPosition(T) & 16
		} : function(U, T) {
			return U !== T && (U.contains ? U.contains(T) : true)
		};
		var Q = function(T) {
			return T.nodeType === 9 && T.documentElement.nodeName !== "HTML"
					|| !!T.ownerDocument && Q(T.ownerDocument)
		};
		var J = function(T, aa) {
			var W = [], X = "", Y, V = aa.nodeType ? [ aa ] : aa;
			while ((Y = I.match.PSEUDO.exec(T))) {
				X += Y[0];
				T = T.replace(I.match.PSEUDO, "")
			}
			T = I.relative[T] ? T + "*" : T;
			for ( var Z = 0, U = V.length; Z < U; Z++) {
				F(T, V[Z], W)
			}
			return F.filter(X, W)
		};
		o.find = F;
		o.filter = F.filter;
		o.expr = F.selectors;
		o.expr[":"] = o.expr.filters;
		F.selectors.filters.hidden = function(T) {
			return T.offsetWidth === 0 || T.offsetHeight === 0
		};
		F.selectors.filters.visible = function(T) {
			return T.offsetWidth > 0 || T.offsetHeight > 0
		};
		F.selectors.filters.animated = function(T) {
			return o.grep(o.timers, function(U) {
				return T === U.elem
			}).length
		};
		o.multiFilter = function(V, T, U) {
			if (U) {
				V = ":not(" + V + ")"
			}
			return F.matches(V, T)
		};
		o.dir = function(V, U) {
			var T = [], W = V[U];
			while (W && W != document) {
				if (W.nodeType == 1) {
					T.push(W)
				}
				W = W[U]
			}
			return T
		};
		o.nth = function(X, T, V, W) {
			T = T || 1;
			var U = 0;
			for (; X; X = X[V]) {
				if (X.nodeType == 1 && ++U == T) {
					break
				}
			}
			return X
		};
		o.sibling = function(V, U) {
			var T = [];
			for (; V; V = V.nextSibling) {
				if (V.nodeType == 1 && V != U) {
					T.push(V)
				}
			}
			return T
		};
		return;
		l.Sizzle = F
	})();
	o.event = {
		add : function(I, F, H, K) {
			if (I.nodeType == 3 || I.nodeType == 8) {
				return
			}
			if (I.setInterval && I != l) {
				I = l
			}
			if (!H.guid) {
				H.guid = this.guid++
			}
			if (K !== g) {
				var G = H;
				H = this.proxy(G);
				H.data = K
			}
			var E = o.data(I, "events") || o.data(I, "events", {}), J = o.data(
					I, "handle")
					|| o
							.data(
									I,
									"handle",
									function() {
										return typeof o !== "undefined"
												&& !o.event.triggered ? o.event.handle
												.apply(arguments.callee.elem,
														arguments)
												: g
									});
			J.elem = I;
			o
					.each(F.split(/\s+/),
							function(M, N) {
								var O = N.split(".");
								N = O.shift();
								H.type = O.slice().sort().join(".");
								var L = E[N];
								if (o.event.specialAll[N]) {
									o.event.specialAll[N].setup.call(I, K, O)
								}
								if (!L) {
									L = E[N] = {};
									if (!o.event.special[N]
											|| o.event.special[N].setup.call(I,
													K, O) === false) {
										if (I.addEventListener) {
											I.addEventListener(N, J, false)
										} else {
											if (I.attachEvent) {
												I.attachEvent("on" + N, J)
											}
										}
									}
								}
								L[H.guid] = H;
								o.event.global[N] = true
							});
			I = null
		},
		guid : 1,
		global : {},
		remove : function(K, H, J) {
			if (K.nodeType == 3 || K.nodeType == 8) {
				return
			}
			var G = o.data(K, "events"), F, E;
			if (G) {
				if (H === g || (typeof H === "string" && H.charAt(0) == ".")) {
					for ( var I in G) {
						this.remove(K, I + (H || ""))
					}
				} else {
					if (H.type) {
						J = H.handler;
						H = H.type
					}
					o.each(H.split(/\s+/), function(M, O) {
						var Q = O.split(".");
						O = Q.shift();
						var N = RegExp("(^|\\.)"
								+ Q.slice().sort().join(".*\\.") + "(\\.|$)");
						if (G[O]) {
							if (J) {
								delete G[O][J.guid]
							} else {
								for ( var P in G[O]) {
									if (N.test(G[O][P].type)) {
										delete G[O][P]
									}
								}
							}
							if (o.event.specialAll[O]) {
								o.event.specialAll[O].teardown.call(K, Q)
							}
							for (F in G[O]) {
								break
							}
							if (!F) {
								if (!o.event.special[O]
										|| o.event.special[O].teardown.call(K,
												Q) === false) {
									if (K.removeEventListener) {
										K.removeEventListener(O, o.data(K,
												"handle"), false)
									} else {
										if (K.detachEvent) {
											K.detachEvent("on" + O, o.data(K,
													"handle"))
										}
									}
								}
								F = null;
								delete G[O]
							}
						}
					})
				}
				for (F in G) {
					break
				}
				if (!F) {
					var L = o.data(K, "handle");
					if (L) {
						L.elem = null
					}
					o.removeData(K, "events");
					o.removeData(K, "handle")
				}
			}
		},
		trigger : function(I, K, H, E) {
			var G = I.type || I;
			if (!E) {
				I = typeof I === "object" ? I[h] ? I : o.extend(o.Event(G), I)
						: o.Event(G);
				if (G.indexOf("!") >= 0) {
					I.type = G = G.slice(0, -1);
					I.exclusive = true
				}
				if (!H) {
					I.stopPropagation();
					if (this.global[G]) {
						o.each(o.cache, function() {
							if (this.events && this.events[G]) {
								o.event.trigger(I, K, this.handle.elem)
							}
						})
					}
				}
				if (!H || H.nodeType == 3 || H.nodeType == 8) {
					return g
				}
				I.result = g;
				I.target = H;
				K = o.makeArray(K);
				K.unshift(I)
			}
			I.currentTarget = H;
			var J = o.data(H, "handle");
			if (J) {
				J.apply(H, K)
			}
			if ((!H[G] || (o.nodeName(H, "a") && G == "click")) && H["on" + G]
					&& H["on" + G].apply(H, K) === false) {
				I.result = false
			}
			if (!E && H[G] && !I.isDefaultPrevented()
					&& !(o.nodeName(H, "a") && G == "click")) {
				this.triggered = true;
				try {
					H[G]()
				} catch (L) {
				}
			}
			this.triggered = false;
			if (!I.isPropagationStopped()) {
				var F = H.parentNode || H.ownerDocument;
				if (F) {
					o.event.trigger(I, K, F, true)
				}
			}
		},
		handle : function(K) {
			var J, E;
			K = arguments[0] = o.event.fix(K || l.event);
			K.currentTarget = this;
			var L = K.type.split(".");
			K.type = L.shift();
			J = !L.length && !K.exclusive;
			var I = RegExp("(^|\\.)" + L.slice().sort().join(".*\\.")
					+ "(\\.|$)");
			E = (o.data(this, "events") || {})[K.type];
			for ( var G in E) {
				var H = E[G];
				if (J || I.test(H.type)) {
					K.handler = H;
					K.data = H.data;
					var F = H.apply(this, arguments);
					if (F !== g) {
						K.result = F;
						if (F === false) {
							K.preventDefault();
							K.stopPropagation()
						}
					}
					if (K.isImmediatePropagationStopped()) {
						break
					}
				}
			}
		},
		props : "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which"
				.split(" "),
		fix : function(H) {
			if (H[h]) {
				return H
			}
			var F = H;
			H = o.Event(F);
			for ( var G = this.props.length, J; G;) {
				J = this.props[--G];
				H[J] = F[J]
			}
			if (!H.target) {
				H.target = H.srcElement || document
			}
			if (H.target.nodeType == 3) {
				H.target = H.target.parentNode
			}
			if (!H.relatedTarget && H.fromElement) {
				H.relatedTarget = H.fromElement == H.target ? H.toElement
						: H.fromElement
			}
			if (H.pageX == null && H.clientX != null) {
				var I = document.documentElement, E = document.body;
				H.pageX = H.clientX
						+ (I && I.scrollLeft || E && E.scrollLeft || 0)
						- (I.clientLeft || 0);
				H.pageY = H.clientY
						+ (I && I.scrollTop || E && E.scrollTop || 0)
						- (I.clientTop || 0)
			}
			if (!H.which
					&& ((H.charCode || H.charCode === 0) ? H.charCode
							: H.keyCode)) {
				H.which = H.charCode || H.keyCode
			}
			if (!H.metaKey && H.ctrlKey) {
				H.metaKey = H.ctrlKey
			}
			if (!H.which && H.button) {
				H.which = (H.button & 1 ? 1 : (H.button & 2 ? 3
						: (H.button & 4 ? 2 : 0)))
			}
			return H
		},
		proxy : function(F, E) {
			E = E || function() {
				return F.apply(this, arguments)
			};
			E.guid = F.guid = F.guid || E.guid || this.guid++;
			return E
		},
		special : {
			ready : {
				setup : B,
				teardown : function() {
				}
			}
		},
		specialAll : {
			live : {
				setup : function(E, F) {
					o.event.add(this, F[0], c)
				},
				teardown : function(G) {
					if (G.length) {
						var E = 0, F = RegExp("(^|\\.)" + G[0] + "(\\.|$)");
						o.each((o.data(this, "events").live || {}), function() {
							if (F.test(this.type)) {
								E++
							}
						});
						if (E < 1) {
							o.event.remove(this, G[0], c)
						}
					}
				}
			}
		}
	};
	o.Event = function(E) {
		if (!this.preventDefault) {
			return new o.Event(E)
		}
		if (E && E.type) {
			this.originalEvent = E;
			this.type = E.type
		} else {
			this.type = E
		}
		this.timeStamp = e();
		this[h] = true
	};
	function k() {
		return false
	}
	function u() {
		return true
	}
	o.Event.prototype = {
		preventDefault : function() {
			this.isDefaultPrevented = u;
			var E = this.originalEvent;
			if (!E) {
				return
			}
			if (E.preventDefault) {
				E.preventDefault()
			}
			E.returnValue = false
		},
		stopPropagation : function() {
			this.isPropagationStopped = u;
			var E = this.originalEvent;
			if (!E) {
				return
			}
			if (E.stopPropagation) {
				E.stopPropagation()
			}
			E.cancelBubble = true
		},
		stopImmediatePropagation : function() {
			this.isImmediatePropagationStopped = u;
			this.stopPropagation()
		},
		isDefaultPrevented : k,
		isPropagationStopped : k,
		isImmediatePropagationStopped : k
	};
	var a = function(F) {
		var E = F.relatedTarget;
		while (E && E != this) {
			try {
				E = E.parentNode
			} catch (G) {
				E = this
			}
		}
		if (E != this) {
			F.type = F.data;
			o.event.handle.apply(this, arguments)
		}
	};
	o.each( {
		mouseover : "mouseenter",
		mouseout : "mouseleave"
	}, function(F, E) {
		o.event.special[E] = {
			setup : function() {
				o.event.add(this, F, a, E)
			},
			teardown : function() {
				o.event.remove(this, F, a)
			}
		}
	});
	o.fn.extend( {
		bind : function(F, G, E) {
			return F == "unload" ? this.one(F, G, E) : this.each(function() {
				o.event.add(this, F, E || G, E && G)
			})
		},
		one : function(G, H, F) {
			var E = o.event.proxy(F || H, function(I) {
				o(this).unbind(I, E);
				return (F || H).apply(this, arguments)
			});
			return this.each(function() {
				o.event.add(this, G, E, F && H)
			})
		},
		unbind : function(F, E) {
			return this.each(function() {
				o.event.remove(this, F, E)
			})
		},
		trigger : function(E, F) {
			return this.each(function() {
				o.event.trigger(E, F, this)
			})
		},
		triggerHandler : function(E, G) {
			if (this[0]) {
				var F = o.Event(E);
				F.preventDefault();
				F.stopPropagation();
				o.event.trigger(F, G, this[0]);
				return F.result
			}
		},
		toggle : function(G) {
			var E = arguments, F = 1;
			while (F < E.length) {
				o.event.proxy(G, E[F++])
			}
			return this.click(o.event.proxy(G, function(H) {
				this.lastToggle = (this.lastToggle || 0) % F;
				H.preventDefault();
				return E[this.lastToggle++].apply(this, arguments) || false
			}))
		},
		hover : function(E, F) {
			return this.mouseenter(E).mouseleave(F)
		},
		ready : function(E) {
			B();
			if (o.isReady) {
				E.call(document, o)
			} else {
				o.readyList.push(E)
			}
			return this
		},
		live : function(G, F) {
			var E = o.event.proxy(F);
			E.guid += this.selector + G;
			o(document).bind(i(G, this.selector), this.selector, E);
			return this
		},
		die : function(F, E) {
			o(document).unbind(i(F, this.selector), E ? {
				guid : E.guid + this.selector + F
			} : null);
			return this
		}
	});
	function c(H) {
		var E = RegExp("(^|\\.)" + H.type + "(\\.|$)"), G = true, F = [];
		o.each(o.data(this, "events").live || [], function(I, J) {
			if (E.test(J.type)) {
				var K = o(H.target).closest(J.data)[0];
				if (K) {
					F.push( {
						elem : K,
						fn : J
					})
				}
			}
		});
		F.sort(function(J, I) {
			return o.data(J.elem, "closest") - o.data(I.elem, "closest")
		});
		o.each(F, function() {
			if (this.fn.call(this.elem, H, this.fn.data) === false) {
				return (G = false)
			}
		});
		return G
	}
	function i(F, E) {
		return [ "live", F, E.replace(/\./g, "`").replace(/ /g, "|") ]
				.join(".")
	}
	o.extend( {
		isReady : false,
		readyList : [],
		ready : function() {
			if (!o.isReady) {
				o.isReady = true;
				if (o.readyList) {
					o.each(o.readyList, function() {
						this.call(document, o)
					});
					o.readyList = null
				}
				o(document).triggerHandler("ready")
			}
		}
	});
	var x = false;
	function B() {
		if (x) {
			return
		}
		x = true;
		if (document.addEventListener) {
			document.addEventListener("DOMContentLoaded", function() {
				document.removeEventListener("DOMContentLoaded",
						arguments.callee, false);
				o.ready()
			}, false)
		} else {
			if (document.attachEvent) {
				document.attachEvent("onreadystatechange", function() {
					if (document.readyState === "complete") {
						document.detachEvent("onreadystatechange",
								arguments.callee);
						o.ready()
					}
				});
				if (document.documentElement.doScroll && l == l.top) {
					(function() {
						if (o.isReady) {
							return
						}
						try {
							document.documentElement.doScroll("left")
						} catch (E) {
							setTimeout(arguments.callee, 0);
							return
						}
						o.ready()
					})()
				}
			}
		}
		o.event.add(l, "load", o.ready)
	}
	o
			.each(
					("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error")
							.split(","), function(F, E) {
						o.fn[E] = function(G) {
							return G ? this.bind(E, G) : this.trigger(E)
						}
					});
	o(l).bind("unload", function() {
		for ( var E in o.cache) {
			if (E != 1 && o.cache[E].handle) {
				o.event.remove(o.cache[E].handle.elem)
			}
		}
	});
	(function() {
		o.support = {};
		var F = document.documentElement, G = document.createElement("script"), K = document
				.createElement("div"), J = "script" + (new Date).getTime();
		K.style.display = "none";
		K.innerHTML = '   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
		var H = K.getElementsByTagName("*"), E = K.getElementsByTagName("a")[0];
		if (!H || !H.length || !E) {
			return
		}
		o.support = {
			leadingWhitespace : K.firstChild.nodeType == 3,
			tbody : !K.getElementsByTagName("tbody").length,
			objectAll : !!K.getElementsByTagName("object")[0]
					.getElementsByTagName("*").length,
			htmlSerialize : !!K.getElementsByTagName("link").length,
			style : /red/.test(E.getAttribute("style")),
			hrefNormalized : E.getAttribute("href") === "/a",
			opacity : E.style.opacity === "0.5",
			cssFloat : !!E.style.cssFloat,
			scriptEval : false,
			noCloneEvent : true,
			boxModel : null
		};
		G.type = "text/javascript";
		try {
			G.appendChild(document.createTextNode("window." + J + "=1;"))
		} catch (I) {
		}
		F.insertBefore(G, F.firstChild);
		if (l[J]) {
			o.support.scriptEval = true;
			delete l[J]
		}
		F.removeChild(G);
		if (K.attachEvent && K.fireEvent) {
			K.attachEvent("onclick", function() {
				o.support.noCloneEvent = false;
				K.detachEvent("onclick", arguments.callee)
			});
			K.cloneNode(true).fireEvent("onclick")
		}
		o(function() {
			var L = document.createElement("div");
			L.style.width = L.style.paddingLeft = "1px";
			document.body.appendChild(L);
			o.boxModel = o.support.boxModel = L.offsetWidth === 2;
			document.body.removeChild(L).style.display = "none"
		})
	})();
	var w = o.support.cssFloat ? "cssFloat" : "styleFloat";
	o.props = {
		"for" : "htmlFor",
		"class" : "className",
		"float" : w,
		cssFloat : w,
		styleFloat : w,
		readonly : "readOnly",
		maxlength : "maxLength",
		cellspacing : "cellSpacing",
		rowspan : "rowSpan",
		tabindex : "tabIndex"
	};
	o.fn
			.extend( {
				_load : o.fn.load,
				load : function(G, J, K) {
					if (typeof G !== "string") {
						return this._load(G)
					}
					var I = G.indexOf(" ");
					if (I >= 0) {
						var E = G.slice(I, G.length);
						G = G.slice(0, I)
					}
					var H = "GET";
					if (J) {
						if (o.isFunction(J)) {
							K = J;
							J = null
						} else {
							if (typeof J === "object") {
								J = o.param(J);
								H = "POST"
							}
						}
					}
					var F = this;
					o
							.ajax( {
								url : G,
								type : H,
								dataType : "html",
								data : J,
								complete : function(M, L) {
									if (L == "success" || L == "notmodified") {
										F
												.html(E ? o("<div/>")
														.append(
																M.responseText
																		.replace(
																				/<script(.|\s)*?\/script>/g,
																				""))
														.find(E)
														: M.responseText)
									}
									if (K) {
										F.each(K, [ M.responseText, L, M ])
									}
								}
							});
					return this
				},
				serialize : function() {
					return o.param(this.serializeArray())
				},
				serializeArray : function() {
					return this
							.map(
									function() {
										return this.elements ? o
												.makeArray(this.elements)
												: this
									})
							.filter(
									function() {
										return this.name
												&& !this.disabled
												&& (this.checked
														|| /select|textarea/i
																.test(this.nodeName) || /text|hidden|password|search/i
														.test(this.type))
									}).map(
									function(E, F) {
										var G = o(this).val();
										return G == null ? null
												: o.isArray(G) ? o.map(G,
														function(I, H) {
															return {
																name : F.name,
																value : I
															}
														}) : {
													name : F.name,
													value : G
												}
									}).get()
				}
			});
	o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend"
			.split(","), function(E, F) {
		o.fn[F] = function(G) {
			return this.bind(F, G)
		}
	});
	var r = e();
	o
			.extend( {
				get : function(E, G, H, F) {
					if (o.isFunction(G)) {
						H = G;
						G = null
					}
					return o.ajax( {
						type : "GET",
						url : E,
						data : G,
						success : H,
						dataType : F
					})
				},
				getScript : function(E, F) {
					return o.get(E, null, F, "script")
				},
				getJSON : function(E, F, G) {
					return o.get(E, F, G, "json")
				},
				post : function(E, G, H, F) {
					if (o.isFunction(G)) {
						H = G;
						G = {}
					}
					return o.ajax( {
						type : "POST",
						url : E,
						data : G,
						success : H,
						dataType : F
					})
				},
				ajaxSetup : function(E) {
					o.extend(o.ajaxSettings, E)
				},
				ajaxSettings : {
					url : location.href,
					global : true,
					type : "GET",
					contentType : "application/x-www-form-urlencoded",
					processData : true,
					async : true,
					xhr : function() {
						return l.ActiveXObject ? new ActiveXObject(
								"Microsoft.XMLHTTP") : new XMLHttpRequest()
					},
					accepts : {
						xml : "application/xml, text/xml",
						html : "text/html",
						script : "text/javascript, application/javascript",
						json : "application/json, text/javascript",
						text : "text/plain",
						_default : "*/*"
					}
				},
				lastModified : {},
				ajax : function(M) {
					M = o
							.extend(true, M, o.extend(true, {}, o.ajaxSettings,
									M));
					var W, F = /=\?(&|$)/g, R, V, G = M.type.toUpperCase();
					if (M.data && M.processData && typeof M.data !== "string") {
						M.data = o.param(M.data)
					}
					if (M.dataType == "jsonp") {
						if (G == "GET") {
							if (!M.url.match(F)) {
								M.url += (M.url.match(/\?/) ? "&" : "?")
										+ (M.jsonp || "callback") + "=?"
							}
						} else {
							if (!M.data || !M.data.match(F)) {
								M.data = (M.data ? M.data + "&" : "")
										+ (M.jsonp || "callback") + "=?"
							}
						}
						M.dataType = "json"
					}
					if (M.dataType == "json"
							&& (M.data && M.data.match(F) || M.url.match(F))) {
						W = "jsonp" + r++;
						if (M.data) {
							M.data = (M.data + "").replace(F, "=" + W + "$1")
						}
						M.url = M.url.replace(F, "=" + W + "$1");
						M.dataType = "script";
						l[W] = function(X) {
							V = X;
							I();
							L();
							l[W] = g;
							try {
								delete l[W]
							} catch (Y) {
							}
							if (H) {
								H.removeChild(T)
							}
						}
					}
					if (M.dataType == "script" && M.cache == null) {
						M.cache = false
					}
					if (M.cache === false && G == "GET") {
						var E = e();
						var U = M.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + E
								+ "$2");
						M.url = U
								+ ((U == M.url) ? (M.url.match(/\?/) ? "&"
										: "?")
										+ "_=" + E : "")
					}
					if (M.data && G == "GET") {
						M.url += (M.url.match(/\?/) ? "&" : "?") + M.data;
						M.data = null
					}
					if (M.global && !o.active++) {
						o.event.trigger("ajaxStart")
					}
					var Q = /^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);
					if (M.dataType == "script"
							&& G == "GET"
							&& Q
							&& (Q[1] && Q[1] != location.protocol || Q[2] != location.host)) {
						var H = document.getElementsByTagName("head")[0];
						var T = document.createElement("script");
						T.src = M.url;
						if (M.scriptCharset) {
							T.charset = M.scriptCharset
						}
						if (!W) {
							var O = false;
							T.onload = T.onreadystatechange = function() {
								if (!O
										&& (!this.readyState
												|| this.readyState == "loaded" || this.readyState == "complete")) {
									O = true;
									I();
									L();
									T.onload = T.onreadystatechange = null;
									H.removeChild(T)
								}
							}
						}
						H.appendChild(T);
						return g
					}
					var K = false;
					var J = M.xhr();
					if (M.username) {
						J.open(G, M.url, M.async, M.username, M.password)
					} else {
						J.open(G, M.url, M.async)
					}
					try {
						if (M.data) {
							J.setRequestHeader("Content-Type", M.contentType)
						}
						if (M.ifModified) {
							J.setRequestHeader("If-Modified-Since",
									o.lastModified[M.url]
											|| "Thu, 01 Jan 1970 00:00:00 GMT")
						}
						J
								.setRequestHeader("X-Requested-With",
										"XMLHttpRequest");
						J
								.setRequestHeader(
										"Accept",
										M.dataType && M.accepts[M.dataType] ? M.accepts[M.dataType]
												+ ", */*"
												: M.accepts._default)
					} catch (S) {
					}
					if (M.beforeSend && M.beforeSend(J, M) === false) {
						if (M.global && !--o.active) {
							o.event.trigger("ajaxStop")
						}
						J.abort();
						return false
					}
					if (M.global) {
						o.event.trigger("ajaxSend", [ J, M ])
					}
					var N = function(X) {
						if (J.readyState == 0) {
							if (P) {
								clearInterval(P);
								P = null;
								if (M.global && !--o.active) {
									o.event.trigger("ajaxStop")
								}
							}
						} else {
							if (!K && J
									&& (J.readyState == 4 || X == "timeout")) {
								K = true;
								if (P) {
									clearInterval(P);
									P = null
								}
								R = X == "timeout" ? "timeout"
										: !o.httpSuccess(J) ? "error"
												: M.ifModified
														&& o.httpNotModified(J,
																M.url) ? "notmodified"
														: "success";
								if (R == "success") {
									try {
										V = o.httpData(J, M.dataType, M)
									} catch (Z) {
										R = "parsererror"
									}
								}
								if (R == "success") {
									var Y;
									try {
										Y = J
												.getResponseHeader("Last-Modified")
									} catch (Z) {
									}
									if (M.ifModified && Y) {
										o.lastModified[M.url] = Y
									}
									if (!W) {
										I()
									}
								} else {
									o.handleError(M, J, R)
								}
								L();
								if (X) {
									J.abort()
								}
								if (M.async) {
									J = null
								}
							}
						}
					};
					if (M.async) {
						var P = setInterval(N, 13);
						if (M.timeout > 0) {
							setTimeout(function() {
								if (J && !K) {
									N("timeout")
								}
							}, M.timeout)
						}
					}
					try {
						J.send(M.data)
					} catch (S) {
						o.handleError(M, J, null, S)
					}
					if (!M.async) {
						N()
					}
					function I() {
						if (M.success) {
							M.success(V, R)
						}
						if (M.global) {
							o.event.trigger("ajaxSuccess", [ J, M ])
						}
					}
					function L() {
						if (M.complete) {
							M.complete(J, R)
						}
						if (M.global) {
							o.event.trigger("ajaxComplete", [ J, M ])
						}
						if (M.global && !--o.active) {
							o.event.trigger("ajaxStop")
						}
					}
					return J
				},
				handleError : function(F, H, E, G) {
					if (F.error) {
						F.error(H, E, G)
					}
					if (F.global) {
						o.event.trigger("ajaxError", [ H, F, G ])
					}
				},
				active : 0,
				httpSuccess : function(F) {
					try {
						return !F.status && location.protocol == "file:"
								|| (F.status >= 200 && F.status < 300)
								|| F.status == 304 || F.status == 1223
					} catch (E) {
					}
					return false
				},
				httpNotModified : function(G, E) {
					try {
						var H = G.getResponseHeader("Last-Modified");
						return G.status == 304 || H == o.lastModified[E]
					} catch (F) {
					}
					return false
				},
				httpData : function(J, H, G) {
					var F = J.getResponseHeader("content-type"), E = H == "xml"
							|| !H && F && F.indexOf("xml") >= 0, I = E ? J.responseXML
							: J.responseText;
					if (E && I.documentElement.tagName == "parsererror") {
						throw "parsererror"
					}
					if (G && G.dataFilter) {
						I = G.dataFilter(I, H)
					}
					if (typeof I === "string") {
						if (H == "script") {
							o.globalEval(I)
						}
						if (H == "json") {
							I = l["eval"]("(" + I + ")")
						}
					}
					return I
				},
				param : function(E) {
					var G = [];
					function H(I, J) {
						G[G.length] = encodeURIComponent(I) + "="
								+ encodeURIComponent(J)
					}
					if (o.isArray(E) || E.jquery) {
						o.each(E, function() {
							H(this.name, this.value)
						})
					} else {
						for ( var F in E) {
							if (o.isArray(E[F])) {
								o.each(E[F], function() {
									H(F, this)
								})
							} else {
								H(F, o.isFunction(E[F]) ? E[F]() : E[F])
							}
						}
					}
					return G.join("&").replace(/%20/g, "+")
				}
			});
	var m = {}, n, d = [
			[ "height", "marginTop", "marginBottom", "paddingTop",
					"paddingBottom" ],
			[ "width", "marginLeft", "marginRight", "paddingLeft",
					"paddingRight" ], [ "opacity" ] ];
	function t(F, E) {
		var G = {};
		o.each(d.concat.apply( [], d.slice(0, E)), function() {
			G[this] = F
		});
		return G
	}
	o.fn.extend( {
		show : function(J, L) {
			if (J) {
				return this.animate(t("show", 3), J, L)
			} else {
				for ( var H = 0, F = this.length; H < F; H++) {
					var E = o.data(this[H], "olddisplay");
					this[H].style.display = E || "";
					if (o.css(this[H], "display") === "none") {
						var G = this[H].tagName, K;
						if (m[G]) {
							K = m[G]
						} else {
							var I = o("<" + G + " />").appendTo("body");
							K = I.css("display");
							if (K === "none") {
								K = "block"
							}
							I.remove();
							m[G] = K
						}
						o.data(this[H], "olddisplay", K)
					}
				}
				for ( var H = 0, F = this.length; H < F; H++) {
					this[H].style.display = o.data(this[H], "olddisplay") || ""
				}
				return this
			}
		},
		hide : function(H, I) {
			if (H) {
				return this.animate(t("hide", 3), H, I)
			} else {
				for ( var G = 0, F = this.length; G < F; G++) {
					var E = o.data(this[G], "olddisplay");
					if (!E && E !== "none") {
						o
								.data(this[G], "olddisplay", o.css(this[G],
										"display"))
					}
				}
				for ( var G = 0, F = this.length; G < F; G++) {
					this[G].style.display = "none"
				}
				return this
			}
		},
		_toggle : o.fn.toggle,
		toggle : function(G, F) {
			var E = typeof G === "boolean";
			return o.isFunction(G) && o.isFunction(F) ? this._toggle.apply(
					this, arguments) : G == null || E ? this.each(function() {
				var H = E ? G : o(this).is(":hidden");
				o(this)[H ? "show" : "hide"]()
			}) : this.animate(t("toggle", 3), G, F)
		},
		fadeTo : function(E, G, F) {
			return this.animate( {
				opacity : G
			}, E, F)
		},
		animate : function(I, F, H, G) {
			var E = o.speed(F, H, G);
			return this[E.queue === false ? "each" : "queue"](function() {
				var K = o.extend( {}, E), M, L = this.nodeType == 1
						&& o(this).is(":hidden"), J = this;
				for (M in I) {
					if (I[M] == "hide" && L || I[M] == "show" && !L) {
						return K.complete.call(this)
					}
					if ((M == "height" || M == "width") && this.style) {
						K.display = o.css(this, "display");
						K.overflow = this.style.overflow
					}
				}
				if (K.overflow != null) {
					this.style.overflow = "hidden"
				}
				K.curAnim = o.extend( {}, I);
				o.each(I,
						function(O, S) {
							var R = new o.fx(J, K, O);
							if (/toggle|show|hide/.test(S)) {
								R[S == "toggle" ? L ? "show" : "hide" : S](I)
							} else {
								var Q = S.toString().match(
										/^([+-]=)?([\d+-.]+)(.*)$/), T = R
										.cur(true) || 0;
								if (Q) {
									var N = parseFloat(Q[2]), P = Q[3] || "px";
									if (P != "px") {
										J.style[O] = (N || 1) + P;
										T = ((N || 1) / R.cur(true)) * T;
										J.style[O] = T + P
									}
									if (Q[1]) {
										N = ((Q[1] == "-=" ? -1 : 1) * N) + T
									}
									R.custom(T, N, P)
								} else {
									R.custom(T, S, "")
								}
							}
						});
				return true
			})
		},
		stop : function(F, E) {
			var G = o.timers;
			if (F) {
				this.queue( [])
			}
			this.each(function() {
				for ( var H = G.length - 1; H >= 0; H--) {
					if (G[H].elem == this) {
						if (E) {
							G[H](true)
						}
						G.splice(H, 1)
					}
				}
			});
			if (!E) {
				this.dequeue()
			}
			return this
		}
	});
	o.each( {
		slideDown : t("show", 1),
		slideUp : t("hide", 1),
		slideToggle : t("toggle", 1),
		fadeIn : {
			opacity : "show"
		},
		fadeOut : {
			opacity : "hide"
		}
	}, function(E, F) {
		o.fn[E] = function(G, H) {
			return this.animate(F, G, H)
		}
	});
	o.extend( {
		speed : function(G, H, F) {
			var E = typeof G === "object" ? G : {
				complete : F || !F && H || o.isFunction(G) && G,
				duration : G,
				easing : F && H || H && !o.isFunction(H) && H
			};
			E.duration = o.fx.off ? 0
					: typeof E.duration === "number" ? E.duration
							: o.fx.speeds[E.duration] || o.fx.speeds._default;
			E.old = E.complete;
			E.complete = function() {
				if (E.queue !== false) {
					o(this).dequeue()
				}
				if (o.isFunction(E.old)) {
					E.old.call(this)
				}
			};
			return E
		},
		easing : {
			linear : function(G, H, E, F) {
				return E + F * G
			},
			swing : function(G, H, E, F) {
				return ((-Math.cos(G * Math.PI) / 2) + 0.5) * F + E
			}
		},
		timers : [],
		fx : function(F, E, G) {
			this.options = E;
			this.elem = F;
			this.prop = G;
			if (!E.orig) {
				E.orig = {}
			}
		}
	});
	o.fx.prototype = {
		update : function() {
			if (this.options.step) {
				this.options.step.call(this.elem, this.now, this)
			}
			(o.fx.step[this.prop] || o.fx.step._default)(this);
			if ((this.prop == "height" || this.prop == "width")
					&& this.elem.style) {
				this.elem.style.display = "block"
			}
		},
		cur : function(F) {
			if (this.elem[this.prop] != null
					&& (!this.elem.style || this.elem.style[this.prop] == null)) {
				return this.elem[this.prop]
			}
			var E = parseFloat(o.css(this.elem, this.prop, F));
			return E && E > -10000 ? E : parseFloat(o.curCSS(this.elem,
					this.prop)) || 0
		},
		custom : function(I, H, G) {
			this.startTime = e();
			this.start = I;
			this.end = H;
			this.unit = G || this.unit || "px";
			this.now = this.start;
			this.pos = this.state = 0;
			var E = this;
			function F(J) {
				return E.step(J)
			}
			F.elem = this.elem;
			if (F() && o.timers.push(F) && !n) {
				n = setInterval(function() {
					var K = o.timers;
					for ( var J = 0; J < K.length; J++) {
						if (!K[J]()) {
							K.splice(J--, 1)
						}
					}
					if (!K.length) {
						clearInterval(n);
						n = g
					}
				}, 13)
			}
		},
		show : function() {
			this.options.orig[this.prop] = o.attr(this.elem.style, this.prop);
			this.options.show = true;
			this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0,
					this.cur());
			o(this.elem).show()
		},
		hide : function() {
			this.options.orig[this.prop] = o.attr(this.elem.style, this.prop);
			this.options.hide = true;
			this.custom(this.cur(), 0)
		},
		step : function(H) {
			var G = e();
			if (H || G >= this.options.duration + this.startTime) {
				this.now = this.end;
				this.pos = this.state = 1;
				this.update();
				this.options.curAnim[this.prop] = true;
				var E = true;
				for ( var F in this.options.curAnim) {
					if (this.options.curAnim[F] !== true) {
						E = false
					}
				}
				if (E) {
					if (this.options.display != null) {
						this.elem.style.overflow = this.options.overflow;
						this.elem.style.display = this.options.display;
						if (o.css(this.elem, "display") == "none") {
							this.elem.style.display = "block"
						}
					}
					if (this.options.hide) {
						o(this.elem).hide()
					}
					if (this.options.hide || this.options.show) {
						for ( var I in this.options.curAnim) {
							o.attr(this.elem.style, I, this.options.orig[I])
						}
					}
					this.options.complete.call(this.elem)
				}
				return false
			} else {
				var J = G - this.startTime;
				this.state = J / this.options.duration;
				this.pos = o.easing[this.options.easing
						|| (o.easing.swing ? "swing" : "linear")](this.state,
						J, 0, 1, this.options.duration);
				this.now = this.start + ((this.end - this.start) * this.pos);
				this.update()
			}
			return true
		}
	};
	o.extend(o.fx, {
		speeds : {
			slow : 600,
			fast : 200,
			_default : 400
		},
		step : {
			opacity : function(E) {
				o.attr(E.elem.style, "opacity", E.now)
			},
			_default : function(E) {
				if (E.elem.style && E.elem.style[E.prop] != null) {
					E.elem.style[E.prop] = E.now + E.unit
				} else {
					E.elem[E.prop] = E.now
				}
			}
		}
	});
	if (document.documentElement.getBoundingClientRect) {
		o.fn.offset = function() {
			if (!this[0]) {
				return {
					top : 0,
					left : 0
				}
			}
			if (this[0] === this[0].ownerDocument.body) {
				return o.offset.bodyOffset(this[0])
			}
			var G = this[0].getBoundingClientRect(), J = this[0].ownerDocument, F = J.body, E = J.documentElement, L = E.clientTop
					|| F.clientTop || 0, K = E.clientLeft || F.clientLeft || 0, I = G.top
					+ (self.pageYOffset || o.boxModel && E.scrollTop || F.scrollTop)
					- L, H = G.left
					+ (self.pageXOffset || o.boxModel && E.scrollLeft || F.scrollLeft)
					- K;
			return {
				top : I,
				left : H
			}
		}
	} else {
		o.fn.offset = function() {
			if (!this[0]) {
				return {
					top : 0,
					left : 0
				}
			}
			if (this[0] === this[0].ownerDocument.body) {
				return o.offset.bodyOffset(this[0])
			}
			o.offset.initialized || o.offset.initialize();
			var J = this[0], G = J.offsetParent, F = J, O = J.ownerDocument, M, H = O.documentElement, K = O.body, L = O.defaultView, E = L
					.getComputedStyle(J, null), N = J.offsetTop, I = J.offsetLeft;
			while ((J = J.parentNode) && J !== K && J !== H) {
				M = L.getComputedStyle(J, null);
				N -= J.scrollTop, I -= J.scrollLeft;
				if (J === G) {
					N += J.offsetTop, I += J.offsetLeft;
					if (o.offset.doesNotAddBorder
							&& !(o.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i
									.test(J.tagName))) {
						N += parseInt(M.borderTopWidth, 10) || 0,
								I += parseInt(M.borderLeftWidth, 10) || 0
					}
					F = G, G = J.offsetParent
				}
				if (o.offset.subtractsBorderForOverflowNotVisible
						&& M.overflow !== "visible") {
					N += parseInt(M.borderTopWidth, 10) || 0, I += parseInt(
							M.borderLeftWidth, 10) || 0
				}
				E = M
			}
			if (E.position === "relative" || E.position === "static") {
				N += K.offsetTop, I += K.offsetLeft
			}
			if (E.position === "fixed") {
				N += Math.max(H.scrollTop, K.scrollTop), I += Math.max(
						H.scrollLeft, K.scrollLeft)
			}
			return {
				top : N,
				left : I
			}
		}
	}
	o.offset = {
		initialize : function() {
			if (this.initialized) {
				return
			}
			var L = document.body, F = document.createElement("div"), H, G, N, I, M, E, J = L.style.marginTop, K = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
			M = {
				position : "absolute",
				top : 0,
				left : 0,
				margin : 0,
				border : 0,
				width : "1px",
				height : "1px",
				visibility : "hidden"
			};
			for (E in M) {
				F.style[E] = M[E]
			}
			F.innerHTML = K;
			L.insertBefore(F, L.firstChild);
			H = F.firstChild, G = H.firstChild,
					I = H.nextSibling.firstChild.firstChild;
			this.doesNotAddBorder = (G.offsetTop !== 5);
			this.doesAddBorderForTableAndCells = (I.offsetTop === 5);
			H.style.overflow = "hidden", H.style.position = "relative";
			this.subtractsBorderForOverflowNotVisible = (G.offsetTop === -5);
			L.style.marginTop = "1px";
			this.doesNotIncludeMarginInBodyOffset = (L.offsetTop === 0);
			L.style.marginTop = J;
			L.removeChild(F);
			this.initialized = true
		},
		bodyOffset : function(E) {
			o.offset.initialized || o.offset.initialize();
			var G = E.offsetTop, F = E.offsetLeft;
			if (o.offset.doesNotIncludeMarginInBodyOffset) {
				G += parseInt(o.curCSS(E, "marginTop", true), 10) || 0,
						F += parseInt(o.curCSS(E, "marginLeft", true), 10) || 0
			}
			return {
				top : G,
				left : F
			}
		}
	};
	o.fn
			.extend( {
				position : function() {
					var I = 0, H = 0, F;
					if (this[0]) {
						var G = this.offsetParent(), J = this.offset(), E = /^body|html$/i
								.test(G[0].tagName) ? {
							top : 0,
							left : 0
						} : G.offset();
						J.top -= j(this, "marginTop");
						J.left -= j(this, "marginLeft");
						E.top += j(G, "borderTopWidth");
						E.left += j(G, "borderLeftWidth");
						F = {
							top : J.top - E.top,
							left : J.left - E.left
						}
					}
					return F
				},
				offsetParent : function() {
					var E = this[0].offsetParent || document.body;
					while (E
							&& (!/^body|html$/i.test(E.tagName) && o.css(E,
									"position") == "static")) {
						E = E.offsetParent
					}
					return o(E)
				}
			});
	o.each( [ "Left", "Top" ], function(F, E) {
		var G = "scroll" + E;
		o.fn[G] = function(H) {
			if (!this[0]) {
				return null
			}
			return H !== g ? this.each(function() {
				this == l || this == document ? l.scrollTo(!F ? H : o(l)
						.scrollLeft(), F ? H : o(l).scrollTop()) : this[G] = H
			}) : this[0] == l || this[0] == document ? self[F ? "pageYOffset"
					: "pageXOffset"]
					|| o.boxModel
					&& document.documentElement[G]
					|| document.body[G] : this[0][G]
		}
	});
	o.each( [ "Height", "Width" ], function(I, G) {
		var E = I ? "Left" : "Top", H = I ? "Right" : "Bottom", F = G
				.toLowerCase();
		o.fn["inner" + G] = function() {
			return this[0] ? o.css(this[0], F, false, "padding") : null
		};
		o.fn["outer" + G] = function(K) {
			return this[0] ? o.css(this[0], F, false, K ? "margin" : "border")
					: null
		};
		var J = G.toLowerCase();
		o.fn[J] = function(K) {
			return this[0] == l ? document.compatMode == "CSS1Compat"
					&& document.documentElement["client" + G]
					|| document.body["client" + G] : this[0] == document ? Math
					.max(document.documentElement["client" + G],
							document.body["scroll" + G],
							document.documentElement["scroll" + G],
							document.body["offset" + G],
							document.documentElement["offset" + G])
					: K === g ? (this.length ? o.css(this[0], J) : null) : this
							.css(J, typeof K === "string" ? K : K + "px")
		}
	})
})();
(function(d) {
	d.tools = d.tools || {};
	d.tools.tabs = {
		version : "1.0.3",
		conf : {
			tabs : "a",
			current : "current",
			onBeforeClick : null,
			onClick : null,
			effect : "default",
			initialIndex : 0,
			event : "click",
			api : false,
			rotate : false
		},
		addEffect : function(e, f) {
			c[e] = f
		}
	};
	var c = {
		"default" : function(f, e) {
			this.getPanes().hide().eq(f).show();
			e.call()
		},
		fade : function(g, e) {
			var f = this.getConf(), h = f.fadeOutSpeed, j = this
					.getCurrentPane();
			if (h) {
				j.fadeOut(h)
			} else {
				j.hide()
			}
			this.getPanes().eq(g).fadeIn(f.fadeInSpeed, e)
		},
		slide : function(f, e) {
			this.getCurrentPane().slideUp(200);
			this.getPanes().eq(f).slideDown(400, e)
		},
		ajax : function(f, e) {
			this.getPanes().eq(0).load(this.getTabs().eq(f).attr("href"), e)
		}
	};
	var b;
	d.tools.tabs.addEffect("horizontal", function(f, e) {
		if (!b) {
			b = this.getPanes().eq(0).width()
		}
		this.getCurrentPane().animate( {
			width : 0
		}, function() {
			d(this).hide()
		});
		this.getPanes().eq(f).animate( {
			width : b
		}, function() {
			d(this).show();
			e.call()
		})
	});
	function a(g, h, f) {
		var e = this, j = d(this), i;
		d.each(f, function(k, l) {
			if (d.isFunction(l)) {
				j.bind(k, l)
			}
		});
		d.extend(this, {
			click : function(k) {
				var o = e.getCurrentPane();
				var l = g.eq(k);
				if (typeof k == "string" && k.replace("#", "")) {
					l = g.filter("[href*=" + k.replace("#", "") + "]");
					k = Math.max(g.index(l), 0)
				}
				if (f.rotate) {
					var m = g.length - 1;
					if (k < 0) {
						return e.click(m)
					}
					if (k > m) {
						return e.click(0)
					}
				}
				if (!l.length) {
					if (i >= 0) {
						return e
					}
					k = f.initialIndex;
					l = g.eq(k)
				}
				var n = d.Event("onBeforeClick");
				j.trigger(n, [ k ]);
				if (n.isDefaultPrevented()) {
					return
				}
				if (k === i) {
					return e
				}
				l.addClass(f.current);
				c[f.effect].call(e, k, function() {
					j.trigger("onClick", [ k ])
				});
				g.removeClass(f.current);
				l.addClass(f.current);
				i = k;
				return e
			},
			getConf : function() {
				return f
			},
			getTabs : function() {
				return g
			},
			getPanes : function() {
				return h
			},
			getCurrentPane : function() {
				return h.eq(i)
			},
			getCurrentTab : function() {
				return g.eq(i)
			},
			getIndex : function() {
				return i
			},
			next : function() {
				return e.click(i + 1)
			},
			prev : function() {
				return e.click(i - 1)
			},
			bind : function(k, l) {
				j.bind(k, l);
				return e
			},
			onBeforeClick : function(k) {
				return this.bind("onBeforeClick", k)
			},
			onClick : function(k) {
				return this.bind("onClick", k)
			},
			unbind : function(k) {
				j.unbind(k);
				return e
			}
		});
		g.each(function(k) {
			d(this).bind(f.event, function(l) {
				e.click(k);
				return l.preventDefault()
			})
		});
		if (location.hash) {
			e.click(location.hash)
		} else {
			e.click(f.initialIndex)
		}
		h.find("a[href^=#]").click(function() {
			e.click(d(this).attr("href"))
		})
	}
	d.fn.tabs = function(i, f) {
		var g = this.eq(typeof f == "number" ? f : 0).data("tabs");
		if (g) {
			return g
		}
		if (d.isFunction(f)) {
			f = {
				onBeforeClick : f
			}
		}
		var h = d.extend( {}, d.tools.tabs.conf), e = this.length;
		f = d.extend(h, f);
		this.each(function(l) {
			var j = d(this);
			var k = j.find(f.tabs);
			if (!k.length) {
				k = j.children()
			}
			var m = i.jquery ? i : j.children(i);
			if (!m.length) {
				m = e == 1 ? d(i) : j.parent().find(i)
			}
			g = new a(k, m, f);
			j.data("tabs", g)
		});
		return f.api ? g : this
	}
})(jQuery);
(function(b) {
	var a = b.tools.tabs;
	a.plugins = a.plugins || {};
	a.plugins.slideshow = {
		version : "1.0.1",
		conf : {
			next : ".forward",
			prev : ".backward",
			disabledClass : "disabled",
			autoplay : false,
			autopause : true,
			interval : 3000,
			clickable : true,
			api : false
		}
	};
	b.prototype.slideshow = function(e) {
		var f = b.extend( {}, a.plugins.slideshow.conf), c = this.length, d;
		e = b.extend(f, e);
		this.each(function() {
			var p = b(this), m = p.tabs(), i = b(m), o = m;
			b.each(e, function(t, u) {
				if (b.isFunction(u)) {
					m.bind(t, u)
				}
			});
			function n(t) {
				return c == 1 ? b(t) : p.parent().find(t)
			}
			var s = n(e.next).click(function() {
				m.next()
			});
			var q = n(e.prev).click(function() {
				m.prev()
			});
			var h, j, l, g = false;
			b.extend(m, {
				play : function() {
					if (h) {
						return
					}
					var t = b.Event("onBeforePlay");
					i.trigger(t);
					if (t.isDefaultPrevented()) {
						return m
					}
					g = false;
					h = setInterval(m.next, e.interval);
					i.trigger("onPlay");
					m.next()
				},
				pause : function() {
					if (!h) {
						return m
					}
					var t = b.Event("onBeforePause");
					i.trigger(t);
					if (t.isDefaultPrevented()) {
						return m
					}
					h = clearInterval(h);
					l = clearInterval(l);
					i.trigger("onPause")
				},
				stop : function() {
					m.pause();
					g = true
				},
				onBeforePlay : function(t) {
					return m.bind("onBeforePlay", t)
				},
				onPlay : function(t) {
					return m.bind("onPlay", t)
				},
				onBeforePause : function(t) {
					return m.bind("onBeforePause", t)
				},
				onPause : function(t) {
					return m.bind("onPause", t)
				}
			});
			if (e.autopause) {
				var k = m.getTabs().add(s).add(q).add(m.getPanes());
				k.hover(function() {
					m.pause();
					j = clearInterval(j)
				}, function() {
					if (!g) {
						j = setTimeout(m.play, e.interval)
					}
				})
			}
			if (e.autoplay) {
				l = setTimeout(m.play, e.interval)
			} else {
				m.stop()
			}
			if (e.clickable) {
				m.getPanes().click(function() {
					m.next()
				})
			}
			if (!m.getConf().rotate) {
				var r = e.disabledClass;
				if (!m.getIndex()) {
					q.addClass(r)
				}
				m.onBeforeClick(function(t) {
					if (!t) {
						q.addClass(r)
					} else {
						q.removeClass(r);
						if (t == m.getTabs().length - 1) {
							s.addClass(r)
						} else {
							s.removeClass(r)
						}
					}
				})
			}
		});
		return e.api ? d : this
	}
})(jQuery);
(function(d) {
	var a = d.tools.tabs;
	a.plugins = a.plugins || {};
	a.plugins.history = {
		version : "1.0.1",
		conf : {
			api : false
		}
	};
	var e, b;
	function c(f) {
		if (f) {
			var g = b.contentWindow.document;
			g.open().close();
			g.location.hash = f
		}
	}
	d.fn.onHash = function(g) {
		var f = this;
		if (d.browser.msie && d.browser.version < "8") {
			if (!b) {
				b = d("<iframe/>").attr("src", "javascript:false;").hide().get(
						0);
				d("body").append(b);
				setInterval(function() {
					var i = b.contentWindow.document, j = i.location.hash;
					if (e !== j) {
						d.event.trigger("hash", j);
						e = j
					}
				}, 100);
				c(location.hash || "#")
			}
			f.bind("click.hash", function(h) {
				c(d(this).attr("href"))
			})
		} else {
			setInterval(function() {
				var j = location.hash;
				var i = f.filter("[href$=" + j + "]");
				if (!i.length) {
					j = j.replace("#", "");
					i = f.filter("[href$=" + j + "]")
				}
				if (i.length && j !== e) {
					e = j;
					d.event.trigger("hash", j)
				}
			}, 100)
		}
		d(window).bind("hash", g);
		return this
	};
	d.fn.history = function(g) {
		var h = d.extend( {}, a.plugins.history.conf), f;
		g = d.extend(h, g);
		this.each(function() {
			var k = d(this).tabs(), j = k.getTabs(), i = k;
			j.onHash(function(l, m) {
				if (!m || m == "#") {
					m = k.getConf().initialIndex
				}
				k.click(m)
			});
			j.click(function(l) {
				location.hash = d(this).attr("href").replace("#", "")
			})
		});
		return g.api ? f : this
	}
})(jQuery);
(function(c) {
	c.tools = c.tools || {};
	c.tools.tooltip = {
		version : "1.1.1",
		conf : {
			effect : "toggle",
			fadeOutSpeed : "fast",
			tip : null,
			predelay : 0,
			delay : 30,
			opacity : 1,
			lazy : undefined,
			position : [ "top", "center" ],
			offset : [ 0, 0 ],
			cancelDefault : true,
			relative : false,
			events : {
				def : "mouseover,mouseout",
				input : "focus,blur",
				widget : "focus mouseover,blur mouseout"
			},
			api : false
		},
		addEffect : function(d, f, e) {
			b[d] = [ f, e ]
		}
	};
	var b = {
		toggle : [ function(d) {
			var e = this.getConf();
			this.getTip().css( {
				opacity : e.opacity
			}).show();
			d.call()
		}, function(d) {
			this.getTip().hide();
			d.call()
		} ],
		fade : [ function(d) {
			this.getTip().fadeIn(this.getConf().fadeInSpeed, d)
		}, function(d) {
			this.getTip().fadeOut(this.getConf().fadeOutSpeed, d)
		} ]
	};
	function a(e, f) {
		var o = this, j = c(this);
		e.data("tooltip", o);
		var k = e.next();
		if (f.tip) {
			k = c(f.tip);
			if (k.length > 1) {
				k = e.nextAll(f.tip).eq(0);
				if (!k.length) {
					k = e.parent().nextAll(f.tip).eq(0)
				}
			}
		}
		function n(t) {
			var s = f.relative ? e.position().top : e.offset().top, r = f.relative ? e
					.position().left
					: e.offset().left, u = f.position[0];
			s -= k.outerHeight() - f.offset[0];
			r += e.outerWidth() + f.offset[1];
			var p = k.outerHeight() + e.outerHeight();
			if (u == "center") {
				s += p / 2
			}
			if (u == "bottom") {
				s += p
			}
			u = f.position[1];
			var q = k.outerWidth() + e.outerWidth();
			if (u == "center") {
				r -= q / 2
			}
			if (u == "left") {
				r -= q
			}
			return {
				top : s,
				left : r
			}
		}
		var h = e.is(":input"), d = h
				&& e.is(":checkbox, :radio, select, :button"), g = e
				.attr("type"), m = f.events[g]
				|| f.events[h ? (d ? "widget" : "input") : "def"];
		m = m.split(/,\s*/);
		e.bind(m[0], function(q) {
			var p = k.data("trigger");
			if (p && p[0] != this) {
				k.hide()
			}
			q.target = this;
			o.show(q);
			k.hover(o.show, function() {
				o.hide(q)
			})
		});
		e.bind(m[1], function(p) {
			o.hide(p)
		});
		if (!c.browser.msie && !h) {
			e.mousemove(function() {
				if (!o.isShown()) {
					e.triggerHandler("mouseover")
				}
			})
		}
		if (f.opacity < 1) {
			k.css("opacity", f.opacity)
		}
		var l = 0, i = e.attr("title");
		if (i && f.cancelDefault) {
			e.removeAttr("title");
			e.data("title", i)
		}
		c.extend(o, {
			show : function(q) {
				if (q) {
					e = c(q.target)
				}
				clearTimeout(k.data("timer"));
				if (k.is(":animated") || k.is(":visible")) {
					return o
				}
				function p() {
					k.data("trigger", e);
					var s = n(q);
					if (f.tip && i) {
						k.html(e.data("title"))
					}
					var r = c.Event("onBeforeShow");
					j.trigger(r, [ s ]);
					if (r.isDefaultPrevented()) {
						return o
					}
					s = n(q);
					k.css( {
						position : "absolute",
						top : s.top,
						left : s.left
					});
					b[f.effect][0].call(o, function() {
						j.trigger("onShow")
					})
				}
				if (f.predelay) {
					clearTimeout(l);
					l = setTimeout(p, f.predelay)
				} else {
					p()
				}
				return o
			},
			hide : function(q) {
				clearTimeout(k.data("timer"));
				clearTimeout(l);
				if (!k.is(":visible")) {
					return
				}
				function p() {
					var r = c.Event("onBeforeHide");
					j.trigger(r);
					if (r.isDefaultPrevented()) {
						return
					}
					b[f.effect][1].call(o, function() {
						j.trigger("onHide")
					})
				}
				if (f.delay && q) {
					k.data("timer", setTimeout(p, f.delay))
				} else {
					p()
				}
				return o
			},
			isShown : function() {
				return k.is(":visible, :animated")
			},
			getConf : function() {
				return f
			},
			getTip : function() {
				return k
			},
			getTrigger : function() {
				return e
			},
			bind : function(p, q) {
				j.bind(p, q);
				return o
			},
			onHide : function(p) {
				return this.bind("onHide", p)
			},
			onBeforeShow : function(p) {
				return this.bind("onBeforeShow", p)
			},
			onShow : function(p) {
				return this.bind("onShow", p)
			},
			onBeforeHide : function(p) {
				return this.bind("onBeforeHide", p)
			},
			unbind : function(p) {
				j.unbind(p);
				return o
			}
		});
		c.each(f, function(p, q) {
			if (c.isFunction(q)) {
				o.bind(p, q)
			}
		})
	}
	c.prototype.tooltip = function(d) {
		var e = this.eq(typeof d == "number" ? d : 0).data("tooltip");
		if (e) {
			return e
		}
		var f = c.extend(true, {}, c.tools.tooltip.conf);
		if (c.isFunction(d)) {
			d = {
				onBeforeShow : d
			}
		} else {
			if (typeof d == "string") {
				d = {
					tip : d
				}
			}
		}
		d = c.extend(true, f, d);
		if (typeof d.position == "string") {
			d.position = d.position.split(/,?\s/)
		}
		if (d.lazy !== false && (d.lazy === true || this.length > 20)) {
			this.one("mouseover", function(g) {
				e = new a(c(this), d);
				e.show(g)
			})
		} else {
			this.each(function() {
				e = new a(c(this), d)
			})
		}
		return d.api ? e : this
	}
})(jQuery);
(function(b) {
	var a = b.tools.tooltip;
	a.effects = a.effects || {};
	a.effects.slide = {
		version : "1.0.0"
	};
	b.extend(a.conf, {
		direction : "up",
		bounce : false,
		slideOffset : 10,
		slideInSpeed : 200,
		slideOutSpeed : 200,
		slideFade : !b.browser.msie
	});
	var c = {
		up : [ "-", "top" ],
		down : [ "+", "top" ],
		left : [ "-", "left" ],
		right : [ "+", "left" ]
	};
	b.tools.tooltip.addEffect("slide", function(d) {
		var f = this.getConf(), g = this.getTip(), h = f.slideFade ? {
			opacity : f.opacity
		} : {}, e = c[f.direction] || c.up;
		h[e[1]] = e[0] + "=" + f.slideOffset;
		if (f.slideFade) {
			g.css( {
				opacity : 0
			})
		}
		g.show().animate(h, f.slideInSpeed, d)
	}, function(e) {
		var g = this.getConf(), i = g.slideOffset, h = g.slideFade ? {
			opacity : 0
		} : {}, f = c[g.direction] || c.up;
		var d = "" + f[0];
		if (g.bounce) {
			d = d == "+" ? "-" : "+"
		}
		h[f[1]] = d + "=" + i;
		this.getTip().animate(h, g.slideOutSpeed, function() {
			b(this).hide();
			e.call()
		})
	})
})(jQuery);
(function(d) {
	var c = d.tools.tooltip;
	c.plugins = c.plugins || {};
	c.plugins.dynamic = {
		version : "1.0.1",
		conf : {
			api : false,
			classNames : "top right bottom left"
		}
	};
	function b(h) {
		var e = d(window);
		var g = e.width() + e.scrollLeft();
		var f = e.height() + e.scrollTop();
		return [ h.offset().top <= e.scrollTop(),
				g <= h.offset().left + h.width(),
				f <= h.offset().top + h.height(),
				e.scrollLeft() >= h.offset().left ]
	}
	function a(f) {
		var e = f.length;
		while (e--) {
			if (f[e]) {
				return false
			}
		}
		return true
	}
	d.fn.dynamic = function(g) {
		var h = d.extend( {}, c.plugins.dynamic.conf), f;
		if (typeof g == "number") {
			g = {
				speed : g
			}
		}
		g = d.extend(h, g);
		var e = g.classNames.split(/\s/), i;
		this
				.each(function() {
					if (d(this).tooltip().jquery) {
						throw "Lazy feature not supported by dynamic plugin. set lazy: false for tooltip"
					}
					var j = d(this).tooltip().onBeforeShow(
							function(n, o) {
								var m = this.getTip(), k = this.getConf();
								if (!i) {
									i = [ k.position[0], k.position[1],
											k.offset[0], k.offset[1],
											d.extend( {}, k) ]
								}
								d.extend(k, i[4]);
								k.position = [ i[0], i[1] ];
								k.offset = [ i[2], i[3] ];
								m.css( {
									visibility : "hidden",
									position : "absolute",
									top : o.top,
									left : o.left
								}).show();
								var l = b(m);
								if (!a(l)) {
									if (l[2]) {
										d.extend(k, k.top);
										k.position[0] = "top";
										m.addClass(e[0])
									}
									if (l[3]) {
										d.extend(k, k.right);
										k.position[1] = "right";
										m.addClass(e[1])
									}
									if (l[0]) {
										d.extend(k, k.bottom);
										k.position[0] = "bottom";
										m.addClass(e[2])
									}
									if (l[1]) {
										d.extend(k, k.left);
										k.position[1] = "left";
										m.addClass(e[3])
									}
									if (l[0] || l[2]) {
										k.offset[0] *= -1
									}
									if (l[1] || l[3]) {
										k.offset[1] *= -1
									}
								}
								m.css( {
									visibility : "visible"
								}).hide()
							});
					j.onShow(function() {
						var l = this.getConf(), k = this.getTip();
						l.position = [ i[0], i[1] ];
						l.offset = [ i[2], i[3] ]
					});
					j.onHide(function() {
						var k = this.getTip();
						k.removeClass(g.classNames);
						d.extend(g, i[4])
					});
					f = j
				});
		return g.api ? f : this
	}
})(jQuery);
(function(c) {
	c.tools = c.tools || {};
	c.tools.scrollable = {
		version : "1.1.1",
		conf : {
			size : 5,
			vertical : false,
			speed : 400,
			keyboard : true,
			keyboardSteps : null,
			disabledClass : "disabled",
			hoverClass : null,
			clickable : true,
			activeClass : "active",
			easing : "swing",
			loop : false,
			items : ".items",
			item : null,
			prev : ".prev",
			next : ".next",
			prevPage : ".prevPage",
			nextPage : ".nextPage",
			api : false
		}
	};
	var d, a = 0;
	function b(q, o, m) {
		var t = this, r = c(this), e = !o.vertical, f = q.children(), l = 0, j;
		if (!d) {
			d = t
		}
		c.each(o, function(u, v) {
			if (c.isFunction(v)) {
				r.bind(u, v)
			}
		});
		if (f.length > 1) {
			f = c(o.items, q)
		}
		function n(v) {
			var u = c(v);
			return m == 1 || u.length == 1 || o.globalNav ? u : q.parent()
					.find(v)
		}
		q.data("finder", n);
		var g = n(o.prev), i = n(o.next), h = n(o.prevPage), p = n(o.nextPage);
		c.extend(t, {
			getIndex : function() {
				return l
			},
			getClickIndex : function() {
				var u = t.getItems();
				return u.index(u.filter("." + o.activeClass))
			},
			getConf : function() {
				return o
			},
			getSize : function() {
				return t.getItems().size()
			},
			getPageAmount : function() {
				return Math.ceil(this.getSize() / o.size)
			},
			getPageIndex : function() {
				return Math.ceil(l / o.size)
			},
			getNaviButtons : function() {
				return g.add(i).add(h).add(p)
			},
			getRoot : function() {
				return q
			},
			getItemWrap : function() {
				return f
			},
			getItems : function() {
				return f.children(o.item)
			},
			getVisibleItems : function() {
				return t.getItems().slice(l, l + o.size)
			},
			seekTo : function(u, y, v) {
				if (u < 0) {
					u = 0
				}
				if (l === u) {
					return t
				}
				if (y === undefined) {
					y = o.speed
				}
				if (c.isFunction(y)) {
					v = y;
					y = o.speed
				}
				if (u > t.getSize() - o.size) {
					return o.loop ? t.begin() : this.end()
				}
				var w = t.getItems().eq(u);
				if (!w.length) {
					return t
				}
				var x = c.Event("onBeforeSeek");
				r.trigger(x, [ u ]);
				if (x.isDefaultPrevented()) {
					return t
				}
				function z() {
					if (v) {
						v.call(t)
					}
					r.trigger("onSeek", [ u ])
				}
				if (e) {
					f.animate( {
						left : -w.position().left
					}, y, o.easing, z)
				} else {
					f.animate( {
						top : -w.position().top
					}, y, o.easing, z)
				}
				d = t;
				l = u;
				return t
			},
			move : function(w, v, u) {
				j = w > 0;
				return this.seekTo(l + w, v, u)
			},
			next : function(v, u) {
				return this.move(1, v, u)
			},
			prev : function(v, u) {
				return this.move(-1, v, u)
			},
			movePage : function(y, x, w) {
				j = y > 0;
				var u = o.size * y;
				var v = l % o.size;
				if (v > 0) {
					u += (y > 0 ? -v : o.size - v)
				}
				return this.move(u, x, w)
			},
			prevPage : function(v, u) {
				return this.movePage(-1, v, u)
			},
			nextPage : function(v, u) {
				return this.movePage(1, v, u)
			},
			setPage : function(v, w, u) {
				return this.seekTo(v * o.size, w, u)
			},
			begin : function(v, u) {
				j = false;
				return this.seekTo(0, v, u)
			},
			end : function(v, u) {
				j = true;
				var w = this.getSize() - o.size;
				return w > 0 ? this.seekTo(w, v, u) : t
			},
			reload : function() {
				r.trigger("onReload");
				return t
			},
			bind : function(u, v) {
				r.bind(u, v);
				return t
			},
			onBeforeSeek : function(u) {
				return this.bind("onBeforeSeek", u)
			},
			onSeek : function(u) {
				return this.bind("onSeek", u)
			},
			onReload : function(u) {
				return this.bind("onReload", u)
			},
			unbind : function(u) {
				r.unbind(u);
				return t
			},
			focus : function() {
				d = t;
				return t
			},
			click : function(w) {
				var x = t.getItems().eq(w), u = o.activeClass, v = o.size;
				if (w < 0 || w >= t.getSize()) {
					return t
				}
				if (v == 1) {
					if (o.loop) {
						return t.next()
					}
					if (w === 0 || w == t.getSize() - 1) {
						j = (j === undefined) ? true : !j
					}
					return j === false ? t.prev() : t.next()
				}
				if (v == 2) {
					if (w == l) {
						w--
					}
					t.getItems().removeClass(u);
					x.addClass(u);
					return t.seekTo(w, time, fn)
				}
				if (!x.hasClass(u)) {
					t.getItems().removeClass(u);
					x.addClass(u);
					var z = Math.floor(v / 2);
					var y = w - z;
					if (y > t.getSize() - v) {
						y = t.getSize() - v
					}
					if (y !== w) {
						return t.seekTo(y)
					}
				}
				return t
			}
		});
		g.addClass(o.disabledClass).click(function() {
			t.prev()
		});
		i.click(function() {
			t.next()
		});
		p.click(function() {
			t.nextPage()
		});
		h.addClass(o.disabledClass).click(function() {
			t.prevPage()
		});
		t.onSeek(function(v, u) {
			if (u === 0) {
				g.add(h).addClass(o.disabledClass)
			} else {
				g.add(h).removeClass(o.disabledClass)
			}
			if (u >= t.getSize() - o.size) {
				i.add(p).addClass(o.disabledClass)
			} else {
				i.add(p).removeClass(o.disabledClass)
			}
		});
		var k = o.hoverClass, s = "keydown."
				+ Math.random().toString().substring(10);
		t.onReload(function() {
			if (k) {
				t.getItems().hover(function() {
					c(this).addClass(k)
				}, function() {
					c(this).removeClass(k)
				})
			}
			if (o.clickable) {
				t.getItems().each(
						function(u) {
							c(this).unbind("click.scrollable").bind(
									"click.scrollable", function(v) {
										if (c(v.target).is("a")) {
											return
										}
										return t.click(u)
									})
						})
			}
			if (o.keyboard) {
				c(document).unbind(s).bind(s, function(u) {
					if (u.altKey || u.ctrlKey) {
						return
					}
					if (o.keyboard != "static" && d != t) {
						return
					}
					var v = o.keyboardSteps;
					if (e && (u.keyCode == 37 || u.keyCode == 39)) {
						t.move(u.keyCode == 37 ? -v : v);
						return u.preventDefault()
					}
					if (!e && (u.keyCode == 38 || u.keyCode == 40)) {
						t.move(u.keyCode == 38 ? -v : v);
						return u.preventDefault()
					}
					return true
				})
			} else {
				c(document).unbind(s)
			}
		});
		t.reload()
	}
	c.fn.scrollable = function(e) {
		var f = this.eq(typeof e == "number" ? e : 0).data("scrollable");
		if (f) {
			return f
		}
		var g = c.extend( {}, c.tools.scrollable.conf);
		e = c.extend(g, e);
		e.keyboardSteps = e.keyboardSteps || e.size;
		a += this.length;
		this.each(function() {
			f = new b(c(this), e);
			c(this).data("scrollable", f)
		});
		return e.api ? f : this
	}
})(jQuery);
(function(b) {
	var a = b.tools.scrollable;
	a.plugins = a.plugins || {};
	a.plugins.circular = {
		version : "0.5.1",
		conf : {
			api : false,
			clonedClass : "cloned"
		}
	};
	b.fn.circular = function(e) {
		var d = b.extend( {}, a.plugins.circular.conf), c;
		b.extend(d, e);
		this
				.each(function() {
					var i = b(this).scrollable(), n = i.getItems(), k = i
							.getConf(), f = i.getItemWrap(), j = 0;
					if (i) {
						c = i
					}
					if (n.length < k.size) {
						return false
					}
					n.slice(0, k.size).each(function(o) {
						b(this).clone().appendTo(f).click(function() {
							i.click(n.length + o)
						}).addClass(d.clonedClass)
					});
					var l = b.makeArray(n.slice(-k.size)).reverse();
					b(l).each(function(o) {
						b(this).clone().prependTo(f).click(function() {
							i.click(-o - 1)
						}).addClass(d.clonedClass)
					});
					var m = f.children(k.item);
					var h = k.hoverClass;
					if (h) {
						m.hover(function() {
							b(this).addClass(h)
						}, function() {
							b(this).removeClass(h)
						})
					}
					function g(o) {
						var p = m.eq(o);
						if (k.vertical) {
							f.css( {
								top : -p.position().top
							})
						} else {
							f.css( {
								left : -p.position().left
							})
						}
					}
					g(k.size);
					b.extend(i,
							{
								move : function(s, r, p, q) {
									var u = j + s + k.size;
									var t = u > i.getSize() - k.size;
									if (u < 0 || t) {
										var o = j + k.size
												+ (t ? -n.length : n.length);
										g(o);
										u = o + s
									}
									if (q) {
										m.removeClass(k.activeClass).eq(
												u + Math.floor(k.size / 2))
												.addClass(k.activeClass)
									}
									if (u === j + k.size) {
										return self
									}
									return i.seekTo(u, r, p)
								},
								begin : function(p, o) {
									return this.seekTo(k.size, p, o)
								},
								end : function(p, o) {
									return this.seekTo(n.length, p, o)
								},
								click : function(p, r, q) {
									if (!k.clickable) {
										return self
									}
									if (k.size == 1) {
										return this.next()
									}
									var s = p - j, o = k.activeClass;
									s -= Math.floor(k.size / 2);
									return this.move(s, r, q, true)
								},
								getIndex : function() {
									return j
								},
								setPage : function(p, q, o) {
									return this.seekTo(p * k.size + k.size, q,
											o)
								},
								getPageAmount : function() {
									return Math.ceil(n.length / k.size)
								},
								getPageIndex : function() {
									if (j < 0) {
										return this.getPageAmount() - 1
									}
									if (j >= n.length) {
										return 0
									}
									return (j + k.size) / k.size - 1
								},
								getVisibleItems : function() {
									var o = j + k.size;
									return m.slice(o, o + k.size)
								}
							});
					i.onSeek(function(p, o) {
						j = o - k.size;
						i.getNaviButtons().removeClass(k.disabledClass)
					});
					i.getNaviButtons().removeClass(k.disabledClass)
				});
		return d.api ? c : this
	}
})(jQuery);
(function(b) {
	var a = b.tools.scrollable;
	a.plugins = a.plugins || {};
	a.plugins.autoscroll = {
		version : "1.0.1",
		conf : {
			autoplay : true,
			interval : 10000,
			autopause : true,
			steps : 1,
			api : false
		}
	};
	b.fn.autoscroll = function(d) {
		if (typeof d == "number") {
			d = {
				interval : d
			}
		}
		var e = b.extend( {}, a.plugins.autoscroll.conf), c;
		b.extend(e, d);
		this.each(function() {
			var g = b(this).scrollable();
			if (g) {
				c = g
			}
			var i, f, h = true;
			g.play = function() {
				if (i) {
					return
				}
				h = false;
				i = setInterval(function() {
					g.move(e.steps)
				}, e.interval);
				g.move(e.steps)
			};
			g.pause = function() {
				i = clearInterval(i)
			};
			g.stop = function() {
				g.pause();
				h = true
			};
			if (e.autopause) {
				g.getRoot().add(g.getNaviButtons()).hover(function() {
					g.pause();
					clearInterval(f)
				}, function() {
					if (!h) {
						f = setTimeout(g.play, e.interval)
					}
				})
			}
			if (e.autoplay) {
				setTimeout(g.play, e.interval)
			}
		});
		return e.api ? c : this
	}
})(jQuery);
(function(b) {
	var a = b.tools.scrollable;
	a.plugins = a.plugins || {};
	a.plugins.navigator = {
		version : "1.0.1",
		conf : {
			navi : ".navi",
			naviItem : null,
			activeClass : "active",
			indexed : false,
			api : false
		}
	};
	b.fn.navigator = function(d) {
		var e = b.extend( {}, a.plugins.navigator.conf), c;
		if (typeof d == "string") {
			d = {
				navi : d
			}
		}
		d = b.extend(e, d);
		this.each(function() {
			var i = b(this).scrollable(), f = i.getRoot(), l = f.data("finder")
					.call(null, d.navi), g = null, k = i.getNaviButtons();
			if (i) {
				c = i
			}
			i.getNaviButtons = function() {
				return k.add(l)
			};
			function j() {
				if (!l.children().length || l.data("navi") == i) {
					l.empty();
					l.data("navi", i);
					for ( var m = 0; m < i.getPageAmount(); m++) {
						l.append(b("<" + (d.naviItem || "a") + "/>"))
					}
					g = l.children().each(function(n) {
						b(this).click(function(o) {
							i.setPage(n);
							return o.preventDefault()
						});
						if (d.indexed) {
							b(this).text(n)
						}
					})
				} else {
					g = d.naviItem ? l.find(d.naviItem) : l.children();
					g.each(function(n) {
						var o = b(this);
						o.click(function(p) {
							i.setPage(n);
							return p.preventDefault()
						})
					})
				}
				g.eq(0).addClass(d.activeClass)
			}
			i.onSeek(function(n) {
				var m = d.activeClass;
				g.removeClass(m).eq(i.getPageIndex()).addClass(m)
			});
			i.onReload(function() {
				j()
			});
			j();
			var h = g.filter("[href=" + location.hash + "]");
			if (h.length) {
				i.move(g.index(h))
			}
		});
		return d.api ? c : this
	}
})(jQuery);
(function(b) {
	b.fn.wheel = function(e) {
		return this[e ? "bind" : "trigger"]("wheel", e)
	};
	b.event.special.wheel = {
		setup : function() {
			b.event.add(this, d, c, {})
		},
		teardown : function() {
			b.event.remove(this, d, c)
		}
	};
	var d = !b.browser.mozilla ? "mousewheel" : "DOMMouseScroll"
			+ (b.browser.version < "1.9" ? " mousemove" : "");
	function c(e) {
		switch (e.type) {
		case "mousemove":
			return b.extend(e.data, {
				clientX : e.clientX,
				clientY : e.clientY,
				pageX : e.pageX,
				pageY : e.pageY
			});
		case "DOMMouseScroll":
			b.extend(e, e.data);
			e.delta = -e.detail / 3;
			break;
		case "mousewheel":
			e.delta = e.wheelDelta / 120;
			break
		}
		e.type = "wheel";
		return b.event.handle.call(this, e, e.delta)
	}
	var a = b.tools.scrollable;
	a.plugins = a.plugins || {};
	a.plugins.mousewheel = {
		version : "1.0.1",
		conf : {
			api : false,
			speed : 50
		}
	};
	b.fn.mousewheel = function(f) {
		var g = b.extend( {}, a.plugins.mousewheel.conf), e;
		if (typeof f == "number") {
			f = {
				speed : f
			}
		}
		f = b.extend(g, f);
		this.each(function() {
			var h = b(this).scrollable();
			if (h) {
				e = h
			}
			h.getRoot().wheel(function(i, j) {
				h.move(j < 0 ? 1 : -1, f.speed || 50);
				return false
			})
		});
		return f.api ? e : this
	}
})(jQuery);
(function(c) {
	c.tools = c.tools || {};
	c.tools.overlay = {
		version : "1.1.1",
		addEffect : function(e, f, g) {
			b[e] = [ f, g ]
		},
		conf : {
			top : "10%",
			left : "center",
			absolute : false,
			speed : "normal",
			closeSpeed : "fast",
			effect : "default",
			close : null,
			oneInstance : true,
			closeOnClick : true,
			closeOnEsc : true,
			api : false,
			expose : null,
			target : null
		}
	};
	var b = {};
	c.tools.overlay.addEffect("default", function(e) {
		this.getOverlay().fadeIn(this.getConf().speed, e)
	}, function(e) {
		this.getOverlay().fadeOut(this.getConf().closeSpeed, e)
	});
	var d = [];
	function a(h, m) {
		var p = this, n = c(this), o = c(window), k, j, i, f = m.expose
				&& c.tools.expose.version;
		var g = m.target || h.attr("rel");
		j = g ? c(g) : null || h;
		if (h && h.index(j) == -1) {
			h.click(function(q) {
				p.load();
				return q.preventDefault()
			})
		}
		c.each(m, function(e, q) {
			if (c.isFunction(q)) {
				n.bind(e, q)
			}
		});
		c.extend(p, {
			load : function() {
				if (p.isOpened()) {
					return p
				}
				if (m.oneInstance) {
					c.each(d, function() {
						this.close()
					})
				}
				var u = c.Event("onBeforeLoad");
				n.trigger(u);
				if (u.isDefaultPrevented()) {
					return p
				}
				i = true;
				if (f) {
					j.expose().load()
				}
				var t = m.top;
				var s = m.left;
				var q = j.outerWidth( {
					margin : true
				});
				var r = j.outerHeight( {
					margin : true
				});
				if (typeof t == "string") {
					t = t == "center" ? Math.max((o.height() - r) / 2, 0)
							: parseInt(t, 10) / 100 * o.height()
				}
				if (s == "center") {
					s = Math.max((o.width() - q) / 2, 0)
				}
				if (!m.absolute) {
					t += o.scrollTop();
					s += o.scrollLeft()
				}
				j.css( {
					top : t,
					left : s,
					position : "absolute"
				});
				b[m.effect][0].call(p, function() {
					if (i) {
						n.trigger("onLoad")
					}
				});
				if (m.closeOnClick) {
					c(document).bind("click.overlay", function(e) {
						if (!p.isOpened()) {
							return
						}
						var v = c(e.target);
						if (v.parents(j).length > 1) {
							return
						}
						c.each(d, function() {
							this.close()
						})
					})
				}
				if (m.closeOnEsc) {
					c(document).unbind("keydown.overlay").bind(
							"keydown.overlay", function(e) {
								if (e.keyCode == 27) {
									c.each(d, function() {
										this.close()
									})
								}
							})
				}
				return p
			},
			close : function() {
				if (!p.isOpened()) {
					return p
				}
				var r = c.Event("onBeforeClose");
				n.trigger(r);
				if (r.isDefaultPrevented()) {
					return
				}
				i = false;
				b[m.effect][1].call(p, function() {
					n.trigger("onClose")
				});
				var q = true;
				c.each(d, function() {
					if (this.isOpened()) {
						q = false
					}
				});
				if (q) {
					c(document).unbind("click.overlay").unbind(
							"keydown.overlay")
				}
				return p
			},
			getContent : function() {
				return j
			},
			getOverlay : function() {
				return j
			},
			getTrigger : function() {
				return h
			},
			getClosers : function() {
				return k
			},
			isOpened : function() {
				return i
			},
			getConf : function() {
				return m
			},
			bind : function(e, q) {
				n.bind(e, q);
				return p
			},
			onBeforeLoad : function(e) {
				return this.bind("onBeforeLoad", e)
			},
			onLoad : function(e) {
				return this.bind("onLoad", e)
			},
			onBeforeClose : function(e) {
				return this.bind("onBeforeClose", e)
			},
			onClose : function(e) {
				return this.bind("onClose", e)
			},
			unbind : function(e) {
				n.unbind(e);
				return p
			}
		});
		if (f) {
			if (typeof m.expose == "string") {
				m.expose = {
					color : m.expose
				}
			}
			c.extend(m.expose, {
				api : true,
				closeOnClick : m.closeOnClick,
				closeOnEsc : false
			});
			var l = j.expose(m.expose);
			l.onBeforeClose(function() {
				p.close()
			});
			p.onClose(function() {
				l.close()
			})
		}
		k = j.find(m.close || ".close");
		if (!k.length && !m.close) {
			k = c('<div class="close"></div>');
			j.prepend(k)
		}
		k.click(function() {
			p.close()
		})
	}
	c.fn.overlay = function(e) {
		var f = this.eq(typeof e == "number" ? e : 0).data("overlay");
		if (f) {
			return f
		}
		if (c.isFunction(e)) {
			e = {
				onBeforeLoad : e
			}
		}
		var g = c.extend( {}, c.tools.overlay.conf);
		e = c.extend(true, g, e);
		this.each(function() {
			f = new a(c(this), e);
			d.push(f);
			c(this).data("overlay", f)
		});
		return e.api ? f : this
	}
})(jQuery);
(function(b) {
	var a = b.tools.overlay;
	a.plugins = a.plugins || {};
	a.plugins.gallery = {
		version : "1.0.0",
		conf : {
			imgId : "img",
			next : ".next",
			prev : ".prev",
			info : ".info",
			progress : ".progress",
			disabledClass : "disabled",
			activeClass : "active",
			opacity : 0.8,
			speed : "slow",
			template : "<strong>${title}</strong> <span>Image ${index} of ${total}</span>",
			autohide : true,
			preload : true,
			api : false
		}
	};
	b.fn.gallery = function(d) {
		var o = b.extend( {}, a.plugins.gallery.conf), m;
		b.extend(o, d);
		m = this.overlay();
		var r = this, j = m.getOverlay(), k = j.find(o.next), g = j
				.find(o.prev), e = j.find(o.info), c = j.find(o.progress), h = g
				.add(k).add(e).css( {
					opacity : o.opacity
				}), s = m.getClosers(), l;
		function p(u) {
			c.fadeIn();
			h.hide();
			s.hide();
			var t = u.attr("href");
			var v = new Image();
			v.onload = function() {
				c.fadeOut();
				var y = b("#" + o.imgId, j);
				if (!y.length) {
					y = b("<img/>").attr("id", o.imgId).css("visibility",
							"hidden");
					j.prepend(y)
				}
				y.attr("src", t).css("visibility", "hidden");
				var z = v.width;
				var A = (b(window).width() - z) / 2;
				l = r.index(r.filter("[href=" + t + "]"));
				r.removeClass(o.activeClass).eq(l).addClass(o.activeClass);
				var w = o.disabledClass;
				h.removeClass(w);
				if (l === 0) {
					g.addClass(w)
				}
				if (l == r.length - 1) {
					k.addClass(w)
				}
				var B = o.template.replace("${title}",
						u.attr("title") || u.data("title")).replace("${index}",
						l + 1).replace("${total}", r.length);
				var x = parseInt(e.css("paddingLeft"), 10)
						+ parseInt(e.css("paddingRight"), 10);
				e.html(B).css( {
					width : z - x
				});
				j.animate( {
					width : z,
					height : v.height,
					left : A
				}, o.speed, function() {
					y.hide().css("visibility", "visible").fadeIn(function() {
						if (!o.autohide) {
							h.fadeIn();
							s.show()
						}
					})
				})
			};
			v.onerror = function() {
				j.fadeIn().html("Cannot find image " + t)
			};
			v.src = t;
			if (o.preload) {
				r.filter(":eq(" + (l - 1) + "), :eq(" + (l + 1) + ")").each(
						function() {
							var w = new Image();
							w.src = b(this).attr("href")
						})
			}
		}
		function f(t, u) {
			t.click(function() {
				if (t.hasClass(o.disabledClass)) {
					return
				}
				var v = r.eq(i = l + (u ? 1 : -1));
				if (v.length) {
					p(v)
				}
			})
		}
		f(k, true);
		f(g);
		b(document).keydown(function(t) {
			if (!j.is(":visible") || t.altKey || t.ctrlKey) {
				return
			}
			if (t.keyCode == 37 || t.keyCode == 39) {
				var u = t.keyCode == 37 ? g : k;
				u.click();
				return t.preventDefault()
			}
			return true
		});
		function q() {
			if (!j.is(":animated")) {
				h.show();
				s.show()
			}
		}
		if (o.autohide) {
			j.hover(q, function() {
				h.fadeOut();
				s.hide()
			}).mousemove(q)
		}
		var n;
		this.each(function() {
			var v = b(this), u = b(this).overlay(), t = u;
			u.onBeforeLoad(function() {
				p(v)
			});
			u.onClose(function() {
				r.removeClass(o.activeClass)
			})
		});
		return o.api ? n : this
	}
})(jQuery);
(function(d) {
	var b = d.tools.overlay;
	b.effects = b.effects || {};
	b.effects.apple = {
		version : "1.0.1"
	};
	d.extend(b.conf, {
		start : {
			absolute : true,
			top : null,
			left : null
		},
		fadeInSpeed : "fast",
		zIndex : 9999
	});
	function c(f) {
		var g = f.offset();
		return [ g.top + f.height() / 2, g.left + f.width() / 2 ]
	}
	var e = function(n) {
		var k = this.getOverlay(), f = this.getConf(), i = this.getTrigger(), q = this, r = k
				.outerWidth( {
					margin : true
				}), m = k.data("img");
		if (!m) {
			var l = k.css("backgroundImage");
			if (!l) {
				throw "background-image CSS property not set for overlay"
			}
			l = l.substring(l.indexOf("(") + 1, l.indexOf(")")).replace(/\"/g,
					"");
			k.css("backgroundImage", "none");
			m = d('<img src="' + l + '"/>');
			m.css( {
				border : 0,
				position : "absolute",
				display : "none"
			}).width(r);
			d("body").append(m);
			k.data("img", m)
		}
		var o = d(window), j = f.start.top || Math.round(o.height() / 2), h = f.start.left
				|| Math.round(o.width() / 2);
		if (i) {
			var g = c(i);
			j = g[0];
			h = g[1]
		}
		if (!f.start.absolute) {
			j += o.scrollTop();
			h += o.scrollLeft()
		}
		m.css( {
			top : j,
			left : h,
			width : 0,
			zIndex : f.zIndex
		}).show();
		m.animate( {
			top : k.css("top"),
			left : k.css("left"),
			width : r
		}, f.speed, function() {
			k.css("zIndex", f.zIndex + 1).fadeIn(f.fadeInSpeed, function() {
				if (q.isOpened() && !d(this).index(k)) {
					n.call()
				} else {
					k.hide()
				}
			})
		})
	};
	var a = function(f) {
		var h = this.getOverlay(), i = this.getConf(), g = this.getTrigger(), l = i.start.top, k = i.start.left;
		h.hide();
		if (g) {
			var j = c(g);
			l = j[0];
			k = j[1]
		}
		h.data("img").animate( {
			top : l,
			left : k,
			width : 0
		}, i.closeSpeed, f)
	};
	b.addEffect("apple", e, a)
})(jQuery);
(function(b) {
	b.tools = b.tools || {};
	b.tools.expose = {
		version : "1.0.5",
		conf : {
			maskId : null,
			loadSpeed : "slow",
			closeSpeed : "fast",
			closeOnClick : true,
			closeOnEsc : true,
			zIndex : 9998,
			opacity : 0.8,
			color : "#456",
			api : false
		}
	};
	function a() {
		if (b.browser.msie) {
			var f = b(document).height(), e = b(window).height();
			return [
					window.innerWidth || document.documentElement.clientWidth
							|| document.body.clientWidth, f - e < 20 ? e : f ]
		}
		return [ b(window).width(), b(document).height() ]
	}
	function c(h, g) {
		var e = this, j = b(this), d = null, f = false, i = 0;
		b.each(g, function(k, l) {
			if (b.isFunction(l)) {
				j.bind(k, l)
			}
		});
		b(window).resize(function() {
			e.fit()
		});
		b.extend(this, {
			getMask : function() {
				return d
			},
			getExposed : function() {
				return h
			},
			getConf : function() {
				return g
			},
			isLoaded : function() {
				return f
			},
			load : function() {
				if (f) {
					return e
				}
				i = h.eq(0).css("zIndex");
				if (g.maskId) {
					d = b("#" + g.maskId)
				}
				if (!d || !d.length) {
					var l = a();
					d = b("<div/>").css( {
						position : "absolute",
						top : 0,
						left : 0,
						width : l[0],
						height : l[1],
						display : "none",
						opacity : 0,
						zIndex : g.zIndex
					});
					if (g.maskId) {
						d.attr("id", g.maskId)
					}
					b("body").append(d);
					var k = d.css("backgroundColor");
					if (!k || k == "transparent" || k == "rgba(0, 0, 0, 0)") {
						d.css("backgroundColor", g.color)
					}
					if (g.closeOnEsc) {
						b(document).bind("keydown.unexpose", function(o) {
							if (o.keyCode == 27) {
								e.close()
							}
						})
					}
					if (g.closeOnClick) {
						d.bind("click.unexpose", function() {
							e.close()
						})
					}
				}
				var n = b.Event("onBeforeLoad");
				j.trigger(n);
				if (n.isDefaultPrevented()) {
					return e
				}
				b.each(h, function() {
					var o = b(this);
					if (!/relative|absolute|fixed/i.test(o.css("position"))) {
						o.css("position", "relative")
					}
				});
				h.css( {
					zIndex : Math.max(g.zIndex + 1, i == "auto" ? 0 : i)
				});
				var m = d.height();
				if (!this.isLoaded()) {
					d.css( {
						opacity : 0,
						display : "block"
					}).fadeTo(g.loadSpeed, g.opacity, function() {
						if (d.height() != m) {
							d.css("height", m)
						}
						j.trigger("onLoad")
					})
				}
				f = true;
				return e
			},
			close : function() {
				if (!f) {
					return e
				}
				var k = b.Event("onBeforeClose");
				j.trigger(k);
				if (k.isDefaultPrevented()) {
					return e
				}
				d.fadeOut(g.closeSpeed, function() {
					j.trigger("onClose");
					h.css( {
						zIndex : b.browser.msie ? i : null
					})
				});
				f = false;
				return e
			},
			fit : function() {
				if (d) {
					var k = a();
					d.css( {
						width : k[0],
						height : k[1]
					})
				}
			},
			bind : function(k, l) {
				j.bind(k, l);
				return e
			},
			onBeforeLoad : function(k) {
				return this.bind("onBeforeLoad", k)
			},
			onLoad : function(k) {
				return this.bind("onLoad", k)
			},
			onBeforeClose : function(k) {
				return this.bind("onBeforeClose", k)
			},
			onClose : function(k) {
				return this.bind("onClose", k)
			},
			unbind : function(k) {
				j.unbind(k);
				return e
			}
		})
	}
	b.fn.expose = function(d) {
		var e = this.eq(typeof d == "number" ? d : 0).data("expose");
		if (e) {
			return e
		}
		if (typeof d == "string") {
			d = {
				color : d
			}
		}
		var f = b.extend( {}, b.tools.expose.conf);
		d = b.extend(f, d);
		this.each(function() {
			e = new c(b(this), d);
			b(this).data("expose", e)
		});
		return d.api ? e : this
	}
})(jQuery);

