/**
 * home.min.js
 * $Revision: 1.6 $
 *
 *  homepage-min-js -- aggregated and minified
 *  DO NOT EDIT THIS FILE -- edit the individual files and rebuild
 *
 * Writes and supports homepage javascript functions
 * 
 * 
 *
 * MANIFEST:
 *   /web/fw/lib/jquery-1.2.6.js 1.2.6
 *   /web/fw/lib/jquery.hoverIntent.js r5
 *   /web/fw/w/includer.js 1.8 
 *   /web/fw/lib/swfobject-2.1.js 2.1
 *   /web/fw/lib/swfformfix-2.1.js 2.1.0
 *   /web/fw/j/search_fragment.js 1.4 
 *   /web/fw/j/homepage_frag/_home.js 1.3 
 *   /web/fw/j/homepage_frag/_bam.js 1.2 
 *   /web/fw/j/homepage_frag/_spotlight.js 1.4 
 *   /web/fw/j/homepage_frag/_newsticker.js 1.3 
 *   /web/fw/j/homepage_frag/_quicklinks.js 1.3 
 *   /web/fw/j/homepage_frag/_sitenav.js .
 *   /web/fw/j/homepage_frag/_featured_products.js 1.4 
 */
(function() {
	var _jQuery = window.jQuery,
	_$ = window.$;
	var jQuery = window.jQuery = window.$ = function(selector, context) {
		return new jQuery.fn.init(selector, context)
	};
	var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,
	isSimple = /^.[^:#\[\.]*$/,
	undefined;
	jQuery.fn = jQuery.prototype = {
		init: function(selector, context) {
			selector = selector || document;
			if (selector.nodeType) {
				this[0] = selector;
				this.length = 1;
				return this
			}
			if (typeof selector == "string") {
				var match = quickExpr.exec(selector);
				if (match && (match[1] || !context)) {
					if (match[1]) {
						selector = jQuery.clean([match[1]], context)
					} else {
						var elem = document.getElementById(match[3]);
						if (elem) {
							if (elem.id != match[3]) {
								return jQuery().find(selector)
							}
							return jQuery(elem)
						}
						selector = []
					}
				} else {
					return jQuery(context).find(selector)
				}
			} else {
				if (jQuery.isFunction(selector)) {
					return jQuery(document)[jQuery.fn.ready ? "ready": "load"](selector)
				}
			}
			return this.setArray(jQuery.makeArray(selector))
		},
		jquery: "1.2.6",
		size: function() {
			return this.length
		},
		length: 0,
		get: function(num) {
			return num == undefined ? jQuery.makeArray(this) : this[num]
		},
		pushStack: function(elems) {
			var ret = jQuery(elems);
			ret.prevObject = this;
			return ret
		},
		setArray: function(elems) {
			this.length = 0;
			Array.prototype.push.apply(this, elems);
			return this
		},
		each: function(callback, args) {
			return jQuery.each(this, callback, args)
		},
		index: function(elem) {
			var ret = -1;
			return jQuery.inArray(elem && elem.jquery ? elem[0] : elem, this)
		},
		attr: function(name, value, type) {
			var options = name;
			if (name.constructor == String) {
				if (value === undefined) {
					return this[0] && jQuery[type || "attr"](this[0], name)
				} else {
					options = {};
					options[name] = value
				}
			}
			return this.each(function(i) {
				for (name in options) {
					jQuery.attr(type ? this.style: this, name, jQuery.prop(this, options[name], type, i, name))
				}
			})
		},
		css: function(key, value) {
			if ((key == "width" || key == "height") && parseFloat(value) < 0) {
				value = undefined
			}
			return this.attr(key, value, "curCSS")
		},
		text: function(text) {
			if (typeof text != "object" && text != null) {
				return this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(text))
			}
			var ret = "";
			jQuery.each(text || this,
			function() {
				jQuery.each(this.childNodes,
				function() {
					if (this.nodeType != 8) {
						ret += this.nodeType != 1 ? this.nodeValue: jQuery.fn.text([this])
					}
				})
			});
			return ret
		},
		wrapAll: function(html) {
			if (this[0]) {
				jQuery(html, this[0].ownerDocument).clone().insertBefore(this[0]).map(function() {
					var elem = this;
					while (elem.firstChild) {
						elem = elem.firstChild
					}
					return elem
				}).append(this)
			}
			return this
		},
		wrapInner: function(html) {
			return this.each(function() {
				jQuery(this).contents().wrapAll(html)
			})
		},
		wrap: function(html) {
			return this.each(function() {
				jQuery(this).wrapAll(html)
			})
		},
		append: function() {
			return this.domManip(arguments, true, false,
			function(elem) {
				if (this.nodeType == 1) {
					this.appendChild(elem)
				}
			})
		},
		prepend: function() {
			return this.domManip(arguments, true, true,
			function(elem) {
				if (this.nodeType == 1) {
					this.insertBefore(elem, this.firstChild)
				}
			})
		},
		before: function() {
			return this.domManip(arguments, false, false,
			function(elem) {
				this.parentNode.insertBefore(elem, this)
			})
		},
		after: function() {
			return this.domManip(arguments, false, true,
			function(elem) {
				this.parentNode.insertBefore(elem, this.nextSibling)
			})
		},
		end: function() {
			return this.prevObject || jQuery([])
		},
		find: function(selector) {
			var elems = jQuery.map(this,
			function(elem) {
				return jQuery.find(selector, elem)
			});
			return this.pushStack(/[^+>] [^+>]/.test(selector) || selector.indexOf("..") > -1 ? jQuery.unique(elems) : elems)
		},
		clone: function(events) {
			var ret = this.map(function() {
				if (jQuery.browser.msie && !jQuery.isXMLDoc(this)) {
					var clone = this.cloneNode(true),
					container = document.createElement("div");
					container.appendChild(clone);
					return jQuery.clean([container.innerHTML])[0]
				} else {
					return this.cloneNode(true)
				}
			});
			var clone = ret.find("*").andSelf().each(function() {
				if (this[expando] != undefined) {
					this[expando] = null
				}
			});
			if (events === true) {
				this.find("*").andSelf().each(function(i) {
					if (this.nodeType == 3) {
						return
					}
					var events = jQuery.data(this, "events");
					for (var type in events) {
						for (var handler in events[type]) {
							jQuery.event.add(clone[i], type, events[type][handler], events[type][handler].data)
						}
					}
				})
			}
			return ret
		},
		filter: function(selector) {
			return this.pushStack(jQuery.isFunction(selector) && jQuery.grep(this,
			function(elem, i) {
				return selector.call(elem, i)
			}) || jQuery.multiFilter(selector, this))
		},
		not: function(selector) {
			if (selector.constructor == String) {
				if (isSimple.test(selector)) {
					return this.pushStack(jQuery.multiFilter(selector, this, true))
				} else {
					selector = jQuery.multiFilter(selector, this)
				}
			}
			var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
			return this.filter(function() {
				return isArrayLike ? jQuery.inArray(this, selector) < 0 : this != selector
			})
		},
		add: function(selector) {
			return this.pushStack(jQuery.unique(jQuery.merge(this.get(), typeof selector == "string" ? jQuery(selector) : jQuery.makeArray(selector))))
		},
		is: function(selector) {
			return !! selector && jQuery.multiFilter(selector, this).length > 0
		},
		hasClass: function(selector) {
			return this.is("." + selector)
		},
		val: function(value) {
			if (value == undefined) {
				if (this.length) {
					var elem = this[0];
					if (jQuery.nodeName(elem, "select")) {
						var index = elem.selectedIndex,
						values = [],
						options = elem.options,
						one = elem.type == "select-one";
						if (index < 0) {
							return null
						}
						for (var i = one ? index: 0, max = one ? index + 1 : options.length; i < max; i++) {
							var option = options[i];
							if (option.selected) {
								value = jQuery.browser.msie && !option.attributes.value.specified ? option.text: option.value;
								if (one) {
									return value
								}
								values.push(value)
							}
						}
						return values
					} else {
						return (this[0].value || "").replace(/\r/g, "")
					}
				}
				return undefined
			}
			if (value.constructor == Number) {
				value += ""
			}
			return this.each(function() {
				if (this.nodeType != 1) {
					return
				}
				if (value.constructor == Array && /radio|checkbox/.test(this.type)) {
					this.checked = (jQuery.inArray(this.value, value) >= 0 || jQuery.inArray(this.name, value) >= 0)
				} else {
					if (jQuery.nodeName(this, "select")) {
						var values = jQuery.makeArray(value);
						jQuery("option", this).each(function() {
							this.selected = (jQuery.inArray(this.value, values) >= 0 || jQuery.inArray(this.text, values) >= 0)
						});
						if (!values.length) {
							this.selectedIndex = -1
						}
					} else {
						this.value = value
					}
				}
			})
		},
		html: function(value) {
			return value == undefined ? (this[0] ? this[0].innerHTML: null) : this.empty().append(value)
		},
		replaceWith: function(value) {
			return this.after(value).remove()
		},
		eq: function(i) {
			return this.slice(i, i + 1)
		},
		slice: function() {
			return this.pushStack(Array.prototype.slice.apply(this, arguments))
		},
		map: function(callback) {
			return this.pushStack(jQuery.map(this,
			function(elem, i) {
				return callback.call(elem, i, elem)
			}))
		},
		andSelf: function() {
			return this.add(this.prevObject)
		},
		data: function(key, value) {
			var parts = key.split(".");
			parts[1] = parts[1] ? "." + parts[1] : "";
			if (value === undefined) {
				var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
				if (data === undefined && this.length) {
					data = jQuery.data(this[0], key)
				}
				return data === undefined && parts[1] ? this.data(parts[0]) : data
			} else {
				return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() {
					jQuery.data(this, key, value)
				})
			}
		},
		removeData: function(key) {
			return this.each(function() {
				jQuery.removeData(this, key)
			})
		},
		domManip: function(args, table, reverse, callback) {
			var clone = this.length > 1,
			elems;
			return this.each(function() {
				if (!elems) {
					elems = jQuery.clean(args, this.ownerDocument);
					if (reverse) {
						elems.reverse()
					}
				}
				var obj = this;
				if (table && jQuery.nodeName(this, "table") && jQuery.nodeName(elems[0], "tr")) {
					obj = this.getElementsByTagName("tbody")[0] || this.appendChild(this.ownerDocument.createElement("tbody"))
				}
				var scripts = jQuery([]);
				jQuery.each(elems,
				function() {
					var elem = clone ? jQuery(this).clone(true)[0] : this;
					if (jQuery.nodeName(elem, "script")) {
						scripts = scripts.add(elem)
					} else {
						if (elem.nodeType == 1) {
							scripts = scripts.add(jQuery("script", elem).remove())
						}
						callback.call(obj, elem)
					}
				});
				scripts.each(evalScript)
			})
		}
	};
	jQuery.fn.init.prototype = jQuery.fn;
	function evalScript(i, elem) {
		if (elem.src) {
			jQuery.ajax({
				url: elem.src,
				async: false,
				dataType: "script"
			})
		} else {
			jQuery.globalEval(elem.text || elem.textContent || elem.innerHTML || "")
		}
		if (elem.parentNode) {
			elem.parentNode.removeChild(elem)
		}
	}
	function now() {
		return + new Date
	}
	jQuery.extend = jQuery.fn.extend = function() {
		var target = arguments[0] || {},
		i = 1,
		length = arguments.length,
		deep = false,
		options;
		if (target.constructor == Boolean) {
			deep = target;
			target = arguments[1] || {};
			i = 2
		}
		if (typeof target != "object" && typeof target != "function") {
			target = {}
		}
		if (length == i) {
			target = this; --i
		}
		for (; i < length; i++) {
			if ((options = arguments[i]) != null) {
				for (var name in options) {
					var src = target[name],
					copy = options[name];
					if (target === copy) {
						continue
					}
					if (deep && copy && typeof copy == "object" && !copy.nodeType) {
						target[name] = jQuery.extend(deep, src || (copy.length != null ? [] : {}), copy)
					} else {
						if (copy !== undefined) {
							target[name] = copy
						}
					}
				}
			}
		}
		return target
	};
	var expando = "jQuery" + now(),
	uuid = 0,
	windowData = {},
	exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
	defaultView = document.defaultView || {};
	jQuery.extend({
		noConflict: function(deep) {
			window.$ = _$;
			if (deep) {
				window.jQuery = _jQuery
			}
			return jQuery
		},
		isFunction: function(fn) {
			return !! fn && typeof fn != "string" && !fn.nodeName && fn.constructor != Array && /^[\s[]?function/.test(fn + "")
		},
		isXMLDoc: function(elem) {
			return elem.documentElement && !elem.body || elem.tagName && elem.ownerDocument && !elem.ownerDocument.body
		},
		globalEval: function(data) {
			data = jQuery.trim(data);
			if (data) {
				var head = document.getElementsByTagName("head")[0] || document.documentElement,
				script = document.createElement("script");
				script.type = "text/javascript";
				if (jQuery.browser.msie) {
					script.text = data
				} else {
					script.appendChild(document.createTextNode(data))
				}
				head.insertBefore(script, head.firstChild);
				head.removeChild(script)
			}
		},
		nodeName: function(elem, name) {
			return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase()
		},
		cache: {},
		data: function(elem, name, data) {
			elem = elem == window ? windowData: elem;
			var id = elem[expando];
			if (!id) {
				id = elem[expando] = ++uuid
			}
			if (name && !jQuery.cache[id]) {
				jQuery.cache[id] = {}
			}
			if (data !== undefined) {
				jQuery.cache[id][name] = data
			}
			return name ? jQuery.cache[id][name] : id
		},
		removeData: function(elem, name) {
			elem = elem == window ? windowData: elem;
			var id = elem[expando];
			if (name) {
				if (jQuery.cache[id]) {
					delete jQuery.cache[id][name];
					name = "";
					for (name in jQuery.cache[id]) {
						break
					}
					if (!name) {
						jQuery.removeData(elem)
					}
				}
			} else {
				try {
					delete elem[expando]
				} catch(e) {
					if (elem.removeAttribute) {
						elem.removeAttribute(expando)
					}
				}
				delete jQuery.cache[id]
			}
		},
		each: function(object, callback, args) {
			var name, i = 0,
			length = object.length;
			if (args) {
				if (length == undefined) {
					for (name in object) {
						if (callback.apply(object[name], args) === false) {
							break
						}
					}
				} else {
					for (; i < length;) {
						if (callback.apply(object[i++], args) === false) {
							break
						}
					}
				}
			} else {
				if (length == undefined) {
					for (name in object) {
						if (callback.call(object[name], name, object[name]) === false) {
							break
						}
					}
				} else {
					for (var value = object[0]; i < length && callback.call(value, i, value) !== false; value = object[++i]) {}
				}
			}
			return object
		},
		prop: function(elem, value, type, i, name) {
			if (jQuery.isFunction(value)) {
				value = value.call(elem, i)
			}
			return value && value.constructor == Number && type == "curCSS" && !exclude.test(name) ? value + "px": value
		},
		className: {
			add: function(elem, classNames) {
				jQuery.each((classNames || "").split(/\s+/),
				function(i, className) {
					if (elem.nodeType == 1 && !jQuery.className.has(elem.className, className)) {
						elem.className += (elem.className ? " ": "") + className
					}
				})
			},
			remove: function(elem, classNames) {
				if (elem.nodeType == 1) {
					elem.className = classNames != undefined ? jQuery.grep(elem.className.split(/\s+/),
					function(className) {
						return ! jQuery.className.has(classNames, className)
					}).join(" ") : ""
				}
			},
			has: function(elem, className) {
				return jQuery.inArray(className, (elem.className || elem).toString().split(/\s+/)) > -1
			}
		},
		swap: function(elem, options, callback) {
			var old = {};
			for (var name in options) {
				old[name] = elem.style[name];
				elem.style[name] = options[name]
			}
			callback.call(elem);
			for (var name in options) {
				elem.style[name] = old[name]
			}
		},
		css: function(elem, name, force) {
			if (name == "width" || name == "height") {
				var val, props = {
					position: "absolute",
					visibility: "hidden",
					display: "block"
				},
				which = name == "width" ? ["Left", "Right"] : ["Top", "Bottom"];
				function getWH() {
					val = name == "width" ? elem.offsetWidth: elem.offsetHeight;
					var padding = 0,
					border = 0;
					jQuery.each(which,
					function() {
						padding += parseFloat(jQuery.curCSS(elem, "padding" + this, true)) || 0;
						border += parseFloat(jQuery.curCSS(elem, "border" + this + "Width", true)) || 0
					});
					val -= Math.round(padding + border)
				}
				if (jQuery(elem).is(":visible")) {
					getWH()
				} else {
					jQuery.swap(elem, props, getWH)
				}
				return Math.max(0, val)
			}
			return jQuery.curCSS(elem, name, force)
		},
		curCSS: function(elem, name, force) {
			var ret, style = elem.style;
			function color(elem) {
				if (!jQuery.browser.safari) {
					return false
				}
				var ret = defaultView.getComputedStyle(elem, null);
				return ! ret || ret.getPropertyValue("color") == ""
			}
			if (name == "opacity" && jQuery.browser.msie) {
				ret = jQuery.attr(style, "opacity");
				return ret == "" ? "1": ret
			}
			if (jQuery.browser.opera && name == "display") {
				var save = style.outline;
				style.outline = "0 solid black";
				style.outline = save
			}
			if (name.match(/float/i)) {
				name = styleFloat
			}
			if (!force && style && style[name]) {
				ret = style[name]
			} else {
				if (defaultView.getComputedStyle) {
					if (name.match(/float/i)) {
						name = "float"
					}
					name = name.replace(/([A-Z])/g, "-$1").toLowerCase();
					var computedStyle = defaultView.getComputedStyle(elem, null);
					if (computedStyle && !color(elem)) {
						ret = computedStyle.getPropertyValue(name)
					} else {
						var swap = [],
						stack = [],
						a = elem,
						i = 0;
						for (; a && color(a); a = a.parentNode) {
							stack.unshift(a)
						}
						for (; i < stack.length; i++) {
							if (color(stack[i])) {
								swap[i] = stack[i].style.display;
								stack[i].style.display = "block"
							}
						}
						ret = name == "display" && swap[stack.length - 1] != null ? "none": (computedStyle && computedStyle.getPropertyValue(name)) || "";
						for (i = 0; i < swap.length; i++) {
							if (swap[i] != null) {
								stack[i].style.display = swap[i]
							}
						}
					}
					if (name == "opacity" && ret == "") {
						ret = "1"
					}
				} else {
					if (elem.currentStyle) {
						var camelCase = name.replace(/\-(\w)/g,
						function(all, letter) {
							return letter.toUpperCase()
						});
						ret = elem.currentStyle[name] || elem.currentStyle[camelCase];
						if (!/^\d+(px)?$/i.test(ret) && /^\d/.test(ret)) {
							var left = style.left,
							rsLeft = elem.runtimeStyle.left;
							elem.runtimeStyle.left = elem.currentStyle.left;
							style.left = ret || 0;
							ret = style.pixelLeft + "px";
							style.left = left;
							elem.runtimeStyle.left = rsLeft
						}
					}
				}
			}
			return ret
		},
		clean: function(elems, context) {
			var ret = [];
			context = context || document;
			if (typeof context.createElement == "undefined") {
				context = context.ownerDocument || context[0] && context[0].ownerDocument || document
			}
			jQuery.each(elems,
			function(i, elem) {
				if (!elem) {
					return
				}
				if (elem.constructor == Number) {
					elem += ""
				}
				if (typeof elem == "string") {
					elem = elem.replace(/(<(\w+)[^>]*?)\/>/g,
					function(all, front, tag) {
						return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? all: front + "></" + tag + ">"
					});
					var tags = jQuery.trim(elem).toLowerCase(),
					div = context.createElement("div");
					var wrap = !tags.indexOf("<opt") && [1, "<select multiple='multiple'>", "</select>"] || !tags.indexOf("<leg") && [1, "<fieldset>", "</fieldset>"] || tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && [1, "<table>", "</table>"] || !tags.indexOf("<tr") && [2, "<table><tbody>", "</tbody></table>"] || (!tags.indexOf("<td") || !tags.indexOf("<th")) && [3, "<table><tbody><tr>", "</tr></tbody></table>"] || !tags.indexOf("<col") && [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"] || jQuery.browser.msie && [1, "div<div>", "</div>"] || [0, "", ""];
					div.innerHTML = wrap[1] + elem + wrap[2];
					while (wrap[0]--) {
						div = div.lastChild
					}
					if (jQuery.browser.msie) {
						var tbody = !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 ? div.firstChild && div.firstChild.childNodes: wrap[1] == "<table>" && tags.indexOf("<tbody") < 0 ? div.childNodes: [];
						for (var j = tbody.length - 1; j >= 0; --j) {
							if (jQuery.nodeName(tbody[j], "tbody") && !tbody[j].childNodes.length) {
								tbody[j].parentNode.removeChild(tbody[j])
							}
						}
						if (/^\s/.test(elem)) {
							div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]), div.firstChild)
						}
					}
					elem = jQuery.makeArray(div.childNodes)
				}
				if (elem.length === 0 && (!jQuery.nodeName(elem, "form") && !jQuery.nodeName(elem, "select"))) {
					return
				}
				if (elem[0] == undefined || jQuery.nodeName(elem, "form") || elem.options) {
					ret.push(elem)
				} else {
					ret = jQuery.merge(ret, elem)
				}
			});
			return ret
		},
		attr: function(elem, name, value) {
			if (!elem || elem.nodeType == 3 || elem.nodeType == 8) {
				return undefined
			}
			var notxml = !jQuery.isXMLDoc(elem),
			set = value !== undefined,
			msie = jQuery.browser.msie;
			name = notxml && jQuery.props[name] || name;
			if (elem.tagName) {
				var special = /href|src|style/.test(name);
				if (name == "selected" && jQuery.browser.safari) {
					elem.parentNode.selectedIndex
				}
				if (name in elem && notxml && !special) {
					if (set) {
						if (name == "type" && jQuery.nodeName(elem, "input") && elem.parentNode) {
							throw "type property can't be changed"
						}
						elem[name] = value
					}
					if (jQuery.nodeName(elem, "form") && elem.getAttributeNode(name)) {
						return elem.getAttributeNode(name).nodeValue
					}
					return elem[name]
				}
				if (msie && notxml && name == "style") {
					return jQuery.attr(elem.style, "cssText", value)
				}
				if (set) {
					elem.setAttribute(name, "" + value)
				}
				var attr = msie && notxml && special ? elem.getAttribute(name, 2) : elem.getAttribute(name);
				return attr === null ? undefined: attr
			}
			if (msie && name == "opacity") {
				if (set) {
					elem.zoom = 1;
					elem.filter = (elem.filter || "").replace(/alpha\([^)]*\)/, "") + (parseInt(value) + "" == "NaN" ? "": "alpha(opacity=" + value * 100 + ")")
				}
				return elem.filter && elem.filter.indexOf("opacity=") >= 0 ? (parseFloat(elem.filter.match(/opacity=([^)]*)/)[1]) / 100) + "": ""
			}
			name = name.replace(/-([a-z])/ig,
			function(all, letter) {
				return letter.toUpperCase()
			});
			if (set) {
				elem[name] = value
			}
			return elem[name]
		},
		trim: function(text) {
			return (text || "").replace(/^\s+|\s+$/g, "")
		},
		makeArray: function(array) {
			var ret = [];
			if (array != null) {
				var i = array.length;
				if (i == null || array.split || array.setInterval || array.call) {
					ret[0] = array
				} else {
					while (i) {
						ret[--i] = array[i]
					}
				}
			}
			return ret
		},
		inArray: function(elem, array) {
			for (var i = 0,
			length = array.length; i < length; i++) {
				if (array[i] === elem) {
					return i
				}
			}
			return - 1
		},
		merge: function(first, second) {
			var i = 0,
			elem, pos = first.length;
			if (jQuery.browser.msie) {
				while (elem = second[i++]) {
					if (elem.nodeType != 8) {
						first[pos++] = elem
					}
				}
			} else {
				while (elem = second[i++]) {
					first[pos++] = elem
				}
			}
			return first
		},
		unique: function(array) {
			var ret = [],
			done = {};
			try {
				for (var i = 0,
				length = array.length; i < length; i++) {
					var id = jQuery.data(array[i]);
					if (!done[id]) {
						done[id] = true;
						ret.push(array[i])
					}
				}
			} catch(e) {
				ret = array
			}
			return ret
		},
		grep: function(elems, callback, inv) {
			var ret = [];
			for (var i = 0,
			length = elems.length; i < length; i++) {
				if (!inv != !callback(elems[i], i)) {
					ret.push(elems[i])
				}
			}
			return ret
		},
		map: function(elems, callback) {
			var ret = [];
			for (var i = 0,
			length = elems.length; i < length; i++) {
				var value = callback(elems[i], i);
				if (value != null) {
					ret[ret.length] = value
				}
			}
			return ret.concat.apply([], ret)
		}
	});
	var userAgent = navigator.userAgent.toLowerCase();
	jQuery.browser = {
		version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
		safari: /webkit/.test(userAgent),
		opera: /opera/.test(userAgent),
		msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
		mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
	};
	var styleFloat = jQuery.browser.msie ? "styleFloat": "cssFloat";
	jQuery.extend({
		boxModel: !jQuery.browser.msie || document.compatMode == "CSS1Compat",
		props: {
			"for": "htmlFor",
			"class": "className",
			"float": styleFloat,
			cssFloat: styleFloat,
			styleFloat: styleFloat,
			readonly: "readOnly",
			maxlength: "maxLength",
			cellspacing: "cellSpacing"
		}
	});
	jQuery.each({
		parent: function(elem) {
			return elem.parentNode
		},
		parents: function(elem) {
			return jQuery.dir(elem, "parentNode")
		},
		next: function(elem) {
			return jQuery.nth(elem, 2, "nextSibling")
		},
		prev: function(elem) {
			return jQuery.nth(elem, 2, "previousSibling")
		},
		nextAll: function(elem) {
			return jQuery.dir(elem, "nextSibling")
		},
		prevAll: function(elem) {
			return jQuery.dir(elem, "previousSibling")
		},
		siblings: function(elem) {
			return jQuery.sibling(elem.parentNode.firstChild, elem)
		},
		children: function(elem) {
			return jQuery.sibling(elem.firstChild)
		},
		contents: function(elem) {
			return jQuery.nodeName(elem, "iframe") ? elem.contentDocument || elem.contentWindow.document: jQuery.makeArray(elem.childNodes)
		}
	},
	function(name, fn) {
		jQuery.fn[name] = function(selector) {
			var ret = jQuery.map(this, fn);
			if (selector && typeof selector == "string") {
				ret = jQuery.multiFilter(selector, ret)
			}
			return this.pushStack(jQuery.unique(ret))
		}
	});
	jQuery.each({
		appendTo: "append",
		prependTo: "prepend",
		insertBefore: "before",
		insertAfter: "after",
		replaceAll: "replaceWith"
	},
	function(name, original) {
		jQuery.fn[name] = function() {
			var args = arguments;
			return this.each(function() {
				for (var i = 0,
				length = args.length; i < length; i++) {
					jQuery(args[i])[original](this)
				}
			})
		}
	});
	jQuery.each({
		removeAttr: function(name) {
			jQuery.attr(this, name, "");
			if (this.nodeType == 1) {
				this.removeAttribute(name)
			}
		},
		addClass: function(classNames) {
			jQuery.className.add(this, classNames)
		},
		removeClass: function(classNames) {
			jQuery.className.remove(this, classNames)
		},
		toggleClass: function(classNames) {
			jQuery.className[jQuery.className.has(this, classNames) ? "remove": "add"](this, classNames)
		},
		remove: function(selector) {
			if (!selector || jQuery.filter(selector, [this]).r.length) {
				jQuery("*", this).add(this).each(function() {
					jQuery.event.remove(this);
					jQuery.removeData(this)
				});
				if (this.parentNode) {
					this.parentNode.removeChild(this)
				}
			}
		},
		empty: function() {
			jQuery(">*", this).remove();
			while (this.firstChild) {
				this.removeChild(this.firstChild)
			}
		}
	},
	function(name, fn) {
		jQuery.fn[name] = function() {
			return this.each(fn, arguments)
		}
	});
	jQuery.each(["Height", "Width"],
	function(i, name) {
		var type = name.toLowerCase();
		jQuery.fn[type] = function(size) {
			return this[0] == window ? jQuery.browser.opera && document.body["client" + name] || jQuery.browser.safari && window["inner" + name] || document.compatMode == "CSS1Compat" && document.documentElement["client" + name] || document.body["client" + name] : this[0] == document ? Math.max(Math.max(document.body["scroll" + name], document.documentElement["scroll" + name]), Math.max(document.body["offset" + name], document.documentElement["offset" + name])) : size == undefined ? (this.length ? jQuery.css(this[0], type) : null) : this.css(type, size.constructor == String ? size: size + "px")
		}
	});
	function num(elem, prop) {
		return elem[0] && parseInt(jQuery.curCSS(elem[0], prop, true), 10) || 0
	}
	var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ? "(?:[\\w*_-]|\\\\.)": "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",
	quickChild = new RegExp("^>\\s*(" + chars + "+)"),
	quickID = new RegExp("^(" + chars + "+)(#)(" + chars + "+)"),
	quickClass = new RegExp("^([#.]?)(" + chars + "*)");
	jQuery.extend({
		expr: {
			"": function(a, i, m) {
				return m[2] == "*" || jQuery.nodeName(a, m[2])
			},
			"#": function(a, i, m) {
				return a.getAttribute("id") == m[2]
			},
			":": {
				lt: function(a, i, m) {
					return i < m[3] - 0
				},
				gt: function(a, i, m) {
					return i > m[3] - 0
				},
				nth: function(a, i, m) {
					return m[3] - 0 == i
				},
				eq: function(a, i, m) {
					return m[3] - 0 == i
				},
				first: function(a, i) {
					return i == 0
				},
				last: function(a, i, m, r) {
					return i == r.length - 1
				},
				even: function(a, i) {
					return i % 2 == 0
				},
				odd: function(a, i) {
					return i % 2
				},
				"first-child": function(a) {
					return a.parentNode.getElementsByTagName("*")[0] == a
				},
				"last-child": function(a) {
					return jQuery.nth(a.parentNode.lastChild, 1, "previousSibling") == a
				},
				"only-child": function(a) {
					return ! jQuery.nth(a.parentNode.lastChild, 2, "previousSibling")
				},
				parent: function(a) {
					return a.firstChild
				},
				empty: function(a) {
					return ! a.firstChild
				},
				contains: function(a, i, m) {
					return (a.textContent || a.innerText || jQuery(a).text() || "").indexOf(m[3]) >= 0
				},
				visible: function(a) {
					return "hidden" != a.type && jQuery.css(a, "display") != "none" && jQuery.css(a, "visibility") != "hidden"
				},
				hidden: function(a) {
					return "hidden" == a.type || jQuery.css(a, "display") == "none" || jQuery.css(a, "visibility") == "hidden"
				},
				enabled: function(a) {
					return ! a.disabled
				},
				disabled: function(a) {
					return a.disabled
				},
				checked: function(a) {
					return a.checked
				},
				selected: function(a) {
					return a.selected || jQuery.attr(a, "selected")
				},
				text: function(a) {
					return "text" == a.type
				},
				radio: function(a) {
					return "radio" == a.type
				},
				checkbox: function(a) {
					return "checkbox" == a.type
				},
				file: function(a) {
					return "file" == a.type
				},
				password: function(a) {
					return "password" == a.type
				},
				submit: function(a) {
					return "submit" == a.type
				},
				image: function(a) {
					return "image" == a.type
				},
				reset: function(a) {
					return "reset" == a.type
				},
				button: function(a) {
					return "button" == a.type || jQuery.nodeName(a, "button")
				},
				input: function(a) {
					return /input|select|textarea|button/i.test(a.nodeName)
				},
				has: function(a, i, m) {
					return jQuery.find(m[3], a).length
				},
				header: function(a) {
					return /h\d/i.test(a.nodeName)
				},
				animated: function(a) {
					return jQuery.grep(jQuery.timers,
					function(fn) {
						return a == fn.elem
					}).length
				}
			}
		},
		parse: [/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/, /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/, new RegExp("^([:.#]*)(" + chars + "+)")],
		multiFilter: function(expr, elems, not) {
			var old, cur = [];
			while (expr && expr != old) {
				old = expr;
				var f = jQuery.filter(expr, elems, not);
				expr = f.t.replace(/^\s*,\s*/, "");
				cur = not ? elems = f.r: jQuery.merge(cur, f.r)
			}
			return cur
		},
		find: function(t, context) {
			if (typeof t != "string") {
				return [t]
			}
			if (context && context.nodeType != 1 && context.nodeType != 9) {
				return []
			}
			context = context || document;
			var ret = [context],
			done = [],
			last,
			nodeName;
			while (t && last != t) {
				var r = [];
				last = t;
				t = jQuery.trim(t);
				var foundToken = false,
				re = quickChild,
				m = re.exec(t);
				if (m) {
					nodeName = m[1].toUpperCase();
					for (var i = 0; ret[i]; i++) {
						for (var c = ret[i].firstChild; c; c = c.nextSibling) {
							if (c.nodeType == 1 && (nodeName == "*" || c.nodeName.toUpperCase() == nodeName)) {
								r.push(c)
							}
						}
					}
					ret = r;
					t = t.replace(re, "");
					if (t.indexOf(" ") == 0) {
						continue
					}
					foundToken = true
				} else {
					re = /^([>+~])\s*(\w*)/i;
					if ((m = re.exec(t)) != null) {
						r = [];
						var merge = {};
						nodeName = m[2].toUpperCase();
						m = m[1];
						for (var j = 0,
						rl = ret.length; j < rl; j++) {
							var n = m == "~" || m == "+" ? ret[j].nextSibling: ret[j].firstChild;
							for (; n; n = n.nextSibling) {
								if (n.nodeType == 1) {
									var id = jQuery.data(n);
									if (m == "~" && merge[id]) {
										break
									}
									if (!nodeName || n.nodeName.toUpperCase() == nodeName) {
										if (m == "~") {
											merge[id] = true
										}
										r.push(n)
									}
									if (m == "+") {
										break
									}
								}
							}
						}
						ret = r;
						t = jQuery.trim(t.replace(re, ""));
						foundToken = true
					}
				}
				if (t && !foundToken) {
					if (!t.indexOf(",")) {
						if (context == ret[0]) {
							ret.shift()
						}
						done = jQuery.merge(done, ret);
						r = ret = [context];
						t = " " + t.substr(1, t.length)
					} else {
						var re2 = quickID;
						var m = re2.exec(t);
						if (m) {
							m = [0, m[2], m[3], m[1]]
						} else {
							re2 = quickClass;
							m = re2.exec(t)
						}
						m[2] = m[2].replace(/\\/g, "");
						var elem = ret[ret.length - 1];
						if (m[1] == "#" && elem && elem.getElementById && !jQuery.isXMLDoc(elem)) {
							var oid = elem.getElementById(m[2]);
							if ((jQuery.browser.msie || jQuery.browser.opera) && oid && typeof oid.id == "string" && oid.id != m[2]) {
								oid = jQuery('[@id="' + m[2] + '"]', elem)[0]
							}
							ret = r = oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : []
						} else {
							for (var i = 0; ret[i]; i++) {
								var tag = m[1] == "#" && m[3] ? m[3] : m[1] != "" || m[0] == "" ? "*": m[2];
								if (tag == "*" && ret[i].nodeName.toLowerCase() == "object") {
									tag = "param"
								}
								r = jQuery.merge(r, ret[i].getElementsByTagName(tag))
							}
							if (m[1] == ".") {
								r = jQuery.classFilter(r, m[2])
							}
							if (m[1] == "#") {
								var tmp = [];
								for (var i = 0; r[i]; i++) {
									if (r[i].getAttribute("id") == m[2]) {
										tmp = [r[i]];
										break
									}
								}
								r = tmp
							}
							ret = r
						}
						t = t.replace(re2, "")
					}
				}
				if (t) {
					var val = jQuery.filter(t, r);
					ret = r = val.r;
					t = jQuery.trim(val.t)
				}
			}
			if (t) {
				ret = []
			}
			if (ret && context == ret[0]) {
				ret.shift()
			}
			done = jQuery.merge(done, ret);
			return done
		},
		classFilter: function(r, m, not) {
			m = " " + m + " ";
			var tmp = [];
			for (var i = 0; r[i]; i++) {
				var pass = (" " + r[i].className + " ").indexOf(m) >= 0;
				if (!not && pass || not && !pass) {
					tmp.push(r[i])
				}
			}
			return tmp
		},
		filter: function(t, r, not) {
			var last;
			while (t && t != last) {
				last = t;
				var p = jQuery.parse,
				m;
				for (var i = 0; p[i]; i++) {
					m = p[i].exec(t);
					if (m) {
						t = t.substring(m[0].length);
						m[2] = m[2].replace(/\\/g, "");
						break
					}
				}
				if (!m) {
					break
				}
				if (m[1] == ":" && m[2] == "not") {
					r = isSimple.test(m[3]) ? jQuery.filter(m[3], r, true).r: jQuery(r).not(m[3])
				} else {
					if (m[1] == ".") {
						r = jQuery.classFilter(r, m[2], not)
					} else {
						if (m[1] == "[") {
							var tmp = [],
							type = m[3];
							for (var i = 0,
							rl = r.length; i < rl; i++) {
								var a = r[i],
								z = a[jQuery.props[m[2]] || m[2]];
								if (z == null || /href|src|selected/.test(m[2])) {
									z = jQuery.attr(a, m[2]) || ""
								}
								if ((type == "" && !!z || type == "=" && z == m[5] || type == "!=" && z != m[5] || type == "^=" && z && !z.indexOf(m[5]) || type == "$=" && z.substr(z.length - m[5].length) == m[5] || (type == "*=" || type == "~=") && z.indexOf(m[5]) >= 0) ^ not) {
									tmp.push(a)
								}
							}
							r = tmp
						} else {
							if (m[1] == ":" && m[2] == "nth-child") {
								var merge = {},
								tmp = [],
								test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3] == "even" && "2n" || m[3] == "odd" && "2n+1" || !/\D/.test(m[3]) && "0n+" + m[3] || m[3]),
								first = (test[1] + (test[2] || 1)) - 0,
								last = test[3] - 0;
								for (var i = 0,
								rl = r.length; i < rl; i++) {
									var node = r[i],
									parentNode = node.parentNode,
									id = jQuery.data(parentNode);
									if (!merge[id]) {
										var c = 1;
										for (var n = parentNode.firstChild; n; n = n.nextSibling) {
											if (n.nodeType == 1) {
												n.nodeIndex = c++
											}
										}
										merge[id] = true
									}
									var add = false;
									if (first == 0) {
										if (node.nodeIndex == last) {
											add = true
										}
									} else {
										if ((node.nodeIndex - last) % first == 0 && (node.nodeIndex - last) / first >= 0) {
											add = true
										}
									}
									if (add ^ not) {
										tmp.push(node)
									}
								}
								r = tmp
							} else {
								var fn = jQuery.expr[m[1]];
								if (typeof fn == "object") {
									fn = fn[m[2]]
								}
								if (typeof fn == "string") {
									fn = eval("false||function(a,i){return " + fn + ";}")
								}
								r = jQuery.grep(r,
								function(elem, i) {
									return fn(elem, i, m, r)
								},
								not)
							}
						}
					}
				}
			}
			return {
				r: r,
				t: t
			}
		},
		dir: function(elem, dir) {
			var matched = [],
			cur = elem[dir];
			while (cur && cur != document) {
				if (cur.nodeType == 1) {
					matched.push(cur)
				}
				cur = cur[dir]
			}
			return matched
		},
		nth: function(cur, result, dir, elem) {
			result = result || 1;
			var num = 0;
			for (; cur; cur = cur[dir]) {
				if (cur.nodeType == 1 && ++num == result) {
					break
				}
			}
			return cur
		},
		sibling: function(n, elem) {
			var r = [];
			for (; n; n = n.nextSibling) {
				if (n.nodeType == 1 && n != elem) {
					r.push(n)
				}
			}
			return r
		}
	});
	jQuery.event = {
		add: function(elem, types, handler, data) {
			if (elem.nodeType == 3 || elem.nodeType == 8) {
				return
			}
			if (jQuery.browser.msie && elem.setInterval) {
				elem = window
			}
			if (!handler.guid) {
				handler.guid = this.guid++
			}
			if (data != undefined) {
				var fn = handler;
				handler = this.proxy(fn,
				function() {
					return fn.apply(this, arguments)
				});
				handler.data = data
			}
			var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
			handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle",
			function() {
				if (typeof jQuery != "undefined" && !jQuery.event.triggered) {
					return jQuery.event.handle.apply(arguments.callee.elem, arguments)
				}
			});
			handle.elem = elem;
			jQuery.each(types.split(/\s+/),
			function(index, type) {
				var parts = type.split(".");
				type = parts[0];
				handler.type = parts[1];
				var handlers = events[type];
				if (!handlers) {
					handlers = events[type] = {};
					if (!jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem) === false) {
						if (elem.addEventListener) {
							elem.addEventListener(type, handle, false)
						} else {
							if (elem.attachEvent) {
								elem.attachEvent("on" + type, handle)
							}
						}
					}
				}
				handlers[handler.guid] = handler;
				jQuery.event.global[type] = true
			});
			elem = null
		},
		guid: 1,
		global: {},
		remove: function(elem, types, handler) {
			if (elem.nodeType == 3 || elem.nodeType == 8) {
				return
			}
			var events = jQuery.data(elem, "events"),
			ret,
			index;
			if (events) {
				if (types == undefined || (typeof types == "string" && types.charAt(0) == ".")) {
					for (var type in events) {
						this.remove(elem, type + (types || ""))
					}
				} else {
					if (types.type) {
						handler = types.handler;
						types = types.type
					}
					jQuery.each(types.split(/\s+/),
					function(index, type) {
						var parts = type.split(".");
						type = parts[0];
						if (events[type]) {
							if (handler) {
								delete events[type][handler.guid]
							} else {
								for (handler in events[type]) {
									if (!parts[1] || events[type][handler].type == parts[1]) {
										delete events[type][handler]
									}
								}
							}
							for (ret in events[type]) {
								break
							}
							if (!ret) {
								if (!jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem) === false) {
									if (elem.removeEventListener) {
										elem.removeEventListener(type, jQuery.data(elem, "handle"), false)
									} else {
										if (elem.detachEvent) {
											elem.detachEvent("on" + type, jQuery.data(elem, "handle"))
										}
									}
								}
								ret = null;
								delete events[type]
							}
						}
					})
				}
				for (ret in events) {
					break
				}
				if (!ret) {
					var handle = jQuery.data(elem, "handle");
					if (handle) {
						handle.elem = null
					}
					jQuery.removeData(elem, "events");
					jQuery.removeData(elem, "handle")
				}
			}
		},
		trigger: function(type, data, elem, donative, extra) {
			data = jQuery.makeArray(data);
			if (type.indexOf("!") >= 0) {
				type = type.slice(0, -1);
				var exclusive = true
			}
			if (!elem) {
				if (this.global[type]) {
					jQuery("*").add([window, document]).trigger(type, data)
				}
			} else {
				if (elem.nodeType == 3 || elem.nodeType == 8) {
					return undefined
				}
				var val, ret, fn = jQuery.isFunction(elem[type] || null),
				event = !data[0] || !data[0].preventDefault;
				if (event) {
					data.unshift({
						type: type,
						target: elem,
						preventDefault: function() {},
						stopPropagation: function() {},
						timeStamp: now()
					});
					data[0][expando] = true
				}
				data[0].type = type;
				if (exclusive) {
					data[0].exclusive = true
				}
				var handle = jQuery.data(elem, "handle");
				if (handle) {
					val = handle.apply(elem, data)
				}
				if ((!fn || (jQuery.nodeName(elem, "a") && type == "click")) && elem["on" + type] && elem["on" + type].apply(elem, data) === false) {
					val = false
				}
				if (event) {
					data.shift()
				}
				if (extra && jQuery.isFunction(extra)) {
					ret = extra.apply(elem, val == null ? data: data.concat(val));
					if (ret !== undefined) {
						val = ret
					}
				}
				if (fn && donative !== false && val !== false && !(jQuery.nodeName(elem, "a") && type == "click")) {
					this.triggered = true;
					try {
						elem[type]()
					} catch(e) {}
				}
				this.triggered = false
			}
			return val
		},
		handle: function(event) {
			var val, ret, namespace, all, handlers;
			event = arguments[0] = jQuery.event.fix(event || window.event);
			namespace = event.type.split(".");
			event.type = namespace[0];
			namespace = namespace[1];
			all = !namespace && !event.exclusive;
			handlers = (jQuery.data(this, "events") || {})[event.type];
			for (var j in handlers) {
				var handler = handlers[j];
				if (all || handler.type == namespace) {
					event.handler = handler;
					event.data = handler.data;
					ret = handler.apply(this, arguments);
					if (val !== false) {
						val = ret
					}
					if (ret === false) {
						event.preventDefault();
						event.stopPropagation()
					}
				}
			}
			return val
		},
		fix: function(event) {
			if (event[expando] == true) {
				return event
			}
			var originalEvent = event;
			event = {
				originalEvent: originalEvent
			};
			var props = "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");
			for (var i = props.length; i; i--) {
				event[props[i]] = originalEvent[props[i]]
			}
			event[expando] = true;
			event.preventDefault = function() {
				if (originalEvent.preventDefault) {
					originalEvent.preventDefault()
				}
				originalEvent.returnValue = false
			};
			event.stopPropagation = function() {
				if (originalEvent.stopPropagation) {
					originalEvent.stopPropagation()
				}
				originalEvent.cancelBubble = true
			};
			event.timeStamp = event.timeStamp || now();
			if (!event.target) {
				event.target = event.srcElement || document
			}
			if (event.target.nodeType == 3) {
				event.target = event.target.parentNode
			}
			if (!event.relatedTarget && event.fromElement) {
				event.relatedTarget = event.fromElement == event.target ? event.toElement: event.fromElement
			}
			if (event.pageX == null && event.clientX != null) {
				var doc = document.documentElement,
				body = document.body;
				event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
				event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0)
			}
			if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode: event.keyCode)) {
				event.which = event.charCode || event.keyCode
			}
			if (!event.metaKey && event.ctrlKey) {
				event.metaKey = event.ctrlKey
			}
			if (!event.which && event.button) {
				event.which = (event.button & 1 ? 1 : (event.button & 2 ? 3 : (event.button & 4 ? 2 : 0)))
			}
			return event
		},
		proxy: function(fn, proxy) {
			proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
			return proxy
		},
		special: {
			ready: {
				setup: function() {
					bindReady();
					return
				},
				teardown: function() {
					return
				}
			},
			mouseenter: {
				setup: function() {
					if (jQuery.browser.msie) {
						return false
					}
					jQuery(this).bind("mouseover", jQuery.event.special.mouseenter.handler);
					return true
				},
				teardown: function() {
					if (jQuery.browser.msie) {
						return false
					}
					jQuery(this).unbind("mouseover", jQuery.event.special.mouseenter.handler);
					return true
				},
				handler: function(event) {
					if (withinElement(event, this)) {
						return true
					}
					event.type = "mouseenter";
					return jQuery.event.handle.apply(this, arguments)
				}
			},
			mouseleave: {
				setup: function() {
					if (jQuery.browser.msie) {
						return false
					}
					jQuery(this).bind("mouseout", jQuery.event.special.mouseleave.handler);
					return true
				},
				teardown: function() {
					if (jQuery.browser.msie) {
						return false
					}
					jQuery(this).unbind("mouseout", jQuery.event.special.mouseleave.handler);
					return true
				},
				handler: function(event) {
					if (withinElement(event, this)) {
						return true
					}
					event.type = "mouseleave";
					return jQuery.event.handle.apply(this, arguments)
				}
			}
		}
	};
	jQuery.fn.extend({
		bind: function(type, data, fn) {
			return type == "unload" ? this.one(type, data, fn) : this.each(function() {
				jQuery.event.add(this, type, fn || data, fn && data)
			})
		},
		one: function(type, data, fn) {
			var one = jQuery.event.proxy(fn || data,
			function(event) {
				jQuery(this).unbind(event, one);
				return (fn || data).apply(this, arguments)
			});
			return this.each(function() {
				jQuery.event.add(this, type, one, fn && data)
			})
		},
		unbind: function(type, fn) {
			return this.each(function() {
				jQuery.event.remove(this, type, fn)
			})
		},
		trigger: function(type, data, fn) {
			return this.each(function() {
				jQuery.event.trigger(type, data, this, true, fn)
			})
		},
		triggerHandler: function(type, data, fn) {
			return this[0] && jQuery.event.trigger(type, data, this[0], false, fn)
		},
		toggle: function(fn) {
			var args = arguments,
			i = 1;
			while (i < args.length) {
				jQuery.event.proxy(fn, args[i++])
			}
			return this.click(jQuery.event.proxy(fn,
			function(event) {
				this.lastToggle = (this.lastToggle || 0) % i;
				event.preventDefault();
				return args[this.lastToggle++].apply(this, arguments) || false
			}))
		},
		hover: function(fnOver, fnOut) {
			return this.bind("mouseenter", fnOver).bind("mouseleave", fnOut)
		},
		ready: function(fn) {
			bindReady();
			if (jQuery.isReady) {
				fn.call(document, jQuery)
			} else {
				jQuery.readyList.push(function() {
					return fn.call(this, jQuery)
				})
			}
			return this
		}
	});
	jQuery.extend({
		isReady: false,
		readyList: [],
		ready: function() {
			if (!jQuery.isReady) {
				jQuery.isReady = true;
				if (jQuery.readyList) {
					jQuery.each(jQuery.readyList,
					function() {
						this.call(document)
					});
					jQuery.readyList = null
				}
				jQuery(document).triggerHandler("ready")
			}
		}
	});
	var readyBound = false;
	function bindReady() {
		if (readyBound) {
			return
		}
		readyBound = true;
		if (document.addEventListener && !jQuery.browser.opera) {
			document.addEventListener("DOMContentLoaded", jQuery.ready, false)
		}
		if (jQuery.browser.msie && window == top) { (function() {
				if (jQuery.isReady) {
					return
				}
				try {
					document.documentElement.doScroll("left")
				} catch(error) {
					setTimeout(arguments.callee, 0);
					return
				}
				jQuery.ready()
			})()
		}
		if (jQuery.browser.opera) {
			document.addEventListener("DOMContentLoaded",
			function() {
				if (jQuery.isReady) {
					return
				}
				for (var i = 0; i < document.styleSheets.length; i++) {
					if (document.styleSheets[i].disabled) {
						setTimeout(arguments.callee, 0);
						return
					}
				}
				jQuery.ready()
			},
			false)
		}
		if (jQuery.browser.safari) {
			var numStyles; (function() {
				if (jQuery.isReady) {
					return
				}
				if (document.readyState != "loaded" && document.readyState != "complete") {
					setTimeout(arguments.callee, 0);
					return
				}
				if (numStyles === undefined) {
					numStyles = jQuery("style, link[rel=stylesheet]").length
				}
				if (document.styleSheets.length != numStyles) {
					setTimeout(arguments.callee, 0);
					return
				}
				jQuery.ready()
			})()
		}
		jQuery.event.add(window, "load", jQuery.ready)
	}
	jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,change,select,submit,keydown,keypress,keyup,error").split(","),
	function(i, name) {
		jQuery.fn[name] = function(fn) {
			return fn ? this.bind(name, fn) : this.trigger(name)
		}
	});
	var withinElement = function(event, elem) {
		var parent = event.relatedTarget;
		while (parent && parent != elem) {
			try {
				parent = parent.parentNode
			} catch(error) {
				parent = elem
			}
		}
		return parent == elem
	};
	jQuery(window).bind("unload",
	function() {
		jQuery("*").add(document).unbind()
	});
	jQuery.fn.extend({
		_load: jQuery.fn.load,
		load: function(url, params, callback) {
			if (typeof url != "string") {
				return this._load(url)
			}
			var off = url.indexOf(" ");
			if (off >= 0) {
				var selector = url.slice(off, url.length);
				url = url.slice(0, off)
			}
			callback = callback ||
			function() {};
			var type = "GET";
			if (params) {
				if (jQuery.isFunction(params)) {
					callback = params;
					params = null
				} else {
					params = jQuery.param(params);
					type = "POST"
				}
			}
			var self = this;
			jQuery.ajax({
				url: url,
				type: type,
				dataType: "html",
				data: params,
				complete: function(res, status) {
					if (status == "success" || status == "notmodified") {
						self.html(selector ? jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g, "")).find(selector) : res.responseText)
					}
					self.each(callback, [res.responseText, status, res])
				}
			});
			return this
		},
		serialize: function() {
			return jQuery.param(this.serializeArray())
		},
		serializeArray: function() {
			return this.map(function() {
				return jQuery.nodeName(this, "form") ? jQuery.makeArray(this.elements) : this
			}).filter(function() {
				return this.name && !this.disabled && (this.checked || /select|textarea/i.test(this.nodeName) || /text|hidden|password/i.test(this.type))
			}).map(function(i, elem) {
				var val = jQuery(this).val();
				return val == null ? null: val.constructor == Array ? jQuery.map(val,
				function(val, i) {
					return {
						name: elem.name,
						value: val
					}
				}) : {
					name: elem.name,
					value: val
				}
			}).get()
		}
	});
	jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),
	function(i, o) {
		jQuery.fn[o] = function(f) {
			return this.bind(o, f)
		}
	});
	var jsc = now();
	jQuery.extend({
		get: function(url, data, callback, type) {
			if (jQuery.isFunction(data)) {
				callback = data;
				data = null
			}
			return jQuery.ajax({
				type: "GET",
				url: url,
				data: data,
				success: callback,
				dataType: type
			})
		},
		getScript: function(url, callback) {
			return jQuery.get(url, null, callback, "script")
		},
		getJSON: function(url, data, callback) {
			return jQuery.get(url, data, callback, "json")
		},
		post: function(url, data, callback, type) {
			if (jQuery.isFunction(data)) {
				callback = data;
				data = {}
			}
			return jQuery.ajax({
				type: "POST",
				url: url,
				data: data,
				success: callback,
				dataType: type
			})
		},
		ajaxSetup: function(settings) {
			jQuery.extend(jQuery.ajaxSettings, settings)
		},
		ajaxSettings: {
			url: location.href,
			global: true,
			type: "GET",
			timeout: 0,
			contentType: "application/x-www-form-urlencoded",
			processData: true,
			async: true,
			data: null,
			username: null,
			password: null,
			accepts: {
				xml: "application/xml, text/xml",
				html: "text/html",
				script: "text/javascript, application/javascript",
				json: "application/json, text/javascript",
				text: "text/plain",
				_default: "*/*"
			}
		},
		lastModified: {},
		ajax: function(s) {
			s = jQuery.extend(true, s, jQuery.extend(true, {},
			jQuery.ajaxSettings, s));
			var jsonp, jsre = /=\?(&|$)/g,
			status, data, type = s.type.toUpperCase();
			if (s.data && s.processData && typeof s.data != "string") {
				s.data = jQuery.param(s.data)
			}
			if (s.dataType == "jsonp") {
				if (type == "GET") {
					if (!s.url.match(jsre)) {
						s.url += (s.url.match(/\?/) ? "&": "?") + (s.jsonp || "callback") + "=?"
					}
				} else {
					if (!s.data || !s.data.match(jsre)) {
						s.data = (s.data ? s.data + "&": "") + (s.jsonp || "callback") + "=?"
					}
				}
				s.dataType = "json"
			}
			if (s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre))) {
				jsonp = "jsonp" + jsc++;
				if (s.data) {
					s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1")
				}
				s.url = s.url.replace(jsre, "=" + jsonp + "$1");
				s.dataType = "script";
				window[jsonp] = function(tmp) {
					data = tmp;
					success();
					complete();
					window[jsonp] = undefined;
					try {
						delete window[jsonp]
					} catch(e) {}
					if (head) {
						head.removeChild(script)
					}
				}
			}
			if (s.dataType == "script" && s.cache == null) {
				s.cache = false
			}
			if (s.cache === false && type == "GET") {
				var ts = now();
				var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
				s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&": "?") + "_=" + ts: "")
			}
			if (s.data && type == "GET") {
				s.url += (s.url.match(/\?/) ? "&": "?") + s.data;
				s.data = null
			}
			if (s.global && !jQuery.active++) {
				jQuery.event.trigger("ajaxStart")
			}
			var remote = /^(?:\w+:)?\/\/([^\/?#]+)/;
			if (s.dataType == "script" && type == "GET" && remote.test(s.url) && remote.exec(s.url)[1] != location.host) {
				var head = document.getElementsByTagName("head")[0];
				var script = document.createElement("script");
				script.src = s.url;
				if (s.scriptCharset) {
					script.charset = s.scriptCharset
				}
				if (!jsonp) {
					var done = false;
					script.onload = script.onreadystatechange = function() {
						if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
							done = true;
							success();
							complete();
							head.removeChild(script)
						}
					}
				}
				head.appendChild(script);
				return undefined
			}
			var requestDone = false;
			var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
			if (s.username) {
				xhr.open(type, s.url, s.async, s.username, s.password)
			} else {
				xhr.open(type, s.url, s.async)
			}
			try {
				if (s.data) {
					xhr.setRequestHeader("Content-Type", s.contentType)
				}
				if (s.ifModified) {
					xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT")
				}
				xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
				xhr.setRequestHeader("Accept", s.dataType && s.accepts[s.dataType] ? s.accepts[s.dataType] + ", */*": s.accepts._default)
			} catch(e) {}
			if (s.beforeSend && s.beforeSend(xhr, s) === false) {
				s.global && jQuery.active--;
				xhr.abort();
				return false
			}
			if (s.global) {
				jQuery.event.trigger("ajaxSend", [xhr, s])
			}
			var onreadystatechange = function(isTimeout) {
				if (!requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout")) {
					requestDone = true;
					if (ival) {
						clearInterval(ival);
						ival = null
					}
					status = isTimeout == "timeout" && "timeout" || !jQuery.httpSuccess(xhr) && "error" || s.ifModified && jQuery.httpNotModified(xhr, s.url) && "notmodified" || "success";
					if (status == "success") {
						try {
							data = jQuery.httpData(xhr, s.dataType, s.dataFilter)
						} catch(e) {
							status = "parsererror"
						}
					}
					if (status == "success") {
						var modRes;
						try {
							modRes = xhr.getResponseHeader("Last-Modified")
						} catch(e) {}
						if (s.ifModified && modRes) {
							jQuery.lastModified[s.url] = modRes
						}
						if (!jsonp) {
							success()
						}
					} else {
						jQuery.handleError(s, xhr, status)
					}
					complete();
					if (s.async) {
						xhr = null
					}
				}
			};
			if (s.async) {
				var ival = setInterval(onreadystatechange, 13);
				if (s.timeout > 0) {
					setTimeout(function() {
						if (xhr) {
							xhr.abort();
							if (!requestDone) {
								onreadystatechange("timeout")
							}
						}
					},
					s.timeout)
				}
			}
			try {
				xhr.send(s.data)
			} catch(e) {
				jQuery.handleError(s, xhr, null, e)
			}
			if (!s.async) {
				onreadystatechange()
			}
			function success() {
				if (s.success) {
					s.success(data, status)
				}
				if (s.global) {
					jQuery.event.trigger("ajaxSuccess", [xhr, s])
				}
			}
			function complete() {
				if (s.complete) {
					s.complete(xhr, status)
				}
				if (s.global) {
					jQuery.event.trigger("ajaxComplete", [xhr, s])
				}
				if (s.global && !--jQuery.active) {
					jQuery.event.trigger("ajaxStop")
				}
			}
			return xhr
		},
		handleError: function(s, xhr, status, e) {
			if (s.error) {
				s.error(xhr, status, e)
			}
			if (s.global) {
				jQuery.event.trigger("ajaxError", [xhr, s, e])
			}
		},
		active: 0,
		httpSuccess: function(xhr) {
			try {
				return ! xhr.status && location.protocol == "file:" || (xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || xhr.status == 1223 || jQuery.browser.safari && xhr.status == undefined
			} catch(e) {}
			return false
		},
		httpNotModified: function(xhr, url) {
			try {
				var xhrRes = xhr.getResponseHeader("Last-Modified");
				return xhr.status == 304 || xhrRes == jQuery.lastModified[url] || jQuery.browser.safari && xhr.status == undefined
			} catch(e) {}
			return false
		},
		httpData: function(xhr, type, filter) {
			var ct = xhr.getResponseHeader("content-type"),
			xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
			data = xml ? xhr.responseXML: xhr.responseText;
			if (xml && data.documentElement.tagName == "parsererror") {
				throw "parsererror"
			}
			if (filter) {
				data = filter(data, type)
			}
			if (type == "script") {
				jQuery.globalEval(data)
			}
			if (type == "json") {
				data = eval("(" + data + ")")
			}
			return data
		},
		param: function(a) {
			var s = [];
			if (a.constructor == Array || a.jquery) {
				jQuery.each(a,
				function() {
					s.push(encodeURIComponent(this.name) + "=" + encodeURIComponent(this.value))
				})
			} else {
				for (var j in a) {
					if (a[j] && a[j].constructor == Array) {
						jQuery.each(a[j],
						function() {
							s.push(encodeURIComponent(j) + "=" + encodeURIComponent(this))
						})
					} else {
						s.push(encodeURIComponent(j) + "=" + encodeURIComponent(jQuery.isFunction(a[j]) ? a[j]() : a[j]))
					}
				}
			}
			return s.join("&").replace(/%20/g, "+")
		}
	});
	jQuery.fn.extend({
		show: function(speed, callback) {
			return speed ? this.animate({
				height: "show",
				width: "show",
				opacity: "show"
			},
			speed, callback) : this.filter(":hidden").each(function() {
				this.style.display = this.oldblock || "";
				if (jQuery.css(this, "display") == "none") {
					var elem = jQuery("<" + this.tagName + " />").appendTo("body");
					this.style.display = elem.css("display");
					if (this.style.display == "none") {
						this.style.display = "block"
					}
					elem.remove()
				}
			}).end()
		},
		hide: function(speed, callback) {
			return speed ? this.animate({
				height: "hide",
				width: "hide",
				opacity: "hide"
			},
			speed, callback) : this.filter(":visible").each(function() {
				this.oldblock = this.oldblock || jQuery.css(this, "display");
				this.style.display = "none"
			}).end()
		},
		_toggle: jQuery.fn.toggle,
		toggle: function(fn, fn2) {
			return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ? this._toggle.apply(this, arguments) : fn ? this.animate({
				height: "toggle",
				width: "toggle",
				opacity: "toggle"
			},
			fn, fn2) : this.each(function() {
				jQuery(this)[jQuery(this).is(":hidden") ? "show": "hide"]()
			})
		},
		slideDown: function(speed, callback) {
			return this.animate({
				height: "show"
			},
			speed, callback)
		},
		slideUp: function(speed, callback) {
			return this.animate({
				height: "hide"
			},
			speed, callback)
		},
		slideToggle: function(speed, callback) {
			return this.animate({
				height: "toggle"
			},
			speed, callback)
		},
		fadeIn: function(speed, callback) {
			return this.animate({
				opacity: "show"
			},
			speed, callback)
		},
		fadeOut: function(speed, callback) {
			return this.animate({
				opacity: "hide"
			},
			speed, callback)
		},
		fadeTo: function(speed, to, callback) {
			return this.animate({
				opacity: to
			},
			speed, callback)
		},
		animate: function(prop, speed, easing, callback) {
			var optall = jQuery.speed(speed, easing, callback);
			return this[optall.queue === false ? "each": "queue"](function() {
				if (this.nodeType != 1) {
					return false
				}
				var opt = jQuery.extend({},
				optall),
				p,
				hidden = jQuery(this).is(":hidden"),
				self = this;
				for (p in prop) {
					if (prop[p] == "hide" && hidden || prop[p] == "show" && !hidden) {
						return opt.complete.call(this)
					}
					if (p == "height" || p == "width") {
						opt.display = jQuery.css(this, "display");
						opt.overflow = this.style.overflow
					}
				}
				if (opt.overflow != null) {
					this.style.overflow = "hidden"
				}
				opt.curAnim = jQuery.extend({},
				prop);
				jQuery.each(prop,
				function(name, val) {
					var e = new jQuery.fx(self, opt, name);
					if (/toggle|show|hide/.test(val)) {
						e[val == "toggle" ? hidden ? "show": "hide": val](prop)
					} else {
						var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
						start = e.cur(true) || 0;
						if (parts) {
							var end = parseFloat(parts[2]),
							unit = parts[3] || "px";
							if (unit != "px") {
								self.style[name] = (end || 1) + unit;
								start = ((end || 1) / e.cur(true)) * start;
								self.style[name] = start + unit
							}
							if (parts[1]) {
								end = ((parts[1] == "-=" ? -1 : 1) * end) + start
							}
							e.custom(start, end, unit)
						} else {
							e.custom(start, val, "")
						}
					}
				});
				return true
			})
		},
		queue: function(type, fn) {
			if (jQuery.isFunction(type) || (type && type.constructor == Array)) {
				fn = type;
				type = "fx"
			}
			if (!type || (typeof type == "string" && !fn)) {
				return queue(this[0], type)
			}
			return this.each(function() {
				if (fn.constructor == Array) {
					queue(this, type, fn)
				} else {
					queue(this, type).push(fn);
					if (queue(this, type).length == 1) {
						fn.call(this)
					}
				}
			})
		},
		stop: function(clearQueue, gotoEnd) {
			var timers = jQuery.timers;
			if (clearQueue) {
				this.queue([])
			}
			this.each(function() {
				for (var i = timers.length - 1; i >= 0; i--) {
					if (timers[i].elem == this) {
						if (gotoEnd) {
							timers[i](true)
						}
						timers.splice(i, 1)
					}
				}
			});
			if (!gotoEnd) {
				this.dequeue()
			}
			return this
		}
	});
	var queue = function(elem, type, array) {
		if (elem) {
			type = type || "fx";
			var q = jQuery.data(elem, type + "queue");
			if (!q || array) {
				q = jQuery.data(elem, type + "queue", jQuery.makeArray(array))
			}
		}
		return q
	};
	jQuery.fn.dequeue = function(type) {
		type = type || "fx";
		return this.each(function() {
			var q = queue(this, type);
			q.shift();
			if (q.length) {
				q[0].call(this)
			}
		})
	};
	jQuery.extend({
		speed: function(speed, easing, fn) {
			var opt = speed && speed.constructor == Object ? speed: {
				complete: fn || !fn && easing || jQuery.isFunction(speed) && speed,
				duration: speed,
				easing: fn && easing || easing && easing.constructor != Function && easing
			};
			opt.duration = (opt.duration && opt.duration.constructor == Number ? opt.duration: jQuery.fx.speeds[opt.duration]) || jQuery.fx.speeds.def;
			opt.old = opt.complete;
			opt.complete = function() {
				if (opt.queue !== false) {
					jQuery(this).dequeue()
				}
				if (jQuery.isFunction(opt.old)) {
					opt.old.call(this)
				}
			};
			return opt
		},
		easing: {
			linear: function(p, n, firstNum, diff) {
				return firstNum + diff * p
			},
			swing: function(p, n, firstNum, diff) {
				return (( - Math.cos(p * Math.PI) / 2) + 0.5) * diff + firstNum
			}
		},
		timers: [],
		timerId: null,
		fx: function(elem, options, prop) {
			this.options = options;
			this.elem = elem;
			this.prop = prop;
			if (!options.orig) {
				options.orig = {}
			}
		}
	});
	jQuery.fx.prototype = {
		update: function() {
			if (this.options.step) {
				this.options.step.call(this.elem, this.now, this)
			} (jQuery.fx.step[this.prop] || jQuery.fx.step._default)(this);
			if (this.prop == "height" || this.prop == "width") {
				this.elem.style.display = "block"
			}
		},
		cur: function(force) {
			if (this.elem[this.prop] != null && this.elem.style[this.prop] == null) {
				return this.elem[this.prop]
			}
			var r = parseFloat(jQuery.css(this.elem, this.prop, force));
			return r && r > -10000 ? r: parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0
		},
		custom: function(from, to, unit) {
			this.startTime = now();
			this.start = from;
			this.end = to;
			this.unit = unit || this.unit || "px";
			this.now = this.start;
			this.pos = this.state = 0;
			this.update();
			var self = this;
			function t(gotoEnd) {
				return self.step(gotoEnd)
			}
			t.elem = this.elem;
			jQuery.timers.push(t);
			if (jQuery.timerId == null) {
				jQuery.timerId = setInterval(function() {
					var timers = jQuery.timers;
					for (var i = 0; i < timers.length; i++) {
						if (!timers[i]()) {
							timers.splice(i--, 1)
						}
					}
					if (!timers.length) {
						clearInterval(jQuery.timerId);
						jQuery.timerId = null
					}
				},
				13)
			}
		},
		show: function() {
			this.options.orig[this.prop] = jQuery.attr(this.elem.style, this.prop);
			this.options.show = true;
			this.custom(0, this.cur());
			if (this.prop == "width" || this.prop == "height") {
				this.elem.style[this.prop] = "1px"
			}
			jQuery(this.elem).show()
		},
		hide: function() {
			this.options.orig[this.prop] = jQuery.attr(this.elem.style, this.prop);
			this.options.hide = true;
			this.custom(this.cur(), 0)
		},
		step: function(gotoEnd) {
			var t = now();
			if (gotoEnd || t > this.options.duration + this.startTime) {
				this.now = this.end;
				this.pos = this.state = 1;
				this.update();
				this.options.curAnim[this.prop] = true;
				var done = true;
				for (var i in this.options.curAnim) {
					if (this.options.curAnim[i] !== true) {
						done = false
					}
				}
				if (done) {
					if (this.options.display != null) {
						this.elem.style.overflow = this.options.overflow;
						this.elem.style.display = this.options.display;
						if (jQuery.css(this.elem, "display") == "none") {
							this.elem.style.display = "block"
						}
					}
					if (this.options.hide) {
						this.elem.style.display = "none"
					}
					if (this.options.hide || this.options.show) {
						for (var p in this.options.curAnim) {
							jQuery.attr(this.elem.style, p, this.options.orig[p])
						}
					}
				}
				if (done) {
					this.options.complete.call(this.elem)
				}
				return false
			} else {
				var n = t - this.startTime;
				this.state = n / this.options.duration;
				this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing": "linear")](this.state, n, 0, 1, this.options.duration);
				this.now = this.start + ((this.end - this.start) * this.pos);
				this.update()
			}
			return true
		}
	};
	jQuery.extend(jQuery.fx, {
		speeds: {
			slow: 600,
			fast: 200,
			def: 400
		},
		step: {
			scrollLeft: function(fx) {
				fx.elem.scrollLeft = fx.now
			},
			scrollTop: function(fx) {
				fx.elem.scrollTop = fx.now
			},
			opacity: function(fx) {
				jQuery.attr(fx.elem.style, "opacity", fx.now)
			},
			_default: function(fx) {
				fx.elem.style[fx.prop] = fx.now + fx.unit
			}
		}
	});
	jQuery.fn.offset = function() {
		var left = 0,
		top = 0,
		elem = this[0],
		results;
		if (elem) {
			with(jQuery.browser) {
				var parent = elem.parentNode,
				offsetChild = elem,
				offsetParent = elem.offsetParent,
				doc = elem.ownerDocument,
				safari2 = safari && parseInt(version) < 522 && !/adobeair/i.test(userAgent),
				css = jQuery.curCSS,
				fixed = css(elem, "position") == "fixed";
				if (elem.getBoundingClientRect) {
					var box = elem.getBoundingClientRect();
					add(box.left + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), box.top + Math.max(doc.documentElement.scrollTop, doc.body.scrollTop));
					add( - doc.documentElement.clientLeft, -doc.documentElement.clientTop)
				} else {
					add(elem.offsetLeft, elem.offsetTop);
					while (offsetParent) {
						add(offsetParent.offsetLeft, offsetParent.offsetTop);
						if (mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName) || safari && !safari2) {
							border(offsetParent)
						}
						if (!fixed && css(offsetParent, "position") == "fixed") {
							fixed = true
						}
						offsetChild = /^body$/i.test(offsetParent.tagName) ? offsetChild: offsetParent;
						offsetParent = offsetParent.offsetParent
					}
					while (parent && parent.tagName && !/^body|html$/i.test(parent.tagName)) {
						if (!/^inline|table.*$/i.test(css(parent, "display"))) {
							add( - parent.scrollLeft, -parent.scrollTop)
						}
						if (mozilla && css(parent, "overflow") != "visible") {
							border(parent)
						}
						parent = parent.parentNode
					}
					if ((safari2 && (fixed || css(offsetChild, "position") == "absolute")) || (mozilla && css(offsetChild, "position") != "absolute")) {
						add( - doc.body.offsetLeft, -doc.body.offsetTop)
					}
					if (fixed) {
						add(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), Math.max(doc.documentElement.scrollTop, doc.body.scrollTop))
					}
				}
				results = {
					top: top,
					left: left
				}
			}
		}
		function border(elem) {
			add(jQuery.curCSS(elem, "borderLeftWidth", true), jQuery.curCSS(elem, "borderTopWidth", true))
		}
		function add(l, t) {
			left += parseInt(l, 10) || 0;
			top += parseInt(t, 10) || 0
		}
		return results
	};
	jQuery.fn.extend({
		position: function() {
			var left = 0,
			top = 0,
			results;
			if (this[0]) {
				var offsetParent = this.offsetParent(),
				offset = this.offset(),
				parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? {
					top: 0,
					left: 0
				}: offsetParent.offset();
				offset.top -= num(this, "marginTop");
				offset.left -= num(this, "marginLeft");
				parentOffset.top += num(offsetParent, "borderTopWidth");
				parentOffset.left += num(offsetParent, "borderLeftWidth");
				results = {
					top: offset.top - parentOffset.top,
					left: offset.left - parentOffset.left
				}
			}
			return results
		},
		offsetParent: function() {
			var offsetParent = this[0].offsetParent;
			while (offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, "position") == "static")) {
				offsetParent = offsetParent.offsetParent
			}
			return jQuery(offsetParent)
		}
	});
	jQuery.each(["Left", "Top"],
	function(i, name) {
		var method = "scroll" + name;
		jQuery.fn[method] = function(val) {
			if (!this[0]) {
				return
			}
			return val != undefined ? this.each(function() {
				this == window || this == document ? window.scrollTo(!i ? val: jQuery(window).scrollLeft(), i ? val: jQuery(window).scrollTop()) : this[method] = val
			}) : this[0] == window || this[0] == document ? self[i ? "pageYOffset": "pageXOffset"] || jQuery.boxModel && document.documentElement[method] || document.body[method] : this[0][method]
		}
	});
	jQuery.each(["Height", "Width"],
	function(i, name) {
		var tl = i ? "Left": "Top",
		br = i ? "Right": "Bottom";
		jQuery.fn["inner" + name] = function() {
			return this[name.toLowerCase()]() + num(this, "padding" + tl) + num(this, "padding" + br)
		};
		jQuery.fn["outer" + name] = function(margin) {
			return this["inner" + name]() + num(this, "border" + tl + "Width") + num(this, "border" + br + "Width") + (margin ? num(this, "margin" + tl) + num(this, "margin" + br) : 0)
		}
	})
})(); (function(A) {
	A.fn.hoverIntent = function(I, H) {
		var J = {
			sensitivity: 7,
			interval: 100,
			timeout: 0
		};
		J = A.extend(J, H ? {
			over: I,
			out: H
		}: I);
		var L, K, F, D;
		var E = function(M) {
			L = M.pageX;
			K = M.pageY
		};
		var C = function(N, M) {
			M.hoverIntent_t = clearTimeout(M.hoverIntent_t);
			if ((Math.abs(F - L) + Math.abs(D - K)) < J.sensitivity) {
				A(M).unbind("mousemove", E);
				M.hoverIntent_s = 1;
				return J.over.apply(M, [N])
			} else {
				F = L;
				D = K;
				M.hoverIntent_t = setTimeout(function() {
					C(N, M)
				},
				J.interval)
			}
		};
		var G = function(N, M) {
			M.hoverIntent_t = clearTimeout(M.hoverIntent_t);
			M.hoverIntent_s = 0;
			return J.out.apply(M, [N])
		};
		var B = function(P) {
			var O = (P.type == "mouseover" ? P.fromElement: P.toElement) || P.relatedTarget;
			while (O && O != this) {
				try {
					O = O.parentNode
				} catch(P) {
					O = this
				}
			}
			if (O == this) {
				return false
			}
			var N = jQuery.extend({},
			P);
			var M = this;
			if (M.hoverIntent_t) {
				M.hoverIntent_t = clearTimeout(M.hoverIntent_t)
			}
			if (P.type == "mouseover") {
				F = N.pageX;
				D = N.pageY;
				A(M).bind("mousemove", E);
				if (M.hoverIntent_s != 1) {
					M.hoverIntent_t = setTimeout(function() {
						C(N, M)
					},
					J.interval)
				}
			} else {
				A(M).unbind("mousemove", E);
				if (M.hoverIntent_s == 1) {
					M.hoverIntent_t = setTimeout(function() {
						G(N, M)
					},
					J.timeout)
				}
			}
		};
		return this.mouseover(B).mouseout(B)
	}
})(jQuery);
if (typeof(cdc) == "undefined") {
	cdc = new Object()
}
if (typeof(cdc.includer) == "undefined") {
	cdc.includer = {};
	if (typeof(cdc.includer.alreadyInPage) == "undefined") {
		cdc.includer.alreadyInPage = []
	}
	cdc.includer.widgets = {
		"module-sbt": {
			//js: ["http://cisco.com/cdc_content_elements/visualsciences/visualsciences.js", "http://cisco.com/web/fw/j/sbt.js"],
			//css: ["http://cisco.com/web/fw/c/sbt.css"]
		},
		"widget-popular": {
			//js: ["/web/fw/w/widget-popular.js", "http://cmsg-ws.cisco.com/js/discovery.js"]
		},
		"cdc-widget-accordion": {
			//js: ["http://www.cisco.com/cdc_content_elements/visualsciences/visualsciences.js", "/web/fw/lib/jquery.hoverIntent.minified.js", "/web/fw/w/accordion/widget-accordion.js"]
		}
	};
	cdc.includer.search = function() {
		for (id in cdc.includer.widgets) {
			if (document.getElementById(id)) {
				if (cdc.includer.widgets[id]["css"] && cdc.includer.widgets[id]["css"].length) {
					cdc.includer.loadCss(cdc.includer.widgets[id]["css"])
				}
				if (cdc.includer.widgets[id]["js"] && cdc.includer.widgets[id]["js"].length) {
					cdc.includer.loadJs(cdc.includer.widgets[id]["js"])
				}
			}
		}
	};
	cdc.includer.uniquifyIncludes = function(C, D) {
		var E = {};
		var F = [];
		var G, B;
		if (D == "js") {
			G = "script";
			B = "src"
		} else {
			if (D == "css") {
				G = "link";
				B = "href"
			}
		}
		for (var A = 0; A < C.length; A++) {
			E[C[A]] = 1
		}
		if (typeof(cdc.includer.alreadyInPage) != "undefined") {
			for (var A = 0; A < cdc.includer.alreadyInPage.length; A++) {
				E[cdc.includer.alreadyInPage[A]] = 0
			}
		}
		jQuery(G).each(function() {
			if (this[B]) {
				E[this[B].replace(/http:\/\/[^\/]*/, "")] = 0
			}
		});
		for (var A = 0; A < C.length; A++) {
			if (E[C[A]]) {
				F.push(C[A])
			}
		}
		return F
	};
	cdc.includer.loadCss = function(C) {
		if (typeof(C) != "array") {
			C = [C]
		}
		C = cdc.includer.uniquifyIncludes(C, "css");
		for (var B = 0; B < C.length; B++) {
			var A = document.createElement("link");
			A.setAttribute("rel", "stylesheet");
			A.setAttribute("type", "text/css");
			A.setAttribute("href", C[B]);
			document.getElementsByTagName("head")[0].appendChild(A)
		}
	};
	cdc.includer.loadJs = function(C, B) {
		if (!B) {
			B = {}
		}
		if (!B.hasBeenCleaned) {
			C = cdc.includer.uniquifyIncludes(C, "js");
			B.hasBeenCleaned = 1;
			if (C.length == 0) {
				if (B.callback) {
					B.callback()
				}
				return
			}
		}
		currentFile = C.shift();
		var A = document.createElement("script");
		document.getElementsByTagName("head")[0].appendChild(A);
		A.language = "javascript";
		if (C.length) {
			if (document.attachEvent) {
				A.onreadystatechange = function() {
					if (this.readyState == "loaded") {
						cdc.includer.loadJs(C, B)
					}
				}
			} else {
				A.onload = function() {
					cdc.includer.loadJs(C, B)
				}
			}
		} else {
			if (B.callback) {
				if (document.attachEvent) {
					A.onreadystatechange = function() {
						if (this.readyState == "loaded") {
							B.callback()
						}
					}
				} else {
					A.onload = function() {
						B.callback()
					}
				}
			}
		}
		A.src = currentFile
	};
	jQuery(cdc.includer.search)
}
var swfobject = function() {
	var b = "undefined",
	Q = "object",
	o = "Shockwave Flash",
	q = "ShockwaveFlash.ShockwaveFlash",
	P = "application/x-shockwave-flash",
	n = "SWFObjectExprInst",
	k = window,
	K = document,
	T = navigator,
	p = [],
	N = [],
	j = [],
	d = [],
	J,
	Z = null,
	M = null,
	m = null,
	e = false,
	A = false;
	var h = function() {
		var v = typeof K.getElementById != b && typeof K.getElementsByTagName != b && typeof K.createElement != b,
		AC = [0, 0, 0],
		x = null;
		if (typeof T.plugins != b && typeof T.plugins[o] == Q) {
			x = T.plugins[o].description;
			if (x && !(typeof T.mimeTypes != b && T.mimeTypes[P] && !T.mimeTypes[P].enabledPlugin)) {
				x = x.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
				AC[0] = parseInt(x.replace(/^(.*)\..*$/, "$1"), 10);
				AC[1] = parseInt(x.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
				AC[2] = /r/.test(x) ? parseInt(x.replace(/^.*r(.*)$/, "$1"), 10) : 0
			}
		} else {
			if (typeof k.ActiveXObject != b) {
				var y = null,
				AB = false;
				try {
					y = new ActiveXObject(q + ".7")
				} catch(t) {
					try {
						y = new ActiveXObject(q + ".6");
						AC = [6, 0, 21];
						y.AllowScriptAccess = "always"
					} catch(t) {
						if (AC[0] == 6) {
							AB = true
						}
					}
					if (!AB) {
						try {
							y = new ActiveXObject(q)
						} catch(t) {}
					}
				}
				if (!AB && y) {
					try {
						x = y.GetVariable("$version");
						if (x) {
							x = x.split(" ")[1].split(",");
							AC = [parseInt(x[0], 10), parseInt(x[1], 10), parseInt(x[2], 10)]
						}
					} catch(t) {}
				}
			}
		}
		var AD = T.userAgent.toLowerCase(),
		s = T.platform.toLowerCase(),
		AA = /webkit/.test(AD) ? parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false,
		r = false,
		z = s ? /win/.test(s) : /win/.test(AD),
		w = s ? /mac/.test(s) : /mac/.test(AD);
		/*@cc_on r=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/
		return {
			w3cdom: v,
			pv: AC,
			webkit: AA,
			ie: r,
			win: z,
			mac: w
		}
	} ();
	var L = function() {
		if (!h.w3cdom) {
			return
		}
		f(H);
		if (h.ie && h.win) {
			try {
				K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");
				J = C("__ie_ondomload");
				if (J) {
					I(J, "onreadystatechange", S)
				}
			} catch(r) {}
		}
		if (h.webkit && typeof K.readyState != b) {
			Z = setInterval(function() {
				if (/loaded|complete/.test(K.readyState)) {
					E()
				}
			},
			10)
		}
		if (typeof K.addEventListener != b) {
			K.addEventListener("DOMContentLoaded", E, null)
		}
		R(E)
	} ();
	function S() {
		if (J.readyState == "complete") {
			J.parentNode.removeChild(J);
			E()
		}
	}
	function E() {
		if (e) {
			return
		}
		if (h.ie && h.win) {
			var w = a("span");
			try {
				var v = K.getElementsByTagName("body")[0].appendChild(w);
				v.parentNode.removeChild(v)
			} catch(x) {
				return
			}
		}
		e = true;
		if (Z) {
			clearInterval(Z);
			Z = null
		}
		var r = p.length;
		for (var u = 0; u < r; u++) {
			p[u]()
		}
	}
	function f(r) {
		if (e) {
			r()
		} else {
			p[p.length] = r
		}
	}
	function R(s) {
		if (typeof k.addEventListener != b) {
			k.addEventListener("load", s, false)
		} else {
			if (typeof K.addEventListener != b) {
				K.addEventListener("load", s, false)
			} else {
				if (typeof k.attachEvent != b) {
					I(k, "onload", s)
				} else {
					if (typeof k.onload == "function") {
						var r = k.onload;
						k.onload = function() {
							r();
							s()
						}
					} else {
						k.onload = s
					}
				}
			}
		}
	}
	function H() {
		var t = N.length;
		for (var r = 0; r < t; r++) {
			var u = N[r].id;
			if (h.pv[0] > 0) {
				var s = C(u);
				if (s) {
					N[r].width = s.getAttribute("width") ? s.getAttribute("width") : "0";
					N[r].height = s.getAttribute("height") ? s.getAttribute("height") : "0";
					if (c(N[r].swfVersion)) {
						if (h.webkit && h.webkit < 312) {
							Y(s)
						}
						W(u, true)
					} else {
						if (N[r].expressInstall && !A && c("6.0.65") && (h.win || h.mac)) {
							l(N[r])
						} else {
							O(s)
						}
					}
				}
			} else {
				W(u, true)
			}
		}
	}
	function Y(t) {
		var r = t.getElementsByTagName(Q)[0];
		if (r) {
			var w = a("embed"),
			y = r.attributes;
			if (y) {
				var v = y.length;
				for (var u = 0; u < v; u++) {
					if (y[u].nodeName == "DATA") {
						w.setAttribute("src", y[u].nodeValue)
					} else {
						w.setAttribute(y[u].nodeName, y[u].nodeValue)
					}
				}
			}
			var x = r.childNodes;
			if (x) {
				var z = x.length;
				for (var s = 0; s < z; s++) {
					if (x[s].nodeType == 1 && x[s].nodeName == "PARAM") {
						w.setAttribute(x[s].getAttribute("name"), x[s].getAttribute("value"))
					}
				}
			}
			t.parentNode.replaceChild(w, t)
		}
	}
	function l(w) {
		A = true;
		var u = C(w.id);
		if (u) {
			if (w.altContentId) {
				var y = C(w.altContentId);
				if (y) {
					M = y;
					m = w.altContentId
				}
			} else {
				M = G(u)
			}
			if (! (/%$/.test(w.width)) && parseInt(w.width, 10) < 310) {
				w.width = "310"
			}
			if (! (/%$/.test(w.height)) && parseInt(w.height, 10) < 137) {
				w.height = "137"
			}
			K.title = K.title.slice(0, 47) + " - Flash Player Installation";
			var z = h.ie && h.win ? "ActiveX": "PlugIn",
			r = K.title,
			s = "MMredirectURL=" + k.location + "&MMplayerType=" + z + "&MMdoctitle=" + r,
			x = w.id;
			if (h.ie && h.win && u.readyState != 4) {
				var t = a("div");
				x += "SWFObjectNew";
				t.setAttribute("id", x);
				u.parentNode.insertBefore(t, u);
				u.style.display = "none";
				var v = function() {
					u.parentNode.removeChild(u)
				};
				I(k, "onload", v)
			}
			U({
				data: w.expressInstall,
				id: n,
				width: w.width,
				height: w.height
			},
			{
				flashvars: s
			},
			x)
		}
	}
	function O(t) {
		if (h.ie && h.win && t.readyState != 4) {
			var s = a("div");
			t.parentNode.insertBefore(s, t);
			s.parentNode.replaceChild(G(t), s);
			t.style.display = "none";
			var r = function() {
				t.parentNode.removeChild(t)
			};
			I(k, "onload", r)
		} else {
			t.parentNode.replaceChild(G(t), t)
		}
	}
	function G(v) {
		var u = a("div");
		if (h.win && h.ie) {
			u.innerHTML = v.innerHTML
		} else {
			var s = v.getElementsByTagName(Q)[0];
			if (s) {
				var w = s.childNodes;
				if (w) {
					var r = w.length;
					for (var t = 0; t < r; t++) {
						if (! (w[t].nodeType == 1 && w[t].nodeName == "PARAM") && !(w[t].nodeType == 8)) {
							u.appendChild(w[t].cloneNode(true))
						}
					}
				}
			}
		}
		return u
	}
	function U(AG, AE, t) {
		var s, v = C(t);
		if (v) {
			if (typeof AG.id == b) {
				AG.id = t
			}
			if (h.ie && h.win) {
				var AF = "";
				for (var AB in AG) {
					if (AG[AB] != Object.prototype[AB]) {
						if (AB.toLowerCase() == "data") {
							AE.movie = AG[AB]
						} else {
							if (AB.toLowerCase() == "styleclass") {
								AF += ' class="' + AG[AB] + '"'
							} else {
								if (AB.toLowerCase() != "classid") {
									AF += " " + AB + '="' + AG[AB] + '"'
								}
							}
						}
					}
				}
				var AD = "";
				for (var AA in AE) {
					if (AE[AA] != Object.prototype[AA]) {
						AD += '<param name="' + AA + '" value="' + AE[AA] + '" />'
					}
				}
				v.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + AF + ">" + AD + "</object>";
				j[j.length] = AG.id;
				s = C(AG.id)
			} else {
				if (h.webkit && h.webkit < 312) {
					var AC = a("embed");
					AC.setAttribute("type", P);
					for (var z in AG) {
						if (AG[z] != Object.prototype[z]) {
							if (z.toLowerCase() == "data") {
								AC.setAttribute("src", AG[z])
							} else {
								if (z.toLowerCase() == "styleclass") {
									AC.setAttribute("class", AG[z])
								} else {
									if (z.toLowerCase() != "classid") {
										AC.setAttribute(z, AG[z])
									}
								}
							}
						}
					}
					for (var y in AE) {
						if (AE[y] != Object.prototype[y]) {
							if (y.toLowerCase() != "movie") {
								AC.setAttribute(y, AE[y])
							}
						}
					}
					v.parentNode.replaceChild(AC, v);
					s = AC
				} else {
					var u = a(Q);
					u.setAttribute("type", P);
					for (var x in AG) {
						if (AG[x] != Object.prototype[x]) {
							if (x.toLowerCase() == "styleclass") {
								u.setAttribute("class", AG[x])
							} else {
								if (x.toLowerCase() != "classid") {
									u.setAttribute(x, AG[x])
								}
							}
						}
					}
					for (var w in AE) {
						if (AE[w] != Object.prototype[w] && w.toLowerCase() != "movie") {
							F(u, w, AE[w])
						}
					}
					v.parentNode.replaceChild(u, v);
					s = u
				}
			}
		}
		return s
	}
	function F(t, r, s) {
		var u = a("param");
		u.setAttribute("name", r);
		u.setAttribute("value", s);
		t.appendChild(u)
	}
	function X(s) {
		var r = C(s);
		if (r && (r.nodeName == "OBJECT" || r.nodeName == "EMBED")) {
			if (h.ie && h.win) {
				if (r.readyState == 4) {
					B(s)
				} else {
					k.attachEvent("onload",
					function() {
						B(s)
					})
				}
			} else {
				r.parentNode.removeChild(r)
			}
		}
	}
	function B(t) {
		var s = C(t);
		if (s) {
			for (var r in s) {
				if (typeof s[r] == "function") {
					s[r] = null
				}
			}
			s.parentNode.removeChild(s)
		}
	}
	function C(t) {
		var r = null;
		try {
			r = K.getElementById(t)
		} catch(s) {}
		return r
	}
	function a(r) {
		return K.createElement(r)
	}
	function I(t, r, s) {
		t.attachEvent(r, s);
		d[d.length] = [t, r, s]
	}
	function c(t) {
		var s = h.pv,
		r = t.split(".");
		r[0] = parseInt(r[0], 10);
		r[1] = parseInt(r[1], 10) || 0;
		r[2] = parseInt(r[2], 10) || 0;
		return (s[0] > r[0] || (s[0] == r[0] && s[1] > r[1]) || (s[0] == r[0] && s[1] == r[1] && s[2] >= r[2])) ? true: false
	}
	function V(w, t) {
		if (h.ie && h.mac) {
			return
		}
		var v = K.getElementsByTagName("head")[0],
		u = a("style");
		u.setAttribute("type", "text/css");
		u.setAttribute("media", "screen");
		if (! (h.ie && h.win) && typeof K.createTextNode != b) {
			u.appendChild(K.createTextNode(w + " {" + t + "}"))
		}
		v.appendChild(u);
		if (h.ie && h.win && typeof K.styleSheets != b && K.styleSheets.length > 0) {
			var r = K.styleSheets[K.styleSheets.length - 1];
			if (typeof r.addRule == Q) {
				r.addRule(w, t)
			}
		}
	}
	function W(t, r) {
		var s = r ? "visible": "hidden";
		if (e && C(t)) {
			C(t).style.visibility = s
		} else {
			V("#" + t, "visibility:" + s)
		}
	}
	function g(t) {
		var u = /[\\\"<>\.;]/;
		var r = u.exec(t) != null;
		return r ? encodeURIComponent(t) : t
	}
	var D = function() {
		if (h.ie && h.win) {
			window.attachEvent("onunload",
			function() {
				var w = d.length;
				for (var v = 0; v < w; v++) {
					d[v][0].detachEvent(d[v][1], d[v][2])
				}
				var t = j.length;
				for (var u = 0; u < t; u++) {
					X(j[u])
				}
				for (var s in h) {
					h[s] = null
				}
				h = null;
				for (var r in swfobject) {
					swfobject[r] = null
				}
				swfobject = null
			})
		}
	} ();
	return {
		registerObject: function(u, r, t) {
			if (!h.w3cdom || !u || !r) {
				return
			}
			var s = {};
			s.id = u;
			s.swfVersion = r;
			s.expressInstall = t ? t: false;
			N[N.length] = s;
			W(u, false)
		},
		getObjectById: function(v) {
			var s = null;
			if (h.w3cdom) {
				var t = C(v);
				if (t) {
					var u = t.getElementsByTagName(Q)[0];
					if (!u || (u && typeof t.SetVariable != b)) {
						s = t
					} else {
						if (typeof u.SetVariable != b) {
							s = u
						}
					}
				}
			}
			return s
		},
		embedSWF: function(x, AE, AB, AD, r, w, s, z, AC) {
			if (!h.w3cdom || !x || !AE || !AB || !AD || !r) {
				return
			}
			AB += "";
			AD += "";
			if (c(r)) {
				W(AE, false);
				var AA = {};
				if (AC && typeof AC === Q) {
					for (var v in AC) {
						if (AC[v] != Object.prototype[v]) {
							AA[v] = AC[v]
						}
					}
				}
				AA.data = x;
				AA.width = AB;
				AA.height = AD;
				var y = {};
				if (z && typeof z === Q) {
					for (var u in z) {
						if (z[u] != Object.prototype[u]) {
							y[u] = z[u]
						}
					}
				}
				if (s && typeof s === Q) {
					for (var t in s) {
						if (s[t] != Object.prototype[t]) {
							if (typeof y.flashvars != b) {
								y.flashvars += "&" + t + "=" + s[t]
							} else {
								y.flashvars = t + "=" + s[t]
							}
						}
					}
				}
				f(function() {
					U(AA, y, AE);
					if (AA.id == AE) {
						W(AE, true)
					}
				})
			} else {
				if (w && !A && c("6.0.65") && (h.win || h.mac)) {
					A = true;
					W(AE, false);
					f(function() {
						var AF = {};
						AF.id = AF.altContentId = AE;
						AF.width = AB;
						AF.height = AD;
						AF.expressInstall = w;
						l(AF)
					})
				}
			}
		},
		getFlashPlayerVersion: function() {
			return {
				major: h.pv[0],
				minor: h.pv[1],
				release: h.pv[2]
			}
		},
		hasFlashPlayerVersion: c,
		createSWF: function(t, s, r) {
			if (h.w3cdom) {
				return U(t, s, r)
			} else {
				return undefined
			}
		},
		removeSWF: function(r) {
			if (h.w3cdom) {
				X(r)
			}
		},
		createCSS: function(s, r) {
			if (h.w3cdom) {
				V(s, r)
			}
		},
		addDomLoadEvent: f,
		addLoadEvent: R,
		getQueryParamValue: function(u) {
			var t = K.location.search || K.location.hash;
			if (u == null) {
				return g(t)
			}
			if (t) {
				var s = t.substring(1).split("&");
				for (var r = 0; r < s.length; r++) {
					if (s[r].substring(0, s[r].indexOf("=")) == u) {
						return g(s[r].substring((s[r].indexOf("=") + 1)))
					}
				}
			}
			return ""
		},
		expressInstallCallback: function() {
			if (A && M) {
				var r = C(n);
				if (r) {
					r.parentNode.replaceChild(M, r);
					if (m) {
						W(m, true);
						if (h.ie && h.win) {
							M.style.display = "block"
						}
					}
					M = null;
					m = null;
					A = false
				}
			}
		}
	}
} ();
var EnableFullAuto = true;
var SWFFormFixDebug = false;
var NotLoadedWarning = true;
var NotLoadedMsg = "Please wait for the page to load...";
finished = false;
timeout = 10;
starttime = new Date().getTime();
flashObjectList = Array();
fixedList = Array();
makeFuncArr = Array();
SWFFormFixAuto2 = function() {
	if (navigator.appName.toLowerCase() != "microsoft internet explorer") {
		return true
	}
	var F = document.getElementsByTagName("object");
	for (var C = 0; C < F.length; C++) {
		var E = F[C];
		if (E.getAttribute("classid") == "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000") {
			var H = E.getAttribute("id");
			var B = false;
			for (var G = 0; G < fixedList.length; G++) {
				if (fixedList[C] == H) {
					B = true
				}
			}
			if (!B) {
				var D = "";
				for (var A in window[H]) {
					if (typeof(window[H][A]) == "function") {
						makeFuncArr.push(Array(E, A));
						E[A] = function() {
							if (NotLoadedWarning) {
								alert(NotLoadedMsg)
							}
							return ("")
						}
					}
				}
				window[H] = E;
				if (SWFFormFixDebug) {
					alert("Fixed: " + H)
				}
			}
		}
	}
	if (!finished) {
		setTimeout("SWFFormFixAuto2()", 100)
	} else {
		for (var C = 0; C < makeFuncArr.length; C++) {
			SWFFormFix_rebuildExtFunc(makeFuncArr[C][0], makeFuncArr[C][1])
		}
	}
	return true
};
SWFFormFix_rebuildExtFunc = function(obj, functionName) {
	eval('obj[functionName] = function(){return eval(this.CallFunction("<invoke name=\\"' + functionName + '\\" returntype=\\"javascript\\">" + __flash__argumentsToXML(arguments,0) + "</invoke>"));}');
	if (SWFFormFixDebug) {
		alert("Rebuilt ExternalInterface() function: " + functionName)
	}
};
SWFFormFixOnloadAppend = function() {
	var A = window.onload;
	if (typeof window.onload != "function") {
		window.onload = function() {
			finished = true
		}
	} else {
		window.onload = function() {
			A();
			finished = true
		}
	}
};
SWFFormFixAuto = function() {
	if (navigator.appName.toLowerCase() != "microsoft internet explorer") {
		return true
	}
	var B = document.getElementsByTagName("object");
	if (B.length == 0) {
		return true
	}
	for (i = 0; i < B.length; i++) {
		if (B[i].classid == "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000") {
			window[B[i].id] = B[i]
		}
	}
	var A = "";
	return true
};
SWFFormFix = function(B) {
	if (navigator.appName.toLowerCase() != "microsoft internet explorer") {
		return false
	}
	var A = "SWFFormFixTESTER";
	document.write('<div id="' + A + '" onclick="SWFFormFixCallback(this,\'' + B + '\');return false;" style="display:none">&nbsp;</div>');
	document.getElementById(A).onclick()
};
SWFFormFixCallback = function(D, E) {
	var C = document;
	var A = false;
	var B = D;
	while (D = D.parentNode) {
		if (D.nodeName.toLowerCase() == "form") {
			if (D.name != undefined && D.name != null && D.name.length > 0) {
				C = C.forms[D.name]
			} else {
				alert("Error: one of your forms does not have a name!");
				A = true
			}
		}
	}
	B.parentNode.removeChild(B);
	if (A) {
		return false
	}
	window[E] = C[E];
	return true
};
function noCacheIE(B) {
	var D = navigator.appName.indexOf("Microsoft") != -1;
	if (!D) {
		return (B)
	}
	var E = "?";
	if (B.indexOf("?") != -1) {
		E = "&"
	}
	var A = new Date();
	var C = Math.random().toString().substring(2, 4);
	E = B + E + "noCacheIE=" + C + "-" + A.getTime().toString();
	return (E)
}
if (EnableFullAuto) {
	SWFFormFixAuto2();
	SWFFormFixOnloadAppend()
}
if (typeof(cdc.search) == "undefined") {
	cdc.search = new Object()
}
function QuerySuggester() {
	this.id = querySuggesters.length;
	querySuggesters[this.id] = this
}
QuerySuggester.prototype.useInlineSuggestion = false;
QuerySuggester.prototype.clearInlineSuggestionBeforeSubmit = false;
QuerySuggester.prototype.initialize = function(suggestionUrl, formId, tooltipId, queryId, containerID, buttonsID) {
	this.__enabled = true;
	if (this.__enabled) {
		this.__suggestionUrl = suggestionUrl;
		this.__form = document.sitewidesearch;
		if (!this.__form) {
			this.__enabled = false;
			this.debug("Couldn't find the form, disabling.")
		} else {
			if (this.__enableContextual) {
				this.__section = getSiteArea();
				if (!this.__section) {
					this.__section = ""
				}
				this.__showContextual = (/support/i).test(this.__section);
				if (this.__showContextual) {
					setcontextual()
				}
				this.__contextualButtons = this.byId(buttonsID)
			}
			this.__tooltip = this.byId(tooltipId);
			this.__container = this.byId(containerID);
			this.__queryId = queryId;
			this.__query = this.byId(queryId);
			if (this.__query) {
				this.__query.setAttribute("autocomplete", "off", 0);
				var oldKeyUp = this.getFunctionBody(this.__query.onkeyup);
				var oldKeyDown = this.getFunctionBody(this.__query.onkeydown);
				var suggester = this;
				this.__query.onkeyup = function(e) {
					if (typeof e != "undefined") {
						event = e
					}
					eval(oldKeyUp);
					suggester.keyUp(event, queryId)
				};
				this.__query.onkeydown = function(e) {
					if (typeof e != "undefined") {
						event = e
					}
					eval(oldKeyDown);
					suggester.keyDown(event, queryId)
				};
				this.__mousein = false;
				this.__container.onmouseover = function() {
					suggester.__mousein = true
				};
				this.__container.onmouseout = function() {
					suggester.__mousein = false;
					suggester.__query.focus();
					suggester.__query.select()
				};
				this.__query.onblur = function() {
					if (suggester.__mousein == false) {
						suggester.hideContainer()
					}
				}
			}
		}
	} else {
		this.debug("Unable to instantiate XMLHttpRequest, disabling.")
	}
};
QuerySuggester.prototype.setDebugAreaId = function(A) {
	this.__debugAreaId = A
};
QuerySuggester.prototype.setQueryId = function(A) {
	this.__queryId = A;
	this.__query = this.byId(A)
};
QuerySuggester.prototype.getSuggestionUrl = function(A) {
	return this.__suggestionUrl + A
};
QuerySuggester.prototype.submitForm = function() {
	this.__form.submit()
};
QuerySuggester.prototype.keyUp = function(B, D) {
	if (!this.__enabled) {
		return
	} else {
		if (D != this.__queryId) {
			this.setQueryId(D)
		}
	}
	if (B) {
		if (this.__timeout) {
			clearTimeout(this.__timeout);
			this.__timeout = false
		}
		if (B.ctrlKey || B.altKey) {
			return
		}
		var C = 100;
		this.__deletePressed = false;
		switch (B.keyCode) {
		case 9:
		case 27:
			this.hide();
			return;
		case 8:
		case 46:
			this.__deletePressed = true;
			C = 200;
			break;
		case 13:
		case 16:
		case 17:
		case 18:
		case 20:
		case 33:
		case 34:
		case 35:
		case 36:
		case 37:
		case 38:
		case 39:
		case 40:
		case 45:
			return;
		default:
			C = 100;
			break
		}
		this.__index = -1;
		var A = this;
		this.__timeout = setTimeout(function() {
			A.fetchAndDisplaySuggestions()
		},
		C)
	}
};
QuerySuggester.prototype.keyDown = function(A, B) {
	if (!this.__enabled) {
		return
	} else {
		if (B != this.__queryId) {
			this.setQueryId(B)
		}
	}
	if (A && A.keyCode) {
		switch (A.keyCode) {
		case 9:
			this.hide();
			break;
		case 13:
			if (this.__index == -1) {
				this.clearInlineSuggestion();
				break
			} else {
				this.__query.value = this.__terms[this.__index];
				this.submitForm();
				return false
			}
		case 38:
			if (this.__index >= 0) {
				this.updateSuggestions(this.__index--, -2)
			}
			break;
		case 40:
			if (this.__index < this.__terms.length - 1) {
				this.updateSuggestions(this.__index++, -2)
			}
			break
		}
	}
};
QuerySuggester.prototype.mouseOver = function(A) {
	if (!this.__enabled) {
		return
	}
	var B = this.__mouseIndex >= 0 ? this.__mouseIndex: this.__index;
	this.__mouseIndex = A;
	this.updateSuggestions( - 2, B)
};
QuerySuggester.prototype.mouseOut = function(A) {
	if (!this.__enabled) {
		return
	}
	var B = this.__mouseIndex;
	this.__mouseIndex = -1;
	this.updateSuggestions( - 2, B)
};
QuerySuggester.prototype.mouseClick = function(A) {
	if (!this.__enabled) {
		return
	}
	if (A >= 0) {
		this.__query.value = this.__terms[A];
		this.submitForm()
	} else {
		this.hide()
	}
};
QuerySuggester.prototype.fetchAndDisplaySuggestions = function() {
	var A = this.__query.value;
	if (this.canHandleRanges()) {
		A = A.substring(0, this.getCaretPosition())
	}
	if (A.length == 0) {
		this.hide();
		this.__prev = A;
		return
	} else {
		A = A.replace(new RegExp("\\\\", "g"), "\\\\")
	}
	this.__prev = A;
	if (this.__cache[A]) {
		this.debug("cache: " + A);
		this.displaySuggestions(this.__cache[A], this.__prev)
	} else {
		this.debug("query: '" + A + "'");
		this.fetchSuggestion(A)
	}
};
QuerySuggester.prototype.fetchSuggestion = function(B) {
	var A = this;
	qs = this;
	cdc.search.jsonp(this.__suggestionUrl + "q=" + encodeURI(B), "qs.parseSuggestions", "")
};
QuerySuggester.prototype.parseSuggestions = function(matches) {
	if (matches == "") {
		return
	}
	var params = eval(matches);
	if (params.length > 2) {
		this.__cache[params[0]] = params
	}
	this.displaySuggestions(params, params.length > 2 ? params[0] : "")
};
QuerySuggester.prototype.displaySuggestions = function(B, A) {
	if (B.length <= 2) {
		this.noSuggestions();
		return
	}
	if (this.__tooltip && this.__query) {
		this.buildSuggestionsHtml(B);
		this.show();
		this.showInlineSuggestions(A)
	}
};
QuerySuggester.prototype.buildSuggestionsHtml = function(C) {
	var D = "";
	if (this.__showContextual) {
		D += '<hr size="1" noshade="noshade" color="#CCCCCC" />'
	}
	var B = C.length / 2 - 1;
	this.__terms = new Array(B);
	for (var A = 0; A < B; ++A) {
		D += '<div class="suggestionEntry" id="tooltip_' + A + '"';
		D += ' onmouseover="cdc.search.mouseOver(' + this.id + "," + A + ')"';
		D += ' onmouseout="cdc.search.mouseOut(' + this.id + "," + A + ')"';
		D += ' onclick="cdc.search.mouseClick(' + this.id + "," + A + ')"';
		D += ' style="cursor: pointer">' + C[A * 2 + 2];
		D += "</div>\n";
		this.__terms[A] = C[A * 2 + 2]
	}
	this.__tooltip.innerHTML = D;
	if (this.__container.style.display == "none") {
		this.showContainer()
	}
};
QuerySuggester.prototype.showInlineSuggestions = function(A) {
	if (this.__terms.length > 0 && this.__query.value == A && !this.__deletePressed && this.useInlineSuggestion) {
		this.__original = this.__query.value;
		if (this.canHandleRanges()) {
			this.__query.value = this.__terms[0];
			this.selectRange(this.__original.length, this.__query.value.length)
		}
	}
};
QuerySuggester.prototype.updateSuggestions = function(E, F) {
	var B = this.byId("tooltip_" + E);
	var D = this.byId("tooltip_" + F);
	var C = this.byId("tooltip_" + this.__index);
	var A = this.byId("tooltip_" + this.__mouseIndex);
	if (B) {
		if (E != this.__mouseIndex) {
			B.className = "suggestionEntry"
		}
	}
	if (C) {
		C.className = "suggestionEntryHover";
		if (this.canHandleRanges()) {
			this.selectRange(this.__original.length, this.__terms[this.__index].length)
		}
	}
	if (D && F != this.__index) {
		D.className = "suggestionEntry"
	}
	if (A) {
		A.className = "suggestionEntryHover"
	}
};
QuerySuggester.prototype.noSuggestions = function() {
	this.hide()
};
QuerySuggester.prototype.show = function() {
	if (this.__tooltip && this.__query) {
		this.__tooltip.style.display = "block"
	}
};
QuerySuggester.prototype.showContainer = function() {
	if (this.__container && this.__query) {
		if (this.__showContextual || this.__terms.length > 0) {
			this.__container.style.left = this.findPosX(this.__query) - 9 + "px";
			this.__container.style.top = (this.findPosY(this.__query) - 4 + this.__query.offsetHeight) + "px";
			this.__container.style.width = this.__query.offsetWidth + 10 + "px";
			this.__container.style.display = "block";
			if (this.__showContextual) {
				this.__contextualButtons.style.display = "block"
			}
		}
	}
};
QuerySuggester.prototype.hide = function() {
	if (this.__tooltip) {
		this.__terms = new Array();
		this.__tooltip.style.display = "none";
		if (!this.__showContextual) {
			this.__container.style.display = "none"
		}
	}
};
QuerySuggester.prototype.hideContainer = function() {
	if (this.__container) {
		this.__container.style.display = "none"
	}
};
QuerySuggester.prototype.canHandleRanges = function() {
	return this.__query.createTextRange || this.__query.setSelectionRange
};
QuerySuggester.prototype.selectRange = function(C, B) {
	if (this.__query.createTextRange) {
		var A = this.__query.createTextRange();
		A.moveStart("character", C);
		A.select()
	} else {
		if (this.__query.setSelectionRange) {
			this.__query.setSelectionRange(C, B)
		} else {
			this.debug("Couldn't select range.")
		}
	}
};
QuerySuggester.prototype.getCaretPosition = function() {
	if (document.selection) {
		var A = document.selection.createRange().duplicate();
		A.collapse(true);
		A.moveStart("character", -1000);
		return A.text.length
	} else {
		if (this.__query.setSelectionRange) {
			return this.__query.selectionStart
		} else {
			this.debug("Couldn't find caret position.");
			return this.__query.value.length
		}
	}
};
QuerySuggester.prototype.clearInlineSuggestion = function() {
	if (this.__query && this.canHandleRanges() && this.clearInlineSuggestionBeforeSubmit) {
		this.__query.value = this.__query.value.substring(0, this.getCaretPosition())
	}
};
QuerySuggester.prototype.getFunctionBody = function(B) {
	var A = "";
	if (typeof B == "function") {
		A = B.toString();
		A = A.substring(A.indexOf("{") + 1, A.lastIndexOf("}"))
	}
	return A
};
QuerySuggester.prototype.findPosX = function(A) {
	var B = 0;
	if (A.offsetParent) {
		while (A.offsetParent && A.className != "pageContainer") {
			B += A.offsetLeft;
			A = A.offsetParent
		}
	} else {
		if (A.x) {
			B += A.x
		}
	}
	return B
};
QuerySuggester.prototype.findPosY = function(B) {
	var A = 0;
	if (B.offsetParent) {
		while (B.offsetParent && B.className != "pageContainer") {
			A += B.offsetTop;
			B = B.offsetParent
		}
	} else {
		if (B.y) {
			A += B.y
		}
	}
	return A
};
QuerySuggester.prototype.byId = function(B) {
	var A = document.getElementById ? document.getElementById(B) : false;
	return A && A != null ? A: false
};
QuerySuggester.prototype.debug = function(B) {
	if (this.__debugAreaId) {
		var A = this.byId(this.__debugAreaId);
		if (A) {
			A.value += B + "\n"
		}
	}
};
QuerySuggester.prototype.__suggestionUrl = false;
QuerySuggester.prototype.__form = false;
QuerySuggester.prototype.__query = false;
QuerySuggester.prototype.__queryId = false;
QuerySuggester.prototype.__tooltip = false;
QuerySuggester.prototype.__container = false;
QuerySuggester.prototype.__debugAreaId = false;
QuerySuggester.prototype.__timeout = false;
QuerySuggester.prototype.__prev = "";
QuerySuggester.prototype.__original = "";
QuerySuggester.prototype.__index = -1;
QuerySuggester.prototype.__mouseIndex = -1;
QuerySuggester.prototype.__terms = new Array();
QuerySuggester.prototype.__cache = new Array();
QuerySuggester.prototype.__enabled = false;
QuerySuggester.prototype.__deletePressed = false;
QuerySuggester.prototype.__section = "";
QuerySuggester.prototype.__showContextual = false;
QuerySuggester.prototype.__enableContextual = false;
var querySuggesters = new Array();
cdc.search.mouseOver = function(B, A) {
	if (B >= 0 && B < querySuggesters.length) {
		querySuggesters[B].mouseOver(A)
	}
};
cdc.search.mouseOut = function(B, A) {
	if (B >= 0 && B < querySuggesters.length) {
		querySuggesters[B].mouseOut(A)
	}
};
cdc.search.mouseClick = function(C, A) {
	if (C >= 0 && C < querySuggesters.length) {
		querySuggesters[C].mouseClick(A)
	} else {
		if (C == -1 && A == -1) {
			for (var B = 0; B < querySuggesters.length; ++B) {
				querySuggesters[B].mouseClick(A)
			}
		}
	}
};
function setsitewide() {
	document.getElementById("searchtype-contextual").checked = false;
	document.getElementById("searchtype-sitewide").checked = true;
	document.sitewidesearch.thissection.value = "f"
}
function setcontextual() {
	document.getElementById("searchtype-contextual").checked = true;
	document.getElementById("searchtype-sitewide").checked = false;
	document.sitewidesearch.thissection.value = "t"
}
function showSuggestionsContainer() {
	qs.showContainer()
}
function hideSuggestionsContainer() {
	if (qs.__mousein == false) {
		qs.hideContainer()
	}
}
cdc.search.jsonp = function(C, B, D) {
	if (C.indexOf("?") > -1) {
		C += "&callback="
	} else {
		C += "?callback="
	}
	C += B + "&";
	if (D) {
		C += encodeURIComponent(D) + "&"
	}
	C += new Date().getTime().toString();
	var A = document.createElement("script");
	A.setAttribute("src", C);
	A.setAttribute("type", "text/javascript");
	document.body.appendChild(A)
};
function setupSearch() {
	var D = window.location.hostname.toLowerCase();
//	if ((D.indexOf("newsroom.cisco.com") >= 0) || (D.indexOf("investor.cisco.com") >= 0)) {
//		return
//	}
	var F = false;
	var B = 0;
	while ((F == false) && (B < document.styleSheets.length)) {
		F = ((document.styleSheets[B].href.indexOf("/framework.css") >= 0) || (document.styleSheets[B].href.indexOf("/libra.css") >= 0) || (document.styleSheets[B].href.indexOf("/home.css") >= 0) || (document.styleSheets[B].href.indexOf("/home.min.css") >= 0) || (document.styleSheets[B].href.indexOf("/_search.css") >= 0));
		B++
	}
	if (F == false) {
		return
	}
	var G = '<div style="display:none" id="search-drop-down">';
	G += '<div class="contextual-search-top"> </div>';
	G += '<div id="contextual-search-buttons">';
	G += '<span class="contextual-search-link" onclick="setsitewide()">';
	G += '<input type="radio" id="searchtype-sitewide" name="searchtype" value="sitewide" checked /> ';
	//G += "All Cisco.com</span> &nbsp; &nbsp;";
	G += '<span class="contextual-search-link" onclick="setcontextual()">';
	G += '<input type="radio" id="searchtype-contextual" name="searchtype" value="contextual" /> ';
	G += "This Section</span>";
	G += "</div>";
	G += '<div id="autoSuggest"></div>';
	G += '<div class="contextual-search-bot"> </div></div>';
	var A = document.getElementById("home-header") || document.getElementById("framework-header");
	var C = document.createElement("DIV");
	C.innerHTML = G;
	A.insertBefore(C, A.firstChild);
	if (document.getElementById("searchPhrase")) {
		document.getElementById("searchPhrase").form.id = "sitewidesearch"
	}
	if (document.getElementById("searchPhrase")) {
		document.getElementById("searchPhrase").onblur = hideSuggestionsContainer
	}
//	var E = (D.indexOf("www.cisco.com") < 0) ? "http://www.cisco.com": "";
//	E += "/pcgi-bin/search/searchrelay.pl?";
//	E += "charset=" + (document.charset || document.characterSet) + "&";
	if ((typeof cdc.search.country) != "undefined") {
		E += "country=" + cdc.search.country + "&"
	}
	if ((typeof cdc.search.language) != "undefined") {
		E += "language=" + cdc.search.language + "&"
	}
	qs = new QuerySuggester();
	qs.initialize(E, "sitewidesearch", "autoSuggest", "searchPhrase", "search-drop-down", "contextual-search-buttons")
}
if (typeof cdc == "undefined") {
	cdc = {}
}
if (typeof cdc.homepage == "undefined") {
	cdc.homepage = {}
}
cdc.homepage.canAnimate = function() {
	return (navigator.platform.toLowerCase().indexOf("linux") == -1 && !(jQuery.browser.safari && jQuery.browser.version < 500))
};
function global_openCdcPopup(C, D, A) {
	if (isNaN(parseInt(D))) {
		D = 550
	} else {
		D = parseInt(D)
	}
	if (isNaN(parseInt(A))) {
		A = 550
	} else {
		A = parseInt(A)
	}
	var E = "status=yes,scrollbars=yes,resizable=yes,width=" + D + ",height=" + A;
	var B = window.open(C, "globalCDCpopup", E);
	if (B) {
		B.focus()
	}
}
function addToWindowOnLoad(A) {
	var B = window.onload;
	if (typeof window.onload != "function") {
		window.onload = A
	} else {
		window.onload = function() {
			B();
			A()
		}
	}
}
function checkClear(A, B) {
	if (A.value == B) {
		A.value = ""
	}
	if (!document.getElementById("search-drop-down")) {
		setupSearch()
	}
	if (document.getElementById("search-drop-down")) {
		showSuggestionsContainer()
	}
}
function vs_makeImg(A) {}
function vs_makeSubmit(A) {}
function cdc_display_image_when_loaded(A, B) {
	A.tempImg = new Image();
	A.tempImg.onload = function() {
		A.onload = null;
		A.src = A.tempImg.src;
		A.tempImg.onload = null;
		if (A.id == "bam_img") {
			A.parentNode.href = A.src.replace("image.ng", "click.ng")
		}
	};
	A.tempImg.src = B
}
function cdc_cache_bust(B, D) {
	if (!D) {
		D = "cacheReset"
	}
	var C = "?";
	if (B.match(/(ng-prod1|\?)/)) {
		C = "&"
	}
	var A = C + D + "=";
	return B + A + cdc_rand_num()
}
function cdc_rand_num(A) {
	if (!A) {
		A = 1000
	}
	var C = Math.floor(Math.random() * A) + 1;
	var B = (new Date).getTime();
	var D = B + "-" + C;
	return D
}
if (typeof cdc == "undefined") {
	cdc = {}
}
if (typeof cdc.homepage == "undefined") {
	cdc.homepage = {}
}
cdc.homepage.spotlight = {
	config: {
		id: "spotlight",
		container: "spotlight-container",
		base: "",
		file: "hub.swf",
		dataPath: "spotlight_en_US.xml",
		minPlayer: "8.0.0",
		expanded: false,
		showIntro: false,
		chickletID: "",
		width: 902,
		minHeight: 300,
		maxHeight: 532,
		trigger: "CREATIVE",
		autoplay: false,
		autoplayloopsmax: "4"
	},
	extraFlashVars: undefined,
	render: function(D) {
		var F = this.config;
		if (!swfobject.hasFlashPlayerVersion(F.minPlayer)) {
			var C = D.noflash || this.extraFlashVars.noflash;
			var B = '<a rel="exit" name="&amp;lpos=' + C.lpos + '" href="' + C.href + '"><img src="' + C.src + '" alt="' + C.alt + '" width="' + (D.width || F.width) + '" height="' + (D.minHeight || F.minHeight) + '"  onload="vs_makeImg(this)" name="&amp;lpos=' + C.lpos + '"  /></a>';
			jQuery(function() {
				jQuery("#spotlight noscript").after(B)
			});
			return
		}
		if (typeof D != "undefined") {
			this.configure(D)
		}
		var E = {
			quality: "high",
			wmode: "transparent",
			allowscriptaccess: "always",
			allowfullscreen: "false",
			base: F.base
		};
		var A = {
			javascriptid: F.id,
			dataPath: F.dataPath,
			autoplay: F.autoplay,
			enablejs: "true",
			expand_lock: "false",
			mediaPlayer: "mediaplayer.swf",
			chickletID: F.chickletID,
			expanded: F.expanded,
			showIntro: F.showIntro,
			usefullscreen: "false",
			introExpanded: "intro_expanded.swf",
			introContracted: "intro_contracted.swf",
			autoplayloopsmax: F.autoplayloopsmax
		};
		if (this.extraFlashVars) {
			jQuery.extend(A, this.extraFlashVars)
		}
		swfobject.embedSWF(F.base + F.file, F.id, F.width, F.maxHeight, F.minPlayer, "", A, E, {})
	},
	configure: function(B) {
		this.checkDeepLinks(B);
		for (var A in this.config) {
			if (typeof B[A] != "undefined") {
				this.config[A] = B[A];
				delete B[A]
			}
		}
		this.extraFlashVars = B
	},
	normalSpaces: function(B) {
		var A = B.replace(/\+/g, " ").replace(/%20/g, " ");
		return A
	},
	checkDeepLinks: function(C) {
		var E = this.config;
		var D = C.rules || [];
		delete C.rules;
		if (typeof E.trigger != "undefined" && D.length) {
			var B = this.normalSpaces(location.search.substring(1, location.search.length));
			if (!E.trigger || (B.length !== 0 && B.match(E.trigger))) {
				for (var A = 0; A < D.length; A++) {
					if (B.match(this.normalSpaces(D[A].match))) {
						E.expanded = true;
						E.showIntro = false;
						jQuery.extend(E, D[A]);
						delete E.match;
						C.chickletID = E.chickletID;
						return
					}
				}
			}
		}
	},
	flashExpand: function() {
		var A = cdc.homepage.spotlight;
		jQuery("#" + A.config.container).add("#" + A.config.id).animate({
			height: A.config.maxHeight + "px"
		},
		700,
		function() {
			A.flashSend("expand_done")
		})
	},
	flashContract: function() {
		var A = cdc.homepage.spotlight;
		jQuery("#" + A.config.container).add("#" + A.config.id).animate({
			height: A.config.minHeight + "px"
		},
		700,
		function() {
			A.flashSend("contract_done")
		});
		getFlashMovie(A.config.id).sendEvent("stop")
	},
	getFlashMovie: function(B) {
		var A = navigator.appName.indexOf("Microsoft") != -1;
		return (A) ? window[B] : document[B]
	},
	formSend: function() {
		var A = document.htmlForm.sendField.value;
		getFlashMovie(cdc.homepage.spotlight.config.id).sendVarsToFlash(A)
	},
	getVarsFromFlash: function(A) {
		document.htmlForm.receivedField.value = "From Flash: " + A;
		return A + " received"
	},
	flashSend: function(A) {
		getFlashMovie(cdc.homepage.spotlight.config.id).sendVarsToFlash(A)
	},
	flashLoadFileAutoPlay: function(D, A, B, E) {
		var C;
		if (D.indexOf("rtmp:") != -1) {
			C = {
				file: D,
				image: B,
				id: A,
				title: E
			}
		} else {
			C = {
				file: D,
				image: B,
				title: E
			}
		}
		getFlashMovie(cdc.homepage.spotlight.config.id).loadFile(C);
		getFlashMovie(cdc.homepage.spotlight.config.id).sendEvent("playpause", false)
	},
	flashLoadFile: function(D, A, B, E) {
		var C;
		if (D.indexOf("rtmp:") != -1) {
			C = {
				file: D,
				image: B,
				id: A,
				title: E
			}
		} else {
			C = {
				file: D,
				image: B,
				title: E
			}
		}
		getFlashMovie(cdc.homepage.spotlight.config.id).loadFile(C)
	}
};
function flashExpand() {
	return cdc.homepage.spotlight.flashExpand()
}
function flashContract() {
	return cdc.homepage.spotlight.flashContract()
}
function flashSend(A) {
	return cdc.homepage.spotlight.flashSend(A)
}
function formSend() {
	return cdc.homepage.spotlight.formSend()
}
function getFlashMovie(A) {
	return cdc.homepage.spotlight.getFlashMovie(A)
}
function getVarsFromFlash(A) {
	return cdc.homepage.spotlight.getVarsFromFlash(A)
}
function flashLoadFileAutoPlay(C, A, B, D) {
	return cdc.homepage.spotlight.flashLoadFileAutoPlay(C, A, B, D)
}
function flashLoadFile(C, A, B, D) {
	return cdc.homepage.spotlight.flashLoadFile(C, A, B, D)
}
if (typeof cdc == "undefined") {
	cdc = {}
}
if (typeof cdc.homepage == "undefined") {
	cdc.homepage = {}
}
cdc.homepage.newsfeed = {
	currItem: 0,
	numItems: 0,
	iPause: 0,
	intervalLength: 4500,
	viewallRightPad: "12px",
	config: {
		feedUrl: "",
		allLink: "",
		rssLink: "",
		linkLpos: "",
		rssLpos: "",
		pnews: "",
		nnews: "",
		vall: "",
		rss: ""
	},
	config: function(A) {
		jQuery.extend(this.config, A)
	},
	changeItem: function(C, B) {
		var A = this.currItem;
		jQuery("#newsticker li:eq(" + A + ")").fadeOut(B,
		function() {
			jQuery(this).hide()
		});
		if (C < 0 && A == 0) {
			A = this.numItems
		}
		A = (A + C) % this.numItems;
		jQuery("#newsticker li:eq(" + A + ")").fadeIn(B || "slow");
		this.currItem = A
	},
	fetchNews: function(A) {
		if (typeof A == "object") {
			cdc.homepage.newsfeed.config(A);
			A = A.feedUrl
		}
		jQuery(document).ready(function() {
			cdc.includer.loadJs([A || cdc.homepage.newsfeed.config.feedUrl])
		})
	},
	renderNews: function(F) {
		var L = this.config;
		if (F.title) {
			jQuery("#newsticker h3").html(F.title)
		}
		jQuery("#newsticker .newsitem-previous").html('<a href="" title="' + L.pnews + '">&nbsp;</a>').find("a").click(function() {
			cdc.homepage.newsfeed.changeItem( - 1, "fast");
			return false
		});
		jQuery("#newsticker .newsitem-next").html('<a href="" title="' + L.nnews + '">&nbsp;</a>').find("a").click(function() {
			cdc.homepage.newsfeed.changeItem(1, "fast");
			return false
		});
		var G = L.allLink || F.link || "";
		var B = L.rssLink || F.rssLink || "";
		var K = jQuery("#newsticker .newsticker-nav");
		var C = "";
		if (B == "") {
			jQuery(K).css({
				width: "auto",
				"padding-right": this.viewallRightPad
			})
		} else {
			C = ' class="newsticker-all"';
			var P = L.rssLpos || F.rssLpos ? ' name="&amp;lpos=' + (L.rssLpos || F.rssLpos) + '"': "";
			B = '<a rel="exit"' + P + ' href="' + B + '" class="newsticker-feed" title="' + L.rss + '">&nbsp;</a>'
		}
		if (G != "") {
			var M = L.linkLpos || F.linkLpos ? ' name="&amp;lpos=' + (L.linkLpos || F.linkLpos) + '"': "";
			G = '<a rel="exit"' + M + ' href="' + G + '" ' + C + ' title="' + L.vall + '">' + (L.vall || F.linkTitle) + "</a>"
		}
		jQuery(K).empty().html(G + B);
		var I = jQuery("#newsticker ol");
		jQuery(I).empty();
		for (var E = 0; E < F.items.length; E++) {
			var N = F.items[E];
			var H = N.lpos ? ' name="&amp;lpos=' + N.lpos + '"': "";
			jQuery(I).append('<li><a rel="exit"' + H + ' href="' + N.link + '">' + N.shortTitle + '<span class="date"> - ' + N.pubDate + "</span></a></li>")
		}
		this.numItems = F.items.length;
		var O = function() {
			cdc.homepage.newsfeed.iPause = 1
		};
		var A = function() {
			cdc.homepage.newsfeed.iPause = 0
		};
		jQuery("#newsticker .newsticker-controls a").focus(O).blur(A).hover(O, A);
		jQuery(I).find("a").focus(O).blur(A).hover(O, A);
		jQuery(I).find("li").hide().filter(":eq(0)").show().add("#newsticker li").length - 1;
		if (typeof vs_makeExit != "undefined") {
			var D = jQuery("#newsticker a[@rel=exit]");
			for (var E = 0; E < D.length; E++) {
				var J = vs_makeExit(D[E]);
				jQuery(D[E]).mousedown(J)
			}
		}
		setInterval(function() {
			if (cdc.homepage.newsfeed.iPause == 0) {
				cdc.homepage.newsfeed.changeItem(1)
			}
		},
		this.intervalLength)
	}
};
if (typeof cdc == "undefined") {
	cdc = {}
}
if (typeof cdc.homepage == "undefined") {
	cdc.homepage = {}
}
cdc.homepage.quicklinks = {
	listOpen: false,
	fixDirection: function() {
		var C = jQuery("#ql");
		var B = jQuery.browser.msie ? document.documentElement.clientHeight: window.innerHeight;
		var A = jQuery.browser.msie ? document.documentElement.scrollTop: window.pageYOffset;
		var E = jQuery("#quicklinks").height();
		var D = jQuery("#ql").height();
		if (jQuery("#quicklinks").offset().top - A + D + 50 <= B) {
			C.css("top", (E + 5) + "px").css("bottom", "auto");
			jQuery("#quicklinks .control").removeClass("control-up");
			if (!C.hasClass("ql-corner-bottom")) {
				C.removeClass("ql-corner-top");
				C.addClass("ql-corner-bottom")
			}
		} else {
			C.css("top", -D + "px");
			if (!jQuery("#quicklinks .control").hasClass("control-up")) {
				jQuery("#quicklinks .control").addClass("control-up")
			}
			if (!C.hasClass("ql-corner-top")) {
				C.removeClass("ql-corner-bottom");
				C.addClass("ql-corner-top")
			}
		}
	},
	openList: function() {
		if (!this.listopen) {
			this.listopen = true;
			this.fixDirection();
			jQuery("#ql").show()
		} else {
			this.listopen = false;
			jQuery("#ql").hide()
		}
	}
};
jQuery(document).ready(function() {
	jQuery("#quicklinks #ql").css({
		position: "absolute",
		display: "none"
	});
	jQuery("#quicklinks h3").after('<span class="control"></span>');
	jQuery("#quicklinks h3").wrapInner('<a href="javascript:cdc.homepage.quicklinks.openList();"></a>');
	jQuery("#quicklinks").hoverIntent(function() {
		if (cdc.homepage.canAnimate()) {
			cdc.homepage.quicklinks.fixDirection()
		}
		jQuery("#ql").show()
	},
	function() {
		jQuery("#ql").hide()
	})
});
jQuery(document).ready(function() {
	var A = cdc.homepage.canAnimate();
	jQuery("#cdc-nav-module .nav").hoverIntent(function() {
		if (A) {
			jQuery(".menuFrame", this).slideDown("fast")
		}
	},
	function() {
		if (A) {
			jQuery(".menuFrame", this).slideUp("fast")
		}
	})
});
if (typeof cdc == "undefined") {
	cdc = {}
}
if (typeof cdc.homepage == "undefined") {
	cdc.homepage = {}
}
cdc.homepage.featuredprod = {
	currItem: 0,
	numItems: 0,
	vsItems: {
		0 : true
	},
	strings: {
		prev: "Previous Featured Product",
		next: "Next Featured Product"
	},
	singleItemWidth: "462px",
	changeItem: function(C, B) {
		var A = this.currItem;
		jQuery("#featuredprod li:eq(" + A + ")").hide();
		if (C < 0 && A == 0) {
			A = this.numItems
		}
		A = (A + C) % this.numItems;
		if (!this.vsItems[A]) {
			this.vsItems[A] = true;
			vs_makeImg(jQuery("#featuredprod li:eq(" + A + ") img")[0])
		}
		jQuery("#featuredprod li:eq(" + A + ")").fadeIn(B || "fast");
		this.currItem = A
	},
	setupNav: function() {
		var B = jQuery("#featuredprod li");
		if (B.length < 2) {
			jQuery("#featuredprod ol").css("width", cdc.homepage.featuredprod.singleItemWidth);
			return
		}
		cdc.homepage.featuredprod.numItems = B.length;
		jQuery(B).removeClass("featprod-hidden").hide().filter(":eq(0)").show().add("#featuredprod li").length - 1;
		var A = cdc.homepage.featuredprod.strings;
		jQuery("#featuredprod .featprod-controls").html('<div class="featprod-previous"><a href="" title="' + A.prev + '">&nbsp</a></div><div class="featprod-next"><a href="" title="' + A.next + '">&nbsp</a></div>');
		jQuery("#featuredprod .featprod-previous a").click(function() {
			cdc.homepage.featuredprod.changeItem( - 1);
			return false
		});
		jQuery("#featuredprod .featprod-next a").click(function() {
			cdc.homepage.featuredprod.changeItem(1);
			return false
		})
	}
};
jQuery(document).ready(cdc.homepage.featuredprod.setupNav);
if (typeof(cdc) == "undefined") {
	cdc = {}
}
if (typeof(cdc.includer) == "undefined") {
	cdc.includer = {}
}
if (typeof(cdc.includer.alreadyInPage) == "undefined") {
	cdc.includer.alreadyInPage = []
}
//cdc.includer.alreadyInPage.push("/web/fw/lib/jquery-1.2.6.js");
//cdc.includer.alreadyInPage.push("/web/fw/lib/jquery.hoverIntent.js");
//cdc.includer.alreadyInPage.push("/web/fw/w/includer.js");
//cdc.includer.alreadyInPage.push("/web/fw/lib/swfobject-2.1.js");
//cdc.includer.alreadyInPage.push("/web/fw/lib/swfformfix-2.1.js");
//cdc.includer.alreadyInPage.push("/web/fw/j/search_fragment.js");
//cdc.includer.alreadyInPage.push("/web/fw/j/homepage_frag/_home.js");
//cdc.includer.alreadyInPage.push("/web/fw/j/homepage_frag/_bam.js");
//cdc.includer.alreadyInPage.push("/web/fw/j/homepage_frag/_spotlight.js");
//cdc.includer.alreadyInPage.push("/web/fw/j/homepage_frag/_newsticker.js");
//cdc.includer.alreadyInPage.push("/web/fw/j/homepage_frag/_quicklinks.js");
//cdc.includer.alreadyInPage.push("/web/fw/j/homepage_frag/_sitenav.js");
//cdc.includer.alreadyInPage.push("/web/fw/j/homepage_frag/_featured_products.js");
