var YAHOO = window.YAHOO || {};
YAHOO.namespace = function (ns) {
	if (!ns || !ns.length) {
		return null;
	}
	var _2 = ns.split(".");
	var _3 = YAHOO;
	for (var i = (_2[0] == "YAHOO") ? 1 : 0; i < _2.length; ++i) {
		_3[_2[i]] = _3[_2[i]] || {};
		_3 = _3[_2[i]];
	}
	return _3;
};
YAHOO.log = function (_5, _6, _7) {
	var l = YAHOO.widget.Logger;
	if (l && l.log) {
		return l.log(_5, _6, _7);
	} else {
		return false;
	}
};
YAHOO.extend = function (_9, _10) {
	var f = function () {};
	f.prototype = _10.prototype;
	_9.prototype = new f();
	_9.prototype.constructor = _9;
	_9.superclass = _10.prototype;
	if (_10.prototype.constructor == Object.prototype.constructor) {
		_10.prototype.constructor = _10;
	}
};
YAHOO.namespace("util");
YAHOO.namespace("widget");
YAHOO.namespace("example");
YAHOO.util.Dom = function () {
	var ua = navigator.userAgent.toLowerCase();
	var isOpera = (ua.indexOf('opera') > -1);
	var isSafari = (ua.indexOf('safari') > -1);
	var isIE = (window.ActiveXObject);
	var id_counter = 0;
	var util = YAHOO.util;
	var property_cache = {};
	var toCamel = function (property) {
		var convert = function (prop) {
			var test = /(-[a-z])/i.exec(prop);
			return prop.replace(RegExp.$1, RegExp.$1.substr(1).toUpperCase());
		};
		while (property.indexOf('-') > -1) {
			property = convert(property);
		}
		return property;
	};
	var toHyphen = function (property) {
		if (property.indexOf('-') > -1) {
			return property;
		}
		var converted = '';
		for (var i = 0, len = property.length; i < len; ++i) {
			if (property.charAt(i) == property.charAt(i).toUpperCase()) {
				converted = converted + '-' + property.charAt(i).toLowerCase();
			} else {
				converted = converted + property.charAt(i);
			}
		}
		return converted;
	};
	var cacheConvertedProperties = function (property) {
		property_cache[property] = {
			camel: toCamel(property),
			hyphen: toHyphen(property)
		};
	};
	return {
		get: function (el) {
			if (!el) {
				return null;
			}
			if (typeof el != 'string' && !(el instanceof Array)) {
				return el;
			}
			if (typeof el == 'string') {
				return document.getElementById(el);
			} else {
				var collection = [];
				for (var i = 0, len = el.length; i < len; ++i) {
					collection[collection.length] = util.Dom.get(el[i]);
				}
				return collection;
			}
			return null;
		},
		getStyle: function (el, property) {
			var f = function (el) {
				var value = null;
				var dv = document.defaultView;
				if (!property_cache[property]) {
					cacheConvertedProperties(property);
				}
				var camel = property_cache[property]['camel'];
				var hyphen = property_cache[property]['hyphen'];
				if (property == 'opacity' && el.filters) {
					value = 1;
					try {
						value = el.filters.item('DXImageTransform.Microsoft.Alpha').opacity / 100;
					} catch(e) {
						try {
							value = el.filters.item('alpha').opacity / 100;
						} catch(e) {}
					}
				} else if (el.style[camel]) {
					value = el.style[camel];
				} else if (isIE && el.currentStyle && el.currentStyle[camel]) {
					value = el.currentStyle[camel];
				} else if (dv && dv.getComputedStyle) {
					var computed = dv.getComputedStyle(el, '');
					if (computed && computed.getPropertyValue(hyphen)) {
						value = computed.getPropertyValue(hyphen);
					}
				}
				return value;
			};
			return util.Dom.batch(el, f, util.Dom, true);
		},
		setStyle: function (el, property, val) {
			if (!property_cache[property]) {
				cacheConvertedProperties(property);
			}
			var camel = property_cache[property]['camel'];
			var f = function (el) {
				switch (property) {
				case 'opacity':
					if (isIE && typeof el.style.filter == 'string') {
						el.style.filter = 'alpha(opacity=' + val * 100 + ')';
						if (!el.currentStyle || !el.currentStyle.hasLayout) {
							el.style.zoom = 1;
						}
					} else {
						el.style.opacity = val;
						el.style['-moz-opacity'] = val;
						el.style['-khtml-opacity'] = val;
					}
					break;
				default:
					el.style[camel] = val;
				}
			};
			util.Dom.batch(el, f, util.Dom, true);
		},
		getXY: function (el) {
			var f = function (el) {
				if (el.offsetParent === null || this.getStyle(el, 'display') == 'none') {
					return false;
				}
				var parentNode = null;
				var pos = [];
				var box;
				if (el.getBoundingClientRect) {
					box = el.getBoundingClientRect();
					var doc = document;
					if (!this.inDocument(el) && parent.document != document) {
						doc = parent.document;
						if (!this.isAncestor(doc.documentElement, el)) {
							return false;
						}
					}
					var scrollTop = Math.max(doc.documentElement.scrollTop, doc.body.scrollTop);
					var scrollLeft = Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft);
					return [box.left + scrollLeft, box.top + scrollTop];
				} else {
					pos = [el.offsetLeft, el.offsetTop];
					parentNode = el.offsetParent;
					if (parentNode != el) {
						while (parentNode) {
							pos[0] += parentNode.offsetLeft;
							pos[1] += parentNode.offsetTop;
							parentNode = parentNode.offsetParent;
						}
					}
					if (isSafari && this.getStyle(el, 'position') == 'absolute') {
						pos[0] -= document.body.offsetLeft;
						pos[1] -= document.body.offsetTop;
					}
				}
				if (el.parentNode) {
					parentNode = el.parentNode;
				} else {
					parentNode = null;
				}
				while (parentNode && parentNode.tagName.toUpperCase() != 'BODY' && parentNode.tagName.toUpperCase() != 'HTML') {
					pos[0] -= parentNode.scrollLeft;
					pos[1] -= parentNode.scrollTop;
					if (parentNode.parentNode) {
						parentNode = parentNode.parentNode;
					} else {
						parentNode = null;
					}
				}
				return pos;
			};
			return util.Dom.batch(el, f, util.Dom, true);
		},
		getX: function (el) {
			return util.Dom.getXY(el)[0];
		},
		getY: function (el) {
			return util.Dom.getXY(el)[1];
		},
		setXY: function (el, pos, noRetry) {
			var f = function (el) {
				var style_pos = this.getStyle(el, 'position');
				if (style_pos == 'static') {
					this.setStyle(el, 'position', 'relative');
					style_pos = 'relative';
				}
				var pageXY = this.getXY(el);
				if (pageXY === false) {
					return false;
				}
				var delta = [parseInt(this.getStyle(el, 'left'), 10), parseInt(this.getStyle(el, 'top'), 10)];
				if (isNaN(delta[0])) {
					delta[0] = (style_pos == 'relative') ? 0 : el.offsetLeft;
				}
				if (isNaN(delta[1])) {
					delta[1] = (style_pos == 'relative') ? 0 : el.offsetTop;
				}
				if (pos[0] !== null) {
					el.style.left = pos[0] - pageXY[0] + delta[0] + 'px';
				}
				if (pos[1] !== null) {
					el.style.top = pos[1] - pageXY[1] + delta[1] + 'px';
				}
				var newXY = this.getXY(el);
				if (!noRetry && (newXY[0] != pos[0] || newXY[1] != pos[1])) {
					this.setXY(el, pos, true);
				}
			};
			util.Dom.batch(el, f, util.Dom, true);
		},
		setX: function (el, x) {
			util.Dom.setXY(el, [x, null]);
		},
		setY: function (el, y) {
			util.Dom.setXY(el, [null, y]);
		},
		getRegion: function (el) {
			var f = function (el) {
				var region = new YAHOO.util.Region.getRegion(el);
				return region;
			};
			return util.Dom.batch(el, f, util.Dom, true);
		},
		getClientWidth: function () {
			return util.Dom.getViewportWidth();
		},
		getClientHeight: function () {
			return util.Dom.getViewportHeight();
		},
		getElementsByClassName: function (className, tag, root) {
			var method = function (el) {
				return util.Dom.hasClass(el, className)
			};
			return util.Dom.getElementsBy(method, tag, root);
		},
		hasClass: function (el, className) {
			var re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)');
			var f = function (el) {
				return re.test(el['className']);
			};
			return util.Dom.batch(el, f, util.Dom, true);
		},
		addClass: function (el, className) {
			var f = function (el) {
				if (this.hasClass(el, className)) {
					return;
				}
				el['className'] = [el['className'], className].join(' ');
			};
			util.Dom.batch(el, f, util.Dom, true);
		},
		removeClass: function (el, className) {
			var re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)', 'g');
			var f = function (el) {
				if (!this.hasClass(el, className)) {
					return;
				}
				var c = el['className'];
				el['className'] = c.replace(re, ' ');
				if (this.hasClass(el, className)) {
					this.removeClass(el, className);
				}
			};
			util.Dom.batch(el, f, util.Dom, true);
		},
		replaceClass: function (el, oldClassName, newClassName) {
			var re = new RegExp('(?:^|\\s+)' + oldClassName + '(?:\\s+|$)', 'g');
			var f = function (el) {
				if (!this.hasClass(el, oldClassName)) {
					this.addClass(el, newClassName);
					return;
				}
				el['className'] = el['className'].replace(re, ' ' + newClassName + ' ');
				if (this.hasClass(el, oldClassName)) {
					this.replaceClass(el, oldClassName, newClassName);
				}
			};
			util.Dom.batch(el, f, util.Dom, true);
		},
		generateId: function (el, prefix) {
			prefix = prefix || 'yui-gen';
			el = el || {};
			var f = function (el) {
				if (el) {
					el = util.Dom.get(el);
				} else {
					el = {};
				}
				if (!el.id) {
					el.id = prefix + id_counter++;
				}
				return el.id;
			};
			return util.Dom.batch(el, f, util.Dom, true);
		},
		isAncestor: function (haystack, needle) {
			haystack = util.Dom.get(haystack);
			if (!haystack || !needle) {
				return false;
			}
			var f = function (needle) {
				if (haystack.contains && !isSafari) {
					return haystack.contains(needle);
				} else if (haystack.compareDocumentPosition) {
					return !! (haystack.compareDocumentPosition(needle) & 16);
				} else {
					var parent = needle.parentNode;
					while (parent) {
						if (parent == haystack) {
							return true;
						} else if (parent.tagName.toUpperCase() == 'HTML') {
							return false;
						}
						parent = parent.parentNode;
					}
					return false;
				}
			};
			return util.Dom.batch(needle, f, util.Dom, true);
		},
		inDocument: function (el) {
			var f = function (el) {
				return this.isAncestor(document.documentElement, el);
			};
			return util.Dom.batch(el, f, util.Dom, true);
		},
		getElementsBy: function (method, tag, root) {
			tag = tag || '*';
			root = util.Dom.get(root) || document;
			var nodes = [];
			var elements = root.getElementsByTagName(tag);
			if (!elements.length && (tag == '*' && root.all)) {
				elements = root.all;
			}
			for (var i = 0, len = elements.length; i < len; ++i) {
				if (method(elements[i])) {
					nodes[nodes.length] = elements[i];
				}
			}
			return nodes;
		},
		batch: function (el, method, o, override) {
			var id = el;
			el = util.Dom.get(el);
			var scope = (override) ? o: window;
			if (!el || el.tagName || !el.length) {
				if (!el) {
					return false;
				}
				return method.call(scope, el, o);
			}
			var collection = [];
			for (var i = 0, len = el.length; i < len; ++i) {
				if (!el[i]) {
					id = id[i];
				}
				collection[collection.length] = method.call(scope, el[i], o);
			}
			return collection;
		},
		getDocumentHeight: function () {
			var scrollHeight = -1,
			windowHeight = -1,
			bodyHeight = -1;
			var marginTop = parseInt(util.Dom.getStyle(document.body, 'marginTop'), 10);
			var marginBottom = parseInt(util.Dom.getStyle(document.body, 'marginBottom'), 10);
			var mode = document.compatMode;
			if ((mode || isIE) && !isOpera) {
				switch (mode) {
				case 'CSS1Compat':
					scrollHeight = ((window.innerHeight && window.scrollMaxY) ? window.innerHeight + window.scrollMaxY: -1);
					windowHeight = [document.documentElement.clientHeight, self.innerHeight || -1].sort(function (a, b) {
						return (a - b);
					})[1];
					bodyHeight = document.body.offsetHeight + marginTop + marginBottom;
					break;
				default:
					scrollHeight = document.body.scrollHeight;
					bodyHeight = document.body.clientHeight;
				}
			} else {
				scrollHeight = document.documentElement.scrollHeight;
				windowHeight = self.innerHeight;
				bodyHeight = document.documentElement.clientHeight;
			}
			var h = [scrollHeight, windowHeight, bodyHeight].sort(function (a, b) {
				return (a - b);
			});
			return h[2];
		},
		getDocumentWidth: function () {
			var docWidth = -1,
			bodyWidth = -1,
			winWidth = -1;
			var marginRight = parseInt(util.Dom.getStyle(document.body, 'marginRight'), 10);
			var marginLeft = parseInt(util.Dom.getStyle(document.body, 'marginLeft'), 10);
			var mode = document.compatMode;
			if (mode || isIE) {
				switch (mode) {
				case 'CSS1Compat':
					docWidth = document.documentElement.clientWidth;
					bodyWidth = document.body.offsetWidth + marginLeft + marginRight;
					winWidth = self.innerWidth || -1;
					break;
				default:
					bodyWidth = document.body.clientWidth;
					winWidth = document.body.scrollWidth;
					break;
				}
			} else {
				docWidth = document.documentElement.clientWidth;
				bodyWidth = document.body.offsetWidth + marginLeft + marginRight;
				winWidth = self.innerWidth;
			}
			var w = [docWidth, bodyWidth, winWidth].sort(function (a, b) {
				return (a - b);
			});
			return w[2];
		},
		getViewportHeight: function () {
			var height = -1;
			var mode = document.compatMode;
			if ((mode || isIE) && !isOpera) {
				switch (mode) {
				case 'CSS1Compat':
					height = document.documentElement.clientHeight;
					break;
				default:
					height = document.body.clientHeight;
				}
			} else {
				height = self.innerHeight;
			}
			return height;
		},
		getViewportWidth: function () {
			var width = -1;
			var mode = document.compatMode;
			if (mode || isIE) {
				switch (mode) {
				case 'CSS1Compat':
					width = document.documentElement.clientWidth;
					break;
				default:
					width = document.body.clientWidth;
				}
			} else {
				width = self.innerWidth;
			}
			return width;
		}
	};
} ();
YAHOO.util.Region = function (t, r, b, l) {
	this.top = t;
	this[1] = t;
	this.right = r;
	this.bottom = b;
	this.left = l;
	this[0] = l;
};
YAHOO.util.Region.prototype.contains = function (region) {
	return (region.left >= this.left && region.right <= this.right && region.top >= this.top && region.bottom <= this.bottom);
};
YAHOO.util.Region.prototype.getArea = function () {
	return ((this.bottom - this.top) * (this.right - this.left));
};
YAHOO.util.Region.prototype.intersect = function (region) {
	var t = Math.max(this.top, region.top);
	var r = Math.min(this.right, region.right);
	var b = Math.min(this.bottom, region.bottom);
	var l = Math.max(this.left, region.left);
	if (b >= t && r >= l) {
		return new YAHOO.util.Region(t, r, b, l);
	} else {
		return null;
	}
};
YAHOO.util.Region.prototype.union = function (region) {
	var t = Math.min(this.top, region.top);
	var r = Math.max(this.right, region.right);
	var b = Math.max(this.bottom, region.bottom);
	var l = Math.min(this.left, region.left);
	return new YAHOO.util.Region(t, r, b, l);
};
YAHOO.util.Region.prototype.toString = function () {
	return ("Region {" + "top: " + this.top + ", right: " + this.right + ", bottom: " + this.bottom + ", left: " + this.left + "}");
};
YAHOO.util.Region.getRegion = function (el) {
	var p = YAHOO.util.Dom.getXY(el);
	var t = p[1];
	var r = p[0] + el.offsetWidth;
	var b = p[1] + el.offsetHeight;
	var l = p[0];
	return new YAHOO.util.Region(t, r, b, l);
};
YAHOO.util.Point = function (x, y) {
	if (x instanceof Array) {
		y = x[1];
		x = x[0];
	}
	this.x = this.right = this.left = this[0] = x;
	this.y = this.top = this.bottom = this[1] = y;
};
YAHOO.util.Point.prototype = new YAHOO.util.Region();
YAHOO.util.CustomEvent = function (_1, _2, _3) {
	this.type = _1;
	this.scope = _2 || window;
	this.silent = _3;
	this.subscribers = [];
	if (YAHOO.util.Event) {
		YAHOO.util.Event.regCE(this);
	}
	if (!this.silent) {}
};
YAHOO.util.CustomEvent.prototype = {
	subscribe: function (fn, _5, _6) {
		this.subscribers.push(new YAHOO.util.Subscriber(fn, _5, _6));
	},
	unsubscribe: function (fn, _7) {
		var _8 = false;
		for (var i = 0, len = this.subscribers.length; i < len; ++i) {
			var s = this.subscribers[i];
			if (s && s.contains(fn, _7)) {
				this._delete(i);
				_8 = true;
			}
		}
		return _8;
	},
	fire: function () {
		var len = this.subscribers.length;
		var _12 = [];
		for (var i = 0; i < arguments.length; ++i) {
			_12.push(arguments[i]);
		}
		if (!this.silent) {}
		for (i = 0; i < len; ++i) {
			var s = this.subscribers[i];
			if (s) {
				if (!this.silent) {}
				var _13 = (s.override) ? s.obj: this.scope;
				s.fn.call(_13, this.type, _12, s.obj);
			}
		}
	},
	unsubscribeAll: function () {
		for (var i = 0, len = this.subscribers.length; i < len; ++i) {
			this._delete(i);
		}
	},
	_delete: function (_14) {
		var s = this.subscribers[_14];
		if (s) {
			delete s.fn;
			delete s.obj;
		}
		delete this.subscribers[_14];
	},
	toString: function () {
		return "CustomEvent: " + "'" + this.type + "', " + "scope: " + this.scope;
	}
};
YAHOO.util.Subscriber = function (fn, obj, _16) {
	this.fn = fn;
	this.obj = obj || null;
	this.override = (_16);
};
YAHOO.util.Subscriber.prototype.contains = function (fn, obj) {
	return (this.fn == fn && this.obj == obj);
};
YAHOO.util.Subscriber.prototype.toString = function () {
	return "Subscriber { obj: " + (this.obj || "") + ", override: " + (this.override || "no") + " }";
};
if (!YAHOO.util.Event) {
	YAHOO.util.Event = function () {
		var _17 = false;
		var _18 = [];
		var _19 = [];
		var _20 = [];
		var _21 = [];
		var _22 = [];
		var _23 = [];
		var _24 = 0;
		var _25 = [];
		var _26 = [];
		var _27 = 0;
		return {
			POLL_RETRYS: 200,
			POLL_INTERVAL: 50,
			EL: 0,
			TYPE: 1,
			FN: 2,
			WFN: 3,
			SCOPE: 3,
			ADJ_SCOPE: 4,
			isSafari: (/Safari|Konqueror|KHTML/gi).test(navigator.userAgent),
			isIE: (!this.isSafari && !navigator.userAgent.match(/opera/gi) && navigator.userAgent.match(/msie/gi)),
			addDelayedListener: function (el, _29, fn, _30, _31) {
				_19[_19.length] = [el, _29, fn, _30, _31];
				if (_17) {
					_24 = this.POLL_RETRYS;
					this.startTimeout(0);
				}
			},
			startTimeout: function (_32) {
				var i = (_32 || _32 === 0) ? _32: this.POLL_INTERVAL;
				var _33 = this;
				var _34 = function () {
					_33._tryPreloadAttach();
				};
				this.timeout = setTimeout(_34, i);
			},
			onAvailable: function (_35, _36, _37, _38) {
				_25.push({
					id: _35,
					fn: _36,
					obj: _37,
					override: _38
				});
				_24 = this.POLL_RETRYS;
				this.startTimeout(0);
			},
			addListener: function (el, _39, fn, _40, _41) {
				if (!fn || !fn.call) {
					return false;
				}
				if (this._isValidCollection(el)) {
					var ok = true;
					for (var i = 0, len = el.length; i < len; ++i) {
						ok = (this.on(el[i], _39, fn, _40, _41) && ok);
					}
					return ok;
				} else {
					if (typeof el == "string") {
						var oEl = this.getEl(el);
						if (_17 && oEl) {
							el = oEl;
						} else {
							this.addDelayedListener(el, _39, fn, _40, _41);
							return true;
						}
					}
				}
				if (!el) {
					return false;
				}
				if ("unload" == _39 && _40 !== this) {
					_20[_20.length] = [el, _39, fn, _40, _41];
					return true;
				}
				var _44 = (_41) ? _40: el;
				var _45 = function (e) {
					return fn.call(_44, YAHOO.util.Event.getEvent(e), _40);
				};
				var li = [el, _39, fn, _45, _44];
				var _48 = _18.length;
				_18[_48] = li;
				if (this.useLegacyEvent(el, _39)) {
					var _49 = this.getLegacyIndex(el, _39);
					if (_49 == -1) {
						_49 = _22.length;
						_26[el.id + _39] = _49;
						_22[_49] = [el, _39, el["on" + _39]];
						_23[_49] = [];
						el["on" + _39] = function (e) {
							YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e), _49);
						};
					}
					_23[_49].push(_48);
				} else {
					if (el.addEventListener) {
						el.addEventListener(_39, _45, false);
					} else {
						if (el.attachEvent) {
							el.attachEvent("on" + _39, _45);
						}
					}
				}
				return true;
			},
			fireLegacyEvent: function (e, _50) {
				var ok = true;
				var le = _23[_50];
				for (var i = 0, len = le.length; i < len; ++i) {
					var _52 = le[i];
					if (_52) {
						var li = _18[_52];
						if (li && li[this.WFN]) {
							var _53 = li[this.ADJ_SCOPE];
							var ret = li[this.WFN].call(_53, e);
							ok = (ok && ret);
						} else {
							delete le[i];
						}
					}
				}
				return ok;
			},
			getLegacyIndex: function (el, _55) {
				var key = this.generateId(el) + _55;
				if (typeof _26[key] == "undefined") {
					return - 1;
				} else {
					return _26[key];
				}
			},
			useLegacyEvent: function (el, _57) {
				if (!el.addEventListener && !el.attachEvent) {
					return true;
				} else {
					if (this.isSafari) {
						if ("click" == _57 || "dblclick" == _57) {
							return true;
						}
					}
				}
				return false;
			},
			removeListener: function (el, _58, fn, _59) {
				if (!fn || !fn.call) {
					return false;
				}
				if (typeof el == "string") {
					el = this.getEl(el);
				} else {
					if (this._isValidCollection(el)) {
						var ok = true;
						for (var i = 0, len = el.length; i < len; ++i) {
							ok = (this.removeListener(el[i], _58, fn) && ok);
						}
						return ok;
					}
				}
				if ("unload" == _58) {
					for (i = 0, len = _20.length; i < len; i++) {
						var li = _20[i];
						if (li && li[0] == el && li[1] == _58 && li[2] == fn) {
							delete _20[i];
							return true;
						}
					}
					return false;
				}
				var _60 = null;
				if ("undefined" == typeof _59) {
					_59 = this._getCacheIndex(el, _58, fn);
				}
				if (_59 >= 0) {
					_60 = _18[_59];
				}
				if (!el || !_60) {
					return false;
				}
				if (el.removeEventListener) {
					el.removeEventListener(_58, _60[this.WFN], false);
				} else {
					if (el.detachEvent) {
						el.detachEvent("on" + _58, _60[this.WFN]);
					}
				}
				delete _18[_59][this.WFN];
				delete _18[_59][this.FN];
				delete _18[_59];
				return true;
			},
			getTarget: function (ev, _62) {
				var t = ev.target || ev.srcElement;
				return this.resolveTextNode(t);
			},
			resolveTextNode: function (_64) {
				if (_64 && _64.nodeName && "#TEXT" == _64.nodeName.toUpperCase()) {
					return _64.parentNode;
				} else {
					return _64;
				}
			},
			getPageX: function (ev) {
				var x = ev.pageX;
				if (!x && 0 !== x) {
					x = ev.clientX || 0;
					if (this.isIE) {
						x += this._getScrollLeft();
					}
				}
				return x;
			},
			getPageY: function (ev) {
				var y = ev.pageY;
				if (!y && 0 !== y) {
					y = ev.clientY || 0;
					if (this.isIE) {
						y += this._getScrollTop();
					}
				}
				return y;
			},
			getXY: function (ev) {
				return [this.getPageX(ev), this.getPageY(ev)];
			},
			getRelatedTarget: function (ev) {
				var t = ev.relatedTarget;
				if (!t) {
					if (ev.type == "mouseout") {
						t = ev.toElement;
					} else {
						if (ev.type == "mouseover") {
							t = ev.fromElement;
						}
					}
				}
				return this.resolveTextNode(t);
			},
			getTime: function (ev) {
				if (!ev.time) {
					var t = new Date().getTime();
					try {
						ev.time = t;
					} catch(e) {
						return t;
					}
				}
				return ev.time;
			},
			stopEvent: function (ev) {
				this.stopPropagation(ev);
				this.preventDefault(ev);
			},
			stopPropagation: function (ev) {
				if (ev.stopPropagation) {
					ev.stopPropagation();
				} else {
					ev.cancelBubble = true;
				}
			},
			preventDefault: function (ev) {
				if (ev.preventDefault) {
					ev.preventDefault();
				} else {
					ev.returnValue = false;
				}
			},
			getEvent: function (e) {
				var ev = e || window.event;
				if (!ev) {
					var c = this.getEvent.caller;
					while (c) {
						ev = c.arguments[0];
						if (ev && Event == ev.constructor) {
							break;
						}
						c = c.caller;
					}
				}
				return ev;
			},
			getCharCode: function (ev) {
				return ev.charCode || ((ev.type == "keypress") ? ev.keyCode: 0);
			},
			_getCacheIndex: function (el, _68, fn) {
				for (var i = 0, len = _18.length; i < len; ++i) {
					var li = _18[i];
					if (li && li[this.FN] == fn && li[this.EL] == el && li[this.TYPE] == _68) {
						return i;
					}
				}
				return - 1;
			},
			generateId: function (el) {
				var id = el.id;
				if (!id) {
					id = "yuievtautoid-" + _27; ++_27;
					el.id = id;
				}
				return id;
			},
			_isValidCollection: function (o) {
				return (o && o.length && typeof o != "string" && !o.tagName && !o.alert && typeof o[0] != "undefined");
			},
			elCache: {},
			getEl: function (id) {
				return document.getElementById(id);
			},
			clearCache: function () {},
			regCE: function (ce) {
				_21.push(ce);
			},
			_load: function (e) {
				_17 = true;
			},
			_tryPreloadAttach: function () {
				if (this.locked) {
					return false;
				}
				this.locked = true;
				var _72 = !_17;
				if (!_72) {
					_72 = (_24 > 0);
				}
				var _73 = [];
				for (var i = 0, len = _19.length; i < len; ++i) {
					var d = _19[i];
					if (d) {
						var el = this.getEl(d[this.EL]);
						if (el) {
							this.on(el, d[this.TYPE], d[this.FN], d[this.SCOPE], d[this.ADJ_SCOPE]);
							delete _19[i];
						} else {
							_73.push(d);
						}
					}
				}
				_19 = _73;
				var _75 = [];
				for (i = 0, len = _25.length; i < len; ++i) {
					var _76 = _25[i];
					if (_76) {
						el = this.getEl(_76.id);
						if (el) {
							var _77 = (_76.override) ? _76.obj: el;
							_76.fn.call(_77, _76.obj);
							delete _25[i];
						} else {
							_75.push(_76);
						}
					}
				}
				_24 = (_73.length === 0 && _75.length === 0) ? 0 : _24 - 1;
				if (_72) {
					this.startTimeout();
				}
				this.locked = false;
				return true;
			},
			purgeElement: function (el, _78, _79) {
				var _80 = this.getListeners(el, _79);
				if (_80) {
					for (var i = 0, len = _80.length; i < len; ++i) {
						var l = _80[i];
						this.removeListener(el, l.type, l.fn, l.index);
					}
				}
				if (_78 && el && el.childNodes) {
					for (i = 0, len = el.childNodes.length; i < len; ++i) {
						this.purgeElement(el.childNodes[i], _78, _79);
					}
				}
			},
			getListeners: function (el, _82) {
				var _83 = [];
				if (_18 && _18.length > 0) {
					for (var i = 0, len = _18.length; i < len; ++i) {
						var l = _18[i];
						if (l && l[this.EL] === el && (!_82 || _82 === l[this.TYPE])) {
							_83.push({
								type: l[this.TYPE],
								fn: l[this.FN],
								obj: l[this.SCOPE],
								adjust: l[this.ADJ_SCOPE],
								index: i
							});
						}
					}
				}
				return (_83.length) ? _83: null;
			},
			_unload: function (e, me) {
				for (var i = 0, len = _20.length; i < len; ++i) {
					var l = _20[i];
					if (l) {
						var _85 = (l[this.ADJ_SCOPE]) ? l[this.SCOPE] : window;
						l[this.FN].call(_85, this.getEvent(e), l[this.SCOPE]);
					}
				}
				if (_18 && _18.length > 0) {
					for (i = 0, len = _18.length; i < len; ++i) {
						l = _18[i];
						if (l) {
							this.removeListener(l[this.EL], l[this.TYPE], l[this.FN], i);
						}
					}
					this.clearCache();
				}
				for (i = 0, len = _21.length; i < len; ++i) {
					_21[i].unsubscribeAll();
					delete _21[i];
				}
				for (i = 0, len = _22.length; i < len; ++i) {
					delete _22[i][0];
					delete _22[i];
				}
			},
			_getScrollLeft: function () {
				return this._getScroll()[1];
			},
			_getScrollTop: function () {
				return this._getScroll()[0];
			},
			_getScroll: function () {
				var dd = document.documentElement;
				db = document.body;
				if (dd && dd.scrollTop) {
					return [dd.scrollTop, dd.scrollLeft];
				} else {
					if (db) {
						return [db.scrollTop, db.scrollLeft];
					} else {
						return [0, 0];
					}
				}
			}
		};
	} ();
	YAHOO.util.Event.on = YAHOO.util.Event.addListener;
	if (document && document.body) {
		YAHOO.util.Event._load();
	} else {
		YAHOO.util.Event.on(window, "load", YAHOO.util.Event._load, YAHOO.util.Event, true);
	}
	YAHOO.util.Event.on(window, "unload", YAHOO.util.Event._unload, YAHOO.util.Event, true);
	YAHOO.util.Event._tryPreloadAttach();
}
YAHOO.util.Anim = function (el, attributes, duration, method) {
	if (el) {
		this.init(el, attributes, duration, method);
	}
};
YAHOO.util.Anim.prototype = {
	toString: function () {
		var el = this.getEl();
		var id = el.id || el.tagName;
		return ("Anim " + id);
	},
	patterns: {
		noNegatives: /width|height|opacity|padding/i,
		offsetAttribute: /^((width|height)|(top|left))$/,
		defaultUnit: /width|height|top$|bottom$|left$|right$/i,
		offsetUnit: /\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i
	},
	doMethod: function (attr, start, end) {
		return this.method(this.currentFrame, start, end - start, this.totalFrames);
	},
	setAttribute: function (attr, val, unit) {
		if (this.patterns.noNegatives.test(attr)) {
			val = (val > 0) ? val: 0;
		}
		YAHOO.util.Dom.setStyle(this.getEl(), attr, val + unit);
	},
	getAttribute: function (attr) {
		var el = this.getEl();
		var val = YAHOO.util.Dom.getStyle(el, attr);
		if (val !== 'auto' && !this.patterns.offsetUnit.test(val)) {
			return parseFloat(val);
		}
		var a = this.patterns.offsetAttribute.exec(attr) || [];
		var pos = !!(a[3]);
		var box = !!(a[2]);
		if (box || (YAHOO.util.Dom.getStyle(el, 'position') == 'absolute' && pos)) {
			val = el['offset' + a[0].charAt(0).toUpperCase() + a[0].substr(1)];
		} else {
			val = 0;
		}
		return val;
	},
	getDefaultUnit: function (attr) {
		if (this.patterns.defaultUnit.test(attr)) {
			return 'px';
		}
		return '';
	},
	setRuntimeAttribute: function (attr) {
		var start;
		var end;
		var attributes = this.attributes;
		this.runtimeAttributes[attr] = {};
		var isset = function (prop) {
			return (typeof prop !== 'undefined');
		};
		if (!isset(attributes[attr]['to']) && !isset(attributes[attr]['by'])) {
			return false;
		}
		start = (isset(attributes[attr]['from'])) ? attributes[attr]['from'] : this.getAttribute(attr);
		if (isset(attributes[attr]['to'])) {
			end = attributes[attr]['to'];
		} else if (isset(attributes[attr]['by'])) {
			if (start.constructor == Array) {
				end = [];
				for (var i = 0, len = start.length; i < len; ++i) {
					end[i] = start[i] + attributes[attr]['by'][i];
				}
			} else {
				end = start + attributes[attr]['by'];
			}
		}
		this.runtimeAttributes[attr].start = start;
		this.runtimeAttributes[attr].end = end;
		this.runtimeAttributes[attr].unit = (isset(attributes[attr].unit)) ? attributes[attr]['unit'] : this.getDefaultUnit(attr);
	},
	init: function (el, attributes, duration, method) {
		var isAnimated = false;
		var startTime = null;
		var actualFrames = 0;
		el = YAHOO.util.Dom.get(el);
		this.attributes = attributes || {};
		this.duration = duration || 1;
		this.method = method || YAHOO.util.Easing.easeNone;
		this.useSeconds = true;
		this.currentFrame = 0;
		this.totalFrames = YAHOO.util.AnimMgr.fps;
		this.getEl = function () {
			return el;
		};
		this.isAnimated = function () {
			return isAnimated;
		};
		this.getStartTime = function () {
			return startTime;
		};
		this.runtimeAttributes = {};
		this.animate = function () {
			if (this.isAnimated()) {
				return false;
			}
			this.currentFrame = 0;
			this.totalFrames = (this.useSeconds) ? Math.ceil(YAHOO.util.AnimMgr.fps * this.duration) : this.duration;
			YAHOO.util.AnimMgr.registerElement(this);
		};
		this.stop = function () {
			YAHOO.util.AnimMgr.stop(this);
		};
		var onStart = function () {
			this.onStart.fire();
			for (var attr in this.attributes) {
				this.setRuntimeAttribute(attr);
			}
			isAnimated = true;
			actualFrames = 0;
			startTime = new Date();
		};
		var onTween = function () {
			var data = {
				duration: new Date() - this.getStartTime(),
				currentFrame: this.currentFrame
			};
			data.toString = function () {
				return ('duration: ' + data.duration + ', currentFrame: ' + data.currentFrame);
			};
			this.onTween.fire(data);
			var runtimeAttributes = this.runtimeAttributes;
			for (var attr in runtimeAttributes) {
				this.setAttribute(attr, this.doMethod(attr, runtimeAttributes[attr].start, runtimeAttributes[attr].end), runtimeAttributes[attr].unit);
			}
			actualFrames += 1;
		};
		var onComplete = function () {
			var actual_duration = (new Date() - startTime) / 1000;
			var data = {
				duration: actual_duration,
				frames: actualFrames,
				fps: actualFrames / actual_duration
			};
			data.toString = function () {
				return ('duration: ' + data.duration + ', frames: ' + data.frames + ', fps: ' + data.fps);
			};
			isAnimated = false;
			actualFrames = 0;
			this.onComplete.fire(data);
		};
		this._onStart = new YAHOO.util.CustomEvent('_start', this, true);
		this.onStart = new YAHOO.util.CustomEvent('start', this);
		this.onTween = new YAHOO.util.CustomEvent('tween', this);
		this._onTween = new YAHOO.util.CustomEvent('_tween', this, true);
		this.onComplete = new YAHOO.util.CustomEvent('complete', this);
		this._onComplete = new YAHOO.util.CustomEvent('_complete', this, true);
		this._onStart.subscribe(onStart);
		this._onTween.subscribe(onTween);
		this._onComplete.subscribe(onComplete);
	}
};
YAHOO.util.AnimMgr = new
function () {
	var thread = null;
	var queue = [];
	var tweenCount = 0;
	this.fps = 200;
	this.delay = 1;
	this.registerElement = function (tween) {
		queue[queue.length] = tween;
		tweenCount += 1;
		tween._onStart.fire();
		this.start();
	};
	this.unRegister = function (tween, index) {
		tween._onComplete.fire();
		index = index || getIndex(tween);
		if (index != -1) {
			queue.splice(index, 1);
		}
		tweenCount -= 1;
		if (tweenCount <= 0) {
			this.stop();
		}
	};
	this.start = function () {
		if (thread === null) {
			thread = setInterval(this.run, this.delay);
		}
	};
	this.stop = function (tween) {
		if (!tween) {
			clearInterval(thread);
			for (var i = 0, len = queue.length; i < len; ++i) {
				if (queue[i].isAnimated()) {
					this.unRegister(tween, i);
				}
			}
			queue = [];
			thread = null;
			tweenCount = 0;
		} else {
			this.unRegister(tween);
		}
	};
	this.run = function () {
		for (var i = 0, len = queue.length; i < len; ++i) {
			var tween = queue[i];
			if (!tween || !tween.isAnimated()) {
				continue;
			}
			if (tween.currentFrame < tween.totalFrames || tween.totalFrames === null) {
				tween.currentFrame += 1;
				if (tween.useSeconds) {
					correctFrame(tween);
				}
				tween._onTween.fire();
			} else {
				YAHOO.util.AnimMgr.stop(tween, i);
			}
		}
	};
	var getIndex = function (anim) {
		for (var i = 0, len = queue.length; i < len; ++i) {
			if (queue[i] == anim) {
				return i;
			}
		}
		return - 1;
	};
	var correctFrame = function (tween) {
		var frames = tween.totalFrames;
		var frame = tween.currentFrame;
		var expected = (tween.currentFrame * tween.duration * 1000 / tween.totalFrames);
		var elapsed = (new Date() - tween.getStartTime());
		var tweak = 0;
		if (elapsed < tween.duration * 1000) {
			tweak = Math.round((elapsed / expected - 1) * tween.currentFrame);
		} else {
			tweak = frames - (frame + 1);
		}
		if (tweak > 0 && isFinite(tweak)) {
			if (tween.currentFrame + tweak >= frames) {
				tweak = frames - (frame + 1);
			}
			tween.currentFrame += tweak;
		}
	};
};
YAHOO.util.Bezier = new
function () {
	this.getPosition = function (points, t) {
		var n = points.length;
		var tmp = [];
		for (var i = 0; i < n; ++i) {
			tmp[i] = [points[i][0], points[i][1]];
		}
		for (var j = 1; j < n; ++j) {
			for (i = 0; i < n - j; ++i) {
				tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0];
				tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1];
			}
		}
		return [tmp[0][0], tmp[0][1]];
	};
};
(function () {
	YAHOO.util.ColorAnim = function (el, attributes, duration, method) {
		YAHOO.util.ColorAnim.superclass.constructor.call(this, el, attributes, duration, method);
	};
	YAHOO.extend(YAHOO.util.ColorAnim, YAHOO.util.Anim);
	var Y = YAHOO.util;
	var superclass = Y.ColorAnim.superclass;
	var proto = Y.ColorAnim.prototype;
	proto.toString = function () {
		var el = this.getEl();
		var id = el.id || el.tagName;
		return ("ColorAnim " + id);
	};
	proto.patterns.color = /color$/i;
	proto.patterns.rgb = /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;
	proto.patterns.hex = /^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;
	proto.patterns.hex3 = /^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;
	proto.parseColor = function (s) {
		if (s.length == 3) {
			return s;
		}
		var c = this.patterns.hex.exec(s);
		if (c && c.length == 4) {
			return [parseInt(c[1], 16), parseInt(c[2], 16), parseInt(c[3], 16)];
		}
		c = this.patterns.rgb.exec(s);
		if (c && c.length == 4) {
			return [parseInt(c[1], 10), parseInt(c[2], 10), parseInt(c[3], 10)];
		}
		c = this.patterns.hex3.exec(s);
		if (c && c.length == 4) {
			return [parseInt(c[1] + c[1], 16), parseInt(c[2] + c[2], 16), parseInt(c[3] + c[3], 16)];
		}
		return null;
	};
	proto.getAttribute = function (attr) {
		var el = this.getEl();
		if (this.patterns.color.test(attr)) {
			var val = YAHOO.util.Dom.getStyle(el, attr);
			if (val == 'transparent') {
				var parent = el.parentNode;
				val = Y.Dom.getStyle(parent, attr);
				while (parent && val == 'transparent') {
					parent = parent.parentNode;
					val = Y.Dom.getStyle(parent, attr);
					if (parent.tagName.toUpperCase() == 'HTML') {
						val = 'ffffff';
					}
				}
			}
		} else {
			val = superclass.getAttribute.call(this, attr);
		}
		return val;
	};
	proto.doMethod = function (attr, start, end) {
		var val;
		if (this.patterns.color.test(attr)) {
			val = [];
			for (var i = 0, len = start.length; i < len; ++i) {
				val[i] = superclass.doMethod.call(this, attr, start[i], end[i]);
			}
			val = 'rgb(' + Math.floor(val[0]) + ',' + Math.floor(val[1]) + ',' + Math.floor(val[2]) + ')';
		} else {
			val = superclass.doMethod.call(this, attr, start, end);
		}
		return val;
	};
	proto.setRuntimeAttribute = function (attr) {
		superclass.setRuntimeAttribute.call(this, attr);
		if (this.patterns.color.test(attr)) {
			var attributes = this.attributes;
			var start = this.parseColor(this.runtimeAttributes[attr].start);
			var end = this.parseColor(this.runtimeAttributes[attr].end);
			if (typeof attributes[attr]['to'] === 'undefined' && typeof attributes[attr]['by'] !== 'undefined') {
				end = this.parseColor(attributes[attr].by);
				for (var i = 0, len = start.length; i < len; ++i) {
					end[i] = start[i] + end[i];
				}
			}
			this.runtimeAttributes[attr].start = start;
			this.runtimeAttributes[attr].end = end;
		}
	};
})();
YAHOO.util.Easing = {
	easeNone: function (t, b, c, d) {
		return c * t / d + b;
	},
	easeIn: function (t, b, c, d) {
		return c * (t /= d) * t + b;
	},
	easeOut: function (t, b, c, d) {
		return - c * (t /= d) * (t - 2) + b;
	},
	easeBoth: function (t, b, c, d) {
		if ((t /= d / 2) < 1) return c / 2 * t * t + b;
		return - c / 2 * ((--t) * (t - 2) - 1) + b;
	},
	easeInStrong: function (t, b, c, d) {
		return c * (t /= d) * t * t * t + b;
	},
	easeOutStrong: function (t, b, c, d) {
		return - c * ((t = t / d - 1) * t * t * t - 1) + b;
	},
	easeBothStrong: function (t, b, c, d) {
		if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b;
		return - c / 2 * ((t -= 2) * t * t * t - 2) + b;
	},
	elasticIn: function (t, b, c, d, a, p) {
		if (t == 0) return b;
		if ((t /= d) == 1) return b + c;
		if (!p) p = d * .3;
		if (!a || a < Math.abs(c)) {
			a = c;
			var s = p / 4;
		} else var s = p / (2 * Math.PI) * Math.asin(c / a);
		return - (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
	},
	elasticOut: function (t, b, c, d, a, p) {
		if (t == 0) return b;
		if ((t /= d) == 1) return b + c;
		if (!p) p = d * .3;
		if (!a || a < Math.abs(c)) {
			a = c;
			var s = p / 4;
		} else var s = p / (2 * Math.PI) * Math.asin(c / a);
		return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
	},
	elasticBoth: function (t, b, c, d, a, p) {
		if (t == 0) return b;
		if ((t /= d / 2) == 2) return b + c;
		if (!p) p = d * (.3 * 1.5);
		if (!a || a < Math.abs(c)) {
			a = c;
			var s = p / 4;
		} else var s = p / (2 * Math.PI) * Math.asin(c / a);
		if (t < 1) return - .5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
		return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
	},
	backIn: function (t, b, c, d, s) {
		if (typeof s == 'undefined') s = 1.70158;
		return c * (t /= d) * t * ((s + 1) * t - s) + b;
	},
	backOut: function (t, b, c, d, s) {
		if (typeof s == 'undefined') s = 1.70158;
		return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
	},
	backBoth: function (t, b, c, d, s) {
		if (typeof s == 'undefined') s = 1.70158;
		if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
		return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
	},
	bounceIn: function (t, b, c, d) {
		return c - YAHOO.util.Easing.bounceOut(d - t, 0, c, d) + b;
	},
	bounceOut: function (t, b, c, d) {
		if ((t /= d) < (1 / 2.75)) {
			return c * (7.5625 * t * t) + b;
		} else if (t < (2 / 2.75)) {
			return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
		} else if (t < (2.5 / 2.75)) {
			return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
		} else {
			return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
		}
	},
	bounceBoth: function (t, b, c, d) {
		if (t < d / 2) return YAHOO.util.Easing.bounceIn(t * 2, 0, c, d) * .5 + b;
		return YAHOO.util.Easing.bounceOut(t * 2 - d, 0, c, d) * .5 + c * .5 + b;
	}
};
(function () {
	YAHOO.util.Motion = function (el, attributes, duration, method) {
		if (el) {
			YAHOO.util.Motion.superclass.constructor.call(this, el, attributes, duration, method);
		}
	};
	YAHOO.extend(YAHOO.util.Motion, YAHOO.util.ColorAnim);
	var Y = YAHOO.util;
	var superclass = Y.Motion.superclass;
	var proto = Y.Motion.prototype;
	proto.toString = function () {
		var el = this.getEl();
		var id = el.id || el.tagName;
		return ("Motion " + id);
	};
	proto.patterns.points = /^points$/i;
	proto.setAttribute = function (attr, val, unit) {
		if (this.patterns.points.test(attr)) {
			unit = unit || 'px';
			superclass.setAttribute.call(this, 'left', val[0], unit);
			superclass.setAttribute.call(this, 'top', val[1], unit);
		} else {
			superclass.setAttribute.call(this, attr, val, unit);
		}
	};
	proto.getAttribute = function (attr) {
		if (this.patterns.points.test(attr)) {
			var val = [superclass.getAttribute.call(this, 'left'), superclass.getAttribute.call(this, 'top')];
		} else {
			val = superclass.getAttribute.call(this, attr);
		}
		return val;
	};
	proto.doMethod = function (attr, start, end) {
		var val = null;
		if (this.patterns.points.test(attr)) {
			var t = this.method(this.currentFrame, 0, 100, this.totalFrames) / 100;
			val = Y.Bezier.getPosition(this.runtimeAttributes[attr], t);
		} else {
			val = superclass.doMethod.call(this, attr, start, end);
		}
		return val;
	};
	proto.setRuntimeAttribute = function (attr) {
		if (this.patterns.points.test(attr)) {
			var el = this.getEl();
			var attributes = this.attributes;
			var start;
			var control = attributes['points']['control'] || [];
			var end;
			var i, len;
			if (control.length > 0 && !(control[0] instanceof Array)) {
				control = [control];
			} else {
				var tmp = [];
				for (i = 0, len = control.length; i < len; ++i) {
					tmp[i] = control[i];
				}
				control = tmp;
			}
			if (Y.Dom.getStyle(el, 'position') == 'static') {
				Y.Dom.setStyle(el, 'position', 'relative');
			}
			if (isset(attributes['points']['from'])) {
				Y.Dom.setXY(el, attributes['points']['from']);
			} else {
				Y.Dom.setXY(el, Y.Dom.getXY(el));
			}
			start = this.getAttribute('points');
			if (isset(attributes['points']['to'])) {
				end = translateValues.call(this, attributes['points']['to'], start);
				var pageXY = Y.Dom.getXY(this.getEl());
				for (i = 0, len = control.length; i < len; ++i) {
					control[i] = translateValues.call(this, control[i], start);
				}
			} else if (isset(attributes['points']['by'])) {
				end = [start[0] + attributes['points']['by'][0], start[1] + attributes['points']['by'][1]];
				for (i = 0, len = control.length; i < len; ++i) {
					control[i] = [start[0] + control[i][0], start[1] + control[i][1]];
				}
			}
			this.runtimeAttributes[attr] = [start];
			if (control.length > 0) {
				this.runtimeAttributes[attr] = this.runtimeAttributes[attr].concat(control);
			}
			this.runtimeAttributes[attr][this.runtimeAttributes[attr].length] = end;
		} else {
			superclass.setRuntimeAttribute.call(this, attr);
		}
	};
	var translateValues = function (val, start) {
		var pageXY = Y.Dom.getXY(this.getEl());
		val = [val[0] - pageXY[0] + start[0], val[1] - pageXY[1] + start[1]];
		return val;
	};
	var isset = function (prop) {
		return (typeof prop !== 'undefined');
	};
})();
(function () {
	YAHOO.util.Scroll = function (el, attributes, duration, method) {
		if (el) {
			YAHOO.util.Scroll.superclass.constructor.call(this, el, attributes, duration, method);
		}
	};
	YAHOO.extend(YAHOO.util.Scroll, YAHOO.util.ColorAnim);
	var Y = YAHOO.util;
	var superclass = Y.Scroll.superclass;
	var proto = Y.Scroll.prototype;
	proto.toString = function () {
		var el = this.getEl();
		var id = el.id || el.tagName;
		return ("Scroll " + id);
	};
	proto.doMethod = function (attr, start, end) {
		var val = null;
		if (attr == 'scroll') {
			val = [this.method(this.currentFrame, start[0], end[0] - start[0], this.totalFrames), this.method(this.currentFrame, start[1], end[1] - start[1], this.totalFrames)];
		} else {
			val = superclass.doMethod.call(this, attr, start, end);
		}
		return val;
	};
	proto.getAttribute = function (attr) {
		var val = null;
		var el = this.getEl();
		if (attr == 'scroll') {
			val = [el.scrollLeft, el.scrollTop];
		} else {
			val = superclass.getAttribute.call(this, attr);
		}
		return val;
	};
	proto.setAttribute = function (attr, val, unit) {
		var el = this.getEl();
		if (attr == 'scroll') {
			el.scrollLeft = val[0];
			el.scrollTop = val[1];
		} else {
			superclass.setAttribute.call(this, attr, val, unit);
		}
	};
})();
YAHOO.util.Connect = {
	_msxml_progid: ['MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'],
	_http_header: {},
	_has_http_headers: false,
	_default_post_header: true,
	_isFormSubmit: false,
	_isFileUpload: false,
	_formNode: null,
	_sFormData: null,
	_poll: [],
	_timeOut: [],
	_polling_interval: 50,
	_transaction_id: 0,
	setProgId: function (id) {
		this._msxml_progid.unshift(id);
	},
	setDefaultPostHeader: function (b) {
		this._default_post_header = b;
	},
	setPollingInterval: function (i) {
		if (typeof i == 'number' && isFinite(i)) {
			this._polling_interval = i;
		}
	},
	createXhrObject: function (transactionId) {
		var obj, http;
		try {
			http = new XMLHttpRequest();
			obj = {
				conn: http,
				tId: transactionId
			};
		}
		catch(e) {
			for (var i = 0; i < this._msxml_progid.length; ++i) {
				try {
					http = new ActiveXObject(this._msxml_progid[i]);
					obj = {
						conn: http,
						tId: transactionId
					};
					break;
				}
				catch(e) {}
			}
		}
		finally {
			return obj;
		}
	},
	getConnectionObject: function () {
		var o;
		var tId = this._transaction_id;
		try {
			o = this.createXhrObject(tId);
			if (o) {
				this._transaction_id++;
			}
		}
		catch(e) {}
		finally {
			return o;
		}
	},
	asyncRequest: function (method, uri, callback, postData) {
		var o = this.getConnectionObject();
		if (!o) {
			return null;
		}
		else {
			if (this._isFormSubmit) {
				if (this._isFileUpload) {
					this.uploadFile(o.tId, callback, uri);
					this.releaseObject(o);
					return;
				}
				if (method == 'GET') {
					uri += "?" + this._sFormData;
				}
				else if (method == 'POST') {
					postData = this._sFormData;
				}
				this._sFormData = '';
			}
			o.conn.open(method, uri, true);
			if (this._isFormSubmit || (postData && this._default_post_header)) {
				this.initHeader('Content-Type', 'application/x-www-form-urlencoded');
				if (this._isFormSubmit) {
					this._isFormSubmit = false;
				}
			}
			if (this._has_http_headers) {
				this.setHeader(o);
			}
			this.handleReadyState(o, callback);
			postData ? o.conn.send(postData) : o.conn.send(null);
			return o;
		}
	},
	handleReadyState: function (o, callback) {
		var timeOut = callback.timeout;
		var oConn = this;
		try {
			if (timeOut !== undefined) {
				this._timeOut[o.tId] = window.setTimeout(function () {
					oConn.abort(o, callback, true)
				},
				timeOut);
			}
			this._poll[o.tId] = window.setInterval(function () {
				if (o.conn && o.conn.readyState == 4) {
					window.clearInterval(oConn._poll[o.tId]);
					oConn._poll.splice(o.tId);
					if (timeOut) {
						oConn._timeOut.splice(o.tId);
					}
					oConn.handleTransactionResponse(o, callback);
				}
			},
			this._polling_interval);
		}
		catch(e) {
			window.clearInterval(oConn._poll[o.tId]);
			oConn._poll.splice(o.tId);
			if (timeOut) {
				oConn._timeOut.splice(o.tId);
			}
			oConn.handleTransactionResponse(o, callback);
		}
	},
	handleTransactionResponse: function (o, callback, isAbort) {
		if (!callback) {
			this.releaseObject(o);
			return;
		}
		var httpStatus, responseObject;
		try {
			if (o.conn.status !== undefined && o.conn.status != 0) {
				httpStatus = o.conn.status;
			}
			else {
				httpStatus = 13030;
			}
		}
		catch(e) {
			httpStatus = 13030;
		}
		if (httpStatus >= 200 && httpStatus < 300) {
			responseObject = this.createResponseObject(o, callback.argument);
			if (callback.success) {
				if (!callback.scope) {
					callback.success(responseObject);
				}
				else {
					callback.success.apply(callback.scope, [responseObject]);
				}
			}
		}
		else {
			switch (httpStatus) {
			case 12002:
			case 12029:
			case 12030:
			case 12031:
			case 12152:
			case 13030:
				responseObject = this.createExceptionObject(o.tId, callback.argument, isAbort);
				if (callback.failure) {
					if (!callback.scope) {
						callback.failure(responseObject);
					}
					else {
						callback.failure.apply(callback.scope, [responseObject]);
					}
				}
				break;
			default:
				responseObject = this.createResponseObject(o, callback.argument);
				if (callback.failure) {
					if (!callback.scope) {
						callback.failure(responseObject);
					}
					else {
						callback.failure.apply(callback.scope, [responseObject]);
					}
				}
			}
		}
		this.releaseObject(o);
	},
	createResponseObject: function (o, callbackArg) {
		var obj = {};
		var headerObj = {};
		try {
			var headerStr = o.conn.getAllResponseHeaders();
			var header = headerStr.split('\n');
			for (var i = 0; i < header.length; i++) {
				var delimitPos = header[i].indexOf(':');
				if (delimitPos != -1) {
					headerObj[header[i].substring(0, delimitPos)] = header[i].substring(delimitPos + 2);
				}
			}
		}
		catch(e) {}
		obj.tId = o.tId;
		obj.status = o.conn.status;
		obj.statusText = o.conn.statusText;
		obj.getResponseHeader = headerObj;
		obj.getAllResponseHeaders = headerStr;
		obj.responseText = o.conn.responseText;
		obj.responseXML = o.conn.responseXML;
		if (typeof callbackArg !== undefined) {
			obj.argument = callbackArg;
		}
		return obj;
	},
	createExceptionObject: function (tId, callbackArg, isAbort) {
		var COMM_CODE = 0;
		var COMM_ERROR = 'communication failure';
		var ABORT_CODE = -1;
		var ABORT_ERROR = 'transaction aborted';
		var obj = {};
		obj.tId = tId;
		if (isAbort) {
			obj.status = ABORT_CODE;
			obj.statusText = ABORT_ERROR;
		}
		else {
			obj.status = COMM_CODE;
			obj.statusText = COMM_ERROR;
		}
		if (callbackArg) {
			obj.argument = callbackArg;
		}
		return obj;
	},
	initHeader: function (label, value) {
		if (this._http_header[label] === undefined) {
			this._http_header[label] = value;
		}
		else {
			this._http_header[label] = value + "," + this._http_header[label];
		}
		this._has_http_headers = true;
	},
	setHeader: function (o) {
		for (var prop in this._http_header) {
			if (this._http_header.propertyIsEnumerable) {
				o.conn.setRequestHeader(prop, this._http_header[prop]);
			}
		}
		delete this._http_header;
		this._http_header = {};
		this._has_http_headers = false;
	},
	setForm: function (formId, isUpload, secureUri) {
		this._sFormData = '';
		if (typeof formId == 'string') {
			var oForm = (document.getElementById(formId) || document.forms[formId]);
		}
		else if (typeof formId == 'object') {
			var oForm = formId;
		}
		else {
			return;
		}
		if (isUpload) { (typeof secureUri == 'string') ? this.createFrame(secureUri) : this.createFrame();
			this._isFormSubmit = true;
			this._isFileUpload = true;
			this._formNode = oForm;
			return;
		}
		var oElement, oName, oValue, oDisabled;
		var hasSubmit = false;
		for (var i = 0; i < oForm.elements.length; i++) {
			oDisabled = oForm.elements[i].disabled;
			oElement = oForm.elements[i];
			oName = oForm.elements[i].name;
			oValue = oForm.elements[i].value;
			if (!oDisabled && oName) {
				switch (oElement.type) {
				case 'select-one':
				case 'select-multiple':
					for (var j = 0; j < oElement.options.length; j++) {
						if (oElement.options[j].selected) {
							this._sFormData += encodeURIComponent(oName) + '=' + encodeURIComponent(oElement.options[j].value || oElement.options[j].text) + '&';
						}
					}
					break;
				case 'radio':
				case 'checkbox':
					if (oElement.checked) {
						this._sFormData += encodeURIComponent(oName) + '=' + encodeURIComponent(oValue) + '&';
					}
					break;
				case 'file':
				case undefined:
				case 'reset':
				case 'button':
					break;
				case 'submit':
					if (hasSubmit == false) {
						this._sFormData += encodeURIComponent(oName) + '=' + encodeURIComponent(oValue) + '&';
						hasSubmit = true;
					}
					break;
				default:
					this._sFormData += encodeURIComponent(oName) + '=' + encodeURIComponent(oValue) + '&';
					break;
				}
			}
		}
		this._isFormSubmit = true;
		this._sFormData = this._sFormData.substr(0, this._sFormData.length - 1);
	},
	createFrame: function (secureUri) {
		if (window.ActiveXObject) {
			var io = document.createElement('<IFRAME name="ioFrame" id="ioFrame">');
			if (secureUri) {
				io.src = secureUri;
			}
		}
		else {
			var io = document.createElement('IFRAME');
			io.id = 'ioFrame';
			io.name = 'ioFrame';
		}
		io.style.position = 'absolute';
		io.style.top = '-1000px';
		io.style.left = '-1000px';
		document.body.appendChild(io);
	},
	uploadFile: function (id, callback, uri) {
		this._formNode.action = uri;
		this._formNode.enctype = 'multipart/form-data';
		this._formNode.method = 'POST';
		this._formNode.target = 'ioFrame';
		this._formNode.submit();
		this._formNode = null;
		this._isFileUpload = false;
		this._isFormSubmit = false;
		var uploadCallback = function () {
			var oResponse = {
				tId: id,
				responseText: document.getElementById("ioFrame").contentWindow.document.body.innerHTML,
				argument: callback.argument
			}
			if (callback.upload) {
				if (!callback.scope) {
					callback.upload(oResponse);
				}
				else {
					callback.upload.apply(callback.scope, [oResponse]);
				}
			}
			YAHOO.util.Event.removeListener("ioFrame", "load", uploadCallback);
			window.ioFrame.location.replace('#');
			setTimeout("document.body.removeChild(document.getElementById('ioFrame'))", 100);
		};
		YAHOO.util.Event.addListener("ioFrame", "load", uploadCallback);
	},
	abort: function (o, callback, isTimeout) {
		if (this.isCallInProgress(o)) {
			window.clearInterval(this._poll[o.tId]);
			this._poll.splice(o.tId);
			if (isTimeout) {
				this._timeOut.splice(o.tId);
			}
			o.conn.abort();
			this.handleTransactionResponse(o, callback, true);
			return true;
		}
		else {
			return false;
		}
	},
	isCallInProgress: function (o) {
		if (o.conn) {
			return o.conn.readyState != 4 && o.conn.readyState != 0;
		}
		else {
			return false;
		}
	},
	releaseObject: function (o) {
		o.conn = null;
		o = null;
	}
};
if (!YAHOO.ULT) {
	YAHOO.ULT = {};
}
if (!YAHOO.ULT.CONF) {
	YAHOO.ULT.CONF = {};
}
if (!YAHOO.ULT.BEACON) {
	YAHOO.ULT.BEACON = "http://geo.yahoo.com/t";
}
if (!YAHOO.ULT.IMG) {
	YAHOO.ULT.IMG = new Image();
}
if (typeof(YAHOO.ULT.DEBUG) === "undefined") {
	YAHOO.ULT.DEBUG = 0;
}
YAHOO.ULT.DELIMITERS = {
	'/': 'P',
	';': '1',
	'?': 'P',
	'&': '1'
};
(function () {
	var YLT = YAHOO.ULT;
	YLT.set_href = function (el, data, keyname) {
		if (data.html) {
			el.href = data[keyname];
			el.innerHTML = data.html;
		} else {
			el.href = data[keyname];
		}
	};
	YLT.strip_rd = function (u, data) {
		var idx = u.indexOf('/**');
		if (idx != -1) {
			data.clean = u.substr(idx + 3);
			data.clean = decodeURIComponent(data.clean);
		}
		return data;
	};
	YLT.strip = function (u) {
		var delims = YLT.DELIMITERS;
		var data = {
			url: u,
			clean: '',
			cookie: '',
			keys: []
		};
		var idx = 0;
		while (u.indexOf('_yl', idx) != -1) {
			var start = u.indexOf('_yl', idx);
			if (idx < start) {
				data.clean += u.slice(idx, start - 1);
			}
			idx = start + 3;
			if (delims[u.charAt(start - 1)] && u.charAt(start + 4) === '=') {
				data.ult = 1;
				var key = "_yl" + u.charAt(start + 3);
				var value = "";
				for (start = start + 5; start < u.length && !delims[u.charAt(start)]; start++) {
					value += u.charAt(start);
				}
				data.keys.push(key);
				data[key] = value;
				if (key != '_ylv') {
					data.cookie += "&" + key + "=" + value;
				}
				if (delims[u.charAt(start)] && delims[u.charAt(start)] == 'P') {
					data.clean += u.charAt(start);
				}
				idx = start + 1;
			} else {
				data.clean += u.slice(start - 1, idx);
			}
		}
		if (data.ult) {
			data.cookie = data.cookie.substr(1);
			data.clean += u.substr(idx);
			YLT.strip_rd(u, data);
		}
		return data;
	};
	YLT.clnclk = function (e, data) {
		var el = e.target || e.srcElement;
		if (data._ylv == 3) {
			var cook = "D=" + data.cookie + "; Max-Age=10; Path=/; Domain=.yahoo.com";
			document.cookie = cook;
		} else {
			var src = YLT.BEACON + "?" + data.cookie + '&t=' + Math.random();
			if (e.altKey || e.ctrlKey || e.shiftKey || data.target == "_blank") {} else {
				YLT.IMG.onerror = YLT.IMG.onload = function () {
					location = data.clean;
				};
				YAHOO.util.Event.preventDefault(e);
			}
			YLT.IMG.src = src;
		}
	};
	YLT.clicked = function (e, data) {
		var el = e.target || e.srcElement;
		if (el.nodeName !== "A") {
			if (el.parentNode.nodeName === "A") {
				el = el.parentNode;
			}
		}
		if (data._ylv == 3) {
			YLT.set_href(el, data, "clean");
			var cook = "D=" + data.cookie + "; Max-Age=10; Path=/; Domain=.yahoo.com";
			document.cookie = cook;
		} else if (e.altKey || e.ctrlKey || e.shiftKey) {} else if (data._ylv == 8 || data._ylv == 9) {} else {
			var src = YLT.BEACON + "?" + data.cookie + '&t=' + Math.random();
			if (data.target == "_blank") {
				YLT.set_href(el, data, "clean");
			} else {
				YLT.IMG.onerror = YLT.IMG.onload = function () {
					location = data.clean;
				};
				YAHOO.util.Event.preventDefault(e);
			}
			YLT.IMG.src = src;
		}
	};
	YLT.revert = function (e, data) {
		var el = e.target || e.srcElement;
		if (el.nodeName === "A") {
			YLT.set_href(el, data, "url");
		} else {
			if (el.parentNode.nodeName === "A") {
				el.parentNode.href = data.url;
			}
		}
	};
	YLT.clean = function () {
		YLT.isIE = (typeof(ActiveXObject) == 'function');
		if (navigator.userAgent.toLowerCase().indexOf("safari") != -1) {
			YLT.isSafari = true;
		}
		for (var i = 0; i < document.links.length; i++) {
			var el = document.links[i];
			if (el.className.indexOf('yltasis') != -1) {
				continue;
			}
			var data = YLT.strip(el.getAttribute('href', 2));
			var name;
			if (!data.ult) {
				continue;
			} else if (YLT.isSafari && data._ylv != 3) {
				continue;
			}
			for (name = 0; name < data.keys.length; name++) {
				if (data.keys[name] != '_ylv') {
					delete data[data.keys[name]];
				}
			}
			delete data.keys;
			delete data.ult;
			data.target = el.target;
			if (YLT.isIE && (el.innerHTML.indexOf('http') === 0 || el.className.indexOf('yltiefix') != -1)) {
				data.html = el.innerHTML;
			}
			YLT.set_href(el, data, "clean");
			if (YLT.CONF.cleanest) {
				YAHOO.util.Event.addListener(el, 'click', YLT.clnclk, data);
			} else {
				YAHOO.util.Event.addListener(el, 'click', YLT.clicked, data);
				YAHOO.util.Event.addListener(el, 'mousedown', YLT.revert, data);
			}
		}
	};
})();
YAHOO.util.Event.addListener(window, "load", function () {
	setTimeout(function () {
		YAHOO.ULT.clean();
	},
	1500);
});
(function () {
	var $U = YAHOO.util;
	var $D = $U.Dom;
	var $E = $U.Event;
	var $A = $U.Anim;
	var DTK = YAHOO.namespace('Media.Dtk');
	YAHOO.namespace('Media.Dtk.util');
	DTK.toString = function () {
		var s = [];
		for (var i in this) {
			if (typeof(this[i]) == 'function') {
				s.push(i + ': [function]');
			} else {
				s.push(i + ': ' + this[i].toString());
			}
		}
		return 'YAHOO.Media.Dtk = ' + s.join(', \n');
	};
	DTK.util.toString = function () {
		var s = [];
		for (var i in this) {
			if (typeof(this[i]) == 'function') {
				s.push(i + ': [function]');
			} else {
				s.push(i + ': ' + this[i].toString());
			}
		}
		return '{\n\t' + s.join(', \n\t') + '\n}';
	};
	DTK.util.clickFn = function (e, sfa) {
		if (this.didMouseDown) {
			try {
				this.blur();
			} catch(ex) {}
		}
		else {
			sfa.f.call(sfa.s || window, sfa.a);
		}
		this.didMouseDown = (e.type == 'mousedown');
		$E.stopEvent(e);
		return false;
	};
	DTK.util.Cookie = {
		jar: {},
		get: function (name, refresh) {
			if (this.jar[name] && this.jar[name].value && !refresh) {
				return this.jar[name].value;
			}
			var value = false,
			c = ' ' + document.cookie + ';';
			var s = c.split((' ' + name + '='));
			if (s.length > 1) {
				s = s[1].split(';')[0];
				value = unescape(s);
				this.jar[name] = {
					'value': value,
					toString: function () {
						return '[Cookie] ' + name + ': ' + value;
					}
				};
			}
			return value;
		},
		getObj: function (name, refresh) {
			if (this.jar[name] && this.jar[name].obj && !refresh) {
				return this.jar[name].obj;
			}
			var s = this.get(name, refresh);
			if (s === false) {
				return null;
			}
			var a = s.split('&'),
			aa = {},
			t,
			j;
			for (var i = a.length - 1; i > -1; i--) {
				if (a[i] === '=') continue;
				j = a[i].indexOf('=');
				if (j === -1) {
					aa[a[i]] = '';
				} else {
					aa[a[i].substr(0, j)] = a[i].substr(j + 1);
				}
			}
			this.jar[name].obj = aa;
			this.jar[name].obj.toString = function () {
				return '[Cookie] ' + name + ': ' + s;
			};
			return aa;
		},
		set: function (args) {
			args = args || {};
			if (!args.name) {
				return false;
			}
			var name = args.name;
			if (!this.jar[name]) {
				this.jar[name] = {};
			}
			var j = this.jar[name];
			var jj = {};
			var path = args.path || j.path || '/';
			var days = args.days || j.days || 0;
			var value = args.value || j.value || '';
			var domain = args.domain || j.domain || window.location.hostname || '';
			var secure = (args.secure === false || args.secure) ? !!args.secure: !!j.secure;
			if (domain.indexOf('.yahoo.com') === -1) {
				domain += '.yahoo.com';
			}
			if (domain.indexOf(':') !== -1) {
				domain = domain.split(':')[0];
			}
			while (domain.indexOf('..') !== -1) {
				domain = domain.replace(/\.\./g, '.');
			}
			if (typeof(value) === 'object') {
				var v = value;
				value = [];
				for (var i in v) {
					if (typeof(v[i]) != 'function' && typeof(v[i] != 'object') && i !== '') {
						value[value.length] = ([i, v[i]]).join('=');
					}
				}
				value = value.join('&');
				v.toString = function () {
					return '[Cookie] ' + name + ': ' + value;
				};
				jj.obj = v;
			}
			var d;
			if (days) {
				d = new Date();
				d.setTime(d.getTime() + days * 1000 * 60 * 60 * 24);
				d = ';expires=' + d.toGMTString();
			} else {
				d = '';
			}
			jj.value = value;
			jj.days = days;
			jj.path = path;
			jj.domain = domain;
			jj.secure = secure;
			jj.toString = function () {
				return '[Cookie] ' + name + ': ' + value;
			};
			jj.cstr = ([name, "=", escape(value), d, ";path=", path, ";domain=", domain, (secure ? ';secure': '')]).join('');
			document.cookie = jj.cstr;
			if ((this.get(name, true) === jj.value)) {
				this.jar[name] = jj;
				j = null;
				return true;
			} else {
				this.jar[name] = j;
				jj = null;
				return false;
			}
		},
		remove: function (name) {
			this.set({
				name: name,
				value: '',
				days: -1
			});
			delete this.jar[name];
			return true;
		}
	};
	(function () {
		var $C = $U.CustomEvent;
		var spawn = function (cls, args) {
			if (!args instanceof Array) {
				args = [args];
			}
			var f = function () {};
			f.prototype = cls.prototype;
			f.prototype.constructor = cls;
			var obj = new f();
			cls.apply(obj, args);
			return obj;
		};
		DTK.util.Manager = function (daemonClass) {
			var daemonEvents = {};
			var idCounter = [0];
			var p = daemonClass.prototype;
			if (typeof p.getId !== 'function') {
				p.getId = function () {
					if (this.id) {
						return this.id;
					}
					return (this.id = 'daemon_' + (idCounter[0]++));
				};
			}
			if (typeof p.toString !== 'function') {
				p.toString = function () {
					return 'Daemon ' + this.getId();
				};
			}
			this.onCreate = new $C('create', this);
			this.onDaemonEvent = new $C('daemonEvent');
			this.daemonClass = daemonClass;
			var unload = function (e) {
				var s = this.stack;
				for (var i = s.length - 1; i > -1; i--) {
					if (s[i]) {
						s[i].manager = null;
						if (typeof(s[i].unload) == 'function') {
							s[i].unload();
						}
						this.daemons[s[i].getId()] = null;
						s[i] = null;
					}
				}
			};
			$U.Event.addListener(window, 'unload', unload, this, true);
		};
		DTK.util.Manager.prototype = {
			daemons: {},
			stack: [],
			daemonEvents: {},
			spawnDaemon: function () {
				var obj = spawn(this.daemonClass, arguments);
				this.onCreate.fire(obj);
				return obj;
			},
			idString: 'Generic Daemon Manager',
			toString: function () {
				var s = [this.idString, '{\n'];
				for (var c in this.daemons) {
					if (this.daemons[c] instanceof this.daemonClass) {
						s.push('\t', c, ' : (', this.daemons[c].toString(), ')\n');
					}
				}
				s.push('}');
				return s.join('');
			},
			init: function () {
				var d = this.spawnDaemon.apply(this, arguments);
				if (d && d.manager != this) {
					var onDaemonEvent = this.onDaemonEvent;
					d.manager = this;
					this.daemons[d.getId()] = d;
					this.stack.push(d);
					for (var e in d) {
						if (d[e] instanceof $C) {
							if (!this.daemonEvents[e]) {
								this.daemonEvents[e] = new $C(d[e].type);
							}
							var evMgr = this.daemonEvents[e];
							var fn = function (type, data) {
								evMgr.scope = this;
								evMgr.fire.apply(evMgr, data);
								onDaemonEvent.scope = this;
								onDaemonEvent.type = type;
								onDaemonEvent.fire.apply(onDaemonEvent, data);
							};
							d[e].subscribe(fn);
						}
					}
				}
				return d;
			},
			initAll: function (finder) {
				if (typeof(finder) != 'function') {
					return [];
				}
				var things = finder();
				var ret = [];
				var len = things.length;
				var args = [null];
				var arglen = arguments.length;
				for (var i = 1; i < arglen; i++) {
					args.push(arguments[i]);
				}
				for (var i = 0; i < len; i++) {
					args[0] = things[i];
					var d = this.init.apply(this, args);
					if (d) {
						ret.push(d);
					}
				}
				return ret;
			},
			getDaemonById: function (id) {
				if (id.id) {
					return this.getDaemonById(id.id);
				}
				return this.daemons[id] || null;
			}
		};
	})();
	(function () {
		var $C = DTK.util.Cookie;
		var cookieIndex = 0;
		var cookie = {};
		if ( !! $C) {
			var cookie = $C.getObj('MY') || {};
			$E.addListener(window, 'unload', function () {
				$C.set({
					name: 'MY',
					value: cookie,
					days: 30,
					path: '/'
				});
			});
		}
		var myBarExpander = function (el, togglers) {
			var collapse = $D.get(el);
			this.cookieId = cookieIndex++;
			var tb = new myBarTabs(collapse);
			if (tb.tabs.length > 0) {
				this.tabBox = tb;
				if (cookie[this.cookieId + 't'] || cookie[this.cookieId + 't'] === 0) {
					tb.clickTab(cookie[this.cookieId + 't']);
				} else if (tb.selected == -1) {
					tb.clickTab(0);
				}
				this.tabBox.tabChange.subscribe(function (e, i) {
					cookie[this.cookieId + 't'] = i[0];
				},
				this, true);
			}
			tb = null;
			var bd = $D.getElementsByClassName('bd', 'div', collapse)[0];
			var mregion = $D.getRegion(bd);
			var expandh = (mregion.bottom - mregion.top);
			if (this.tabBox) {
				if (this.tabBox.height > expandh) {
					expandh = this.tabBox.height;
				}
			}
			expandh += 5;
			var expandAtt = {
				height: {
					to: expandh
				}
			};
			var collapseAtt = {
				height: {
					to: 0
				}
			};
			var time = expandh / 250.0;
			this.expandAnim = new $A(collapse, expandAtt, time, YAHOO.util.Easing.easeOut);
			this.collapseAnim = new $A(collapse, collapseAtt, time, YAHOO.util.Easing.easeOut);
			togglers = togglers || [];
			this.togglers = [];
			for (var i = togglers.length - 1; i > -1; i--) {
				this.togglers.push(togglers[i]);
				$E.addListener(togglers[i], 'click', DTK.util.clickFn, {
					s: this,
					f: this.toggle
				});
				$E.addListener(togglers[i], 'mousedown', DTK.util.clickFn, {
					s: this,
					f: this.toggle
				});
				togglers[i] = null;
			}
			this.isOpen = (cookie[this.cookieId] === 'c');
			this.toggle();
			bd = collapse = null;
		};
		myBarExpander.prototype = {
			unload: function () {
				if (this.tabBox) this.tabBox.unload();
				for (var i = this.togglers.length - 1; i > -1; i--) {
					this.togglers[i].onmousedown = this.togglers[i].onclick = null;
					this.togglers[i] = null;
				}
				this.expandAnim = this.collapseAnim = null;
			},
			open: function () {
				if (this.isOpen) return false;
				if (this.collapseAnim.isAnimated()) {
					this.collapseAnim.stop();
				}
				this.expandAnim.animate();
				$D.replaceClass(this.togglers, 'off', 'on');
				cookie[this.cookieId] = 'o';
				this.isOpen = true;
				return true;
			},
			close: function () {
				if (!this.isOpen) return false;
				if (this.expandAnim.isAnimated()) {
					this.expandAnim.stop();
				}
				this.collapseAnim.animate();
				$D.replaceClass(this.togglers, 'on', 'off');
				cookie[this.cookieId] = 'c';
				this.isOpen = false;
				return true;
			},
			toggle: function () {
				if (this.isOpen) {
					return this.close();
				} else {
					return this.open();
				}
			}
		};
		var myBarTabs = function (el) {
			el = $D.get(el);
			if (!el) return;
			var contents = $D.getElementsByClassName('tab-contents', 'div', el);
			this.tabs = [];
			this.boxes = [];
			this.selected = -1;
			this.height = 0;
			if (contents.length > 0) {
				this.init(contents);
			}
		};
		myBarTabs.prototype = {
			init: function (contents) {
				var cl = contents.length,
				t, b, clickThis = -1;
				for (var i = 0; i < cl; i++) {
					b = $D.getElementsByClassName('wrap', 'div', contents[i]);
					t = $D.getElementsByClassName('tabs', 'a', contents[i]);
					if (t.length > 0 && b.length > 0) {
						t = t[0];
						b = b[0];
						var index = this.tabs.length;
						if ($D.hasClass(t, 'on')) {
							clickThis = index;
						}
						this.tabs.push(t);
						this.boxes.push(b);
						$D.replaceClass(b, 'show', 'foobartab-show');
						$D.replaceClass(b, 'hide', 'foobartab-hide');
						$D.addClass(b, 'show');
						var h = $D.getRegion(b);
						h = h.bottom - h.top;
						if (h > this.height) {
							this.height = h;
						}
						$D.removeClass(b, 'show');
						$D.replaceClass(b, 'foobartab-show', 'show');
						$D.replaceClass(b, 'foobartab-hide', 'hide');
						$E.addListener(t, 'click', DTK.util.clickFn, {
							s: this,
							f: this.clickTab,
							a: index
						});
						$E.addListener(t, 'mousedown', DTK.util.clickFn, {
							s: this,
							f: this.clickTab,
							a: index
						});
					}
					b = t = contents[i] = null;
				}
				this.tabChange = new $U.CustomEvent('tabchange');
				this.clickTab(clickThis);
			},
			unload: function () {
				if (this.tabs) {
					for (var i = this.tabs.length - 1; i > -1; i--) {
						this.tabs[i].onmousedown = this.tabs[i].onclick = null;
						this.tabs[i] = null;
					}
				}
				for (var i = this.boxes.length - 1; i > -1; i--) {
					this.boxes[i] = null;
				}
			},
			clickTab: function (index) {
				if (!index && index !== 0 || index < 0 || index == this.selected) return;
				for (var i = this.boxes.length - 1; i > -1; i--) {
					if (i == index) {
						$D.replaceClass(this.tabs[i], 'off', 'on');
						$D.replaceClass(this.boxes[i], 'hide', 'show');
					} else {
						$D.replaceClass(this.tabs[i], 'on', 'off');
						$D.replaceClass(this.boxes[i], 'show', 'hide');
					}
				}
				this.selected = index;
				this.tabChange.fire(index);
			}
		};
		var unload = function () {
			for (var e in DTK.myBar.expanders) {
				for (var i in DTK.myBar.expanders[e]) {
					DTK.myBar.expanders[e][i].unload();
				}
			}
		};
		$E.addListener(window, 'unload', unload);
		DTK.myBar = function () {
			var expanders = {};
			var init = function (el, args) {
				args = args || {};
				args.modClass = args.modClass || 'mybar-mod';
				args.toggleClass = args.toggleClass || 'mybar-toggle';
				args.collapseClass = args.collapseClass || 'mybar-collapse';
				el = $D.get(el);
				if (!el) return;
				var id = $D.generateId(el);
				var content = $D.getElementsByClassName(args.modClass, "div", el);
				if (!content) return;
				var cl = content.length;
				expanders[id] = expanders[id] || {};
				content.sort(function (a, b) {
					return (a.id == b.id) ? 0 : (a.id > b.id) ? 1 : -1;
				});
				for (var x = 0; x < cl; x++) {
					var collapse = $D.getElementsByClassName(args.collapseClass, 'div', content[x])[0];
					var togglers = $D.getElementsByClassName(args.toggleClass, 'a', content[x]);
					var mb = new myBarExpander(collapse, togglers);
					if (mb) {
						expanders[id][mb.cookieId] = mb;
					}
				}
				return expanders[id];
			};
			return {
				init: init,
				expanders: expanders
			};
		} ();
	})();
})();
(function () {
	YAHOO.namespace('Media.Dtk.ArticleTools');
	YAHOO.Media.Dtk.ArticleTools.Email = new
	function () {
		var emailRegEx = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/;
		function trim(txt) {
			return txt.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
		}
		function isValidEmail(s) {
			s = trim(s);
			if (s && !emailRegEx.test(s)) {
				return false;
			}
			return true;
		}
		return {
			isValidEmail: isValidEmail,
			checkEmails: function (idTo, idFrom) {
				var isOk = true;
				var emails = trim(YAHOO.util.Dom.get(idTo).value.replace(/;/g, ","));
				if (emails === "") {
					isOk = false;
				} else {
					emails = emails.split(",");
					for (var i = 0; i < emails.length; i++) {
						if (!isValidEmail(emails[i])) {
							isOk = false;
							break;
						}
					}
				}
				if (!isOk) {
					YAHOO.util.Dom.get('dtk-err-to').innerHTML = "There is a problem with one or more email addresses entered";
				} else {
					YAHOO.util.Dom.get('dtk-err-to').innerHTML = "";
				}
				var from = trim(YAHOO.util.Dom.get(idFrom).value);
				if ((from === "") || !isValidEmail(from)) {
					YAHOO.util.Dom.get('dtk-err-from').innerHTML = "There is a problem with the email address entered";
					isOk = false;
				} else {
					YAHOO.util.Dom.get('dtk-err-from').innerHTML = "";
				}
				return isOk;
			},
			addressBook: function () {
				document.domain = "yahoo.com";
				var myPropertyName = "yfood";
				var addURL = "http://mix200.address.yahoo.com/?A=e&VPC=kiosk&yprop=" + myPropertyName;
				addRemote = window.open(addURL, "AddressBook", "width=480,height=480,resizable=yes,scrollbars=yes,toolbar=no,status=0");
				if (addRemote != null) {
					if (addRemote.opener == null) {
						addRemote.opener = self;
					}
				}
				addRemote.focus();
				return addRemote;
			}
		};
	} ();
	YAHOO.Media.Dtk.ArticleTools.IM = new
	function () {
		var imMsg = "Check out this story on Yahoo!:";
		var msgr_installed;
		var msgr_version = "";
		var msgr_platform = "";
		function init(imMsgAlt) {
			if (imMsgAlt) {
				imMsg = imMsgAlt;
			}
			var w, v;
			if (document.all) {
				v = document.all.not_Ymsgr;
			} else {
				v = document.getElementById("not_Ymsgr");
			}
			if (v) {
				w = document.getElementById("Ymsgr");
				if (w && w.offsetHeight) {
					msgr_installed = 1;
					msgr_version = "5";
					msgr_platform = "w32";
				} else {
					msgr_installed = 1;
				}
			} else {
				msgr_installed = 1;
				msgr_version = "5";
				msgr_platform = "w32";
			}
			if (navigator.mimeTypes && navigator.mimeTypes.length) {
				for (var i = 0; i < navigator.mimeTypes.length; i++) {
					if (navigator.mimeTypes[i].suffixes.indexOf("yps") > -1) {
						msgr_installed = 1;
						msgr_version = "";
						msgr_platform = "";
						break;
					}
				}
			}
		}
		init();
		return {
			init: init,
			hasMsgr: function () {
				var a = document.cookie;
				var b = a.split("; ");
				for (var c = 0; c < b.length; c++) {
					var d = b[c].indexOf("=");
					var e = b[c].substring(0, d);
					var f = b[c].substring(d + 1);
					if (e == "C") {
						alert(f);
						var g = f.split("& ");
						for (h = 0; h < g.length; h++) {
							var i = g[h].indexOf("=");
							var j = g[h].substring(0, i);
							var k = g[h].substring(i + 1);
							if (j == "mg" && k == "1") {
								return true;
							}
						}
					}
				}
				return false;
			},
			setIntroMsg: function (s) {
				if (s) {
					imMsg = s;
				}
			},
			imStory: function (hdline, lnk) {
				if (msgr_installed) {
					location.href = "ymsgr:im?msg=" + imMsg + "+" + hdline + "+" + lnk;
				} else {
					if (confirm("You do not appear to have Yahoo! Messenger installed. Would you like to install it now?")) {
						location.href = "http://messenger.yahoo.com";
					}
				}
				return false;
			}
		};
	} ();
	YAHOO.Media.Dtk.ArticleTools.Print = new
	function () {
		var sRootNodeId = "";
		var sTextClass = "dtk-art-text";
		var sTextClassTag = "div";
		var sImageClass = "dtk-art-image";
		var sImageClassTag = "div";
		var sAdClass = "dtk-art-ad";
		var sAdClassTag = "div";
		var sCommentClass = "dtk-art-comment";
		var sCommentClassTag = "div";
		var sHideClass = "dtk-art-print-hide";
		var sTextCtrlId = "dtk-print-text";
		var sImageCtrlId = "dtk-print-images";
		var sAdCtrlId = "dtk-print-ads";
		var sCommentCtrlId = "dtk-print-comments";
		var sSendPrinterCtrlId = "dtk-print-send";
		var aTextNodes;
		var aImageNodes;
		var aAdNodes;
		var aCommentNodes;
		function togglePrint(arNodes, bVisible) {
			if (bVisible) {
				YAHOO.util.Dom.removeClass(arNodes, sHideClass);
			} else {
				YAHOO.util.Dom.addClass(arNodes, sHideClass);
			}
		}
		function onToggleText(e, o) {
			if (aTextNodes) {
				togglePrint(aTextNodes, o.checked);
			}
		}
		function onToggleImages(e, o) {
			if (aImageNodes) {
				togglePrint(aImageNodes, o.checked);
			}
		}
		function onToggleAds(e, o) {
			if (aAdNodes) {
				togglePrint(aAdNodes, o.checked);
			}
		}
		function onToggleComments(e, o) {
			if (aCommentNodes) {
				togglePrint(aCommentNodes, o.checked);
			}
		}
		function onSendPrinter(e, o) {
			window.focus();
			window.print();
		}
		function addListeners() {
			var ctrl = YAHOO.util.Dom.get(sTextCtrlId);
			if (ctrl) {
				YAHOO.util.Event.addListener(ctrl, 'click', onToggleText, ctrl, true);
			}
			ctrl = YAHOO.util.Dom.get(sImageCtrlId);
			if (ctrl) {
				YAHOO.util.Event.addListener(ctrl, 'click', onToggleImages, ctrl, true);
			}
			ctrl = YAHOO.util.Dom.get(sAdCtrlId);
			if (ctrl) {
				YAHOO.util.Event.addListener(ctrl, 'click', onToggleAds, ctrl, true);
			}
			ctrl = YAHOO.util.Dom.get(sCommentCtrlId);
			if (ctrl) {
				YAHOO.util.Event.addListener(ctrl, 'click', onToggleComments, ctrl, true);
			}
			ctrl = YAHOO.util.Dom.get(sSendPrinterCtrlId);
			if (ctrl) {
				YAHOO.util.Event.addListener(ctrl, 'click', onSendPrinter, ctrl, true);
			}
		}
		return {
			init: function (oArgs) {
				aTextNodes = YAHOO.util.Dom.getElementsByClassName(sTextClass, sTextClassTag);
				aImageNodes = YAHOO.util.Dom.getElementsByClassName(sImageClass, sImageClassTag);
				aAdNodes = YAHOO.util.Dom.getElementsByClassName(sAdClass, sAdClassTag);
				aCommentNodes = YAHOO.util.Dom.getElementsByClassName(sCommentClass, sCommentClassTag);
				if (oArgs) {
					sRootNodeId = oArgs.rootNode || sRootNodeId;
					sTextClass = oArgs.textClass || sTextClass;
					sTextClassTag = oArgs.textClassTag || sTextClassTag;
					sImageClass = oArgs.imageClass || sImageClass;
					sImageClassTag = oArgs.imageClassTag || sImageClassTag;
					sAdClass = oArgs.adClass || sAdClass;
					sAdClassTag = oArgs.adClassTag || sAdClassTag;
					sCommentClass = oArgs.commentClass || sCommentClass;
					sCommentClassTag = oArgs.commentClassTag || sCommentClassTag;
					sHideClass = oArgs.hideClass || sHideClass;
					sTextCtrlId = oArgs.hideTextCtrl || sTextCtrlId;
					sImageCtrlId = oArgs.hideImageCtrl || sImageCtrlId;
					sAdCtrlId = oArgs.hideAdCtrl || sAdCtrlId;
					sCommentCtrlId = oArgs.hideCommentCtrl || sCommentCtrlId;
					sSendPrinterCtrlId = oArgs.sendPrinterCtrl || sSendPrinterCtrlId;
					aTextNodes = oArgs.aTextNodes || aTextNodes;
					aImageNodes = oArgs.aImageNodes || aImageNodes;
					aAdNodes = oArgs.aAdNodes || aAdNodes;
					aCommentNodes = oArgs.aCommentNodes || aCommentNodes;
				}
				addListeners();
			}
		};
	} ();
})();
(function () {
	var $U = YAHOO.util;
	var $D = $U.Dom;
	var $E = $U.Event;
	var $C = $U.Connect;
	var DTK = YAHOO.namespace('Media.Dtk');
	DTK.makeExpanders = function (root, blocktag, splitComment) {
		splitComment = splitComment || 'read more split';
		var click = function (e, block) {
			var p = this.parentNode;
			p.parentNode.removeChild(p);
			if (this.className == 'closed') {
				this.innerHTML = '&laquo; Hide';
				block.innerHTML = block.fullContent;
				this.className = 'opened';
			} else {
				this.innerHTML = 'Read More &raquo;';
				block.innerHTML = block.shortContent;
				this.className = 'closed';
			}
			block.appendChild(p);
			block = p = null;
			$E.stopEvent(e);
			return false;
		};
		var setup = function (el) {
			var content = el.innerHTML.split('<!--' + splitComment + '-->');
			if (content.length > 1) {
				el.fullContent = el.innerHTML;
				el.shortContent = content[0];
				var a = document.createElement('a');
				a.href = '#';
				$E.addListener(a, 'click', click, el);
				a.innerHTML = 'Read More &raquo;';
				a.className = 'closed';
				el.innerHTML = content[0];
				el.appendChild(document.createElement('p')).appendChild(a);
				return true;
			}
			return false;
		}
		var blocks = $D.getElementsBy(setup, blocktag, root);
	};
})();
(function () {
	var $U = YAHOO.util;
	var $D = $U.Dom;
	var $E = $U.Event;
	var $C = $U.Connect;
	var DTK = YAHOO.namespace('Media.Dtk');
	var foundHelpful = function (e) {
		var connector = (this.href.indexOf('?') == -1) ? '?': '&';
		var tx = $C.asyncRequest('GET', this.href + connector + 'ajax=1', makeCallback(this));
		sending(this);
		$E.stopEvent(e);
		return false;
	};
	var getAbuseLink = function (p) {
		var a = $D.getElementsBy(function (el) {
			return el.innerHTML.indexOf('Report Abuse') != -1;
		},
		'a', p);
		if (a.length) {
			a = a[0];
			a.parentNode.removeChild(a);
			return a;
		}
		return null;
	};
	var sending = function (a) {
		var p = DTK.getParent(a, 'p');
		if (p) {
			var abuse = getAbuseLink(p);
			p.innerHTML = 'Saving your choice... ';
			if (abuse) {
				p.appendChild(abuse);
			}
		}
	};
	var makeCallback = function (a) {
		var p = DTK.getParent(a, 'p');
		if (!p) {
			return {};
		}
		var yn = (a.innerHTML.indexOf('Yes') != -1);
		if (yn) {
			var txt = 'You found this review helpful. ';
		} else {
			var txt = 'You did not find this review helpful. ';
		}
		var abuse = getAbuseLink(p);
		var finish = function (txt) {
			p.innerHTML = txt;
			if (abuse && !yn) {
				p.appendChild(abuse);
			}
			a = p = abuse = null;
		};
		return {
			success: function () {
				finish(txt);
			},
			failure: function () {
				finish('Sorry, we had some problems saving your choice.  Please <a class="helpful" href="' + a.href + '">try again</a>.');
			}
		};
	};
	DTK.ajaxHelpfulLinks = function (el, cls) {
		el = $D.get(el);
		if (!el) return;
		cls = cls || 'helpful';
		var links = $D.getElementsByClassName(cls, 'a', el);
		for (var i = links.length - 1; i > -1; i--) {
			var a = links[i];
			$E.addListener(a, 'click', foundHelpful);
		}
	};
})();
(function () {
	var $U = YAHOO.util;
	var $D = $U.Dom;
	var $E = $U.Event;
	var $A = $U.Anim;
	var F = YAHOO.namespace('Media.Dtk.Forms');
	var P = F.inputPreviewer = function (el, prev) {
		el = $D.get(el);
		prev = $D.get(prev);
		if (!el || !el.name || !prev) {
			return;
		}
		this.getElement = function () {
			return el;
		};
		this.previewElements = this.getPreviewElements(prev);
		if (!this.previewElements) {
			return;
		}
		this.unload = function () {
			el = null;
			for (var i = this.previewElements.length - 1; i > -1; i--) {
				this.previewElements[i] = null;
			}
		};
		this.attachOnChange();
		prev = null;
		this.initialized = true;
	};
	P.prototype = {
		initialized: false,
		getPreviewElements: function (prevParent, tagName, className) {
			var previewElements = $D.getElementsByClassName(className || ('preview-' + this.getElement().name), tagName || 'span', prevParent || document.body);
			return previewElements || [];
		},
		getValue: function () {
			return this.getElement().value;
		},
		updateAllPreviews: function () {
			var val = this.clean(this.getValue());
			for (var i = this.previewElements.length - 1; i > -1; i--) {
				this.updatePreview(val, this.previewElements[i]);
			}
		},
		updatePreview: function (val, prev) {
			prev.innerHTML = val;
		},
		clean: function (val) {
			return val.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\n/g, '<br>');
		},
		attachOnChange: function () {
			$E.addListener(this.getElement(), 'change', this.updateAllPreviews, this, true);
		}
	};
	(function () {
		var S = F.selectPreviewer = function (el, prev) {
			S.superclass.constructor.call(this, el, prev);
		};
		YAHOO.extend(S, P);
		S.prototype.getValue = function () {
			var el = this.getElement();
			try {
				var val = el.options[el.selectedIndex].innerHTML;
			} catch(e) {
				var val = '';
			};
			return val;
		};
	})();
	(function () {
		var T = F.textareaPreviewer = function (el, prev) {
			T.superclass.constructor.call(this, el, prev);
		};
		YAHOO.extend(T, P);
		T.prototype.getPreviewElements = function (prevParent) {
			return T.superclass.getPreviewElements.call(this, prevParent, 'blockquote');
		};
	})();
	(function () {
		var TC = F.textareaCounter = function (el, prev) {
			el.maxLength = getTextareamaxLength(el);
			if (el.maxLength > 0) {
				var showMax = $D.getElementsByClassName(el.name + '-chars-max', 'span', el.form);
				for (var i = showMax.length - 1; i > -1; i--) {
					showMax[i].innerHTML = el.maxLength;
				}
				$E.addListener(el, 'keyup', this.keyUp, this, true);
				TC.superclass.constructor.call(this, el, prev);
				this.updateAllPreviews();
			}
		};
		YAHOO.extend(TC, P);
		var keyUpTo = 0;
		TC.prototype.keyUp = function (e) {
			if (keyUpTo) {
				window.clearTimeout(keyUpTo);
			}
			var me = this;
			keyUpTo = window.setTimeout(function () {
				me.updateAllPreviews()
			},
			100);
			return true;
		};
		TC.prototype.getPreviewElements = function () {
			var e = this.getElement();
			return TC.superclass.getPreviewElements.call(this, e.form, 'span', e.name + '-chars-remaining');
		};
		TC.prototype.clean = function (val) {
			return parseInt(val, 10);
		};
		TC.prototype.getValue = function () {
			var el = this.getElement();
			return el.maxLength - el.value.length;
		};
		TC.prototype.updateAllPreviews = function (e) {
			var retval = true;
			if (this.getValue() < 0) {
				var el = this.getElement();
				var count = el.value.length;
				el.value = el.value.substr(0, el.maxLength);
				el.scrollTop = el.scrollHeight;
				if (!el.didAlert) {
					el.didAlert = true;
					alert('Sorry, only ' + el.maxLength + ' characters are allowed here.\n\nYou have entered ' + count);
				}
			}
			TC.superclass.updateAllPreviews.call(this);
			return retval;
		};
		var getNumFromClass = function (el, varName, defaultValue) {
			varName += '=';
			var val = el.className.split(varName);
			if (val.length) {
				return parseInt(val[1], 10);
			}
			return defaultValue;
		};
		var getTextareamaxLength = function (ta) {
			return ta.maxLength || ta.maxlength || ta.getAttribute('maxLength') || ta.getAttribute('maxlength') || getNumFromClass(ta, 'maxLength', 0) || getNumFromClass(ta, 'maxlength', 0);
		};
	})();
	(function () {
		var Q = F.quickratePreviewer = function (el, prev, form) {
			var qr = YAHOO.Media.Dtk.QuickRateMgr;
			if (qr) {
				qr = qr.quickRates[form.id];
				if (qr) {
					qr = qr[el.name];
				}
			}
			if (!qr) return;
			this.quickRate = qr;
			form = null;
			qr = null;
			Q.superclass.constructor.call(this, el, prev);
		};
		YAHOO.extend(Q, P);
		Q.prototype.getPreviewElements = function (prevParent) {
			return Q.superclass.getPreviewElements.call(this, prevParent, 'img');
		};
		Q.prototype.getValue = function () {
			return this.quickRate.savedImage.src;
		};
		Q.prototype.updatePreview = function (val, prev) {
			prev.src = val;
		};
		Q.prototype.clean = function (val) {
			return val;
		};
		Q.prototype.attachOnChange = function () {
			this.quickRate.onchange.subscribe(this.updateAllPreviews, this, true);
		};
	})();
	(function () {
		var PF = function (form, editSection, previewSection, args) {
			form = $D.get(form);
			if (!form) return;
			editSection = $D.get(editSection || form.id + '-edit');
			previewSection = $D.get(previewSection || form.id + '-preview');
			if (!editSection || !previewSection) return;
			this.previewSection = previewSection;
			this.editSection = editSection;
			this.form = form;
			editSection = previewSection = form = null;
			if (typeof(args) == 'object') {
				for (var i in args) {
					this[i] = args[i];
				}
			}
			var unload = function (e, o) {
				for (var i = this.previewers.length - 1; i > -1; i--) {
					this.previewers[i].unload();
				}
				for (var i = this.previewButtons.length - 1; i > -1; i--) {
					this.previewButtons[i] = this.previewButtons[i].onclick = null;
				}
				this.previewSection = this.editSection = this.form = null;
			};
			$E.addListener(window, 'unload', unload, this, true);
			this.init();
		};
		var makePreviewButtons = function (me) {
			me.previewButtons = [];
			var b = document.createElement('input');
			b.value = 'Preview';
			b.type = 'button';
			b.className = 'preview-button';
			var s = $D.getElementsByClassName('preview-button', 'span', me.form);
			if (s && s.length) {
				for (var i = s.length - 1; i > -1; i--) {
					var pb = b.cloneNode(true);
					s[i].parentNode.insertBefore(pb, s[i]);
					s[i].parentNode.removeChild(s[i]);
					me.previewButtons.push(pb);
					$E.addListener(pb, 'click', me.togglePreview, me, true);
					s[i] = null;
				}
			} else {
				me.form.appendChild(b);
				me.previewButtons.push(b);
			}
			b = pb = null;
		};
		var hookUpPreviewers = function (me) {
			var prev = me.previewSection,
			form = me.form,
			previewers = me.previewers;
			var els = $D.getElementsBy(function (el) {
				return el.tagName == 'TEXTAREA' || el.tagName == 'SELECT' || (el.tagName == 'INPUT' && (el.type == 'hidden' || el.type == 'text' || el.type == ''));
			},
			'', form);
			var p = null;
			for (var i = els.length - 1; i > -1; i--) {
				var input = els[i];
				if (input.tagName == 'INPUT') {
					var type = (input.type || '').toLowerCase();
					if (type == '' || type == 'text') {
						p = new F.inputPreviewer(input, form);
					} else if (type == 'hidden' && input.name && form.id) {
						p = new F.quickratePreviewer(input, form, form);
					}
				}
				else if (input.tagName == 'SELECT') {
					p = new F.selectPreviewer(input, form);
				} else if (input.tagName == 'TEXTAREA') {
					p = new F.textareaPreviewer(input, prev);
					new F.textareaCounter(input, form);
				}
				if (p.initialized) previewers.push(p);
				p = null;
				input = null;
			}
			form = me = prev = null;
		};
		var fillInDates = function (div) {
			var now = new Date();
			var makeTime = function () {
				var time = now.getHours();
				if (time == 0) {
					time = 12;
				} else if (time > 12) {
					time -= 12;
				}
				time = time + ':' + now.getMinutes() + (now.getHours() >= 12 ? ' PM': ' AM');
				return time;
			};
			var makeDate = function () {
				return (now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear();
			};
			var d = $D.getElementsByClassName('date', 'span', div);
			var date = makeDate();
			for (var i = d.length - 1; i > -1; i--) {
				d[i].innerHTML = date;
			}
			d = $D.getElementsByClassName('time', 'span', div);
			date = makeTime();
			for (var i = d.length - 1; i > -1; i--) {
				d[i].innerHTML = date;
			}
		};
		PF.prototype = {
			init: function () {
				hookUpPreviewers(this);
				makePreviewButtons(this);
				fillInDates(this.previewSection);
				this.previewSection.style.display = "none";
				this.editSection.style.display = "block";
				this.onPreview = new $U.CustomEvent('preview', this);
				this.onEdit = new $U.CustomEvent('edit', this);
				var mode = 'edit';
				this.toggleMode = function () {
					mode = (mode == 'preview') ? 'edit': 'preview';
				};
				this.getMode = function () {
					return mode;
				};
			},
			previewers: [],
			showPreview: function () {
				this.onPreview.fire();
				if (this.getMode() != 'preview') this.toggleMode();
				this.updateAllPreviews();
				this.editSection.style.display = "none";
				this.previewSection.style.display = "block";
				this.setPreviewButtonText('Edit');
				if ($D.getRegion(this.form).top < document.documentElement.scrollTop) {
					this.form.scrollIntoView(true);
				}
			},
			showEdit: function () {
				this.onEdit.fire();
				if (this.getMode() != 'edit') this.toggleMode();
				this.editSection.style.display = "block";
				this.previewSection.style.display = "none";
				this.setPreviewButtonText('Preview');
				if ($D.getRegion(this.form).top < document.documentElement.scrollTop) {
					this.form.scrollIntoView(true);
				}
			},
			togglePreview: function (e) {
				if (this.getMode() == 'preview') {
					this.showEdit();
				} else {
					this.showPreview();
				}
				if (e) $E.stopEvent(e);
				return false;
			},
			updateAllPreviews: function () {
				for (var i = this.previewers.length - 1; i > -1; i--) {
					this.previewers[i].updateAllPreviews();
				}
			},
			setPreviewButtonText: function (text) {
				for (var i = this.previewButtons.length - 1; i > -1; i--) {
					this.previewButtons[i].value = text;
				}
			}
		};
		F.previewForm = function (form, editSection, previewSection, args) {
			return new PF(form, editSection, previewSection, args);
		};
	})();
})();
(function () {
	var $U = YAHOO.util;
	var $D = $U.Dom;
	var $E = $U.Event;
	var $S = $U.Scroll;
	var DTK = YAHOO.namespace('Media.Dtk');
	var Carousel;
	(function () {
		var addPageIndicators = function (C) {
			var n = document.createElement('div');
			n.className = 'scrollnav';
			var p = C.pages.length;
			for (var x = 0; x < p; x++) {
				var a = document.createElement('a');
				a.href = '#pg:' + (x + 1);
				a.index = x;
				a.carousel = C;
				a.onmousedown = a.onclick = C.scrollTo_click;
				if (x == C.current) {
					a.className = 'current';
				}
				n.appendChild(a);
			}
			var l = n.getElementsByTagName('a');
			C.navLinks = [];
			p = l.length;
			for (x = 0; x < p; x++) {
				C.navLinks.push(l[x]);
			}
			l = null;
			var s = C.scrollBody;
			s.parentNode.insertBefore(n, s);
			return;
		};
		var addNavButtons = function (C) {
			var p = document.createElement('a'),
			n = p.cloneNode(true);
			var i = C.getElement();
			if (i) {
				i = i.id;
			}
			n.href = p.href = "#" + i;
			p.className = "prev";
			n.className = "next";
			var s = C.scrollBody;
			s.parentNode.insertBefore(p, s);
			s.parentNode.insertBefore(n, s);
			p.onmousedown = p.onclick = C.scrollPrev_click;
			n.onmousedown = n.onclick = C.scrollNext_click;
			C.prev = p;
			C.next = n;
			n.carousel = p.carousel = C;
			s = null;
		};
		var updateNavState = function (C) {
			var l = C.navLinks.length;
			for (var x = 0; x < l; x++) {
				if (x == C.current) {
					C.navLinks[x].className = 'current';
				} else {
					C.navLinks[x].className = '';
				}
			}
			if (C.current == 0 && !C.roundRobin) {
				$D.addClass(C.prev, 'off');
				$D.setStyle(C.prev, 'opacity', 0.6);
				$D.removeClass(C.next, 'off');
				$D.setStyle(C.next, 'opacity', 1);
				$D.setStyle(C.next, 'cursor', '');
				$D.setStyle(C.prev, 'cursor', 'default');
			} else if (C.current == (l - 1) && !C.roundRobin) {
				$D.removeClass(C.prev, 'off');
				$D.setStyle(C.prev, 'opacity', 1);
				$D.addClass(C.next, 'off');
				$D.setStyle(C.next, 'opacity', 0.6);
				$D.setStyle(C.prev, 'cursor', '');
				$D.setStyle(C.next, 'cursor', 'default');
			} else {
				$D.removeClass(C.prev, 'off');
				$D.setStyle(C.prev, 'opacity', 1);
				$D.removeClass(C.next, 'off');
				$D.setStyle(C.next, 'opacity', 1);
				$D.setStyle(C.next, 'cursor', '');
				$D.setStyle(C.prev, 'cursor', '');
			}
		};
		var clickHandler = function (whichFn, fnFailure, fnArgs) {
			return function (e) {
				e = e || window.event;
				fnFailure = fnFailure ||
				function () {
					return false;
				};
				fnArgs = fnArgs ||
				function () {};
				var a = $E.getTarget(e);
				if (!a || !a.carousel || fnFailure(a)) {
					return true;
				}
				if (!a.didMouseDown) {
					a.carousel.autoPlay = false;
					a.carousel[whichFn](fnArgs(a));
				} else {
					a.blur();
				}
				a.didMouseDown = (e.type == 'mousedown');
				a = null;
				$E.stopEvent(e);
				return false;
			};
		};
		Carousel = function (el, args) {
			var me = this;
			var currentScroll = 0;
			this.getCurrentScroll = function () {
				return currentScroll;
			};
			var ontween = function (e, data) {
				currentScroll = me.anim.doMethod('scroll', me.animAttrs.scroll.from, me.animAttrs.scroll.to)[0];
			};
			var oncomplete = function (e, data) {
				if (data[0].duration >= me.animDur) {
					data = data[0];
					data.carousel = me;
					data._toString = data.toString;
					data.toString = function () {
						return this._toString() + ', current page:' + this.carousel.current;
					};
					me.onPageChange.fire(data);
				}
			};
			var onclick = function (e) {
				me.onClick.fire(e);
			};
			var _element = null;
			this.getElement = function () {
				return _element;
			};
			this.init = function (el, args) {
				el = $D.get(el);
				if (el) {
					_element = el;
				}
				s = $D.getElementsByClassName('scrollbody', 'div', el)[0];
				if (typeof(args) == 'object') {
					for (var i in args) {
						this[i] = args[i];
					}
				}
				var me = this;
				var list = this.pages = $D.getElementsBy(function (el) {
					return me.pageFinder(el);
				},
				this.pageTagName, el);
				var len = list.length;
				if (!el || !s || !len) {
					return false;
				}
				this.onScrollStart = new $U.CustomEvent('scrollstart', this);
				this.onPageChange = new $U.CustomEvent('scrollcomplete', this);
				this.onClick = new $U.CustomEvent('click', this);
				this.onAutoPlayStart = new $U.CustomEvent('autoplaystart', this);
				this.onAutoPlayStop = new $U.CustomEvent('autoplaystop', this);
				var r = $D.getRegion(list[0]);
				this.scrollDistance = r.right - r.left;
				this.scrollBody = s;
				$E.addListener(s, 'click', onclick);
				var h = $D.getRegion(s);
				h = (h.bottom - h.top) + 'px';
				s.parentNode.style.height = h;
				s.style.height = h;
				s.style.position = 'absolute';
				var p = $D.getElementsByClassName('scrollpages', 'div', s)[0];
				p.style.width = (len * this.scrollDistance * 1.0) + 'px';
				p.style.position = 'absolute';
				var sl = Math.round(s.scrollLeft / this.scrollDistance);
				if (sl < 0) sl = 0;
				else if (sl >= this.pages.length) sl = this.pages.length - 1;
				this.current = sl;
				this.scrollBody.scrollLeft = currentScroll = sl * this.scrollDistance;
				this.anim = new $S(this.scrollBody, this.animAttrs, this.animDur, this.easeMethod);
				this.anim.onTween.subscribe(ontween);
				this.anim.onComplete.subscribe(oncomplete);
				if (len > 1) {
					addNavButtons(this);
					addPageIndicators(this);
					updateNavState(this);
				} else this.navLinks = [];
				list = s = null;
				return true;
			};
			var autoPlayTimeOut = 1;
			var autoPlayFn = function () {
				me.autoPlay = (me.autoPlayDirection > 0) ? me.scrollNext() : me.scrollPrev();
			};
			var autoPlaySubscribed = false;
			var autoPlayer = function () {
				clearTimeout(autoPlayTimeOut);
				if (me.autoPlay && !me.roundRobin && (me.current == me.pages.length - 1 && me.autoPlayDirection > 0 || me.autoPlayDirection <= 0 && me.current == 0)) {
					me.autoPlay = false;
				}
				if (!me.autoPlay) {
					me.onPageChange.unsubscribe(autoPlayer);
					autoPlaySubscribed = false;
					me.onAutoPlayStop.fire(me.current);
				} else {
					if (!autoPlaySubscribed) {
						autoPlaySubscribed = true;
						me.onPageChange.subscribe(autoPlayer);
						autoPlayFn();
					} else {
						autoPlayTimeOut = window.setTimeout(autoPlayFn, me.autoPlayDur * 1000);
					}
				}
			};
			this.autoPlayStart = function () {
				if (!this.autoPlay) {
					this.onAutoPlayStart.fire(this.current);
				}
				this.autoPlay = true;
				autoPlayer();
			};
			this.autoPlayStop = function () {
				this.autoPlay = false;
				autoPlayer();
			};
			this.getData = function (url, postExecute) {
				var id = this.getId();
				var me = this;
				var s = function () {
					me.getDataSuccess.apply(me, arguments);
				};
				var f = function () {
					me.getDataFailure.apply(me, arguments);
				};
				var callback = {
					success: s,
					failure: f,
					argument: {
						postExecute: postExecute
					}
				};
				var oConObj = $U.Connect.asyncRequest('GET', url, callback, null);
			};
			this.getDataSuccess = function (o) {
				if (o.responseText) {
					var sText = o.responseText;
					sText = sText.replace(/<\!--.+-->/gim, '');
					var oArr = eval('(' + sText + ')');
					if (oArr) {
						var numPages = this.pages.length;
						for (var i = oArr.length - 1; i > -1; i--) {
							var pg = oArr[i].pgIdx;
							var html = oArr[i].pgHtml;
							if (pg < numPages) {
								this.pages[pg].innerHTML = html;
							}
						}
					}
					if (o.argument.postExecute) {
						o.argument.postExecute();
					}
				}
			};
			this.getDataFailure = function (o) {
				console.log('in getDataFailure', o, this.getId());
			};
			this.unload = function () {
				if (!this.navLinks) {
					this.navLinks = [];
				}
				this.navLinks.push(_element, this.prev, this.next, this.scrollBody, this.anim);
				for (var j = this.navLinks.length - 1; j > -1; j--) {
					var a = this.navLinks[j];
					if (a) {
						a.onclick = null;
						a.onmousedown = null;
						a.onmouseup = null;
						a.carousel = null;
					}
					a = null;
					this.navLinks[j] = null;
				}
				for (var j = this.pages.length - 1; j > -1; j--) {
					this.pages[j] = null;
				}
			};
			if (el) this.init(el, args);
		};
		Carousel.prototype = {
			pageFinder: function (el) {
				return $D.hasClass(el, this.pageClassName);
			},
			pageTagName: 'div',
			pageClassName: 'scrollpage',
			easeMethod: $U.Easing.easeOut,
			animAttrs: {
				scroll: {
					from: [0, 0],
					to: [0, 0]
				}
			},
			roundRobin: false,
			animDur: 1.5,
			autoPlayDur: 5,
			onScrollStart: null,
			onPageChange: null,
			onClick: null,
			autoPlayDirection: 1,
			onAutoPlayStart: null,
			onAutoPlayStop: null,
			scrollTo: function (index) {
				if (this.roundRobin) {
					if (index < 0) {
						index = this.pages.length - 1;
					} else if (index >= this.pages.length) {
						index = 0;
					}
				}
				if ((!index && index !== 0) || index >= this.pages.length || index < 0 || index == this.current) {
					return false;
				}
				var me = this;
				if (this.anim.isAnimated()) {
					this.anim.stop();
				}
				this.onScrollStart.fire({
					to: index,
					from: this.current,
					toString: function () {
						return 'from:' + this.from + ', to:' + this.to;
					}
				});
				var end = index * me.scrollDistance;
				me.animAttrs.scroll.from = [me.getCurrentScroll(), 0];
				me.animAttrs.scroll.to = [end, 0];
				me.current = index;
				updateNavState(me);
				me.anim.attributes = me.animAttrs;
				me.anim.duration = me.animDur;
				setTimeout(function () {
					me.anim.animate();
				},
				0);
				return true;
			},
			scrollNext: function () {
				var ret = this.scrollTo(this.current + 1);
				return ret;
			},
			scrollNext_click: clickHandler('scrollNext'),
			scrollPrev: function () {
				var ret = this.scrollTo(this.current - 1);
				return ret;
			},
			scrollPrev_click: clickHandler('scrollPrev'),
			scrollTo_click: clickHandler('scrollTo', function (el) {
				return (!el.index && el.index !== 0);
			},
			function (el) {
				return el.index;
			}),
			toString: function () {
				var el = this.getElement();
				if (el) {
					return 'Carousel #' + el.id + ' .' + el.className;
				} else {
					return 'Carousel [Not Initiated]';
				}
				el = null;
			},
			getId: function () {
				return this.getElement().id;
			}
		}
	})();
	(function () {
		var CarouselMgr = function () {
			CarouselMgr.superclass.constructor.call(this, Carousel);
		};
		YAHOO.extend(CarouselMgr, DTK.util.Manager);
		CarouselMgr.prototype.initAll = function (cls, args) {
			return CarouselMgr.superclass.initAll.call(this, function () {
				return $D.getElementsByClassName(cls || 'dtk-carousel', 'div', document);
			},
			args);
		};
		CarouselMgr.prototype.getCarousel = CarouselMgr.prototype.getDaemonById;
		CarouselMgr.prototype.idString = 'Carousel Manager';
		DTK.CarouselMgr = new CarouselMgr();
	})();
})();
if (document.uniqueID && !window.XMLHttpRequest && document.execCommand) {
	YAHOO.util.Event.addListener(window, 'load', function () {
		try {
			document.execCommand("BackgroundImageCache", false, true);
		} catch(e) {}
	});
} (function () {
	var $U = YAHOO.util;
	var $D = $U.Dom;
	var $E = $U.Event;
	var DTK = YAHOO.namespace('Media.Dtk');
	YAHOO.namespace('Media.Dtk.util');
	var $C = DTK.util.Cookie;
	var $F = YAHOO.namespace('Food');
	$F.sprites = {
		loaded: {},
		getBg: function (el) {
			var s = $D.getStyle(el, 'backgroundImage');
			if (s && s != 'none') {
				s = s.replace(/^url\(["']?/, '').replace(/["']?\)$/, '');
				return s;
			}
		},
		preload: function (el) {
			el = $D.get(el);
			if (!el) {
				return false;
			}
			var bg = $F.sprites.getBg(el);
			if (bg && !$F.sprites.loaded[bg]) {
				var i = document.createElement('img');
				i.onload = function () {
					i.onload = null;
					i = null;
				};
				i.src = bg;
				$F.sprites.loaded[bg] = true;
			}
		},
		preloadBy: function (f, tag, root) {
			var els = $D.getElementsBy(f, tag, root);
			for (var i = els.length - 1; i > -1; i--) {
				$F.sprites.preload(els[i]);
			}
		},
		preloadByClassName: function (cls, tag, root) {
			$F.sprites.preloadBy(function (el) {
				return $D.hasClass(el, cls);
			},
			tag, root);
		},
		preloadByTagName: function (tag, root) {
			$F.sprites.preloadBy(function () {
				return true;
			},
			tag, root);
		}
	};
	(function () {
		var clearData = function (e) {
			$E.stopEvent(e);
			var url = $E.getTarget(e).href;
			url += (url.indexOf('?') == -1 ? '?': '&') + 'ajax=1';
			var dataid = "";
			switch (this.id) {
			case "mb-articles-clr":
				dataid = "mb-articles-data";
				break;
			case "mb-recipes-clr":
				dataid = "mb-recipes-data";
				break;
			case "mb-searches-clr":
				dataid = "mb-searches-data";
				break;
			}
			var update = function (m) {
				if (dataid != "") {
					var c, t = $D.get(dataid);
					if (!t) {
						return;
					}
					var tbs = t.getElementsByTagName('tbody');
					for (var i = tbs.length - 1; i > -1; i--) {
						tbs[i].parentNode.removeChild(tbs[i]);
						tbs[i] = null;
					} (c = (t.appendChild(document.createElement('tbody')).appendChild(document.createElement('tr')).appendChild(document.createElement('td')))).appendChild(document.createElement('em')).innerHTML = m;
					c.colspan = 2;
					t = c = null;
				}
			};
			var callback = {
				success: function (o) {
					update('No recently viewed items');
				},
				failure: function (o) {
					update('Error clearing recent activity.');
				}
			};
			update('Deleting...');
			var oConObj = $U.Connect.asyncRequest("GET", url, callback, null);
			return false;
		};
		var Recents = function (id) {
			this.myBarId = id || 'yf-mybar';
		};
		Recents.prototype.addClearHandlers = function (cls) {
			if (cls) {
				var clrLinks = $D.getElementsByClassName(cls, "a", this.myBarId);
				for (var i = clrLinks.length - 1; i > -1; i--) {
					$E.addListener(clrLinks[i], "click", clearData);
				}
			}
		};
		$F.Recents = new Recents('yf-mybar');
	})();
	(function () {
		var $U = YAHOO.util;
		var $D = $U.Dom;
		var $E = $U.Event;
		var DTK = YAHOO.namespace('Media.Dtk');
		var zIndex = 200;
		var showBox = function (div, boxCls, toggleCls) {
			this.init(div, boxCls, toggleCls);
		};
		showBox.prototype = {
			init: function (div, boxCls, toggleCls) {
				if (!div) {
					return;
				}
				var box = $D.getElementsByClassName(boxCls, "div", div)[0];
				this.box = box;
				var closers = $D.getElementsByClassName('close', 'span', box);
				this.closers = [];
				for (var c = closers.length - 1; c > -1; c--) {
					var clA = document.createElement('a');
					clA.className = closers[c].className;
					clA.innerHTML = closers[c].innerHTML;
					clA.href = '#';
					this.closers.push(clA);
					closers[c].parentNode.insertBefore(clA, closers[c]);
					closers[c].parentNode.removeChild(closers[c]);
					$E.addListener(clA, 'click', function (e, o) {
						$E.stopEvent(e);
						o.hideNow();
						if (this.blur) {
							this.blur();
						}
					},
					this);
				}
				$E.addListener(box, 'mouseover', this.show, this, true);
				$E.addListener(box, 'click', this.show, this, true);
				$E.addListener(box, 'focus', this.show, this, true);
				$E.addListener(document.body, 'mouseover', this.hide, this, true);
				$E.addListener(document.body, 'click', this.hideNow, this, true);
				var lk = $D.getElementsByClassName(toggleCls, "a", div);
				for (var l = lk.length - 1; l > -1; l--) {
					$E.addListener(lk[l], 'click', DTK.util.clickFn, {
						s: this,
						f: this.show
					});
					$E.addListener(lk[l], 'mousedown', DTK.util.clickFn, {
						s: this,
						f: this.show
					});
				}
				div = box = null;
			},
			hideNow: function () {
				this.clearHide();
				this.box.style.display = "none";
			},
			hide: function (e) {
				var o = this;
				if (!this.timeOut) {
					this.timeOut = window.setTimeout(function () {
						o.hideNow();
					},
					1000);
				}
			},
			clearHide: function (e) {
				if (e) {
					$E.stopEvent(e);
				}
				window.clearTimeout(this.timeOut);
				this.timeOut = 0;
				return false;
			},
			show: function (e) {
				if (e) {
					$E.stopPropagation(e);
				}
				this.clearHide();
				this.box.style.zIndex = zIndex++;
				this.box.style.display = "block";
			}
		};
		DTK.showBox = function () {
			var boxes = [],
			init = function (el, boxCls, toggleCls) {
				var tb = new showBox($D.get(el), boxCls || 'show-box', toggleCls || 'spill');
				if (tb.initDone) {
					boxes.push(tb);
					return tb;
				}
				return null;
			};
			return {
				init: init,
				boxes: boxes
			};
		} ();
	})();
	(function () {
		var $U = YAHOO.util;
		var $D = $U.Dom;
		var $E = $U.Event;
		var DTK = YAHOO.namespace('Media.Dtk');
		DTK.toggleList = function (el, numshow, showtext, hidetext) {
			if (el.length && !el.tagName && typeof(el) != 'string') {
				for (var i = el.length - 1; i > -1; i--) {
					DTK.toggleList(el[i], numshow, showtext, hidetext);
				}
				return true;
			}
			el = $D.get(el);
			if (!el) {
				return false;
			}
			numshow = (!isNaN(numshow) && numshow >= 0) ? numshow: 4;
			showtext = showtext || '&raquo; Show All';
			hidetext = hidetext || 'Hide All &laquo;';
			var open = function (e, list) {
				var lis = list.getElementsByTagName('li');
				for (var i = lis.length - 1; i > -1; i--) {
					lis[i].style.display = '';
				}
				this.relatedElement.parentNode.style.display = '';
				this.parentNode.style.display = 'none';
				if (e) {
					$E.stopEvent(e);
				}
				return false;
			};
			var close = function (e, list) {
				var lis = list.getElementsByTagName('li');
				for (var i = lis.length - 1; i > -1; i--) {
					if (i < numshow) {
						lis[i].style.display = '';
					} else {
						lis[i].style.display = 'none';
					}
				}
				this.relatedElement.parentNode.style.display = '';
				this.parentNode.style.display = 'none';
				if (e) {
					$E.stopEvent(e);
				}
				return false;
			};
			var myLinks = [];
			var u = el.getElementsByTagName('ul');
			for (var i = u.length - 1; i > -1; i--) {
				var ui = u[i];
				var lis = ui.getElementsByTagName('li');
				if (lis.length > numshow) {
					var o = document.createElement('a'),
					c = document.createElement('a');
					c.href = o.href = '#';
					o.innerHTML = showtext;
					c.innerHTML = hidetext;
					(c.relatedElement = o).relatedElement = c;
					$E.addListener(o, 'click', open, ui, false);
					$E.addListener(c, 'click', close, ui, false);
					myLinks.push(o, c);
					var lic = document.createElement('li'),
					lio = document.createElement('li');
					lic.appendChild(c);
					lio.appendChild(o);
					ui.appendChild(lic);
					ui.insertBefore(lio, lis[numshow]);
					close.call(c, null, ui);
				}
				ui = c = o = lic = lio = lis = null;
			}
			el = u = null;
			$E.addListener(window, 'unload', function () {
				for (var i = myLinks.length - 1; i > -1; i--) {
					myLinks[i].relatedElement = null;
					myLinks[i] = null;
				}
			});
		};
	})();
	(function () {
		var $U = YAHOO.util;
		var $D = $U.Dom;
		var $E = $U.Event;
		var DTK = YAHOO.namespace('Media.Dtk');
		var tagForRelease;
		(function () {
			var aTagsToUnhook = [];
			tagForRelease = function (x) {
				aTagsToUnhook.push(x);
			};
			var QuickRateMgr = function () {
				var me = this;
				var unload = function () {
					for (var form in me.quickRates) {
						for (var name in me.quickRates[form]) {
							var qr = me.quickRates[form][name];
							qr.savedImage = qr.savedDiv = qr.tag = qr.div = qr.input = null;
							for (var i = qr.images.length; i > -1; i--) {
								qr.images[i] = null;
							}
						}
					}
					for (var i = aTagsToUnhook.length - 1; i > -1; i--) {
						aTagsToUnhook[i] = aTagsToUnhook[i].qr = aTagsToUnhook[i].onclick = null;
					}
				};
				$E.addListener(window, 'unload', unload);
			};
			var defaultSource = {
				bars: {
					selected: 'http://l.yimg.com/a/i/us/ls/gr/yri_bar_yellow.gif',
					grey: 'http://l.yimg.com/a/i/us/ls/gr/yri_bar_grey.gif',
					empty: 'http://l.yimg.com/a/i/us/ls/gr/yri_bar_empty.gif',
					hover: 'http://l.yimg.com/a/i/us/ls/gr/yri_bar_hover.gif'
				},
				stars: {
					hover: 'http://l.yimg.com/a/i/us/ls/gr/yri_star_hover.gif',
					selected: 'http://l.yimg.com/a/i/us/ls/gr/yri_star_yellow.gif',
					empty: 'http://l.yimg.com/a/i/us/ls/gr/yri_star_empty.gif',
					grey: 'http://l.yimg.com/a/i/us/ls/gr/yri_star_grey.gif',
					saved: 'http://l.yimg.com/a/i/us/ls/gr/or_star_%%%.gif'
				},
				clear: 'http://l.yimg.com/a/i/us/ls/gr/yri_star_clear.gif'
			};
			QuickRateMgr.prototype = {
				quickRates: {},
				daemons: {},
				initAll: function (cls, root, args) {
					cls = cls || 'quick-rate';
					root = $D.get(root) || document.body;
					args = args || {};
					var tagPlacement = args.tagPlacement;
					var src = args.src;
					var defaultTag = args.defaultTag;
					var savedTag = args.savedTag;
					var resetHandler = function (e, oid) {
						oid[0].resetForm(oid[1]);
					};
					var source = defaultSource;
					if (src) {
						for (var s in src) {
							if (typeof src[s] == 'object') {
								if (!source[s]) {
									source[s] = {};
								}
								for (var ss in src[s]) {
									source[s][ss] = src[s][ss];
								}
							} else {
								source[s] = src[s];
							}
						}
					}
					if (!tagPlacement && tagPlacement !== 0) {
						tagPlacement = 1;
					}
					var ret = [];
					var finder = function (el) {
						return (el.type == 'radio' && $D.hasClass(el, cls));
					};
					var inputs = $D.getElementsBy(finder, 'input', root);
					if (inputs && inputs.length > 0) {
						var clickThese = {};
						var il = inputs.length;
						for (var i = 0; i < il; i++) {
							var input = inputs[i];
							var form = input.form;
							$D.removeClass(form, 'clicked');
							$D.generateId(form, 'quickRate');
							form = form.id;
							if (!this.quickRates[form]) {
								this.quickRates[form] = {};
							}
							var name = input.name;
							if (!this.daemons[form + '__' + name]) {
								var qr = this.quickRates[form][name] = new quickRateDaemon(input, form, tagPlacement, source, defaultTag, savedTag);
								this.daemons[qr.getId()] = qr;
								$E.addListener(form, 'reset', resetHandler, [this, form]);
								ret.push(qr);
							} else {
								var qr = this.daemons[form + '__' + name];
							}
							var hidden = qr.input,
							div = qr.div,
							tag = qr.tag;
							if (qr.tag) {
								qr.tags.push(input.title);
							}
							var img = document.createElement('img');
							var a = document.createElement('a');
							img.src = qr.src.empty;
							a.i = img.i = qr.images.length;
							qr.images.push(img);
							qr.values.push(input.value);
							a.href = '#';
							a.name = name;
							a.title = input.title;
							a.appendChild(img);
							if (qr.tag && tagPlacement < 0) {
								div.insertBefore(a, qr.tag);
							} else {
								div.appendChild(a);
							}
							a.onmouseup = this.blurThis;
							a.onfocus = this.focus;
							a.onblur = this.blur;
							a.onmouseover = this.hover;
							a.onclick = this.click;
							a.onmouseout = this.a_unhover;
							a.qr = qr;
							tagForRelease(a);
							input.checked = !!input.getAttribute('checked');
							if (input.checked || input.selected) {
								qr.value = input.value;
								qr.i = img.i;
								clickThese[form] = clickThese[form] || {};
								clickThese[form][name] = [qr, a];
							} else {
								qr.value = null;
								qr.i = -1;
								if (qr.src.saved) {
									qr.savedImage.src = qr.src.saved.replace(/[%][%][%]/g, 0);
								}
							}
							input.parentNode.removeChild(input);
						}
					}
					for (var f in clickThese) {
						for (var i in clickThese[f]) {
							var qr = clickThese[f][i][0];
							var a = clickThese[f][i][1];
							qr.i = -1;
							this._click(a, true);
							qr.swapMode();
							qr.setDefaultTag(a.title, true, true);
							qr.initialMode = qr.getMode();
						}
					}
					return ret;
				},
				a_unhover: function (e) {
					e = e || window.event;
					var to = DTK.getParent($E.getRelatedTarget(e), 'a');
					var from = DTK.getParent($E.getTarget(e), 'a');
					if (from == to || (from && to && from.parentNode == to.parentNode)) {
						$E.stopEvent(e);
						return false;
					}
					return true;
				},
				focus: function (e) {
					e = e || window.event;
					var lnk = e.srcElement || e.target;
					if (!lnk) {
						return true;
					}
					lnk = DTK.getParent(lnk, 'a');
					var o = lnk.qr;
					if (!o || isNaN(lnk.i) || !lnk.name || o.disabled) {
						return true;
					}
					lnk.isFocused = true;
					DTK.QuickRateMgr._hover(o, lnk.i);
					return true;
				},
				hover: function (e) {
					e = e || window.event;
					var lnk = e.srcElement || e.target;
					if (!lnk) {
						return true;
					}
					lnk = DTK.getParent(lnk, 'a');
					var o = lnk.qr;
					if (!o || isNaN(lnk.i) || !lnk.name || o.disabled) {
						return true;
					}
					DTK.QuickRateMgr._hover(o, lnk.i);
					return true;
				},
				_hover: function (qr, index) {
					var i = 0;
					if (qr.disabled) {
						return true;
					}
					var src = qr.src.hover;
					while (i <= index) {
						if (qr.images[i].src != src) {
							qr.images[i].src = src;
						}
						i++;
					}
					src = qr.src.empty;
					while (i < qr.images.length) {
						qr.images[i].src = src;
						i++;
					}
					qr.div.className = 'hover';
					if (qr.tag) {
						qr.tag.innerHTML = qr.tags[index];
					}
				},
				unhover: function (e, qr) {
					if (qr.disabled) {
						return true;
					}
					DTK.QuickRateMgr._unhover(qr);
					return true;
				},
				_unhover: function (qr) {
					if (qr.value) {
						var sel = qr.src.selected,
						grey = qr.src.grey;
						for (var i = qr.images.length - 1; i > -1; i--) {
							if (qr.values[i] <= qr.value) {
								qr.images[i].src = sel;
							} else {
								qr.images[i].src = grey;
							}
						}
					} else {
						var empty = qr.src.empty;
						for (var i = qr.images.length - 1; i > -1; i--) {
							qr.images[i].src = empty;
						}
					}
					if (qr.tag) {
						qr.tag.innerHTML = qr.defaultTag;
					}
					qr.div.className = '';
				},
				resetForm: function (id) {
					var qrs = this.quickRates[id];
					for (var i in qrs) {
						this.reset(qrs[i]);
					}
				},
				reset: function (qr) {
					qr.value = qr.initialValue;
					qr.setDefaultTag(qr.initialTag, true);
					this._unhover(qr);
					if (qr.getMode() !== qr.initialMode) qr.swapMode();
				},
				click: function (e) {
					e = e || window.event;
					var lnk = e.srcElement || e.target;
					if (!lnk) {
						return true;
					}
					lnk = DTK.getParent(lnk, 'a');
					var o = lnk.qr;
					$E.stopEvent(e);
					if (!o || !lnk.name || isNaN(lnk.i) || o.disabled) {
						return false;
					}
					DTK.QuickRateMgr._click(lnk);
					return false;
				},
				_click: function (a, nofire) {
					var qr = a.qr;
					if (qr.disabled) {
						return false;
					}
					var evt = {
						val: {
							from: qr.value
						},
						i: {
							from: qr.i
						},
						target: qr
					};
					qr.value = qr.values[a.i];
					evt.val.to = qr.input.value = qr.value;
					evt.i.to = qr.i = a.i;
					if (qr.tag) {
						qr.defaultTag = qr.tags[qr.i];
						qr.tag.innerHTML = qr.defaultTag;
					}
					var hover = qr.src.hover,
					empty = qr.src.empty;
					for (var i = qr.images.length - 1; i > -1; i--) {
						if (i <= qr.i) {
							qr.images[i].src = hover;
						} else {
							qr.images[i].src = empty;
						}
					}
					if ($D.hasClass(qr.div.parentNode, 'missing')) {
						$D.removeClass(qr.div.parentNode, 'missing');
					}
					if (qr.src.saved) {
						qr.savedImage.src = qr.src.saved.replace(/[%][%][%]/g, qr.value);
					}
					if (evt.i.from != evt.i.to && !nofire) {
						$D.addClass($D.get(qr.form), 'clicked');
						qr.onchange.fire(evt);
					}
					return false;
				},
				blur: function (e) {
					e = e || window.event;
					var lnk = e.srcElement || e.target;
					var o = lnk.qr;
					if (!o || isNaN(lnk.i) || !lnk.name) {
						return true;
					}
					lnk.isFocused = false;
					var anchors = o.div.getElementsByTagName('a');
					for (var i = anchors.length - 1; i > -1; i--) {
						if (anchors[i].isFocused) {
							return true;
						}
					}
					DTK.QuickRateMgr._unhover(o);
					return true;
				},
				blurThis: function (e) {
					e = e || window.event;
					var lnk = e.srcElement || e.target;
					if (!lnk) return true;
					if (lnk.blur) {
						lnk.blur();
					}
				}
			};
			DTK.QuickRateMgr = new QuickRateMgr();
		})();
		DTK.getParent = DTK.getParent ||
		function (el, tagName, maxSteps, steps) {
			if (!maxSteps) {
				maxSteps = 10;
			}
			if (!steps) {
				steps = 0;
			}
			if (steps > maxSteps) {
				return null;
			}
			if (!el) {
				return el;
			}
			if (el.nodeType != 1) {
				return DTK.getParent(el.parentNode, tagName, maxSteps, steps);
			}
			if (el.tagName.toLowerCase() == tagName.toLowerCase()) {
				return el;
			}
			return DTK.getParent(el.parentNode, tagName, maxSteps, steps + 1);
		};
		var quickRateDaemon = function (input, form, tagPlacement, src, defaultTag, savedTag) {
			var mode = 'input';
			this.getMode = function () {
				return mode;
			}
			this.swapMode = function () {
				if (mode == 'input') {
					if (this.src.saved) {
						this.savedDiv.style.display = 'block';
						this.div.style.display = 'none';
						$D.removeClass($D.get(this.form), 'clicked');
						mode = 'saved';
					}
				} else {
					this.savedDiv.style.display = 'none';
					this.div.style.display = 'block';
					mode = 'input';
				}
			};
			this.init(input, form, tagPlacement, src, defaultTag, savedTag);
			if (DTK.QuickRateAjax && $D.hasClass(input, 'ajax') && !this.ajaxDaemon) {
				DTK.QuickRateAjax.handle(this, $D.hasClass(input, 'loggedin'));
			}
		};
		quickRateDaemon.prototype = {
			toString: function () {
				return ['Quickrate - ', this.name, ' ', this.values, '; Current:', this.i, '=', this.value].join('');
			},
			getId: function () {
				return this.form + '__' + this.name;
			},
			setDefaultTag: function (s, changeIfChanged, isInitial) {
				if (this.tag && (changeIfChanged || !this.changed)) {
					this.changed = true;
					this.defaultTag = s;
					this.tag.innerHTML = s;
					if (isInitial) {
						this.initialTag = s;
					}
				}
				return this;
			},
			disable: function () {
				this.disabled = true;
			},
			enable: function () {
				this.disabled = false;
			},
			init: function (input, form, tagPlacement, src, defaultTag, savedTag) {
				this.input = document.createElement('input');
				this.input.type = 'hidden';
				this.name = input.name;
				this.rating = -1;
				this.images = [];
				this.values = [];
				this.form = form;
				this.src = (input.className.indexOf('stars') === -1 ? src.bars: src.stars);
				this.tags = [];
				this.div = document.createElement('div');
				this.disabled = false;
				this.defaultTag = (defaultTag == '' || defaultTag) ? defaultTag: 'Rate It:';
				this.savedTag = (savedTag == '' || savedTag) ? savedTag: 'My Rating:';
				this.src.clear = src.clear;
				this.onchange = new $U.CustomEvent('change', this);
				this.div.name = this.input.name = this.name;
				this.div.appendChild(this.input);
				input.parentNode.insertBefore(this.div, input);
				if (input.title && input.className.indexOf('notag') == -1 && tagPlacement !== 0) {
					this.tag = document.createElement('span');
					this.tag.innerHTML = this.defaultTag;
					this.tag.className = 'qr-tag';
					this.div.appendChild(this.tag);
				}
				$E.addListener(this.div, 'mouseout', DTK.QuickRateMgr.unhover, this);
				var savedDiv = $D.get(this.getId() + '-saved');
				if (savedDiv) {
					this.savedDiv = savedDiv;
					this.savedImage = savedDiv.getElementsByTagName('img')[0];
				} else {
					this.savedDiv = document.createElement('div');
					this.savedDiv.style.display = 'none';
					this.savedDiv.id = this.getId() + '-saved';
					this.savedDiv.innerHTML = '<span>' + this.savedTag + '</span>';
					this.savedImage = document.createElement('img');
					this.savedDiv.appendChild(this.savedImage);
				}
				savedDiv = null;
				var button = $D.getElementsByClassName('button', 'input', this.form)[0];
				if (button) {
					button.style.display = 'none';
				}
				if (this.src.clear) {
					var a = document.createElement('a');
					a.href = '#';
					a.qr = this;
					a.className = 'clearRating';
					$E.addListener(a, 'click', function (e) {
						this.qr.swapMode();
						$E.stopEvent(e);
						return false;
					});
					var i = document.createElement('img');
					i.src = this.src.clear;
					a.appendChild(i);
					i.alt = 'Change Rating';
					a.title = 'Change Rating';
					tagForRelease(i);
					tagForRelease(a);
					this.savedDiv.insertBefore(a, this.savedImage);
				}
				this.div.parentNode.insertBefore(this.savedDiv, this.div);
				i = a = input = form = o = null;
				this.initialValue = this.value;
				this.initialTag = (this.tag ? this.tag.innerHTML: '');
				this.initialMode = this.getMode();
				return this;
			}
		};
	})();
	(function () {
		var $U = YAHOO.util;
		var $D = $U.Dom;
		var $E = $U.Event;
		var $C = $U.Connect;
		var DTK = YAHOO.namespace('Media.Dtk');
		if (!DTK.QuickRateMgr) {
			return;
		};
		var QuickRateAjaxDaemon;
		(function () {
			var makeCallbackObj = function (self) {
				return {
					success: function (o, args) {
						var response = o.responseXML.firstChild;
						if (response.tagName == 'Error') {
							var status = parseInt(response.textContent, 10);
							if (status < 400 && status >= 300) {
								o.status = 401;
								o.statusText = 'Login Required';
								return self.loginToRate();
							} else {
								o.status = status;
								o.statusText = 'Error';
								return self.failure(o, args);
							}
						}
						return self.success(o, args);
					},
					failure: function (o, args) {
						if (o.status >= 300 && o.status < 400) {
							o.status = 401;
							o.statusText = 'Login Required';
							return self.loginToRate();
						}
						self.failure(o, args);
					},
					scope: self
				};
			};
			var send = function (evt, callback) {
				this.onbeforesend.fire(this);
				this.onchange(evt);
				var qr = this.quickRate;
				var f = $D.get(qr.form);
				var url = f.action;
				var data = ['ajax=1'];
				for (var i = f.length - 1; i > -1; i--) {
					if (f[i].name) {
						data.push(([escape(f[i].name), escape(f[i].value)]).join('='));
					}
				}
				data = data.join('&');
				url += (url.indexOf('?') == -1 ? '?': '&') + 'random=' + Math.random();
				if (f.method.toLowerCase() != 'post') {
					url += '&' + data;
					data = null;
				}
				if (this.isLoggedIn) {
					this.startTime = (new Date()).getTime();
					var tx = $C.asyncRequest(f.method.toUpperCase(), url, callback, data);
					this.onsend.fire(tx);
				} else {
					var tx = 0;
					this.loginToRate(callback.args);
				}
			};
			QuickrateAjaxDaemon = function (quickRate, isLoggedIn) {
				if (!quickRate) {
					return;
				}
				quickRate.ajaxDaemon = this;
				var qr = this.quickRate = this.qr = quickRate;
				var id = qr.getId();
				this.getId = function () {
					return id;
				};
				var self = this;
				var callback = makeCallbackObj(this);
				this.isLoggedIn = isLoggedIn;
				qr.onchange.subscribe(function (type, evt) {
					send.call(self, evt, callback);
				});
				this.onbeforesend = new $U.CustomEvent('beforesend', this, true);
				this.onsend = new $U.CustomEvent('send', this, true);
				this.onbeforesend.subscribe(function () {
					self.qr.disable();
				});
				this.busyImage = document.createElement('img');
				this.busyImage.src = 'http://l.yimg.com/a/i/us/ga/dload/experience/busy-expandingbluecircle.gif';
				this.busyImage.style.display = 'inline';
				this.tag = document.createElement('span');
				this.tag.className = 'qr-ajaxMessage';
				this.button = $D.getElementsByClassName('button', 'input', $D.get(qr.form))[0];
				this.unload = function () {
					self.qr = self.button = self.tag = self.busyImage = quickRate = null;
				}
			};
			QuickrateAjaxDaemon.prototype = {
				success: function (o, args) {
					if (this.timeOut) {
						clearTimeout(this.timeOut);
					}
					var alreadyWaited = (new Date()).getTime() - this.startTime;
					var minWait = 1000;
					if (alreadyWaited < minWait) {
						var self = this;
						this.timeOut = window.setTimeout(function () {
							self.success(o, args);
						},
						minWait - alreadyWaited);
						return;
					};
					this.startTime = 0;
					this.qr.enable();
					if (this.busyImage.parentNode && this.busyImage.parentNode.removeChild) {
						this.busyImage.parentNode.removeChild(this.busyImage);
					}
					this.tag.innerHTML = 'Rating saved!';
					var fn = function (tag, qr) {
						var s = $D.get(qr.form).getElementsByTagName('small');
						return function () {
							if (tag.parentNode && tag.parentNode.removeChild) {
								tag.parentNode.removeChild(tag);
							}
							for (var i = s.length - 1; i > -1; i--) {
								if (s[i].innerHTML.indexOf('not yet rated') != -1) {
									s[i].parentNode.removeChild(s[i]);
								}
							}
							qr.swapMode();
						};
					};
					this.timeOut = setTimeout(fn(this.tag, this.qr), minWait * 2);
				},
				failure: function (o, args) {
					var alreadyWaited = (new Date()).getTime() - this.startTime;
					var minWait = 1000;
					if (alreadyWaited < minWait) {
						var self = this;
						this.timeOut = window.setTimeout(function () {
							self.success(o, args);
						},
						minWait - alreadyWaited);
						return;
					};
					this.qr.enable();
					if (this.busyImage.parentNode && this.busyImage.parentNode.removeChild) {
						this.busyImage.parentNode.removeChild(this.busyImage);
					}
					if (this.tag.parentNode && this.tag.parentNode.removeChild) {
						this.tag.parentNode.removeChild(this.tag);
					}
					this.button.value = "Save Rating";
					$D.addClass(this.quickRate.form, 'clicked');
				},
				onchange: function (evt) {
					if (this.timeOut) {
						clearTimeout(this.timeOut);
					}
					var qr = this.quickRate;
					var div = qr.div;
					DTK.QuickRateMgr._unhover(qr);
					var f = $D.get(qr.form);
					$D.removeClass(f, 'clicked');
					this.tag.innerHTML = 'Saving rating... ';
					f.appendChild(this.tag);
					this.tag.appendChild(this.busyImage);
					qr = f = null;
				},
				loginToRate: function () {
					this.busyImage.parentNode.removeChild(this.busyImage);
					if (this.tag.parentNode && this.tag.parentNode.removeChild) {
						this.tag.parentNode.removeChild(this.tag);
					}
					this.quickRate.enable();
					$D.addClass(this.quickRate.form, 'clicked');
					this.button.value = "Sign in to save rating!";
				},
				toString: function () {
					return 'QuickRateAjax Handler';
				}
			};
		})();
		(function () {
			var QuickRateAjax = function () {
				QuickRateAjax.superclass.constructor.call(this, QuickrateAjaxDaemon);
			}
			YAHOO.extend(QuickRateAjax, DTK.util.Manager);
			QuickRateAjax.prototype.handle = QuickRateAjax.prototype.init;
			QuickRateAjax.prototype.idString = 'QuickRateAjax Manager';
			DTK.QuickRateAjax = new QuickRateAjax();
		})();
	})();
})();
YAHOO.Food.ImageLoader = function (el, className, imgs, tag) {
	var el = YAHOO.util.Dom.get(el);
	if (el) {
		var tag = tag || 'img';
		var imgEls = YAHOO.util.Dom.getElementsByClassName(className, tag, el);
		var imgCt = imgEls ? imgEls.length: 0;
		if (imgCt == imgs.length) {
			for (var i = 0; i < imgCt; i++) {
				if (tag == 'img') {
					imgEls[i].src = imgs[i];
				} else {
					YAHOO.util.Dom.setStyle(imgEls[i], "backgroundImage", 'url(' + imgs[i] + ')');
				}
			}
		}
	}
};
var yIdRouteClick = function () {
	var destUrl = document.getElementById('identity').value;
	destUrl = profiles[destUrl];
	window.open(destUrl);
};
var yIdUpdateText = function () {
	var yIdLinkedText = '';
	var yIdDropdownElem = document.getElementById('identity');
	var dropIndex = yIdDropdownElem.selectedIndex;
	var selectedClass = yIdDropdownElem[dropIndex].className;
	var nicknameText = document.getElementById('yIdProfileText');
	var noSpamText = ' and prevent the threat of spam.';
	if (selectedClass == 'yIdRegular') {
		yIdLinkedText = 'Update Name';
		nicknameText.innerHTML = nicknameText.innerHTML.replace(noSpamText, '');
		nicknameText.style.background = '';
	} else {
		yIdLinkedText = 'Use a Nickname';
		nicknameText.innerHTML = nicknameText.innerHTML.replace(noSpamText, '');
		nicknameText.innerHTML += noSpamText;
		nicknameText.style.background = '#ffffb2';
	}
	document.getElementById('yIdProfileLink').innerHTML = yIdLinkedText;
};

(function () {
	var B = null;
	var C = "2.5.2";
	var I = [["http://yui.yahooapis.com/" + C + "/build/yahoo-dom-event/yahoo-dom-event.js", function () {
		return ("undefined" !== typeof YAHOO && "undefined" !== typeof YAHOO.util && "undefined" !== typeof YAHOO.env && "undefined" !== typeof YAHOO.util.Event && "undefined" !== typeof YAHOO.util.Dom)
	}], ["http://l.yimg.com/a/lib/uh/js/uh_utils-1.3.2.js", function () {
		return ("undefined" != typeof YAHOO.one && "undefined" != typeof YAHOO.one.uh.Header)
	}]];
	var H = [["http://yui.yahooapis.com/" + C + "/build/yahoo/yahoo-min.js", function () {
		return ("undefined" !== typeof YAHOO && "undefined" !== typeof YAHOO.util && "undefined" !== typeof YAHOO.env)
	}], ["http://yui.yahooapis.com/" + C + "/build/dom/dom-min.js", function () {
		return ("undefined" !== typeof YAHOO.util.Dom)
	}], ["http://yui.yahooapis.com/" + C + "/build/event/event-min.js", function () {
		return ("undefined" !== typeof YAHOO.util.Event)
	}], ["http://l.yimg.com/a/lib/uh/js/uh_utils-1.3.2.js", function () {
		return ("undefined" != typeof YAHOO.one && "undefined" != typeof YAHOO.one.uh.Header)
	}]];
	var G = function () {
		if (typeof document !== "undefined") {
			return document
		} else {
			if (typeof document.documentElement !== "undefined") {
				return document.documentElement
			}
		}
	};
	var J = function () {
		return {
			addListener: function (O, P, N, M) {
				var L = function (Q) {
					M.tempFn = N;
					M.tempFn(Q)
				};
				if (O.addEventListener) {
					O.addEventListener(P, L, false)
				} else {
					if (O.attachEvent) {
						O.attachEvent("on" + P, L)
					} else {
						if (!O["on" + P]) {
							O["on" + P] = L
						}
					}
				}
			},
			preventDefault: function (L) {
				if (L.preventDefault) {
					L.preventDefault()
				}
				L.returnValue = false
			},
			getTarget: function (M) {
				var L = M.target || M.srcElement;
				if (L && 3 == L.nodeType) {
					return L.parentNode
				} else {
					return L
				}
			}
		}
	} ();
	var A = function (Q) {
		var O = document.getElementsByTagName("head")[0];
		var L = O.getElementsByTagName("script");
		var P = false;
		for (var N = 0; N < L.length; N++) {
			if (1 == L[N].nodeType && Q == L[N].getAttribute("src")) {
				P = true;
				break
			}
		}
		if (!P) {
			var M = document.createElement("script");
			M.setAttribute("type", "text/javascript");
			M.setAttribute("src", Q);
			O.appendChild(M)
		}
	};
	var D = function (L, R, O, N, Q) {
		var P = 0;
		var M = function () {
			var S = true;
			for (var T = 0; T < L.length; T++) {
				if (!L[T][1]()) {
					S = false
				}
			}
			return S
		};
		(function () {
			var S = this;
			if (M()) {
				Q.tempFn = R;
				Q.tempFn();
				Q.tempFn = null
			} else {
				for (var T = 0; T < L.length; T++) {
					if (!L[T][1]()) {
						A(L[T][0])
					}
				}
				if (P <= N) {
					if (B) {
						clearTimeout(B);
						B = null
					}
					B = setTimeout(arguments.callee, 2000);
					P += 2000
				} else {
					Q.tempFn = O;
					Q.tempFn();
					Q.tempFn = null
				}
			}
		})()
	};
	var F = function (L, N) {
		var M = new RegExp("(?:^|\\s+)" + N + "(?:\\s+|$)");
		return M.test(L.className)
	};
	var E = function (N) {
		var Q = null;
		try {
			if ("keydown" == N.type) {
				Q = window.event ? N.keyCode: N.which
			}
			if ("click" == N.type && F(J.getTarget(N), "stop_nav")) {
				J.preventDefault(N)
			}
			if ("keydown" == N.type && 13 == Q && F(J.getTarget(N), "stop_key_nav")) {
				J.preventDefault(N)
			}
		} catch(P) {}
		try {
			if (document.createEventObject) {
				N = document.createEventObject(N)
			}
		} catch(P) {}
		var M = function () {
			var S = J.getTarget(N);
			if (S && F(S, "stop_nav")) {
				window.location = S.href
			}
		};
		var R = function () {
			if (B) {
				clearTimeout(B);
				B = null
			}
			if ("load" != N.type) {
				YAHOO.one.uh.Header.init(N)
			}
		};
		var L = function (S) {
			if (S.length > 0) {
				return function () {
					D([S[0]], L(S.slice(1)), M, 1000, this)
				}
			} else {
				return R
			}
		};
		var O = null;
		if ("undefined" !== typeof ygmaGetUtils) {
			O = ygmaGetUtils()
		}
		if (O) {
			D([O[0]], L(O.slice(1)), M, 3000, this)
		} else {
			if ("undefined" == typeof YAHOO) {
				D([I[0]], L(I.slice(1)), M, 3000, this)
			} else {
				D([H[0]], L(H.slice(1)), M, 3000, this)
			}
		}
	};
	var K = function () {
		var L = navigator.userAgent.match(/MSIE\s([^;]*)/);
		if (L && L[1]) {
			if (parseInt(L[1], 10) < 6) {
				return
			}
		}
		var N = G().getElementById("ygma");
		J.addListener(N, "mouseover", E, this, true);
		J.addListener(N, "click", E, this, true);
		J.addListener(N, "keydown", E, this, true);
		var M = function (O) {
			try {
				if (document.createEventObject) {
					var O = document.createEventObject(O)
				}
			} catch(P) {}
			setTimeout(function () {
				E(O)
			},
			2)
		};
		J.addListener(window, "load", M, this, true)
	};
	if (typeof YAHOO !== "undefined" && YAHOO && typeof YAHOO.util !== "undefined" && typeof YAHOO.util.Event !== "undefined" && YAHOO.util.Event.onContentReady) {
		YAHOO.util.Event.onContentReady("ygma", K)
	} else { (function () {
			if (G().getElementById("ygma")) {
				if (B) {
					clearTimeout(B);
					B = null
				}
				K()
			} else {
				B = setTimeout(arguments.callee, 2000)
			}
		})()
	}
})();

/*------------------------------------------noi dung--------------------------------------*/

YAHOO.namespace("Food");
YAHOO.Food.PromoModule = function (oArgs) {
	oArgs = oArgs || {};
	if (!oArgs.prefix && (!oArgs.menu && !oArgs.content)) {
		return false;
	}
	this.elMenu = oArgs.menu || oArgs.prefix + "-menu";
	this.elContent = oArgs.content || oArgs.prefix + "-content";
	this.sContentClass = oArgs.slideClass || "promoCard";
	this.elBtn = (typeof oArgs.button != "undefined") ? YAHOO.util.Dom.get(oArgs.button) : YAHOO.util.Dom.get(oArgs.prefix + "-btn");
	this.iInterval = oArgs.interval || 2;
	this.iFadeRate = oArgs.fadeRate || 1;
	this.iWaitAfterClick = oArgs.waitAfterClick || 2;
	this.bFadeOnClick = oArgs.fadeOnClick || false;
	this.aElOvf = oArgs.overflow || false;
	this.iMinHeight = oArgs.minHeight || false;
	this.sItemHtml = oArgs.itemHtml || "<div></div>";
	this.aElItems = [];
	this.iCurItem = -1;
	this.iLastItem = -1;
	this.bItemClicked = false;
	this.bCycleStopped = false;
	this.bCyclePaused = false;
	var opacitySupp;
	if (document.all) {
		opacitySupp = document.getElementsByTagName("body")[0].style.filter;
	}
	else {
		opacitySupp = document.getElementsByTagName("body")[0].style.opacity;
	}
	if (opacitySupp === undefined) {
		this.iFadeRate = 0.01;
	}
	if (navigator.userAgent.indexOf("Firefox") != -1 && navigator.userAgent.indexOf("Mac") != -1) {
		this.bFfMac = true;
	}
	else {
		this.bFfMac = false;
	}
	this.initPromo();
};
YAHOO.Food.PromoModule.prototype = {
	initPromo: function () {
		var itemList = YAHOO.util.Dom.get(this.elMenu).getElementsByTagName('li');
		var len = itemList.length;
		for (var pos = 0; pos < len; pos++) {
			this.aElItems[pos] = {};
			itemList[pos].innerHTML = this.sItemHtml + itemList[pos].innerHTML;
			this.aElItems[pos].elMenuItem = itemList[pos].firstChild;
			var itemLink = itemList[pos].getElementsByTagName('a')[0];
			itemLink.num = pos;
			YAHOO.util.Event.addListener(itemLink, 'click', this.selectItem, this);
			itemLink = null;
		}
		this.iTotItems = pos;
		var itemContent = YAHOO.util.Dom.getElementsByClassName(this.sContentClass, 'div', YAHOO.util.Dom.get(this.elContent));
		len = itemContent.length;
		var menuHeight = YAHOO.util.Dom.get(this.elMenu).offsetHeight;
		var minHeight = (this.iMinHeight && this.iMinHeight > menuHeight) ? this.iMinHeight: menuHeight;
		if (this.iMinHeight && document.all && navigator.appVersion.charAt(0) == 6) {
			this.setMinHeight = function (item) {
				YAHOO.util.Dom.setStyle(item, "height", minHeight + "px");
			};
		} else if (this.iMinHeight) {
			this.setMinHeight = function (item) {
				YAHOO.util.Dom.setStyle(item, "minHeight", minHeight + "px");
			};
		}
		for (pos = 0; pos < len; pos++) {
			this.aElItems[pos].elContent = itemContent[pos];
			YAHOO.util.Event.addListener(itemContent[pos], 'mouseover', this.pauseCycle, this);
			YAHOO.util.Event.addListener(itemContent[pos], 'mouseout', this.resumeCycle, this);
			if (this.iMinHeight) {
				this.setMinHeight(itemContent[pos]);
			}
			if (this.bFfMac && this.aElOvf[pos]) {
				var elOvf = YAHOO.util.Dom.get(this.aElOvf[pos]);
				var ovf = YAHOO.util.Dom.getStyle(elOvf, "overflow");
				if (ovf == "auto" || ovf == "scroll") {
					this.aElOvf[pos] = {
						ovf: ovf,
						el: this.aElOvf[pos]
					};
					YAHOO.util.Dom.setStyle(elOvf, "overflow", "hidden");
				}
			}
		}
		if (this.elBtn) {
			YAHOO.util.Event.addListener(this.elBtn, 'click', this.toggleCycle, this);
		}
		YAHOO.util.Event.addListener(window, 'blur', this.pauseCycle, this);
		YAHOO.util.Event.addListener(window, 'focus', this.resumeCycle, this);
		this.cycleItems();
	},
	changeItem: function (itemNum, clicked) {
		if (this.aElItems[itemNum].elMenuItem.style.visibility == "visible" && this.iLastItem != -1) {
			return false;
		}
		if (clicked && this.bFadeOnClick === false) {
			this.iTmpRate = this.iFadeRate;
			this.iFadeRate = 0.001;
		}
		if (this.iLastItem != -1) {
			var oAnimOut = new YAHOO.util.Anim(this.aElItems[this.iLastItem].elMenuItem, {
				opacity: {
					to: 0
				}
			},
			this.iFadeRate);
			oAnimOut.onStart.subscribe(function () {
				this.getEl().parentNode.className = "";
			});
			oAnimOut.onComplete.subscribe(function () {
				this.getEl().style.visibility = "hidden";
			});
			oAnimOut.animate();
		}
		var oAnimIn = new YAHOO.util.Anim(this.aElItems[itemNum].elMenuItem, {
			opacity: {
				to: 0.99
			}
		},
		this.iFadeRate);
		oAnimIn.onStart.subscribe(function () {
			var el = this.getEl();
			var elP = el.parentNode;
			var newHeight = elP.offsetHeight;
			elP.className = "selected";
			el.style.visibility = "visible";
			var elH = parseInt(el.getAttribute("height"));
			YAHOO.util.Dom.setStyle(el, "height", newHeight + (elH ? elH: 0) + "px");
			for (var c = 0; c < el.childNodes.length; c++) {
				var elH = parseInt(el.childNodes[c].getAttribute("height"));
				YAHOO.util.Dom.setStyle(el.childNodes[c], "height", newHeight + (elH ? elH: 0) + "px");
			}
		});
		oAnimIn.animate();
		var elOvf;
		if (this.iLastItem != -1) {
			var oAnimOutContent = new YAHOO.util.Anim(this.aElItems[this.iLastItem].elContent, {
				opacity: {
					to: 0
				}
			},
			this.iFadeRate);
			if (this.bFfMac && this.aElOvf[this.iLastItem]) {
				elOvf = YAHOO.util.Dom.get(this.aElOvf[this.iLastItem].el);
				oAnimOutContent.onStart.subscribe(function () {
					YAHOO.util.Dom.setStyle(elOvf, 'overflow', 'hidden');
				});
			}
			oAnimOutContent.onComplete.subscribe(function () {
				this.getEl().style.visibility = "hidden";
			});
			oAnimOutContent.animate();
		}
		var oAnimInContent = new YAHOO.util.Anim(this.aElItems[itemNum].elContent, {
			opacity: {
				to: 0.99
			}
		},
		this.iFadeRate);
		oAnimInContent.onStart.subscribe(function () {
			this.getEl().style.visibility = "visible";
		});
		if (this.bFfMac && this.aElOvf[itemNum]) {
			elOvf = YAHOO.util.Dom.get(this.aElOvf[itemNum].el);
			var ovf = this.aElOvf[itemNum].ovf;
			oAnimInContent.onComplete.subscribe(function () {
				YAHOO.util.Dom.setStyle(elOvf, 'overflow', ovf);
			});
		}
		oAnimInContent.animate();
		this.iCurItem = this.iLastItem = itemNum;
		if (clicked) {			
			/*
			Edited by Thai Bui <thaib@dbb4.com>
			Pause the script after clicking.
			*/
			clearTimeout(this.tCycle);
			var f = function (self) {
				return function () {
					self.cycleItems();
				};
			};
			this.tCycle = setTimeout(f(this), (this.iInterval + this.iWaitAfterClick) * 1000);
			
			/*
			Original script: stop the script after clicking
			*/
			//this.resumeCycle();
			//this.bItemClicked = true;
			if (this.bFadeOnClick === false) {
				this.iFadeRate = this.iTmpRate;
			}
		}
	},
	selectItem: function (e, oPromo) {
		this.blur();
		YAHOO.util.Event.preventDefault(e);
		if (oPromo.iLastItem != this.num) {			
			oPromo.changeItem(this.num, true);
		}
	},
	cycleItems: function () {
		this.stopCycle(true);
		if (this.bItemClicked) {
			this.bItemClicked = false;
		} else {
			if (!this.bCyclePaused) {
				if (++this.iCurItem >= this.iTotItems) {
					this.iCurItem = 0;
				}				
				this.changeItem(this.iCurItem, false);								
			}	
			this.startCycle();			
		}
	},
	startCycle: function (auto) {
		var f = function (self) {
			return function () {
				self.cycleItems();
			};
		};
		this.tCycle = setTimeout(f(this), this.iInterval * 1000);
		if (this.elBtn && !this.bCyclePaused) {
			this.elBtn.className = 'stop';
		}
		this.bCycleStopped = false;
	},
	stopCycle: function (auto) {
		if (typeof(this.tCycle) == "number") {
			clearTimeout(this.tCycle);
		}
		if (this.elBtn && !auto) {
			this.elBtn.className = 'start';
		}
		this.bCycleStopped = true;
	},
	pauseCycle: function (e, oPromo) {
		oPromo.bCyclePaused = true;
		if (oPromo.elBtn) {
			oPromo.elBtn.className = 'start';
		}
	},
	resumeCycle: function (e, oPromo) {
		oPromo.bCyclePaused = false;
		if (oPromo.elBtn && !oPromo.bCycleStopped) {
			oPromo.elBtn.className = 'stop';
		}
	},
	toggleCycle: function (e, oPromo) {
		this.blur();
		YAHOO.util.Event.preventDefault(e);
		if (oPromo.bCycleStopped) {
			oPromo.bItemClicked = false;
			oPromo.cycleItems();
		} else {
			oPromo.stopCycle();
		}
	}
};