/*
Copyright (c) 2007, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.4.1
*/
(function() {
	YAHOO.util.Config = function(D) {
		if (D) {
			this.init(D);
		}
	};
	var B = YAHOO.lang,
	C = YAHOO.util.CustomEvent,
	A = YAHOO.util.Config;
	A.CONFIG_CHANGED_EVENT = "configChanged";
	A.BOOLEAN_TYPE = "boolean";
	A.prototype = {
		owner: null,
		queueInProgress: false,
		config: null,
		initialConfig: null,
		eventQueue: null,
		configChangedEvent: null,
		init: function(D) {
			this.owner = D;
			this.configChangedEvent = this.createEvent(A.CONFIG_CHANGED_EVENT);
			this.configChangedEvent.signature = C.LIST;
			this.queueInProgress = false;
			this.config = {};
			this.initialConfig = {};
			this.eventQueue = [];
		},
		checkBoolean: function(D) {
			return (typeof D == A.BOOLEAN_TYPE);
		},
		checkNumber: function(D) {
			return (!isNaN(D));
		},
		fireEvent: function(D, F) {
			var E = this.config[D];
			if (E && E.event) {
				E.event.fire(F);
			}
		},
		addProperty: function(E, D) {
			E = E.toLowerCase();
			this.config[E] = D;
			D.event = this.createEvent(E, {
				scope: this.owner
			});
			D.event.signature = C.LIST;
			D.key = E;
			if (D.handler) {
				D.event.subscribe(D.handler, this.owner);
			}
			this.setProperty(E, D.value, true);
			if (!D.suppressEvent) {
				this.queueProperty(E, D.value);
			}
		},
		getConfig: function() {
			var D = {},
			F, E;
			for (F in this.config) {
				E = this.config[F];
				if (E && E.event) {
					D[F] = E.value;
				}
			}
			return D;
		},
		getProperty: function(D) {
			var E = this.config[D.toLowerCase()];
			if (E && E.event) {
				return E.value;
			} else {
				return undefined;
			}
		},
		resetProperty: function(D) {
			D = D.toLowerCase();
			var E = this.config[D];
			if (E && E.event) {
				if (this.initialConfig[D] && !B.isUndefined(this.initialConfig[D])) {
					this.setProperty(D, this.initialConfig[D]);
					return true;
				}
			} else {
				return false;
			}
		},
		setProperty: function(E, G, D) {
			var F;
			E = E.toLowerCase();
			if (this.queueInProgress && !D) {
				this.queueProperty(E, G);
				return true;
			} else {
				F = this.config[E];
				if (F && F.event) {
					if (F.validator && !F.validator(G)) {
						return false;
					} else {
						F.value = G;
						if (!D) {
							this.fireEvent(E, G);
							this.configChangedEvent.fire([E, G]);
						}
						return true;
					}
				} else {
					return false;
				}
			}
		},
		queueProperty: function(S, P) {
			S = S.toLowerCase();
			var R = this.config[S],
			K = false,
			J,
			G,
			H,
			I,
			O,
			Q,
			F,
			M,
			N,
			D,
			L,
			T,
			E;
			if (R && R.event) {
				if (!B.isUndefined(P) && R.validator && !R.validator(P)) {
					return false;
				} else {
					if (!B.isUndefined(P)) {
						R.value = P;
					} else {
						P = R.value;
					}
					K = false;
					J = this.eventQueue.length;
					for (L = 0; L < J; L++) {
						G = this.eventQueue[L];
						if (G) {
							H = G[0];
							I = G[1];
							if (H == S) {
								this.eventQueue[L] = null;
								this.eventQueue.push([S, (!B.isUndefined(P) ? P: I)]);
								K = true;
								break;
							}
						}
					}
					if (!K && !B.isUndefined(P)) {
						this.eventQueue.push([S, P]);
					}
				}
				if (R.supercedes) {
					O = R.supercedes.length;
					for (T = 0; T < O; T++) {
						Q = R.supercedes[T];
						F = this.eventQueue.length;
						for (E = 0; E < F; E++) {
							M = this.eventQueue[E];
							if (M) {
								N = M[0];
								D = M[1];
								if (N == Q.toLowerCase()) {
									this.eventQueue.push([N, D]);
									this.eventQueue[E] = null;
									break;
								}
							}
						}
					}
				}
				return true;
			} else {
				return false;
			}
		},
		refireEvent: function(D) {
			D = D.toLowerCase();
			var E = this.config[D];
			if (E && E.event && !B.isUndefined(E.value)) {
				if (this.queueInProgress) {
					this.queueProperty(D);
				} else {
					this.fireEvent(D, E.value);
				}
			}
		},
		applyConfig: function(D, G) {
			var F, E;
			if (G) {
				E = {};
				for (F in D) {
					if (B.hasOwnProperty(D, F)) {
						E[F.toLowerCase()] = D[F];
					}
				}
				this.initialConfig = E;
			}
			for (F in D) {
				if (B.hasOwnProperty(D, F)) {
					this.queueProperty(F, D[F]);
				}
			}
		},
		refresh: function() {
			var D;
			for (D in this.config) {
				this.refireEvent(D);
			}
		},
		fireQueue: function() {
			var E, H, D, G, F;
			this.queueInProgress = true;
			for (E = 0; E < this.eventQueue.length; E++) {
				H = this.eventQueue[E];
				if (H) {
					D = H[0];
					G = H[1];
					F = this.config[D];
					F.value = G;
					this.fireEvent(D, G);
				}
			}
			this.queueInProgress = false;
			this.eventQueue = [];
		},
		subscribeToConfigEvent: function(E, F, H, D) {
			var G = this.config[E.toLowerCase()];
			if (G && G.event) {
				if (!A.alreadySubscribed(G.event, F, H)) {
					G.event.subscribe(F, H, D);
				}
				return true;
			} else {
				return false;
			}
		},
		unsubscribeFromConfigEvent: function(D, E, G) {
			var F = this.config[D.toLowerCase()];
			if (F && F.event) {
				return F.event.unsubscribe(E, G);
			} else {
				return false;
			}
		},
		toString: function() {
			var D = "Config";
			if (this.owner) {
				D += " [" + this.owner.toString() + "]";
			}
			return D;
		},
		outputEventQueue: function() {
			var D = "",
			G, E, F = this.eventQueue.length;
			for (E = 0; E < F; E++) {
				G = this.eventQueue[E];
				if (G) {
					D += G[0] + "=" + G[1] + ", ";
				}
			}
			return D;
		},
		destroy: function() {
			var E = this.config,
			D, F;
			for (D in E) {
				if (B.hasOwnProperty(E, D)) {
					F = E[D];
					F.event.unsubscribeAll();
					F.event = null;
				}
			}
			this.configChangedEvent.unsubscribeAll();
			this.configChangedEvent = null;
			this.owner = null;
			this.config = null;
			this.initialConfig = null;
			this.eventQueue = null;
		}
	};
	A.alreadySubscribed = function(E, H, I) {
		var F = E.subscribers.length,
		D, G;
		if (F > 0) {
			G = F - 1;
			do {
				D = E.subscribers[G];
				if (D && D.obj == I && D.fn == H) {
					return true;
				}
			} while ( G --);
		}
		return false;
	};
	YAHOO.lang.augmentProto(A, YAHOO.util.EventProvider);
} ()); (function() {
	YAHOO.widget.Module = function(Q, P) {
		if (Q) {
			this.init(Q, P);
		} else {}
	};
	var F = YAHOO.util.Dom,
	D = YAHOO.util.Config,
	M = YAHOO.util.Event,
	L = YAHOO.util.CustomEvent,
	G = YAHOO.widget.Module,
	H, O, N, E, A = {
		"BEFORE_INIT": "beforeInit",
		"INIT": "init",
		"APPEND": "append",
		"BEFORE_RENDER": "beforeRender",
		"RENDER": "render",
		"CHANGE_HEADER": "changeHeader",
		"CHANGE_BODY": "changeBody",
		"CHANGE_FOOTER": "changeFooter",
		"CHANGE_CONTENT": "changeContent",
		"DESTORY": "destroy",
		"BEFORE_SHOW": "beforeShow",
		"SHOW": "show",
		"BEFORE_HIDE": "beforeHide",
		"HIDE": "hide"
	},
	I = {
		"VISIBLE": {
			key: "visible",
			value: true,
			validator: YAHOO.lang.isBoolean
		},
		"EFFECT": {
			key: "effect",
			suppressEvent: true,
			supercedes: ["visible"]
		},
		"MONITOR_RESIZE": {
			key: "monitorresize",
			value: true
		},
		"APPEND_TO_DOCUMENT_BODY": {
			key: "appendtodocumentbody",
			value: false
		}
	};
	G.IMG_ROOT = null;
	G.IMG_ROOT_SSL = null;
	G.CSS_MODULE = "yui-module";
	G.CSS_HEADER = "hd";
	G.CSS_BODY = "bd";
	G.CSS_FOOTER = "ft";
	G.RESIZE_MONITOR_SECURE_URL = "javascript:false;";
	G.textResizeEvent = new L("textResize");
	function K() {
		if (!H) {
			H = document.createElement("div");
			H.innerHTML = ("<div class=\"" + G.CSS_HEADER + "\"></div><div class=\"" + G.CSS_BODY + "\"></div><div class=\"" + G.CSS_FOOTER + "\"></div>");
			O = H.firstChild;
			N = O.nextSibling;
			E = N.nextSibling;
		}
		return H;
	}
	function J() {
		if (!O) {
			K();
		}
		return (O.cloneNode(false));
	}
	function B() {
		if (!N) {
			K();
		}
		return (N.cloneNode(false));
	}
	function C() {
		if (!E) {
			K();
		}
		return (E.cloneNode(false));
	}
	G.prototype = {
		constructor: G,
		element: null,
		header: null,
		body: null,
		footer: null,
		id: null,
		imageRoot: G.IMG_ROOT,
		initEvents: function() {
			var P = L.LIST;
			this.beforeInitEvent = this.createEvent(A.BEFORE_INIT);
			this.beforeInitEvent.signature = P;
			this.initEvent = this.createEvent(A.INIT);
			this.initEvent.signature = P;
			this.appendEvent = this.createEvent(A.APPEND);
			this.appendEvent.signature = P;
			this.beforeRenderEvent = this.createEvent(A.BEFORE_RENDER);
			this.beforeRenderEvent.signature = P;
			this.renderEvent = this.createEvent(A.RENDER);
			this.renderEvent.signature = P;
			this.changeHeaderEvent = this.createEvent(A.CHANGE_HEADER);
			this.changeHeaderEvent.signature = P;
			this.changeBodyEvent = this.createEvent(A.CHANGE_BODY);
			this.changeBodyEvent.signature = P;
			this.changeFooterEvent = this.createEvent(A.CHANGE_FOOTER);
			this.changeFooterEvent.signature = P;
			this.changeContentEvent = this.createEvent(A.CHANGE_CONTENT);
			this.changeContentEvent.signature = P;
			this.destroyEvent = this.createEvent(A.DESTORY);
			this.destroyEvent.signature = P;
			this.beforeShowEvent = this.createEvent(A.BEFORE_SHOW);
			this.beforeShowEvent.signature = P;
			this.showEvent = this.createEvent(A.SHOW);
			this.showEvent.signature = P;
			this.beforeHideEvent = this.createEvent(A.BEFORE_HIDE);
			this.beforeHideEvent.signature = P;
			this.hideEvent = this.createEvent(A.HIDE);
			this.hideEvent.signature = P;
		},
		platform: function() {
			var P = navigator.userAgent.toLowerCase();
			if (P.indexOf("windows") != -1 || P.indexOf("win32") != -1) {
				return "windows";
			} else {
				if (P.indexOf("macintosh") != -1) {
					return "mac";
				} else {
					return false;
				}
			}
		} (),
		browser: function() {
			var P = navigator.userAgent.toLowerCase();
			if (P.indexOf("opera") != -1) {
				return "opera";
			} else {
				if (P.indexOf("msie 7") != -1) {
					return "ie7";
				} else {
					if (P.indexOf("msie") != -1) {
						return "ie";
					} else {
						if (P.indexOf("safari") != -1) {
							return "safari";
						} else {
							if (P.indexOf("gecko") != -1) {
								return "gecko";
							} else {
								return false;
							}
						}
					}
				}
			}
		} (),
		isSecure: function() {
			if (window.location.href.toLowerCase().indexOf("https") === 0) {
				return true;
			} else {
				return false;
			}
		} (),
		initDefaultConfig: function() {
			this.cfg.addProperty(I.VISIBLE.key, {
				handler: this.configVisible,
				value: I.VISIBLE.value,
				validator: I.VISIBLE.validator
			});
			this.cfg.addProperty(I.EFFECT.key, {
				suppressEvent: I.EFFECT.suppressEvent,
				supercedes: I.EFFECT.supercedes
			});
			this.cfg.addProperty(I.MONITOR_RESIZE.key, {
				handler: this.configMonitorResize,
				value: I.MONITOR_RESIZE.value
			});
			this.cfg.addProperty(I.APPEND_TO_DOCUMENT_BODY.key, {
				value: I.APPEND_TO_DOCUMENT_BODY.value
			});
		},
		init: function(U, T) {
			var R, V;
			this.initEvents();
			this.beforeInitEvent.fire(G);
			this.cfg = new D(this);
			if (this.isSecure) {
				this.imageRoot = G.IMG_ROOT_SSL;
			}
			if (typeof U == "string") {
				R = U;
				U = document.getElementById(U);
				if (!U) {
					U = (K()).cloneNode(false);
					U.id = R;
				}
			}
			this.element = U;
			if (U.id) {
				this.id = U.id;
			}
			V = this.element.firstChild;
			if (V) {
				var Q = false,
				P = false,
				S = false;
				do {
					if (1 == V.nodeType) {
						if (!Q && F.hasClass(V, G.CSS_HEADER)) {
							this.header = V;
							Q = true;
						} else {
							if (!P && F.hasClass(V, G.CSS_BODY)) {
								this.body = V;
								P = true;
							} else {
								if (!S && F.hasClass(V, G.CSS_FOOTER)) {
									this.footer = V;
									S = true;
								}
							}
						}
					}
				} while (( V = V . nextSibling ));
			}
			this.initDefaultConfig();
			F.addClass(this.element, G.CSS_MODULE);
			if (T) {
				this.cfg.applyConfig(T, true);
			}
			if (!D.alreadySubscribed(this.renderEvent, this.cfg.fireQueue, this.cfg)) {
				this.renderEvent.subscribe(this.cfg.fireQueue, this.cfg, true);
			}
			this.initEvent.fire(G);
		},
		initResizeMonitor: function() {
			var P, Q, S;
			function T() {
				G.textResizeEvent.fire();
			}
			if (!YAHOO.env.ua.opera) {
				Q = F.get("_yuiResizeMonitor");
				if (!Q) {
					Q = document.createElement("iframe");
					if (this.isSecure && G.RESIZE_MONITOR_SECURE_URL && YAHOO.env.ua.ie) {
						Q.src = G.RESIZE_MONITOR_SECURE_URL;
					}
					/*
					JPL - CAUSES JS IF HTML VALIDATOR IS INSTALLED IN FF
					if (YAHOO.env.ua.gecko) {
						S = ["<html><head><script ", "type=\"text/javascript\">", "window.onresize=function(){window.parent.", "YAHOO.widget.Module.textResizeEvent.", "fire();}", "</script></head>", "<body></body></html>"].join("");
						Q.src = "data:text/html;charset=utf-8," + encodeURIComponent(S);
					}
					*/
					
					if (YAHOO.env.ua.gecko) {
						Q.src = 'container-min.htm';
					}
					
					Q.id = "_yuiResizeMonitor";
					Q.style.position = "absolute";
					Q.style.visibility = "hidden";
					var R = document.body.firstChild;
					if (R) {
						document.body.insertBefore(Q, R);
					} else {
						document.body.appendChild(Q);
					}
					Q.style.width = "10em";
					Q.style.height = "10em";
					Q.style.top = ( - 1 * Q.offsetHeight) + "px";
					Q.style.left = ( - 1 * Q.offsetWidth) + "px";
					Q.style.borderWidth = "0";
					Q.style.visibility = "visible";
					if (YAHOO.env.ua.webkit) {
						P = Q.contentWindow.document;
						P.open();
						P.close();
					}
				}
				if (Q && Q.contentWindow) {
					G.textResizeEvent.subscribe(this.onDomResize, this, true);
					if (!G.textResizeInitialized) {
						if (!YAHOO.env.ua.gecko) {
							if (!M.on(Q.contentWindow, "resize", T)) {
								M.on(Q, "resize", T);
							}
						}
						G.textResizeInitialized = true;
					}
					this.resizeMonitor = Q;
				}
			}
		},
		onDomResize: function(S, R) {
			var Q = -1 * this.resizeMonitor.offsetWidth,
			P = -1 * this.resizeMonitor.offsetHeight;
			this.resizeMonitor.style.top = P + "px";
			this.resizeMonitor.style.left = Q + "px";
		},
		setHeader: function(Q) {
			var P = this.header || (this.header = J());
			if (typeof Q == "string") {
				P.innerHTML = Q;
			} else {
				P.innerHTML = "";
				P.appendChild(Q);
			}
			this.changeHeaderEvent.fire(Q);
			this.changeContentEvent.fire();
		},
		appendToHeader: function(Q) {
			var P = this.header || (this.header = J());
			P.appendChild(Q);
			this.changeHeaderEvent.fire(Q);
			this.changeContentEvent.fire();
		},
		setBody: function(Q) {
			var P = this.body || (this.body = B());
			if (typeof Q == "string") {
				P.innerHTML = Q;
			} else {
				P.innerHTML = "";
				P.appendChild(Q);
			}
			this.changeBodyEvent.fire(Q);
			this.changeContentEvent.fire();
		},
		appendToBody: function(Q) {
			var P = this.body || (this.body = B());
			P.appendChild(Q);
			this.changeBodyEvent.fire(Q);
			this.changeContentEvent.fire();
		},
		setFooter: function(Q) {
			var P = this.footer || (this.footer = C());
			if (typeof Q == "string") {
				P.innerHTML = Q;
			} else {
				P.innerHTML = "";
				P.appendChild(Q);
			}
			this.changeFooterEvent.fire(Q);
			this.changeContentEvent.fire();
		},
		appendToFooter: function(Q) {
			var P = this.footer || (this.footer = C());
			P.appendChild(Q);
			this.changeFooterEvent.fire(Q);
			this.changeContentEvent.fire();
		},
		render: function(R, P) {
			var S = this,
			T;
			function Q(U) {
				if (typeof U == "string") {
					U = document.getElementById(U);
				}
				if (U) {
					S._addToParent(U, S.element);
					S.appendEvent.fire();
				}
			}
			this.beforeRenderEvent.fire();
			if (!P) {
				P = this.element;
			}
			if (R) {
				Q(R);
			} else {
				if (!F.inDocument(this.element)) {
					return false;
				}
			}
			if (this.header && !F.inDocument(this.header)) {
				T = P.firstChild;
				if (T) {
					P.insertBefore(this.header, T);
				} else {
					P.appendChild(this.header);
				}
			}
			if (this.body && !F.inDocument(this.body)) {
				if (this.footer && F.isAncestor(this.moduleElement, this.footer)) {
					P.insertBefore(this.body, this.footer);
				} else {
					P.appendChild(this.body);
				}
			}
			if (this.footer && !F.inDocument(this.footer)) {
				P.appendChild(this.footer);
			}
			this.renderEvent.fire();
			return true;
		},
		destroy: function() {
			var P, Q;
			if (this.element) {
				M.purgeElement(this.element, true);
				P = this.element.parentNode;
			}
			if (P) {
				P.removeChild(this.element);
			}
			this.element = null;
			this.header = null;
			this.body = null;
			this.footer = null;
			G.textResizeEvent.unsubscribe(this.onDomResize, this);
			this.cfg.destroy();
			this.cfg = null;
			this.destroyEvent.fire();
			for (Q in this) {
				if (Q instanceof L) {
					Q.unsubscribeAll();
				}
			}
		},
		show: function() {
			this.cfg.setProperty("visible", true);
		},
		hide: function() {
			this.cfg.setProperty("visible", false);
		},
		configVisible: function(Q, P, R) {
			var S = P[0];
			if (S) {
				this.beforeShowEvent.fire();
				F.setStyle(this.element, "display", "block");
				this.showEvent.fire();
			} else {
				this.beforeHideEvent.fire();
				F.setStyle(this.element, "display", "none");
				this.hideEvent.fire();
			}
		},
		configMonitorResize: function(R, Q, S) {
			var P = Q[0];
			if (P) {
				this.initResizeMonitor();
			} else {
				G.textResizeEvent.unsubscribe(this.onDomResize, this, true);
				this.resizeMonitor = null;
			}
		},
		_addToParent: function(P, Q) {
			if (!this.cfg.getProperty("appendtodocumentbody") && P === document.body && P.firstChild) {
				P.insertBefore(Q, P.firstChild);
			} else {
				P.appendChild(Q);
			}
		},
		toString: function() {
			return "Module " + this.id;
		}
	};
	YAHOO.lang.augmentProto(G, YAHOO.util.EventProvider);
} ()); (function() {
	YAHOO.widget.Overlay = function(L, K) {
		YAHOO.widget.Overlay.superclass.constructor.call(this, L, K);
	};
	var F = YAHOO.lang,
	I = YAHOO.util.CustomEvent,
	E = YAHOO.widget.Module,
	J = YAHOO.util.Event,
	D = YAHOO.util.Dom,
	C = YAHOO.util.Config,
	B = YAHOO.widget.Overlay,
	G, A = {
		"BEFORE_MOVE": "beforeMove",
		"MOVE": "move"
	},
	H = {
		"X": {
			key: "x",
			validator: F.isNumber,
			suppressEvent: true,
			supercedes: ["iframe"]
		},
		"Y": {
			key: "y",
			validator: F.isNumber,
			suppressEvent: true,
			supercedes: ["iframe"]
		},
		"XY": {
			key: "xy",
			suppressEvent: true,
			supercedes: ["iframe"]
		},
		"CONTEXT": {
			key: "context",
			suppressEvent: true,
			supercedes: ["iframe"]
		},
		"FIXED_CENTER": {
			key: "fixedcenter",
			value: false,
			validator: F.isBoolean,
			supercedes: ["iframe", "visible"]
		},
		"WIDTH": {
			key: "width",
			suppressEvent: true,
			supercedes: ["context", "fixedcenter", "iframe"]
		},
		"HEIGHT": {
			key: "height",
			suppressEvent: true,
			supercedes: ["context", "fixedcenter", "iframe"]
		},
		"ZINDEX": {
			key: "zindex",
			value: null
		},
		"CONSTRAIN_TO_VIEWPORT": {
			key: "constraintoviewport",
			value: false,
			validator: F.isBoolean,
			supercedes: ["iframe", "x", "y", "xy"]
		},
		"IFRAME": {
			key: "iframe",
			value: (YAHOO.env.ua.ie == 6 ? true: false),
			validator: F.isBoolean,
			supercedes: ["zindex"]
		}
	};
	B.IFRAME_SRC = "javascript:false;";
	B.IFRAME_OFFSET = 3;
	B.VIEWPORT_OFFSET = 10;
	B.TOP_LEFT = "tl";
	B.TOP_RIGHT = "tr";
	B.BOTTOM_LEFT = "bl";
	B.BOTTOM_RIGHT = "br";
	B.CSS_OVERLAY = "yui-overlay";
	B.windowScrollEvent = new I("windowScroll");
	B.windowResizeEvent = new I("windowResize");
	B.windowScrollHandler = function(K) {
		if (YAHOO.env.ua.ie) {
			if (!window.scrollEnd) {
				window.scrollEnd = -1;
			}
			clearTimeout(window.scrollEnd);
			window.scrollEnd = setTimeout(function() {
				B.windowScrollEvent.fire();
			},
			1);
		} else {
			B.windowScrollEvent.fire();
		}
	};
	B.windowResizeHandler = function(K) {
		if (YAHOO.env.ua.ie) {
			if (!window.resizeEnd) {
				window.resizeEnd = -1;
			}
			clearTimeout(window.resizeEnd);
			window.resizeEnd = setTimeout(function() {
				B.windowResizeEvent.fire();
			},
			100);
		} else {
			B.windowResizeEvent.fire();
		}
	};
	B._initialized = null;
	if (B._initialized === null) {
		J.on(window, "scroll", B.windowScrollHandler);
		J.on(window, "resize", B.windowResizeHandler);
		B._initialized = true;
	}
	YAHOO.extend(B, E, {
		init: function(L, K) {
			B.superclass.init.call(this, L);
			this.beforeInitEvent.fire(B);
			D.addClass(this.element, B.CSS_OVERLAY);
			if (K) {
				this.cfg.applyConfig(K, true);
			}
			if (this.platform == "mac" && YAHOO.env.ua.gecko) {
				if (!C.alreadySubscribed(this.showEvent, this.showMacGeckoScrollbars, this)) {
					this.showEvent.subscribe(this.showMacGeckoScrollbars, this, true);
				}
				if (!C.alreadySubscribed(this.hideEvent, this.hideMacGeckoScrollbars, this)) {
					this.hideEvent.subscribe(this.hideMacGeckoScrollbars, this, true);
				}
			}
			this.initEvent.fire(B);
		},
		initEvents: function() {
			B.superclass.initEvents.call(this);
			var K = I.LIST;
			this.beforeMoveEvent = this.createEvent(A.BEFORE_MOVE);
			this.beforeMoveEvent.signature = K;
			this.moveEvent = this.createEvent(A.MOVE);
			this.moveEvent.signature = K;
		},
		initDefaultConfig: function() {
			B.superclass.initDefaultConfig.call(this);
			this.cfg.addProperty(H.X.key, {
				handler: this.configX,
				validator: H.X.validator,
				suppressEvent: H.X.suppressEvent,
				supercedes: H.X.supercedes
			});
			this.cfg.addProperty(H.Y.key, {
				handler: this.configY,
				validator: H.Y.validator,
				suppressEvent: H.Y.suppressEvent,
				supercedes: H.Y.supercedes
			});
			this.cfg.addProperty(H.XY.key, {
				handler: this.configXY,
				suppressEvent: H.XY.suppressEvent,
				supercedes: H.XY.supercedes
			});
			this.cfg.addProperty(H.CONTEXT.key, {
				handler: this.configContext,
				suppressEvent: H.CONTEXT.suppressEvent,
				supercedes: H.CONTEXT.supercedes
			});
			this.cfg.addProperty(H.FIXED_CENTER.key, {
				handler: this.configFixedCenter,
				value: H.FIXED_CENTER.value,
				validator: H.FIXED_CENTER.validator,
				supercedes: H.FIXED_CENTER.supercedes
			});
			this.cfg.addProperty(H.WIDTH.key, {
				handler: this.configWidth,
				suppressEvent: H.WIDTH.suppressEvent,
				supercedes: H.WIDTH.supercedes
			});
			this.cfg.addProperty(H.HEIGHT.key, {
				handler: this.configHeight,
				suppressEvent: H.HEIGHT.suppressEvent,
				supercedes: H.HEIGHT.supercedes
			});
			this.cfg.addProperty(H.ZINDEX.key, {
				handler: this.configzIndex,
				value: H.ZINDEX.value
			});
			this.cfg.addProperty(H.CONSTRAIN_TO_VIEWPORT.key, {
				handler: this.configConstrainToViewport,
				value: H.CONSTRAIN_TO_VIEWPORT.value,
				validator: H.CONSTRAIN_TO_VIEWPORT.validator,
				supercedes: H.CONSTRAIN_TO_VIEWPORT.supercedes
			});
			this.cfg.addProperty(H.IFRAME.key, {
				handler: this.configIframe,
				value: H.IFRAME.value,
				validator: H.IFRAME.validator,
				supercedes: H.IFRAME.supercedes
			});
		},
		moveTo: function(K, L) {
			this.cfg.setProperty("xy", [K, L]);
		},
		hideMacGeckoScrollbars: function() {
			D.removeClass(this.element, "show-scrollbars");
			D.addClass(this.element, "hide-scrollbars");
		},
		showMacGeckoScrollbars: function() {
			D.removeClass(this.element, "hide-scrollbars");
			D.addClass(this.element, "show-scrollbars");
		},
		configVisible: function(N, K, T) {
			var M = K[0],
			O = D.getStyle(this.element, "visibility"),
			U = this.cfg.getProperty("effect"),
			R = [],
			Q = (this.platform == "mac" && YAHOO.env.ua.gecko),
			b = C.alreadySubscribed,
			S,
			L,
			a,
			Y,
			X,
			W,
			Z,
			V,
			P;
			if (O == "inherit") {
				a = this.element.parentNode;
				while (a.nodeType != 9 && a.nodeType != 11) {
					O = D.getStyle(a, "visibility");
					if (O != "inherit") {
						break;
					}
					a = a.parentNode;
				}
				if (O == "inherit") {
					O = "visible";
				}
			}
			if (U) {
				if (U instanceof Array) {
					V = U.length;
					for (Y = 0; Y < V; Y++) {
						S = U[Y];
						R[R.length] = S.effect(this, S.duration);
					}
				} else {
					R[R.length] = U.effect(this, U.duration);
				}
			}
			if (M) {
				if (Q) {
					this.showMacGeckoScrollbars();
				}
				if (U) {
					if (M) {
						if (O != "visible" || O === "") {
							this.beforeShowEvent.fire();
							P = R.length;
							for (X = 0; X < P; X++) {
								L = R[X];
								if (X === 0 && !b(L.animateInCompleteEvent, this.showEvent.fire, this.showEvent)) {
									L.animateInCompleteEvent.subscribe(this.showEvent.fire, this.showEvent, true);
								}
								L.animateIn();
							}
						}
					}
				} else {
					if (O != "visible" || O === "") {
						this.beforeShowEvent.fire();
						D.setStyle(this.element, "visibility", "visible");
						this.cfg.refireEvent("iframe");
						this.showEvent.fire();
					}
				}
			} else {
				if (Q) {
					this.hideMacGeckoScrollbars();
				}
				if (U) {
					if (O == "visible") {
						this.beforeHideEvent.fire();
						P = R.length;
						for (W = 0; W < P; W++) {
							Z = R[W];
							if (W === 0 && !b(Z.animateOutCompleteEvent, this.hideEvent.fire, this.hideEvent)) {
								Z.animateOutCompleteEvent.subscribe(this.hideEvent.fire, this.hideEvent, true);
							}
							Z.animateOut();
						}
					} else {
						if (O === "") {
							D.setStyle(this.element, "visibility", "hidden");
						}
					}
				} else {
					if (O == "visible" || O === "") {
						this.beforeHideEvent.fire();
						D.setStyle(this.element, "visibility", "hidden");
						this.hideEvent.fire();
					}
				}
			}
		},
		doCenterOnDOMEvent: function() {
			if (this.cfg.getProperty("visible")) {
				this.center();
			}
		},
		configFixedCenter: function(O, M, P) {
			var Q = M[0],
			L = C.alreadySubscribed,
			N = B.windowResizeEvent,
			K = B.windowScrollEvent;
			if (Q) {
				this.center();
				if (!L(this.beforeShowEvent, this.center, this)) {
					this.beforeShowEvent.subscribe(this.center);
				}
				if (!L(N, this.doCenterOnDOMEvent, this)) {
					N.subscribe(this.doCenterOnDOMEvent, this, true);
				}
				if (!L(K, this.doCenterOnDOMEvent, this)) {
					K.subscribe(this.doCenterOnDOMEvent, this, true);
				}
			} else {
				this.beforeShowEvent.unsubscribe(this.center);
				N.unsubscribe(this.doCenterOnDOMEvent, this);
				K.unsubscribe(this.doCenterOnDOMEvent, this);
			}
		},
		configHeight: function(N, L, O) {
			var K = L[0],
			M = this.element;
			D.setStyle(M, "height", K);
			this.cfg.refireEvent("iframe");
		},
		configWidth: function(N, K, O) {
			var M = K[0],
			L = this.element;
			D.setStyle(L, "width", M);
			this.cfg.refireEvent("iframe");
		},
		configzIndex: function(M, K, N) {
			var O = K[0],
			L = this.element;
			if (!O) {
				O = D.getStyle(L, "zIndex");
				if (!O || isNaN(O)) {
					O = 0;
				}
			}
			if (this.iframe || this.cfg.getProperty("iframe") === true) {
				if (O <= 0) {
					O = 1;
				}
			}
			D.setStyle(L, "zIndex", O);
			this.cfg.setProperty("zIndex", O, true);
			if (this.iframe) {
				this.stackIframe();
			}
		},
		configXY: function(M, L, N) {
			var P = L[0],
			K = P[0],
			O = P[1];
			this.cfg.setProperty("x", K);
			this.cfg.setProperty("y", O);
			this.beforeMoveEvent.fire([K, O]);
			K = this.cfg.getProperty("x");
			O = this.cfg.getProperty("y");
			this.cfg.refireEvent("iframe");
			this.moveEvent.fire([K, O]);
		},
		configX: function(M, L, N) {
			var K = L[0],
			O = this.cfg.getProperty("y");
			this.cfg.setProperty("x", K, true);
			this.cfg.setProperty("y", O, true);
			this.beforeMoveEvent.fire([K, O]);
			K = this.cfg.getProperty("x");
			O = this.cfg.getProperty("y");
			D.setX(this.element, K, true);
			this.cfg.setProperty("xy", [K, O], true);
			this.cfg.refireEvent("iframe");
			this.moveEvent.fire([K, O]);
		},
		configY: function(M, L, N) {
			var K = this.cfg.getProperty("x"),
			O = L[0];
			this.cfg.setProperty("x", K, true);
			this.cfg.setProperty("y", O, true);
			this.beforeMoveEvent.fire([K, O]);
			K = this.cfg.getProperty("x");
			O = this.cfg.getProperty("y");
			D.setY(this.element, O, true);
			this.cfg.setProperty("xy", [K, O], true);
			this.cfg.refireEvent("iframe");
			this.moveEvent.fire([K, O]);
		},
		showIframe: function() {
			var L = this.iframe,
			K;
			if (L) {
				K = this.element.parentNode;
				if (K != L.parentNode) {
					this._addToParent(K, L);
				}
				L.style.display = "block";
			}
		},
		hideIframe: function() {
			if (this.iframe) {
				this.iframe.style.display = "none";
			}
		},
		syncIframe: function() {
			var K = this.iframe,
			M = this.element,
			O = B.IFRAME_OFFSET,
			L = (O * 2),
			N;
			if (K) {
				K.style.width = (M.offsetWidth + L + "px");
				K.style.height = (M.offsetHeight + L + "px");
				N = this.cfg.getProperty("xy");
				if (!F.isArray(N) || (isNaN(N[0]) || isNaN(N[1]))) {
					this.syncPosition();
					N = this.cfg.getProperty("xy");
				}
				D.setXY(K, [(N[0] - O), (N[1] - O)]);
			}
		},
		stackIframe: function() {
			if (this.iframe) {
				var K = D.getStyle(this.element, "zIndex");
				if (!YAHOO.lang.isUndefined(K) && !isNaN(K)) {
					D.setStyle(this.iframe, "zIndex", (K - 1));
				}
			}
		},
		configIframe: function(N, M, O) {
			var K = M[0];
			function P() {
				var R = this.iframe,
				S = this.element,
				T;
				if (!R) {
					if (!G) {
						G = document.createElement("iframe");
						if (this.isSecure) {
							G.src = B.IFRAME_SRC;
						}
						if (YAHOO.env.ua.ie) {
							G.style.filter = "alpha(opacity=0)";
							G.frameBorder = 0;
						} else {
							G.style.opacity = "0";
						}
						G.style.position = "absolute";
						G.style.border = "none";
						G.style.margin = "0";
						G.style.padding = "0";
						G.style.display = "none";
					}
					R = G.cloneNode(false);
					T = S.parentNode;
					var Q = T || document.body;
					this._addToParent(Q, R);
					this.iframe = R;
				}
				this.showIframe();
				this.syncIframe();
				this.stackIframe();
				if (!this._hasIframeEventListeners) {
					this.showEvent.subscribe(this.showIframe);
					this.hideEvent.subscribe(this.hideIframe);
					this.changeContentEvent.subscribe(this.syncIframe);
					this._hasIframeEventListeners = true;
				}
			}
			function L() {
				P.call(this);
				this.beforeShowEvent.unsubscribe(L);
				this._iframeDeferred = false;
			}
			if (K) {
				if (this.cfg.getProperty("visible")) {
					P.call(this);
				} else {
					if (!this._iframeDeferred) {
						this.beforeShowEvent.subscribe(L);
						this._iframeDeferred = true;
					}
				}
			} else {
				this.hideIframe();
				if (this._hasIframeEventListeners) {
					this.showEvent.unsubscribe(this.showIframe);
					this.hideEvent.unsubscribe(this.hideIframe);
					this.changeContentEvent.unsubscribe(this.syncIframe);
					this._hasIframeEventListeners = false;
				}
			}
		},
		configConstrainToViewport: function(M, K, N) {
			function L() {
				if (YAHOO.lang.isUndefined(this.cfg.getProperty("xy"))) {
					this.syncPosition();
				}
				var P = this.cfg.getProperty("x");
				var R = this.cfg.getProperty("y");
				var Q = this.getConstrainedXY(P, R);
				if (Q[0] !== P || Q[1] !== R) {
					this.moveTo(Q[0], Q[1]);
				}
			}
			var O = K[0];
			if (O) {
				if (!C.alreadySubscribed(this.beforeMoveEvent, this.enforceConstraints, this)) {
					this.beforeMoveEvent.subscribe(this.enforceConstraints, this, true);
				}
				if (!C.alreadySubscribed(this.beforeShowEvent, L)) {
					this.beforeShowEvent.subscribe(L);
				}
			} else {
				this.beforeShowEvent.unsubscribe(L);
				this.beforeMoveEvent.unsubscribe(this.enforceConstraints, this);
			}
		},
		configContext: function(M, L, O) {
			var Q = L[0],
			N,
			P,
			K;
			if (Q) {
				N = Q[0];
				P = Q[1];
				K = Q[2];
				if (N) {
					if (typeof N == "string") {
						this.cfg.setProperty("context", [document.getElementById(N), P, K], true);
					}
					if (P && K) {
						this.align(P, K);
					}
				}
			}
		},
		align: function(L, K) {
			var Q = this.cfg.getProperty("context"),
			P = this,
			O,
			N,
			R;
			function M(S, T) {
				switch (L) {
				case B.TOP_LEFT:
					P.moveTo(T, S);
					break;
				case B.TOP_RIGHT:
					P.moveTo((T - N.offsetWidth), S);
					break;
				case B.BOTTOM_LEFT:
					P.moveTo(T, (S - N.offsetHeight));
					break;
				case B.BOTTOM_RIGHT:
					P.moveTo((T - N.offsetWidth), (S - N.offsetHeight));
					break;
				}
			}
			if (Q) {
				O = Q[0];
				N = this.element;
				P = this;
				if (!L) {
					L = Q[1];
				}
				if (!K) {
					K = Q[2];
				}
				if (N && O) {
					R = D.getRegion(O);
					switch (K) {
					case B.TOP_LEFT:
						M(R.top, R.left);
						break;
					case B.TOP_RIGHT:
						M(R.top, R.right);
						break;
					case B.BOTTOM_LEFT:
						M(R.bottom, R.left);
						break;
					case B.BOTTOM_RIGHT:
						M(R.bottom, R.right);
						break;
					}
				}
			}
		},
		enforceConstraints: function(L, K, M) {
			var O = K[0];
			var N = this.getConstrainedXY(O[0], O[1]);
			this.cfg.setProperty("x", N[0], true);
			this.cfg.setProperty("y", N[1], true);
			this.cfg.setProperty("xy", N, true);
		},
		getConstrainedXY: function(V, T) {
			var N = B.VIEWPORT_OFFSET,
			U = D.getViewportWidth(),
			Q = D.getViewportHeight(),
			M = this.element.offsetHeight,
			S = this.element.offsetWidth,
			Y = D.getDocumentScrollLeft(),
			W = D.getDocumentScrollTop();
			var P = V;
			var L = T;
			if (S + N < U) {
				var R = Y + N;
				var X = Y + U - S - N;
				if (V < R) {
					P = R;
				} else {
					if (V > X) {
						P = X;
					}
				}
			} else {
				P = N + Y;
			}
			if (M + N < Q) {
				var O = W + N;
				var K = W + Q - M - N;
				if (T < O) {
					L = O;
				} else {
					if (T > K) {
						L = K;
					}
				}
			} else {
				L = N + W;
			}
			return [P, L];
		},
		center: function() {
			var N = B.VIEWPORT_OFFSET,
			O = this.element.offsetWidth,
			M = this.element.offsetHeight,
			L = D.getViewportWidth(),
			P = D.getViewportHeight(),
			K,
			Q;
			if (O < L) {
				K = (L / 2) - (O / 2) + D.getDocumentScrollLeft();
			} else {
				K = N + D.getDocumentScrollLeft();
			}
			if (M < P) {
				Q = (P / 2) - (M / 2) + D.getDocumentScrollTop();
			} else {
				Q = N + D.getDocumentScrollTop();
			}
			this.cfg.setProperty("xy", [parseInt(K, 10), parseInt(Q, 10)]);
			this.cfg.refireEvent("iframe");
		},
		syncPosition: function() {
			var K = D.getXY(this.element);
			this.cfg.setProperty("x", K[0], true);
			this.cfg.setProperty("y", K[1], true);
			this.cfg.setProperty("xy", K, true);
		},
		onDomResize: function(M, L) {
			var K = this;
			B.superclass.onDomResize.call(this, M, L);
			setTimeout(function() {
				K.syncPosition();
				K.cfg.refireEvent("iframe");
				K.cfg.refireEvent("context");
			},
			0);
		},
		bringToTop: function() {
			var O = [],
			N = this.element;
			function R(V, U) {
				var X = D.getStyle(V, "zIndex"),
				W = D.getStyle(U, "zIndex"),
				T = (!X || isNaN(X)) ? 0 : parseInt(X, 10),
				S = (!W || isNaN(W)) ? 0 : parseInt(W, 10);
				if (T > S) {
					return - 1;
				} else {
					if (T < S) {
						return 1;
					} else {
						return 0;
					}
				}
			}
			function M(U) {
				var S = D.hasClass(U, B.CSS_OVERLAY),
				T = YAHOO.widget.Panel;
				if (S && !D.isAncestor(N, S)) {
					if (T && D.hasClass(U, T.CSS_PANEL)) {
						O[O.length] = U.parentNode;
					} else {
						O[O.length] = U;
					}
				}
			}
			D.getElementsBy(M, "DIV", document.body);
			O.sort(R);
			var K = O[0],
			Q;
			if (K) {
				Q = D.getStyle(K, "zIndex");
				if (!isNaN(Q)) {
					var P = false;
					if (K != N) {
						P = true;
					} else {
						if (O.length > 1) {
							var L = D.getStyle(O[1], "zIndex");
							if (!isNaN(L) && (Q == L)) {
								P = true;
							}
						}
					}
					if (P) {
						this.cfg.setProperty("zindex", (parseInt(Q, 10) + 2));
					}
				}
			}
		},
		destroy: function() {
			if (this.iframe) {
				this.iframe.parentNode.removeChild(this.iframe);
			}
			this.iframe = null;
			B.windowResizeEvent.unsubscribe(this.doCenterOnDOMEvent, this);
			B.windowScrollEvent.unsubscribe(this.doCenterOnDOMEvent, this);
			B.superclass.destroy.call(this);
		},
		toString: function() {
			return "Overlay " + this.id;
		}
	});
} ()); (function() {
	YAHOO.widget.OverlayManager = function(G) {
		this.init(G);
	};
	var D = YAHOO.widget.Overlay,
	C = YAHOO.util.Event,
	E = YAHOO.util.Dom,
	B = YAHOO.util.Config,
	F = YAHOO.util.CustomEvent,
	A = YAHOO.widget.OverlayManager;
	A.CSS_FOCUSED = "focused";
	A.prototype = {
		constructor: A,
		overlays: null,
		initDefaultConfig: function() {
			this.cfg.addProperty("overlays", {
				suppressEvent: true
			});
			this.cfg.addProperty("focusevent", {
				value: "mousedown"
			});
		},
		init: function(I) {
			this.cfg = new B(this);
			this.initDefaultConfig();
			if (I) {
				this.cfg.applyConfig(I, true);
			}
			this.cfg.fireQueue();
			var H = null;
			this.getActive = function() {
				return H;
			};
			this.focus = function(J) {
				var K = this.find(J);
				if (K) {
					if (H != K) {
						if (H) {
							H.blur();
						}
						this.bringToTop(K);
						H = K;
						E.addClass(H.element, A.CSS_FOCUSED);
						K.focusEvent.fire();
					}
				}
			};
			this.remove = function(K) {
				var M = this.find(K),
				J;
				if (M) {
					if (H == M) {
						H = null;
					}
					var L = (M.element === null && M.cfg === null) ? true: false;
					if (!L) {
						J = E.getStyle(M.element, "zIndex");
						M.cfg.setProperty("zIndex", -1000, true);
					}
					this.overlays.sort(this.compareZIndexDesc);
					this.overlays = this.overlays.slice(0, (this.overlays.length - 1));
					M.hideEvent.unsubscribe(M.blur);
					M.destroyEvent.unsubscribe(this._onOverlayDestroy, M);
					if (!L) {
						C.removeListener(M.element, this.cfg.getProperty("focusevent"), this._onOverlayElementFocus);
						M.cfg.setProperty("zIndex", J, true);
						M.cfg.setProperty("manager", null);
					}
					M.focusEvent.unsubscribeAll();
					M.blurEvent.unsubscribeAll();
					M.focusEvent = null;
					M.blurEvent = null;
					M.focus = null;
					M.blur = null;
				}
			};
			this.blurAll = function() {
				var K = this.overlays.length,
				J;
				if (K > 0) {
					J = K - 1;
					do {
						this.overlays[J].blur();
					} while ( J --);
				}
			};
			this._onOverlayBlur = function(K, J) {
				H = null;
			};
			var G = this.cfg.getProperty("overlays");
			if (!this.overlays) {
				this.overlays = [];
			}
			if (G) {
				this.register(G);
				this.overlays.sort(this.compareZIndexDesc);
			}
		},
		_onOverlayElementFocus: function(I) {
			var G = C.getTarget(I),
			H = this.close;
			if (H && (G == H || E.isAncestor(H, G))) {
				this.blur();
			} else {
				this.focus();
			}
		},
		_onOverlayDestroy: function(H, G, I) {
			this.remove(I);
		},
		register: function(G) {
			var K = this,
			L, I, H, J;
			if (G instanceof D) {
				G.cfg.addProperty("manager", {
					value: this
				});
				G.focusEvent = G.createEvent("focus");
				G.focusEvent.signature = F.LIST;
				G.blurEvent = G.createEvent("blur");
				G.blurEvent.signature = F.LIST;
				G.focus = function() {
					K.focus(this);
				};
				G.blur = function() {
					if (K.getActive() == this) {
						E.removeClass(this.element, A.CSS_FOCUSED);
						this.blurEvent.fire();
					}
				};
				G.blurEvent.subscribe(K._onOverlayBlur);
				G.hideEvent.subscribe(G.blur);
				G.destroyEvent.subscribe(this._onOverlayDestroy, G, this);
				C.on(G.element, this.cfg.getProperty("focusevent"), this._onOverlayElementFocus, null, G);
				L = E.getStyle(G.element, "zIndex");
				if (!isNaN(L)) {
					G.cfg.setProperty("zIndex", parseInt(L, 10));
				} else {
					G.cfg.setProperty("zIndex", 0);
				}
				this.overlays.push(G);
				this.bringToTop(G);
				return true;
			} else {
				if (G instanceof Array) {
					I = 0;
					J = G.length;
					for (H = 0; H < J; H++) {
						if (this.register(G[H])) {
							I++;
						}
					}
					if (I > 0) {
						return true;
					}
				} else {
					return false;
				}
			}
		},
		bringToTop: function(M) {
			var I = this.find(M),
			L,
			G,
			J;
			if (I) {
				J = this.overlays;
				J.sort(this.compareZIndexDesc);
				G = J[0];
				if (G) {
					L = E.getStyle(G.element, "zIndex");
					if (!isNaN(L)) {
						var K = false;
						if (G !== I) {
							K = true;
						} else {
							if (J.length > 1) {
								var H = E.getStyle(J[1].element, "zIndex");
								if (!isNaN(H) && (L == H)) {
									K = true;
								}
							}
						}
						if (K) {
							I.cfg.setProperty("zindex", (parseInt(L, 10) + 2));
						}
					}
					J.sort(this.compareZIndexDesc);
				}
			}
		},
		find: function(G) {
			var I = this.overlays,
			J = I.length,
			H;
			if (J > 0) {
				H = J - 1;
				if (G instanceof D) {
					do {
						if (I[H] == G) {
							return I[H];
						}
					} while ( H --);
				} else {
					if (typeof G == "string") {
						do {
							if (I[H].id == G) {
								return I[H];
							}
						} while ( H --);
					}
				}
				return null;
			}
		},
		compareZIndexDesc: function(J, I) {
			var H = (J.cfg) ? J.cfg.getProperty("zIndex") : null,
			G = (I.cfg) ? I.cfg.getProperty("zIndex") : null;
			if (H === null && G === null) {
				return 0;
			} else {
				if (H === null) {
					return 1;
				} else {
					if (G === null) {
						return - 1;
					} else {
						if (H > G) {
							return - 1;
						} else {
							if (H < G) {
								return 1;
							} else {
								return 0;
							}
						}
					}
				}
			}
		},
		showAll: function() {
			var H = this.overlays,
			I = H.length,
			G;
			if (I > 0) {
				G = I - 1;
				do {
					H[G].show();
				} while ( G --);
			}
		},
		hideAll: function() {
			var H = this.overlays,
			I = H.length,
			G;
			if (I > 0) {
				G = I - 1;
				do {
					H[G].hide();
				} while ( G --);
			}
		},
		toString: function() {
			return "OverlayManager";
		}
	};
} ()); (function() {
	YAHOO.widget.Tooltip = function(L, K) {
		YAHOO.widget.Tooltip.superclass.constructor.call(this, L, K);
	};
	var D = YAHOO.lang,
	J = YAHOO.util.Event,
	B = YAHOO.util.Dom,
	F = YAHOO.widget.Tooltip,
	E, G = {
		"PREVENT_OVERLAP": {
			key: "preventoverlap",
			value: true,
			validator: D.isBoolean,
			supercedes: ["x", "y", "xy"]
		},
		"SHOW_DELAY": {
			key: "showdelay",
			value: 200,
			validator: D.isNumber
		},
		"AUTO_DISMISS_DELAY": {
			key: "autodismissdelay",
			value: 5000,
			validator: D.isNumber
		},
		"HIDE_DELAY": {
			key: "hidedelay",
			value: 250,
			validator: D.isNumber
		},
		"TEXT": {
			key: "text",
			suppressEvent: true
		},
		"CONTAINER": {
			key: "container"
		}
	};
	F.CSS_TOOLTIP = "yui-tt";
	function H(L, K, M) {
		var P = M[0],
		N = M[1],
		O = this.cfg,
		Q = O.getProperty("width");
		if (Q == N) {
			O.setProperty("width", P);
		}
		this.unsubscribe("hide", this._onHide, M);
	}
	function C(L, K) {
		var M = document.body,
		Q = this.cfg,
		P = Q.getProperty("width"),
		N,
		O;
		if ((!P || P == "auto") && (Q.getProperty("container") != M || Q.getProperty("x") >= B.getViewportWidth() || Q.getProperty("y") >= B.getViewportHeight())) {
			O = this.element.cloneNode(true);
			O.style.visibility = "hidden";
			O.style.top = "0px";
			O.style.left = "0px";
			M.appendChild(O);
			N = (O.offsetWidth + "px");
			M.removeChild(O);
			O = null;
			Q.setProperty("width", N);
			Q.refireEvent("xy");
			this.subscribe("hide", H, [(P || ""), N]);
		}
	}
	function A(L, K, M) {
		this.render(M);
	}
	function I() {
		J.onDOMReady(A, this.cfg.getProperty("container"), this);
	}
	YAHOO.extend(F, YAHOO.widget.Overlay, {
		init: function(L, K) {
			F.superclass.init.call(this, L);
			this.beforeInitEvent.fire(F);
			B.addClass(this.element, F.CSS_TOOLTIP);
			if (K) {
				this.cfg.applyConfig(K, true);
			}
			this.cfg.queueProperty("visible", false);
			this.cfg.queueProperty("constraintoviewport", true);
			this.setBody("");
			this.subscribe("beforeShow", C);
			this.subscribe("init", I);
			this.subscribe("render", this.onRender);
			this.initEvent.fire(F);
		},
		initDefaultConfig: function() {
			F.superclass.initDefaultConfig.call(this);
			this.cfg.addProperty(G.PREVENT_OVERLAP.key, {
				value: G.PREVENT_OVERLAP.value,
				validator: G.PREVENT_OVERLAP.validator,
				supercedes: G.PREVENT_OVERLAP.supercedes
			});
			this.cfg.addProperty(G.SHOW_DELAY.key, {
				handler: this.configShowDelay,
				value: 200,
				validator: G.SHOW_DELAY.validator
			});
			this.cfg.addProperty(G.AUTO_DISMISS_DELAY.key, {
				handler: this.configAutoDismissDelay,
				value: G.AUTO_DISMISS_DELAY.value,
				validator: G.AUTO_DISMISS_DELAY.validator
			});
			this.cfg.addProperty(G.HIDE_DELAY.key, {
				handler: this.configHideDelay,
				value: G.HIDE_DELAY.value,
				validator: G.HIDE_DELAY.validator
			});
			this.cfg.addProperty(G.TEXT.key, {
				handler: this.configText,
				suppressEvent: G.TEXT.suppressEvent
			});
			this.cfg.addProperty(G.CONTAINER.key, {
				handler: this.configContainer,
				value: document.body
			});
		},
		configText: function(L, K, M) {
			var N = K[0];
			if (N) {
				this.setBody(N);
			}
		},
		configContainer: function(M, L, N) {
			var K = L[0];
			if (typeof K == "string") {
				this.cfg.setProperty("container", document.getElementById(K), true);
			}
		},
		_removeEventListeners: function() {
			var N = this._context,
			K, M, L;
			if (N) {
				K = N.length;
				if (K > 0) {
					L = K - 1;
					do {
						M = N[L];
						J.removeListener(M, "mouseover", this.onContextMouseOver);
						J.removeListener(M, "mousemove", this.onContextMouseMove);
						J.removeListener(M, "mouseout", this.onContextMouseOut);
					} while ( L --);
				}
			}
		},
		configContext: function(P, L, Q) {
			var O = L[0],
			R,
			K,
			N,
			M;
			if (O) {
				if (! (O instanceof Array)) {
					if (typeof O == "string") {
						this.cfg.setProperty("context", [document.getElementById(O)], true);
					} else {
						this.cfg.setProperty("context", [O], true);
					}
					O = this.cfg.getProperty("context");
				}
				this._removeEventListeners();
				this._context = O;
				R = this._context;
				if (R) {
					K = R.length;
					if (K > 0) {
						M = K - 1;
						do {
							N = R[M];
							J.on(N, "mouseover", this.onContextMouseOver, this);
							J.on(N, "mousemove", this.onContextMouseMove, this);
							J.on(N, "mouseout", this.onContextMouseOut, this);
						} while ( M --);
					}
				}
			}
		},
		onContextMouseMove: function(L, K) {
			K.pageX = J.getPageX(L);
			K.pageY = J.getPageY(L);
		},
		onContextMouseOver: function(M, L) {
			var K = this;
			if (L.hideProcId) {
				clearTimeout(L.hideProcId);
				L.hideProcId = null;
			}
			J.on(K, "mousemove", L.onContextMouseMove, L);
			if (K.title) {
				L._tempTitle = K.title;
				K.title = "";
			}
			L.showProcId = L.doShow(M, K);
		},
		onContextMouseOut: function(M, L) {
			var K = this;
			if (L._tempTitle) {
				K.title = L._tempTitle;
				L._tempTitle = null;
			}
			if (L.showProcId) {
				clearTimeout(L.showProcId);
				L.showProcId = null;
			}
			if (L.hideProcId) {
				clearTimeout(L.hideProcId);
				L.hideProcId = null;
			}
			L.hideProcId = setTimeout(function() {
				L.hide();
			},
			L.cfg.getProperty("hidedelay"));
		},
		doShow: function(M, K) {
			var N = 25,
			L = this;
			if (YAHOO.env.ua.opera && K.tagName && K.tagName.toUpperCase() == "A") {
				N += 12;
			}
			return setTimeout(function() {
				var O = L.cfg.getProperty("text");
				if (L._tempTitle && (O === "" || YAHOO.lang.isUndefined(O) || YAHOO.lang.isNull(O))) {
					L.setBody(L._tempTitle);
				} else {
					L.cfg.refireEvent("text");
				}
				L.moveTo(L.pageX, L.pageY + N);
				if (L.cfg.getProperty("preventoverlap")) {
					L.preventOverlap(L.pageX, L.pageY);
				}
				J.removeListener(K, "mousemove", L.onContextMouseMove);
				L.show();
				L.hideProcId = L.doHide();
			},
			this.cfg.getProperty("showdelay"));
		},
		doHide: function() {
			var K = this;
			return setTimeout(function() {
				K.hide();
			},
			this.cfg.getProperty("autodismissdelay"));
		},
		preventOverlap: function(O, N) {
			var K = this.element.offsetHeight,
			M = new YAHOO.util.Point(O, N),
			L = B.getRegion(this.element);
			L.top -= 5;
			L.left -= 5;
			L.right += 5;
			L.bottom += 5;
			if (L.contains(M)) {
				this.cfg.setProperty("y", (N - K - 5));
			}
		},
		onRender: function(O, N) {
			function P() {
				var S = this.element,
				R = this._shadow;
				if (R) {
					R.style.width = (S.offsetWidth + 6) + "px";
					R.style.height = (S.offsetHeight + 1) + "px";
				}
			}
			function L() {
				B.addClass(this._shadow, "yui-tt-shadow-visible");
			}
			function K() {
				B.removeClass(this._shadow, "yui-tt-shadow-visible");
			}
			function Q() {
				var T = this._shadow,
				S, R, V, U;
				if (!T) {
					S = this.element;
					R = YAHOO.widget.Module;
					V = YAHOO.env.ua.ie;
					U = this;
					if (!E) {
						E = document.createElement("div");
						E.className = "yui-tt-shadow";
					}
					T = E.cloneNode(false);
					S.appendChild(T);
					this._shadow = T;
					L.call(this);
					this.subscribe("beforeShow", L);
					this.subscribe("beforeHide", K);
					if (V == 6 || (V == 7 && document.compatMode == "BackCompat")) {
						window.setTimeout(function() {
							P.call(U);
						},
						0);
						this.cfg.subscribeToConfigEvent("width", P);
						this.cfg.subscribeToConfigEvent("height", P);
						this.subscribe("changeContent", P);
						R.textResizeEvent.subscribe(P, this, true);
						this.subscribe("destroy",
						function() {
							R.textResizeEvent.unsubscribe(P, this);
						});
					}
				}
			}
			function M() {
				Q.call(this);
				this.unsubscribe("beforeShow", M);
			}
			if (this.cfg.getProperty("visible")) {
				Q.call(this);
			} else {
				this.subscribe("beforeShow", M);
			}
		},
		destroy: function() {
			this._removeEventListeners();
			F.superclass.destroy.call(this);
		},
		toString: function() {
			return "Tooltip " + this.id;
		}
	});
} ()); (function() {
	YAHOO.widget.Panel = function(U, T) {
		YAHOO.widget.Panel.superclass.constructor.call(this, U, T);
	};
	var G = YAHOO.lang,
	N = YAHOO.util.DD,
	A = YAHOO.util.Dom,
	S = YAHOO.util.Event,
	I = YAHOO.widget.Overlay,
	L = YAHOO.util.CustomEvent,
	J = YAHOO.util.Config,
	O = YAHOO.widget.Panel,
	H, Q, D, E = {
		"SHOW_MASK": "showMask",
		"HIDE_MASK": "hideMask",
		"DRAG": "drag"
	},
	M = {
		"CLOSE": {
			key: "close",
			value: true,
			validator: G.isBoolean,
			supercedes: ["visible"]
		},
		"DRAGGABLE": {
			key: "draggable",
			value: (N ? true: false),
			validator: G.isBoolean,
			supercedes: ["visible"]
		},
		"DRAG_ONLY": {
			key: "dragonly",
			value: false,
			validator: G.isBoolean,
			supercedes: ["draggable"]
		},
		"UNDERLAY": {
			key: "underlay",
			value: "shadow",
			supercedes: ["visible"]
		},
		"MODAL": {
			key: "modal",
			value: false,
			validator: G.isBoolean,
			supercedes: ["visible", "zindex"]
		},
		"KEY_LISTENERS": {
			key: "keylisteners",
			suppressEvent: true,
			supercedes: ["visible"]
		}
	};
	O.CSS_PANEL = "yui-panel";
	O.CSS_PANEL_CONTAINER = "yui-panel-container";
	function K(U, T) {
		if (!this.header && this.cfg.getProperty("draggable")) {
			this.setHeader("&#160;");
		}
	}
	function R(U, T, V) {
		var Y = V[0],
		W = V[1],
		X = this.cfg,
		Z = X.getProperty("width");
		if (Z == W) {
			X.setProperty("width", Y);
		}
		this.unsubscribe("hide", R, V);
	}
	function C(U, T) {
		var Y = YAHOO.env.ua.ie,
		X, W, V;
		if (Y == 6 || (Y == 7 && document.compatMode == "BackCompat")) {
			X = this.cfg;
			W = X.getProperty("width");
			if (!W || W == "auto") {
				V = (this.element.offsetWidth + "px");
				X.setProperty("width", V);
				this.subscribe("hide", R, [(W || ""), V]);
			}
		}
	}
	function F() {
		this.blur();
	}
	function P(V, U) {
		var W = this;
		function T(Z) {
			var Y = Z.tagName.toUpperCase(),
			X = false;
			switch (Y) {
			case "A":
			case "BUTTON":
			case "SELECT":
			case "TEXTAREA":
				if (!A.isAncestor(W.element, Z)) {
					S.on(Z, "focus", F, Z, true);
					X = true;
				}
				break;
			case "INPUT":
				if (Z.type != "hidden" && !A.isAncestor(W.element, Z)) {
					S.on(Z, "focus", F, Z, true);
					X = true;
				}
				break;
			}
			return X;
		}
		this.focusableElements = A.getElementsBy(T);
	}
	function B(V, U) {
		var Y = this.focusableElements,
		T = Y.length,
		W, X;
		for (X = 0; X < T; X++) {
			W = Y[X];
			S.removeListener(W, "focus", F);
		}
	}
	YAHOO.extend(O, I, {
		init: function(U, T) {
			O.superclass.init.call(this, U);
			this.beforeInitEvent.fire(O);
			A.addClass(this.element, O.CSS_PANEL);
			this.buildWrapper();
			if (T) {
				this.cfg.applyConfig(T, true);
			}
			this.subscribe("showMask", P);
			this.subscribe("hideMask", B);
			this.subscribe("beforeRender", K);
			this.initEvent.fire(O);
		},
		initEvents: function() {
			O.superclass.initEvents.call(this);
			var T = L.LIST;
			this.showMaskEvent = this.createEvent(E.SHOW_MASK);
			this.showMaskEvent.signature = T;
			this.hideMaskEvent = this.createEvent(E.HIDE_MASK);
			this.hideMaskEvent.signature = T;
			this.dragEvent = this.createEvent(E.DRAG);
			this.dragEvent.signature = T;
		},
		initDefaultConfig: function() {
			O.superclass.initDefaultConfig.call(this);
			this.cfg.addProperty(M.CLOSE.key, {
				handler: this.configClose,
				value: M.CLOSE.value,
				validator: M.CLOSE.validator,
				supercedes: M.CLOSE.supercedes
			});
			this.cfg.addProperty(M.DRAGGABLE.key, {
				handler: this.configDraggable,
				value: M.DRAGGABLE.value,
				validator: M.DRAGGABLE.validator,
				supercedes: M.DRAGGABLE.supercedes
			});
			this.cfg.addProperty(M.DRAG_ONLY.key, {
				value: M.DRAG_ONLY.value,
				validator: M.DRAG_ONLY.validator,
				supercedes: M.DRAG_ONLY.supercedes
			});
			this.cfg.addProperty(M.UNDERLAY.key, {
				handler: this.configUnderlay,
				value: M.UNDERLAY.value,
				supercedes: M.UNDERLAY.supercedes
			});
			this.cfg.addProperty(M.MODAL.key, {
				handler: this.configModal,
				value: M.MODAL.value,
				validator: M.MODAL.validator,
				supercedes: M.MODAL.supercedes
			});
			this.cfg.addProperty(M.KEY_LISTENERS.key, {
				handler: this.configKeyListeners,
				suppressEvent: M.KEY_LISTENERS.suppressEvent,
				supercedes: M.KEY_LISTENERS.supercedes
			});
		},
		configClose: function(V, T, X) {
			var Y = T[0],
			U = this.close;
			function W(a, Z) {
				Z.hide();
			}
			if (Y) {
				if (!U) {
					if (!D) {
						D = document.createElement("span");
						D.innerHTML = "&#160;";
						D.className = "container-close";
					}
					U = D.cloneNode(true);
					this.innerElement.appendChild(U);
					S.on(U, "click", W, this);
					this.close = U;
				} else {
					U.style.display = "block";
				}
			} else {
				if (U) {
					U.style.display = "none";
				}
			}
		},
		configDraggable: function(U, T, V) {
			var W = T[0];
			if (W) {
				if (!N) {
					this.cfg.setProperty("draggable", false);
					return;
				}
				if (this.header) {
					A.setStyle(this.header, "cursor", "move");
					this.registerDragDrop();
				}
				this.subscribe("beforeShow", C);
			} else {
				if (this.dd) {
					this.dd.unreg();
				}
				if (this.header) {
					A.setStyle(this.header, "cursor", "auto");
				}
				this.unsubscribe("beforeShow", C);
			}
		},
		configUnderlay: function(c, b, X) {
			var a = YAHOO.env.ua,
			Z = (this.platform == "mac" && a.gecko),
			d = b[0].toLowerCase(),
			T = this.underlay,
			U = this.element;
			function e() {
				var f = this.underlay;
				A.addClass(f, "yui-force-redraw");
				window.setTimeout(function() {
					A.removeClass(f, "yui-force-redraw");
				},
				0);
			}
			function V() {
				var f;
				if (!T) {
					if (!Q) {
						Q = document.createElement("div");
						Q.className = "underlay";
					}
					T = Q.cloneNode(false);
					this.element.appendChild(T);
					this.underlay = T;
					f = a.ie;
					if (f == 6 || (f == 7 && document.compatMode == "BackCompat")) {
						this.sizeUnderlay();
						this.cfg.subscribeToConfigEvent("width", this.sizeUnderlay);
						this.cfg.subscribeToConfigEvent("height", this.sizeUnderlay);
						this.changeContentEvent.subscribe(this.sizeUnderlay);
						YAHOO.widget.Module.textResizeEvent.subscribe(this.sizeUnderlay, this, true);
					}
					if (a.webkit && a.webkit < 420) {
						this.changeContentEvent.subscribe(e);
					}
				}
			}
			function Y() {
				V.call(this);
				this._underlayDeferred = false;
				this.beforeShowEvent.unsubscribe(Y);
			}
			function W() {
				if (this._underlayDeferred) {
					this.beforeShowEvent.unsubscribe(Y);
					this._underlayDeferred = false;
				}
				if (T) {
					this.cfg.unsubscribeFromConfigEvent("width", this.sizeUnderlay);
					this.cfg.unsubscribeFromConfigEvent("height", this.sizeUnderlay);
					this.changeContentEvent.unsubscribe(this.sizeUnderlay);
					this.changeContentEvent.unsubscribe(e);
					YAHOO.widget.Module.textResizeEvent.unsubscribe(this.sizeUnderlay, this, true);
					this.element.removeChild(T);
					this.underlay = null;
				}
			}
			switch (d) {
			case "shadow":
				A.removeClass(U, "matte");
				A.addClass(U, "shadow");
				break;
			case "matte":
				if (!Z) {
					W.call(this);
				}
				A.removeClass(U, "shadow");
				A.addClass(U, "matte");
				break;
			default:
				if (!Z) {
					W.call(this);
				}
				A.removeClass(U, "shadow");
				A.removeClass(U, "matte");
				break;
			}
			if ((d == "shadow") || (Z && !T)) {
				if (this.cfg.getProperty("visible")) {
					V.call(this);
				} else {
					if (!this._underlayDeferred) {
						this.beforeShowEvent.subscribe(Y);
						this._underlayDeferred = true;
					}
				}
			}
		},
		configModal: function(U, T, W) {
			var V = T[0];
			if (V) {
				if (!this._hasModalityEventListeners) {
					this.subscribe("beforeShow", this.buildMask);
					this.subscribe("beforeShow", this.bringToTop);
					this.subscribe("beforeShow", this.showMask);
					this.subscribe("hide", this.hideMask);
					I.windowResizeEvent.subscribe(this.sizeMask, this, true);
					this._hasModalityEventListeners = true;
				}
			} else {
				if (this._hasModalityEventListeners) {
					if (this.cfg.getProperty("visible")) {
						this.hideMask();
						this.removeMask();
					}
					this.unsubscribe("beforeShow", this.buildMask);
					this.unsubscribe("beforeShow", this.bringToTop);
					this.unsubscribe("beforeShow", this.showMask);
					this.unsubscribe("hide", this.hideMask);
					I.windowResizeEvent.unsubscribe(this.sizeMask, this);
					this._hasModalityEventListeners = false;
				}
			}
		},
		removeMask: function() {
			var U = this.mask,
			T;
			if (U) {
				this.hideMask();
				T = U.parentNode;
				if (T) {
					T.removeChild(U);
				}
				this.mask = null;
			}
		},
		configKeyListeners: function(W, T, Z) {
			var V = T[0],
			Y,
			X,
			U;
			if (V) {
				if (V instanceof Array) {
					X = V.length;
					for (U = 0; U < X; U++) {
						Y = V[U];
						if (!J.alreadySubscribed(this.showEvent, Y.enable, Y)) {
							this.showEvent.subscribe(Y.enable, Y, true);
						}
						if (!J.alreadySubscribed(this.hideEvent, Y.disable, Y)) {
							this.hideEvent.subscribe(Y.disable, Y, true);
							this.destroyEvent.subscribe(Y.disable, Y, true);
						}
					}
				} else {
					if (!J.alreadySubscribed(this.showEvent, V.enable, V)) {
						this.showEvent.subscribe(V.enable, V, true);
					}
					if (!J.alreadySubscribed(this.hideEvent, V.disable, V)) {
						this.hideEvent.subscribe(V.disable, V, true);
						this.destroyEvent.subscribe(V.disable, V, true);
					}
				}
			}
		},
		configHeight: function(W, U, X) {
			var T = U[0],
			V = this.innerElement;
			A.setStyle(V, "height", T);
			this.cfg.refireEvent("iframe");
		},
		configWidth: function(W, T, X) {
			var V = T[0],
			U = this.innerElement;
			A.setStyle(U, "width", V);
			this.cfg.refireEvent("iframe");
		},
		configzIndex: function(U, T, W) {
			O.superclass.configzIndex.call(this, U, T, W);
			if (this.mask || this.cfg.getProperty("modal") === true) {
				var V = A.getStyle(this.element, "zIndex");
				if (!V || isNaN(V)) {
					V = 0;
				}
				if (V === 0) {
					this.cfg.setProperty("zIndex", 1);
				} else {
					this.stackMask();
				}
			}
		},
		buildWrapper: function() {
			var V = this.element.parentNode,
			T = this.element,
			U = document.createElement("div");
			U.className = O.CSS_PANEL_CONTAINER;
			U.id = T.id + "_c";
			if (V) {
				V.insertBefore(U, T);
			}
			U.appendChild(T);
			this.element = U;
			this.innerElement = T;
			A.setStyle(this.innerElement, "visibility", "inherit");
		},
		sizeUnderlay: function() {
			var U = this.underlay,
			T;
			if (U) {
				T = this.element;
				U.style.width = T.offsetWidth + "px";
				U.style.height = T.offsetHeight + "px";
			}
		},
		registerDragDrop: function() {
			var U = this;
			if (this.header) {
				if (!N) {
					return;
				}
				var T = (this.cfg.getProperty("dragonly") === true);
				this.dd = new N(this.element.id, this.id, {
					dragOnly: T
				});
				if (!this.header.id) {
					this.header.id = this.id + "_h";
				}
				this.dd.startDrag = function() {
					var W, Y, V, b, a, Z;
					if (YAHOO.env.ua.ie == 6) {
						A.addClass(U.element, "drag");
					}
					if (U.cfg.getProperty("constraintoviewport")) {
						var X = I.VIEWPORT_OFFSET;
						W = U.element.offsetHeight;
						Y = U.element.offsetWidth;
						V = A.getViewportWidth();
						b = A.getViewportHeight();
						a = A.getDocumentScrollLeft();
						Z = A.getDocumentScrollTop();
						if (W + X < b) {
							this.minY = Z + X;
							this.maxY = Z + b - W - X;
						} else {
							this.minY = Z + X;
							this.maxY = Z + X;
						}
						if (Y + X < V) {
							this.minX = a + X;
							this.maxX = a + V - Y - X;
						} else {
							this.minX = a + X;
							this.maxX = a + X;
						}
						this.constrainX = true;
						this.constrainY = true;
					} else {
						this.constrainX = false;
						this.constrainY = false;
					}
					U.dragEvent.fire("startDrag", arguments);
				};
				this.dd.onDrag = function() {
					U.syncPosition();
					U.cfg.refireEvent("iframe");
					if (this.platform == "mac" && YAHOO.env.ua.gecko) {
						this.showMacGeckoScrollbars();
					}
					U.dragEvent.fire("onDrag", arguments);
				};
				this.dd.endDrag = function() {
					if (YAHOO.env.ua.ie == 6) {
						A.removeClass(U.element, "drag");
					}
					U.dragEvent.fire("endDrag", arguments);
					U.moveEvent.fire(U.cfg.getProperty("xy"));
				};
				this.dd.setHandleElId(this.header.id);
				this.dd.addInvalidHandleType("INPUT");
				this.dd.addInvalidHandleType("SELECT");
				this.dd.addInvalidHandleType("TEXTAREA");
			}
		},
		buildMask: function() {
			var T = this.mask;
			if (!T) {
				if (!H) {
					H = document.createElement("div");
					H.className = "mask";
					H.innerHTML = "&#160;";
				}
				T = H.cloneNode(true);
				T.id = this.id + "_mask";
				document.body.insertBefore(T, document.body.firstChild);
				this.mask = T;
				this.stackMask();
			}
		},
		hideMask: function() {
			if (this.cfg.getProperty("modal") && this.mask) {
				this.mask.style.display = "none";
				this.hideMaskEvent.fire();
				A.removeClass(document.body, "masked");
			}
		},
		showMask: function() {
			if (this.cfg.getProperty("modal") && this.mask) {
				A.addClass(document.body, "masked");
				this.sizeMask();
				this.mask.style.display = "block";
				this.showMaskEvent.fire();
			}
		},
		sizeMask: function() {
			if (this.mask) {
				this.mask.style.height = A.getDocumentHeight() + "px";
				this.mask.style.width = A.getDocumentWidth() + "px";
			}
		},
		stackMask: function() {
			if (this.mask) {
				var T = A.getStyle(this.element, "zIndex");
				if (!YAHOO.lang.isUndefined(T) && !isNaN(T)) {
					A.setStyle(this.mask, "zIndex", T - 1);
				}
			}
		},
		render: function(T) {
			return O.superclass.render.call(this, T, this.innerElement);
		},
		destroy: function() {
			I.windowResizeEvent.unsubscribe(this.sizeMask, this);
			this.removeMask();
			if (this.close) {
				S.purgeElement(this.close);
			}
			O.superclass.destroy.call(this);
		},
		toString: function() {
			return "Panel " + this.id;
		}
	});
} ()); (function() {
	YAHOO.widget.Dialog = function(L, K) {
		YAHOO.widget.Dialog.superclass.constructor.call(this, L, K);
	};
	var J = YAHOO.util.Event,
	I = YAHOO.util.CustomEvent,
	D = YAHOO.util.Dom,
	B = YAHOO.util.KeyListener,
	H = YAHOO.util.Connect,
	F = YAHOO.widget.Dialog,
	E = YAHOO.lang,
	A = {
		"BEFORE_SUBMIT": "beforeSubmit",
		"SUBMIT": "submit",
		"MANUAL_SUBMIT": "manualSubmit",
		"ASYNC_SUBMIT": "asyncSubmit",
		"FORM_SUBMIT": "formSubmit",
		"CANCEL": "cancel"
	},
	G = {
		"POST_METHOD": {
			key: "postmethod",
			value: "async"
		},
		"BUTTONS": {
			key: "buttons",
			value: "none"
		}
	};
	F.CSS_DIALOG = "yui-dialog";
	function C() {
		var N = this._aButtons,
		L, M, K;
		if (E.isArray(N)) {
			L = N.length;
			if (L > 0) {
				K = L - 1;
				do {
					M = N[K];
					if (YAHOO.widget.Button && M instanceof YAHOO.widget.Button) {
						M.destroy();
					} else {
						if (M.tagName.toUpperCase() == "BUTTON") {
							J.purgeElement(M);
							J.purgeElement(M, false);
						}
					}
				} while ( K --);
			}
		}
	}
	YAHOO.extend(F, YAHOO.widget.Panel, {
		form: null,
		initDefaultConfig: function() {
			F.superclass.initDefaultConfig.call(this);
			this.callback = {
				success: null,
				failure: null,
				argument: null
			};
			this.cfg.addProperty(G.POST_METHOD.key, {
				handler: this.configPostMethod,
				value: G.POST_METHOD.value,
				validator: function(K) {
					if (K != "form" && K != "async" && K != "none" && K != "manual") {
						return false;
					} else {
						return true;
					}
				}
			});
			this.cfg.addProperty(G.BUTTONS.key, {
				handler: this.configButtons,
				value: G.BUTTONS.value
			});
		},
		initEvents: function() {
			F.superclass.initEvents.call(this);
			var K = I.LIST;
			this.beforeSubmitEvent = this.createEvent(A.BEFORE_SUBMIT);
			this.beforeSubmitEvent.signature = K;
			this.submitEvent = this.createEvent(A.SUBMIT);
			this.submitEvent.signature = K;
			this.manualSubmitEvent = this.createEvent(A.MANUAL_SUBMIT);
			this.manualSubmitEvent.signature = K;
			this.asyncSubmitEvent = this.createEvent(A.ASYNC_SUBMIT);
			this.asyncSubmitEvent.signature = K;
			this.formSubmitEvent = this.createEvent(A.FORM_SUBMIT);
			this.formSubmitEvent.signature = K;
			this.cancelEvent = this.createEvent(A.CANCEL);
			this.cancelEvent.signature = K;
		},
		init: function(L, K) {
			F.superclass.init.call(this, L);
			this.beforeInitEvent.fire(F);
			D.addClass(this.element, F.CSS_DIALOG);
			this.cfg.setProperty("visible", false);
			if (K) {
				this.cfg.applyConfig(K, true);
			}
			this.showEvent.subscribe(this.focusFirst, this, true);
			this.beforeHideEvent.subscribe(this.blurButtons, this, true);
			this.subscribe("changeBody", this.registerForm);
			this.initEvent.fire(F);
		},
		doSubmit: function() {
			var Q = this.form,
			O = false,
			N = false,
			P, K, M, L;
			switch (this.cfg.getProperty("postmethod")) {
			case "async":
				P = Q.elements;
				K = P.length;
				if (K > 0) {
					M = K - 1;
					do {
						if (P[M].type == "file") {
							O = true;
							break;
						}
					} while ( M --);
				}
				if (O && YAHOO.env.ua.ie && this.isSecure) {
					N = true;
				}
				L = (Q.getAttribute("method") || "POST").toUpperCase();
				H.setForm(Q, O, N);
				H.asyncRequest(L, Q.getAttribute("action"), this.callback);
				this.asyncSubmitEvent.fire();
				break;
			case "form":
				Q.submit();
				this.formSubmitEvent.fire();
				break;
			case "none":
			case "manual":
				this.manualSubmitEvent.fire();
				break;
			}
		},
		registerForm: function() {
			var M = this.element.getElementsByTagName("form")[0],
			L = this,
			K,
			N;
			if (this.form) {
				if (this.form == M && D.isAncestor(this.element, this.form)) {
					return;
				} else {
					J.purgeElement(this.form);
					this.form = null;
				}
			}
			if (!M) {
				M = document.createElement("form");
				M.name = "frm_" + this.id;
				this.body.appendChild(M);
			}
			if (M) {
				this.form = M;
				J.on(M, "submit",
				function(O) {
					J.stopEvent(O);
					this.submit();
					this.form.blur();
				},
				this, true);
				this.firstFormElement = function() {
					var Q, P, O = M.elements.length;
					for (Q = 0; Q < O; Q++) {
						P = M.elements[Q];
						if (P.focus && !P.disabled && P.type != "hidden") {
							return P;
						}
					}
					return null;
				} ();
				this.lastFormElement = function() {
					var Q, P, O = M.elements.length;
					for (Q = O - 1; Q >= 0; Q--) {
						P = M.elements[Q];
						if (P.focus && !P.disabled && P.type != "hidden") {
							return P;
						}
					}
					return null;
				} ();
				if (this.cfg.getProperty("modal")) {
					K = this.firstFormElement || this.firstButton;
					if (K) {
						this.preventBackTab = new B(K, {
							shift: true,
							keys: 9
						},
						{
							fn: L.focusLast,
							scope: L,
							correctScope: true
						});
						this.showEvent.subscribe(this.preventBackTab.enable, this.preventBackTab, true);
						this.hideEvent.subscribe(this.preventBackTab.disable, this.preventBackTab, true);
					}
					N = this.lastButton || this.lastFormElement;
					if (N) {
						this.preventTabOut = new B(N, {
							shift: false,
							keys: 9
						},
						{
							fn: L.focusFirst,
							scope: L,
							correctScope: true
						});
						this.showEvent.subscribe(this.preventTabOut.enable, this.preventTabOut, true);
						this.hideEvent.subscribe(this.preventTabOut.disable, this.preventTabOut, true);
					}
				}
			}
		},
		configClose: function(M, K, N) {
			var O = K[0];
			function L(Q, P) {
				P.cancel();
			}
			if (O) {
				if (!this.close) {
					this.close = document.createElement("div");
					D.addClass(this.close, "container-close");
					this.close.innerHTML = "&#160;";
					this.innerElement.appendChild(this.close);
					J.on(this.close, "click", L, this);
				} else {
					this.close.style.display = "block";
				}
			} else {
				if (this.close) {
					this.close.style.display = "none";
				}
			}
		},
		configButtons: function(U, T, O) {
			var P = YAHOO.widget.Button,
			W = T[0],
			M = this.innerElement,
			V,
			R,
			L,
			S,
			Q,
			K,
			N;
			C.call(this);
			this._aButtons = null;
			if (E.isArray(W)) {
				Q = document.createElement("span");
				Q.className = "button-group";
				S = W.length;
				this._aButtons = [];
				for (N = 0; N < S; N++) {
					V = W[N];
					if (P) {
						L = new P({
							label: V.text,
							container: Q
						});
						R = L.get("element");
						if (V.isDefault) {
							L.addClass("default");
							this.defaultHtmlButton = R;
						}
						if (E.isFunction(V.handler)) {
							L.set("onclick", {
								fn: V.handler,
								obj: this,
								scope: this
							});
						} else {
							if (E.isObject(V.handler) && E.isFunction(V.handler.fn)) {
								L.set("onclick", {
									fn: V.handler.fn,
									obj: ((!E.isUndefined(V.handler.obj)) ? V.handler.obj: this),
									scope: (V.handler.scope || this)
								});
							}
						}
						this._aButtons[this._aButtons.length] = L;
					} else {
						R = document.createElement("button");
						R.setAttribute("type", "button");
						if (V.isDefault) {
							R.className = "default";
							this.defaultHtmlButton = R;
						}
						R.innerHTML = V.text;
						if (E.isFunction(V.handler)) {
							J.on(R, "click", V.handler, this, true);
						} else {
							if (E.isObject(V.handler) && E.isFunction(V.handler.fn)) {
								J.on(R, "click", V.handler.fn, ((!E.isUndefined(V.handler.obj)) ? V.handler.obj: this), (V.handler.scope || this));
							}
						}
						Q.appendChild(R);
						this._aButtons[this._aButtons.length] = R;
					}
					V.htmlButton = R;
					if (N === 0) {
						this.firstButton = R;
					}
					if (N == (S - 1)) {
						this.lastButton = R;
					}
				}
				this.setFooter(Q);
				K = this.footer;
				if (D.inDocument(this.element) && !D.isAncestor(M, K)) {
					M.appendChild(K);
				}
				this.buttonSpan = Q;
			} else {
				Q = this.buttonSpan;
				K = this.footer;
				if (Q && K) {
					K.removeChild(Q);
					this.buttonSpan = null;
					this.firstButton = null;
					this.lastButton = null;
					this.defaultHtmlButton = null;
				}
			}
			this.cfg.refireEvent("iframe");
			this.cfg.refireEvent("underlay");
		},
		getButtons: function() {
			var K = this._aButtons;
			if (K) {
				return K;
			}
		},
		focusFirst: function(N, L, P) {
			var M = this.firstFormElement,
			K;
			if (L) {
				K = L[1];
				if (K) {
					J.stopEvent(K);
				}
			}
			if (M) {
				try {
					M.focus();
				} catch(O) {}
			} else {
				this.focusDefaultButton();
			}
		},
		focusLast: function(N, L, P) {
			var Q = this.cfg.getProperty("buttons"),
			M = this.lastFormElement,
			K;
			if (L) {
				K = L[1];
				if (K) {
					J.stopEvent(K);
				}
			}
			if (Q && E.isArray(Q)) {
				this.focusLastButton();
			} else {
				if (M) {
					try {
						M.focus();
					} catch(O) {}
				}
			}
		},
		focusDefaultButton: function() {
			var K = this.defaultHtmlButton;
			if (K) {
				try {
					K.focus();
				} catch(L) {}
			}
		},
		blurButtons: function() {
			var P = this.cfg.getProperty("buttons"),
			M,
			O,
			L,
			K;
			if (P && E.isArray(P)) {
				M = P.length;
				if (M > 0) {
					K = (M - 1);
					do {
						O = P[K];
						if (O) {
							L = O.htmlButton;
							if (L) {
								try {
									L.blur();
								} catch(N) {}
							}
						}
					} while ( K --);
				}
			}
		},
		focusFirstButton: function() {
			var N = this.cfg.getProperty("buttons"),
			M,
			K;
			if (N && E.isArray(N)) {
				M = N[0];
				if (M) {
					K = M.htmlButton;
					if (K) {
						try {
							K.focus();
						} catch(L) {}
					}
				}
			}
		},
		focusLastButton: function() {
			var O = this.cfg.getProperty("buttons"),
			L,
			N,
			K;
			if (O && E.isArray(O)) {
				L = O.length;
				if (L > 0) {
					N = O[(L - 1)];
					if (N) {
						K = N.htmlButton;
						if (K) {
							try {
								K.focus();
							} catch(M) {}
						}
					}
				}
			}
		},
		configPostMethod: function(L, K, M) {
			this.registerForm();
		},
		validate: function() {
			return true;
		},
		submit: function() {
			if (this.validate()) {
				this.beforeSubmitEvent.fire();
				this.doSubmit();
				this.submitEvent.fire();
				this.hide();
				return true;
			} else {
				return false;
			}
		},
		cancel: function() {
			this.cancelEvent.fire();
			this.hide();
		},
		getData: function() {
			var a = this.form,
			M, T, W, O, U, R, Q, L, X, N, Y, b, K, P, c, Z, V;
			function S(e) {
				var d = e.tagName.toUpperCase();
				return ((d == "INPUT" || d == "TEXTAREA" || d == "SELECT") && e.name == O);
			}
			if (a) {
				M = a.elements;
				T = M.length;
				W = {};
				for (Z = 0; Z < T; Z++) {
					O = M[Z].name;
					U = D.getElementsBy(S, "*", a);
					R = U.length;
					if (R > 0) {
						if (R == 1) {
							U = U[0];
							Q = U.type;
							L = U.tagName.toUpperCase();
							switch (L) {
							case "INPUT":
								if (Q == "checkbox") {
									W[O] = U.checked;
								} else {
									if (Q != "radio") {
										W[O] = U.value;
									}
								}
								break;
							case "TEXTAREA":
								W[O] = U.value;
								break;
							case "SELECT":
								X = U.options;
								N = X.length;
								Y = [];
								for (V = 0; V < N; V++) {
									b = X[V];
									if (b.selected) {
										K = b.value;
										if (!K || K === "") {
											K = b.text;
										}
										Y[Y.length] = K;
									}
								}
								W[O] = Y;
								break;
							}
						} else {
							Q = U[0].type;
							switch (Q) {
							case "radio":
								for (V = 0; V < R; V++) {
									P = U[V];
									if (P.checked) {
										W[O] = P.value;
										break;
									}
								}
								break;
							case "checkbox":
								Y = [];
								for (V = 0; V < R; V++) {
									c = U[V];
									if (c.checked) {
										Y[Y.length] = c.value;
									}
								}
								W[O] = Y;
								break;
							}
						}
					}
				}
			}
			return W;
		},
		destroy: function() {
			C.call(this);
			this._aButtons = null;
			var K = this.element.getElementsByTagName("form"),
			L;
			if (K.length > 0) {
				L = K[0];
				if (L) {
					J.purgeElement(L);
					if (L.parentNode) {
						L.parentNode.removeChild(L);
					}
					this.form = null;
				}
			}
			F.superclass.destroy.call(this);
		},
		toString: function() {
			return "Dialog " + this.id;
		}
	});
} ()); (function() {
	YAHOO.widget.SimpleDialog = function(E, D) {
		YAHOO.widget.SimpleDialog.superclass.constructor.call(this, E, D);
	};
	var C = YAHOO.util.Dom,
	B = YAHOO.widget.SimpleDialog,
	A = {
		"ICON": {
			key: "icon",
			value: "none",
			suppressEvent: true
		},
		"TEXT": {
			key: "text",
			value: "",
			suppressEvent: true,
			supercedes: ["icon"]
		}
	};
	B.ICON_BLOCK = "blckicon";
	B.ICON_ALARM = "alrticon";
	B.ICON_HELP = "hlpicon";
	B.ICON_INFO = "infoicon";
	B.ICON_WARN = "warnicon";
	B.ICON_TIP = "tipicon";
	B.ICON_CSS_CLASSNAME = "yui-icon";
	B.CSS_SIMPLEDIALOG = "yui-simple-dialog";
	YAHOO.extend(B, YAHOO.widget.Dialog, {
		initDefaultConfig: function() {
			B.superclass.initDefaultConfig.call(this);
			this.cfg.addProperty(A.ICON.key, {
				handler: this.configIcon,
				value: A.ICON.value,
				suppressEvent: A.ICON.suppressEvent
			});
			this.cfg.addProperty(A.TEXT.key, {
				handler: this.configText,
				value: A.TEXT.value,
				suppressEvent: A.TEXT.suppressEvent,
				supercedes: A.TEXT.supercedes
			});
		},
		init: function(E, D) {
			B.superclass.init.call(this, E);
			this.beforeInitEvent.fire(B);
			C.addClass(this.element, B.CSS_SIMPLEDIALOG);
			this.cfg.queueProperty("postmethod", "manual");
			if (D) {
				this.cfg.applyConfig(D, true);
			}
			this.beforeRenderEvent.subscribe(function() {
				if (!this.body) {
					this.setBody("");
				}
			},
			this, true);
			this.initEvent.fire(B);
		},
		registerForm: function() {
			B.superclass.registerForm.call(this);
			this.form.innerHTML += "<input type=\"hidden\" name=\"" + this.id + "\" value=\"\"/>";
		},
		configIcon: function(F, E, J) {
			var K = E[0],
			D = this.body,
			I = B.ICON_CSS_CLASSNAME,
			H,
			G;
			if (K && K != "none") {
				H = C.getElementsByClassName(I, "*", D);
				if (H) {
					G = H.parentNode;
					if (G) {
						G.removeChild(H);
						H = null;
					}
				}
				if (K.indexOf(".") == -1) {
					H = document.createElement("span");
					H.className = (I + " " + K);
					H.innerHTML = "&#160;";
				} else {
					H = document.createElement("img");
					H.src = (this.imageRoot + K);
					H.className = I;
				}
				if (H) {
					D.insertBefore(H, D.firstChild);
				}
			}
		},
		configText: function(E, D, F) {
			var G = D[0];
			if (G) {
				this.setBody(G);
				this.cfg.refireEvent("icon");
			}
		},
		toString: function() {
			return "SimpleDialog " + this.id;
		}
	});
} ()); (function() {
	YAHOO.widget.ContainerEffect = function(F, I, H, E, G) {
		if (!G) {
			G = YAHOO.util.Anim;
		}
		this.overlay = F;
		this.attrIn = I;
		this.attrOut = H;
		this.targetElement = E || F.element;
		this.animClass = G;
	};
	var B = YAHOO.util.Dom,
	D = YAHOO.util.CustomEvent,
	C = YAHOO.util.Easing,
	A = YAHOO.widget.ContainerEffect;
	A.FADE = function(E, G) {
		var I = {
			attributes: {
				opacity: {
					from: 0,
					to: 1
				}
			},
			duration: G,
			method: C.easeIn
		};
		var F = {
			attributes: {
				opacity: {
					to: 0
				}
			},
			duration: G,
			method: C.easeOut
		};
		var H = new A(E, I, F, E.element);
		H.handleUnderlayStart = function() {
			var K = this.overlay.underlay;
			if (K && YAHOO.env.ua.ie) {
				var J = (K.filters && K.filters.length > 0);
				if (J) {
					B.addClass(E.element, "yui-effect-fade");
				}
			}
		};
		H.handleUnderlayComplete = function() {
			var J = this.overlay.underlay;
			if (J && YAHOO.env.ua.ie) {
				B.removeClass(E.element, "yui-effect-fade");
			}
		};
		H.handleStartAnimateIn = function(K, J, L) {
			B.addClass(L.overlay.element, "hide-select");
			if (!L.overlay.underlay) {
				L.overlay.cfg.refireEvent("underlay");
			}
			L.handleUnderlayStart();
			B.setStyle(L.overlay.element, "visibility", "visible");
			B.setStyle(L.overlay.element, "opacity", 0);
		};
		H.handleCompleteAnimateIn = function(K, J, L) {
			B.removeClass(L.overlay.element, "hide-select");
			if (L.overlay.element.style.filter) {
				L.overlay.element.style.filter = null;
			}
			L.handleUnderlayComplete();
			L.overlay.cfg.refireEvent("iframe");
			L.animateInCompleteEvent.fire();
		};
		H.handleStartAnimateOut = function(K, J, L) {
			B.addClass(L.overlay.element, "hide-select");
			L.handleUnderlayStart();
		};
		H.handleCompleteAnimateOut = function(K, J, L) {
			B.removeClass(L.overlay.element, "hide-select");
			if (L.overlay.element.style.filter) {
				L.overlay.element.style.filter = null;
			}
			B.setStyle(L.overlay.element, "visibility", "hidden");
			B.setStyle(L.overlay.element, "opacity", 1);
			L.handleUnderlayComplete();
			L.overlay.cfg.refireEvent("iframe");
			L.animateOutCompleteEvent.fire();
		};
		H.init();
		return H;
	};
	A.SLIDE = function(G, I) {
		var F = G.cfg.getProperty("x") || B.getX(G.element),
		K = G.cfg.getProperty("y") || B.getY(G.element),
		J = B.getClientWidth(),
		H = G.element.offsetWidth,
		E = new A(G, {
			attributes: {
				points: {
					to: [F, K]
				}
			},
			duration: I,
			method: C.easeIn
		},
		{
			attributes: {
				points: {
					to: [(J + 25), K]
				}
			},
			duration: I,
			method: C.easeOut
		},
		G.element, YAHOO.util.Motion);
		E.handleStartAnimateIn = function(M, L, N) {
			N.overlay.element.style.left = (( - 25) - H) + "px";
			N.overlay.element.style.top = K + "px";
		};
		E.handleTweenAnimateIn = function(O, N, P) {
			var Q = B.getXY(P.overlay.element),
			M = Q[0],
			L = Q[1];
			if (B.getStyle(P.overlay.element, "visibility") == "hidden" && M < F) {
				B.setStyle(P.overlay.element, "visibility", "visible");
			}
			P.overlay.cfg.setProperty("xy", [M, L], true);
			P.overlay.cfg.refireEvent("iframe");
		};
		E.handleCompleteAnimateIn = function(M, L, N) {
			N.overlay.cfg.setProperty("xy", [F, K], true);
			N.startX = F;
			N.startY = K;
			N.overlay.cfg.refireEvent("iframe");
			N.animateInCompleteEvent.fire();
		};
		E.handleStartAnimateOut = function(M, L, P) {
			var N = B.getViewportWidth(),
			Q = B.getXY(P.overlay.element),
			O = Q[1];
			P.animOut.attributes.points.to = [(N + 25), O];
		};
		E.handleTweenAnimateOut = function(N, M, O) {
			var Q = B.getXY(O.overlay.element),
			L = Q[0],
			P = Q[1];
			O.overlay.cfg.setProperty("xy", [L, P], true);
			O.overlay.cfg.refireEvent("iframe");
		};
		E.handleCompleteAnimateOut = function(M, L, N) {
			B.setStyle(N.overlay.element, "visibility", "hidden");
			N.overlay.cfg.setProperty("xy", [F, K]);
			N.animateOutCompleteEvent.fire();
		};
		E.init();
		return E;
	};
	A.prototype = {
		init: function() {
			this.beforeAnimateInEvent = this.createEvent("beforeAnimateIn");
			this.beforeAnimateInEvent.signature = D.LIST;
			this.beforeAnimateOutEvent = this.createEvent("beforeAnimateOut");
			this.beforeAnimateOutEvent.signature = D.LIST;
			this.animateInCompleteEvent = this.createEvent("animateInComplete");
			this.animateInCompleteEvent.signature = D.LIST;
			this.animateOutCompleteEvent = this.createEvent("animateOutComplete");
			this.animateOutCompleteEvent.signature = D.LIST;
			this.animIn = new this.animClass(this.targetElement, this.attrIn.attributes, this.attrIn.duration, this.attrIn.method);
			this.animIn.onStart.subscribe(this.handleStartAnimateIn, this);
			this.animIn.onTween.subscribe(this.handleTweenAnimateIn, this);
			this.animIn.onComplete.subscribe(this.handleCompleteAnimateIn, this);
			this.animOut = new this.animClass(this.targetElement, this.attrOut.attributes, this.attrOut.duration, this.attrOut.method);
			this.animOut.onStart.subscribe(this.handleStartAnimateOut, this);
			this.animOut.onTween.subscribe(this.handleTweenAnimateOut, this);
			this.animOut.onComplete.subscribe(this.handleCompleteAnimateOut, this);
		},
		animateIn: function() {
			this.beforeAnimateInEvent.fire();
			this.animIn.animate();
		},
		animateOut: function() {
			this.beforeAnimateOutEvent.fire();
			this.animOut.animate();
		},
		handleStartAnimateIn: function(F, E, G) {},
		handleTweenAnimateIn: function(F, E, G) {},
		handleCompleteAnimateIn: function(F, E, G) {},
		handleStartAnimateOut: function(F, E, G) {},
		handleTweenAnimateOut: function(F, E, G) {},
		handleCompleteAnimateOut: function(F, E, G) {},
		toString: function() {
			var E = "ContainerEffect";
			if (this.overlay) {
				E += " [" + this.overlay.toString() + "]";
			}
			return E;
		}
	};
	YAHOO.lang.augmentProto(A, YAHOO.util.EventProvider);
})();
YAHOO.register("container", YAHOO.widget.Module, {
	version: "2.4.1",
	build: "742"
});