/*
	Copyright (c) 2004-2008, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/book/dojo-book-0-9/introduction/licensing
*/

/*
	This is a compiled version of Dojo, built for deployment and not for
	development. To get an editable version, please visit:

		http://dojotoolkit.org

	for documentation and information on getting the source.
*/


if (!dojo._hasResource["dijit._base.focus"]) {
	dojo._hasResource["dijit._base.focus"] = true;
	dojo.provide("dijit._base.focus");
	dojo.mixin(dijit, {_curFocus:null, _prevFocus:null, isCollapsed:function () {
		var _window = dojo.global;
		var _document = dojo.doc;
		if (_document.selection) {
			return !_document.selection.createRange().text;
		} else {
			var selection = _window.getSelection();
			if (dojo.isString(selection)) {
				return !selection;
			} else {
				return selection.isCollapsed || !selection.toString();
			}
		}
	}, getBookmark:function () {
		var bookmark, selection = dojo.doc.selection;
		if (selection) {
			var range = selection.createRange();
			if (selection.type.toUpperCase() == "CONTROL") {
				if (range.length) {
					bookmark = [];
					var i = 0, len = range.length;
					while (i < len) {
						bookmark.push(range.item(i++));
					}
				} else {
					bookmark = null;
				}
			} else {
				bookmark = range.getBookmark();
			}
		} else {
			if (window.getSelection) {
				selection = dojo.global.getSelection();
				if (selection) {
					range = selection.getRangeAt(0);
					bookmark = range.cloneRange();
				}
			} else {
				console.warn("No idea how to store the current selection for this browser!");
			}
		}
		return bookmark;
	}, moveToBookmark:function (bookmark) {
		var _document = dojo.doc;
		if (_document.selection) {
			var range;
			if (dojo.isArray(bookmark)) {
				range = _document.body.createControlRange();
				dojo.forEach(bookmark, "range.addElement(item)");
			} else {
				range = _document.selection.createRange();
				range.moveToBookmark(bookmark);
			}
			range.select();
		} else {
			var selection = dojo.global.getSelection && dojo.global.getSelection();
			if (selection && selection.removeAllRanges) {
				selection.removeAllRanges();
				selection.addRange(bookmark);
			} else {
				console.warn("No idea how to restore selection for this browser!");
			}
		}
	}, getFocus:function (menu, openedForWindow) {
		return {node:menu && dojo.isDescendant(dijit._curFocus, menu.domNode) ? dijit._prevFocus : dijit._curFocus, bookmark:!dojo.withGlobal(openedForWindow || dojo.global, dijit.isCollapsed) ? dojo.withGlobal(openedForWindow || dojo.global, dijit.getBookmark) : null, openedForWindow:openedForWindow};
	}, focus:function (handle) {
		if (!handle) {
			return;
		}
		var node = "node" in handle ? handle.node : handle, bookmark = handle.bookmark, openedForWindow = handle.openedForWindow;
		if (node) {
			var focusNode = (node.tagName.toLowerCase() == "iframe") ? node.contentWindow : node;
			if (focusNode && focusNode.focus) {
				try {
					focusNode.focus();
				}
				catch (e) {
				}
			}
			dijit._onFocusNode(node);
		}
		if (bookmark && dojo.withGlobal(openedForWindow || dojo.global, dijit.isCollapsed)) {
			if (openedForWindow) {
				openedForWindow.focus();
			}
			try {
				dojo.withGlobal(openedForWindow || dojo.global, dijit.moveToBookmark, null, [bookmark]);
			}
			catch (e) {
			}
		}
	}, _activeStack:[], registerWin:function (targetWindow) {
		if (!targetWindow) {
			targetWindow = window;
		}
		dojo.connect(targetWindow.document, "onmousedown", function (evt) {
			dijit._justMouseDowned = true;
			setTimeout(function () {
				dijit._justMouseDowned = false;
			}, 0);
			dijit._onTouchNode(evt.target || evt.srcElement);
		});
		var body = targetWindow.document.body || targetWindow.document.getElementsByTagName("body")[0];
		if (body) {
			if (dojo.isIE) {
				body.attachEvent("onactivate", function (evt) {
					if (evt.srcElement.tagName.toLowerCase() != "body") {
						dijit._onFocusNode(evt.srcElement);
					}
				});
				body.attachEvent("ondeactivate", function (evt) {
					dijit._onBlurNode(evt.srcElement);
				});
			} else {
				body.addEventListener("focus", function (evt) {
					dijit._onFocusNode(evt.target);
				}, true);
				body.addEventListener("blur", function (evt) {
					dijit._onBlurNode(evt.target);
				}, true);
			}
		}
		body = null;
	}, _onBlurNode:function (node) {
		dijit._prevFocus = dijit._curFocus;
		dijit._curFocus = null;
		if (dijit._justMouseDowned) {
			return;
		}
		if (dijit._clearActiveWidgetsTimer) {
			clearTimeout(dijit._clearActiveWidgetsTimer);
		}
		dijit._clearActiveWidgetsTimer = setTimeout(function () {
			delete dijit._clearActiveWidgetsTimer;
			dijit._setStack([]);
			dijit._prevFocus = null;
		}, 100);
	}, _onTouchNode:function (node) {
		if (dijit._clearActiveWidgetsTimer) {
			clearTimeout(dijit._clearActiveWidgetsTimer);
			delete dijit._clearActiveWidgetsTimer;
		}
		var newStack = [];
		try {
			while (node) {
				if (node.dijitPopupParent) {
					node = dijit.byId(node.dijitPopupParent).domNode;
				} else {
					if (node.tagName && node.tagName.toLowerCase() == "body") {
						if (node === dojo.body()) {
							break;
						}
						node = dijit.getDocumentWindow(node.ownerDocument).frameElement;
					} else {
						var id = node.getAttribute && node.getAttribute("widgetId");
						if (id) {
							newStack.unshift(id);
						}
						node = node.parentNode;
					}
				}
			}
		}
		catch (e) {
		}
		dijit._setStack(newStack);
	}, _onFocusNode:function (node) {
		if (node && node.tagName && node.tagName.toLowerCase() == "body") {
			return;
		}
		dijit._onTouchNode(node);
		if (node == dijit._curFocus) {
			return;
		}
		if (dijit._curFocus) {
			dijit._prevFocus = dijit._curFocus;
		}
		dijit._curFocus = node;
		dojo.publish("focusNode", [node]);
	}, _setStack:function (newStack) {
		var oldStack = dijit._activeStack;
		dijit._activeStack = newStack;
		for (var nCommon = 0; nCommon < Math.min(oldStack.length, newStack.length); nCommon++) {
			if (oldStack[nCommon] != newStack[nCommon]) {
				break;
			}
		}
		for (var i = oldStack.length - 1; i >= nCommon; i--) {
			var widget = dijit.byId(oldStack[i]);
			if (widget) {
				widget._focused = false;
				widget._hasBeenBlurred = true;
				if (widget._onBlur) {
					widget._onBlur();
				}
				if (widget._setStateClass) {
					widget._setStateClass();
				}
				dojo.publish("widgetBlur", [widget]);
			}
		}
		for (i = nCommon; i < newStack.length; i++) {
			widget = dijit.byId(newStack[i]);
			if (widget) {
				widget._focused = true;
				if (widget._onFocus) {
					widget._onFocus();
				}
				if (widget._setStateClass) {
					widget._setStateClass();
				}
				dojo.publish("widgetFocus", [widget]);
			}
		}
	}});
	dojo.addOnLoad(dijit.registerWin);
}
if (!dojo._hasResource["dijit._base.manager"]) {
	dojo._hasResource["dijit._base.manager"] = true;
	dojo.provide("dijit._base.manager");
	dojo.declare("dijit.WidgetSet", null, {constructor:function () {
		this._hash = {};
	}, add:function (widget) {
		if (this._hash[widget.id]) {
			throw new Error("Tried to register widget with id==" + widget.id + " but that id is already registered");
		}
		this._hash[widget.id] = widget;
	}, remove:function (id) {
		delete this._hash[id];
	}, forEach:function (func) {
		for (var id in this._hash) {
			func(this._hash[id]);
		}
	}, filter:function (filter) {
		var res = new dijit.WidgetSet();
		this.forEach(function (widget) {
			if (filter(widget)) {
				res.add(widget);
			}
		});
		return res;
	}, byId:function (id) {
		return this._hash[id];
	}, byClass:function (cls) {
		return this.filter(function (widget) {
			return widget.declaredClass == cls;
		});
	}});
	dijit.registry = new dijit.WidgetSet();
	dijit._widgetTypeCtr = {};
	dijit.getUniqueId = function (widgetType) {
		var id;
		do {
			id = widgetType + "_" + (widgetType in dijit._widgetTypeCtr ? ++dijit._widgetTypeCtr[widgetType] : dijit._widgetTypeCtr[widgetType] = 0);
		} while (dijit.byId(id));
		return id;
	};
	if (dojo.isIE) {
		dojo.addOnUnload(function () {
			dijit.registry.forEach(function (widget) {
				widget.destroy();
			});
		});
	}
	dijit.byId = function (id) {
		return (dojo.isString(id)) ? dijit.registry.byId(id) : id;
	};
	dijit.byNode = function (node) {
		return dijit.registry.byId(node.getAttribute("widgetId"));
	};
	dijit.getEnclosingWidget = function (node) {
		while (node) {
			if (node.getAttribute && node.getAttribute("widgetId")) {
				return dijit.registry.byId(node.getAttribute("widgetId"));
			}
			node = node.parentNode;
		}
		return null;
	};
	dijit._tabElements = {area:true, button:true, input:true, object:true, select:true, textarea:true};
	dijit._isElementShown = function (elem) {
		var style = dojo.style(elem);
		return (style.visibility != "hidden") && (style.visibility != "collapsed") && (style.display != "none");
	};
	dijit.isTabNavigable = function (elem) {
		if (dojo.hasAttr(elem, "disabled")) {
			return false;
		}
		var hasTabindex = dojo.hasAttr(elem, "tabindex");
		var tabindex = dojo.attr(elem, "tabindex");
		if (hasTabindex && tabindex >= 0) {
			return true;
		}
		var name = elem.nodeName.toLowerCase();
		if (((name == "a" && dojo.hasAttr(elem, "href")) || dijit._tabElements[name]) && (!hasTabindex || tabindex >= 0)) {
			return true;
		}
		return false;
	};
	dijit._getTabNavigable = function (root) {
		var first, last, lowest, lowestTabindex, highest, highestTabindex;
		var walkTree = function (parent) {
			dojo.query("> *", parent).forEach(function (child) {
				var isShown = dijit._isElementShown(child);
				if (isShown && dijit.isTabNavigable(child)) {
					var tabindex = dojo.attr(child, "tabindex");
					if (!dojo.hasAttr(child, "tabindex") || tabindex == 0) {
						if (!first) {
							first = child;
						}
						last = child;
					} else {
						if (tabindex > 0) {
							if (!lowest || tabindex < lowestTabindex) {
								lowestTabindex = tabindex;
								lowest = child;
							}
							if (!highest || tabindex >= highestTabindex) {
								highestTabindex = tabindex;
								highest = child;
							}
						}
					}
				}
				if (isShown) {
					walkTree(child);
				}
			});
		};
		if (dijit._isElementShown(root)) {
			walkTree(root);
		}
		return {first:first, last:last, lowest:lowest, highest:highest};
	};
	dijit.getFirstInTabbingOrder = function (root) {
		var elems = dijit._getTabNavigable(dojo.byId(root));
		return elems.lowest ? elems.lowest : elems.first;
	};
	dijit.getLastInTabbingOrder = function (root) {
		var elems = dijit._getTabNavigable(dojo.byId(root));
		return elems.last ? elems.last : elems.highest;
	};
}
if (!dojo._hasResource["dijit._base.place"]) {
	dojo._hasResource["dijit._base.place"] = true;
	dojo.provide("dijit._base.place");
	dijit.getViewport = function () {
		var _window = dojo.global;
		var _document = dojo.doc;
		var w = 0, h = 0;
		var de = _document.documentElement;
		var dew = de.clientWidth, deh = de.clientHeight;
		if (dojo.isMozilla) {
			var minw, minh, maxw, maxh;
			var dbw = _document.body.clientWidth;
			if (dbw > dew) {
				minw = dew;
				maxw = dbw;
			} else {
				maxw = dew;
				minw = dbw;
			}
			var dbh = _document.body.clientHeight;
			if (dbh > deh) {
				minh = deh;
				maxh = dbh;
			} else {
				maxh = deh;
				minh = dbh;
			}
			w = (maxw > _window.innerWidth) ? minw : maxw;
			h = (maxh > _window.innerHeight) ? minh : maxh;
		} else {
			if (!dojo.isOpera && _window.innerWidth) {
				w = _window.innerWidth;
				h = _window.innerHeight;
			} else {
				if (dojo.isIE && de && deh) {
					w = dew;
					h = deh;
				} else {
					if (dojo.body().clientWidth) {
						w = dojo.body().clientWidth;
						h = dojo.body().clientHeight;
					}
				}
			}
		}
		var scroll = dojo._docScroll();
		return {w:w, h:h, l:scroll.x, t:scroll.y};
	};
	dijit.placeOnScreen = function (node, pos, corners, tryOnly) {
		var choices = dojo.map(corners, function (corner) {
			return {corner:corner, pos:pos};
		});
		return dijit._place(node, choices);
	};
	dijit._place = function (node, choices, layoutNode) {
		var view = dijit.getViewport();
		if (!node.parentNode || String(node.parentNode.tagName).toLowerCase() != "body") {
			dojo.body().appendChild(node);
		}
		var best = null;
		dojo.some(choices, function (choice) {
			var corner = choice.corner;
			var pos = choice.pos;
			if (layoutNode) {
				layoutNode(node, choice.aroundCorner, corner);
			}
			var style = node.style;
			var oldDisplay = style.display;
			var oldVis = style.visibility;
			style.visibility = "hidden";
			style.display = "";
			var mb = dojo.marginBox(node);
			style.display = oldDisplay;
			style.visibility = oldVis;
			var startX = (corner.charAt(1) == "L" ? pos.x : Math.max(view.l, pos.x - mb.w)), startY = (corner.charAt(0) == "T" ? pos.y : Math.max(view.t, pos.y - mb.h)), endX = (corner.charAt(1) == "L" ? Math.min(view.l + view.w, startX + mb.w) : pos.x), endY = (corner.charAt(0) == "T" ? Math.min(view.t + view.h, startY + mb.h) : pos.y), width = endX - startX, height = endY - startY, overflow = (mb.w - width) + (mb.h - height);
			if (best == null || overflow < best.overflow) {
				best = {corner:corner, aroundCorner:choice.aroundCorner, x:startX, y:startY, w:width, h:height, overflow:overflow};
			}
			return !overflow;
		});
		node.style.left = best.x + "px";
		node.style.top = best.y + "px";
		if (best.overflow && layoutNode) {
			layoutNode(node, best.aroundCorner, best.corner);
		}
		return best;
	};
	dijit.placeOnScreenAroundElement = function (node, aroundNode, aroundCorners, layoutNode) {
		aroundNode = dojo.byId(aroundNode);
		var oldDisplay = aroundNode.style.display;
		aroundNode.style.display = "";
		var aroundNodeW = aroundNode.offsetWidth;
		var aroundNodeH = aroundNode.offsetHeight;
		var aroundNodePos = dojo.coords(aroundNode, true);
		aroundNode.style.display = oldDisplay;
		var choices = [];
		for (var nodeCorner in aroundCorners) {
			choices.push({aroundCorner:nodeCorner, corner:aroundCorners[nodeCorner], pos:{x:aroundNodePos.x + (nodeCorner.charAt(1) == "L" ? 0 : aroundNodeW), y:aroundNodePos.y + (nodeCorner.charAt(0) == "T" ? 0 : aroundNodeH)}});
		}
		return dijit._place(node, choices, layoutNode);
	};
}
if (!dojo._hasResource["dijit._base.window"]) {
	dojo._hasResource["dijit._base.window"] = true;
	dojo.provide("dijit._base.window");
	dijit.getDocumentWindow = function (doc) {
		if (dojo.isSafari && !doc._parentWindow) {
			var fix = function (win) {
				win.document._parentWindow = win;
				for (var i = 0; i < win.frames.length; i++) {
					fix(win.frames[i]);
				}
			};
			fix(window.top);
		}
		if (dojo.isIE && window !== document.parentWindow && !doc._parentWindow) {
			doc.parentWindow.execScript("document._parentWindow = window;", "Javascript");
			var win = doc._parentWindow;
			doc._parentWindow = null;
			return win;
		}
		return doc._parentWindow || doc.parentWindow || doc.defaultView;
	};
}
if (!dojo._hasResource["dijit._base.popup"]) {
	dojo._hasResource["dijit._base.popup"] = true;
	dojo.provide("dijit._base.popup");
	dijit.popup = new function () {
		var stack = [], beginZIndex = 1000, idGen = 1;
		this.prepare = function (node) {
			dojo.body().appendChild(node);
			var s = node.style;
			if (s.display == "none") {
				s.display = "";
			}
			s.visibility = "hidden";
			s.position = "absolute";
			s.top = "-9999px";
		};
		this.open = function (args) {
			var widget = args.popup, orient = args.orient || {"BL":"TL", "TL":"BL"}, around = args.around, id = (args.around && args.around.id) ? (args.around.id + "_dropdown") : ("popup_" + idGen++);
			var wrapper = dojo.doc.createElement("div");
			dijit.setWaiRole(wrapper, "presentation");
			wrapper.id = id;
			wrapper.className = "dijitPopup";
			wrapper.style.zIndex = beginZIndex + stack.length;
			wrapper.style.visibility = "hidden";
			if (args.parent) {
				wrapper.dijitPopupParent = args.parent.id;
			}
			dojo.body().appendChild(wrapper);
			var s = widget.domNode.style;
			s.display = "";
			s.visibility = "";
			s.position = "";
			wrapper.appendChild(widget.domNode);
			var iframe = new dijit.BackgroundIframe(wrapper);
			var best = around ? dijit.placeOnScreenAroundElement(wrapper, around, orient, widget.orient ? dojo.hitch(widget, "orient") : null) : dijit.placeOnScreen(wrapper, args, orient == "R" ? ["TR", "BR", "TL", "BL"] : ["TL", "BL", "TR", "BR"]);
			wrapper.style.visibility = "visible";
			var handlers = [];
			var getTopPopup = function () {
				for (var pi = stack.length - 1; pi > 0 && stack[pi].parent === stack[pi - 1].widget; pi--) {
				}
				return stack[pi];
			};
			handlers.push(dojo.connect(wrapper, "onkeypress", this, function (evt) {
				if (evt.keyCode == dojo.keys.ESCAPE && args.onCancel) {
					dojo.stopEvent(evt);
					args.onCancel();
				} else {
					if (evt.keyCode == dojo.keys.TAB) {
						dojo.stopEvent(evt);
						var topPopup = getTopPopup();
						if (topPopup && topPopup.onCancel) {
							topPopup.onCancel();
						}
					}
				}
			}));
			if (widget.onCancel) {
				handlers.push(dojo.connect(widget, "onCancel", null, args.onCancel));
			}
			handlers.push(dojo.connect(widget, widget.onExecute ? "onExecute" : "onChange", null, function () {
				var topPopup = getTopPopup();
				if (topPopup && topPopup.onExecute) {
					topPopup.onExecute();
				}
			}));
			stack.push({wrapper:wrapper, iframe:iframe, widget:widget, parent:args.parent, onExecute:args.onExecute, onCancel:args.onCancel, onClose:args.onClose, handlers:handlers});
			if (widget.onOpen) {
				widget.onOpen(best);
			}
			return best;
		};
		this.close = function (popup) {
			while (dojo.some(stack, function (elem) {
				return elem.widget == popup;
			})) {
				var top = stack.pop(), wrapper = top.wrapper, iframe = top.iframe, widget = top.widget, onClose = top.onClose;
				if (widget.onClose) {
					widget.onClose();
				}
				dojo.forEach(top.handlers, dojo.disconnect);
				if (!widget || !widget.domNode) {
					return;
				}
				this.prepare(widget.domNode);
				iframe.destroy();
				dojo._destroyElement(wrapper);
				if (onClose) {
					onClose();
				}
			}
		};
	}();
	dijit._frames = new function () {
		var queue = [];
		this.pop = function () {
			var iframe;
			if (queue.length) {
				iframe = queue.pop();
				iframe.style.display = "";
			} else {
				if (dojo.isIE) {
					var html = "<iframe src='javascript:\"\"'" + " style='position: absolute; left: 0px; top: 0px;" + "z-index: -1; filter:Alpha(Opacity=\"0\");'>";
					iframe = dojo.doc.createElement(html);
				} else {
					iframe = dojo.doc.createElement("iframe");
					iframe.src = "javascript:\"\"";
					iframe.className = "dijitBackgroundIframe";
				}
				iframe.tabIndex = -1;
				dojo.body().appendChild(iframe);
			}
			return iframe;
		};
		this.push = function (iframe) {
			iframe.style.display = "";
			if (dojo.isIE) {
				iframe.style.removeExpression("width");
				iframe.style.removeExpression("height");
			}
			queue.push(iframe);
		};
	}();
	if (dojo.isIE && dojo.isIE < 7) {
		dojo.addOnLoad(function () {
			var f = dijit._frames;
			dojo.forEach([f.pop()], f.push);
		});
	}
	dijit.BackgroundIframe = function (node) {
		if (!node.id) {
			throw new Error("no id");
		}
		if ((dojo.isIE && dojo.isIE < 7) || (dojo.isFF && dojo.isFF < 3 && dojo.hasClass(dojo.body(), "dijit_a11y"))) {
			var iframe = dijit._frames.pop();
			node.appendChild(iframe);
			if (dojo.isIE) {
				iframe.style.setExpression("width", dojo._scopeName + ".doc.getElementById('" + node.id + "').offsetWidth");
				iframe.style.setExpression("height", dojo._scopeName + ".doc.getElementById('" + node.id + "').offsetHeight");
			}
			this.iframe = iframe;
		}
	};
	dojo.extend(dijit.BackgroundIframe, {destroy:function () {
		if (this.iframe) {
			dijit._frames.push(this.iframe);
			delete this.iframe;
		}
	}});
}
if (!dojo._hasResource["dijit._base.scroll"]) {
	dojo._hasResource["dijit._base.scroll"] = true;
	dojo.provide("dijit._base.scroll");
	dijit.scrollIntoView = function (node) {
		if (dojo.isMozilla) {
			node.scrollIntoView(false);
		} else {
			var parent = node.parentNode;
			var parentBottom = parent.scrollTop + dojo.marginBox(parent).h;
			var nodeBottom = node.offsetTop + dojo.marginBox(node).h;
			if (parentBottom < nodeBottom) {
				parent.scrollTop += (nodeBottom - parentBottom);
			} else {
				if (parent.scrollTop > node.offsetTop) {
					parent.scrollTop -= (parent.scrollTop - node.offsetTop);
				}
			}
		}
	};
}
if (!dojo._hasResource["dijit._base.sniff"]) {
	dojo._hasResource["dijit._base.sniff"] = true;
	dojo.provide("dijit._base.sniff");
	(function () {
		var d = dojo;
		var ie = d.isIE;
		var opera = d.isOpera;
		var maj = Math.floor;
		var ff = d.isFF;
		var classes = {dj_ie:ie, dj_ie6:maj(ie) == 6, dj_ie7:maj(ie) == 7, dj_iequirks:ie && d.isQuirks, dj_opera:opera, dj_opera8:maj(opera) == 8, dj_opera9:maj(opera) == 9, dj_khtml:d.isKhtml, dj_safari:d.isSafari, dj_gecko:d.isMozilla, dj_ff2:maj(ff) == 2};
		for (var p in classes) {
			if (classes[p]) {
				var html = dojo.doc.documentElement;
				if (html.className) {
					html.className += " " + p;
				} else {
					html.className = p;
				}
			}
		}
	})();
}
if (!dojo._hasResource["dijit._base.bidi"]) {
	dojo._hasResource["dijit._base.bidi"] = true;
	dojo.provide("dijit._base.bidi");
	dojo.addOnLoad(function () {
		if (!dojo._isBodyLtr()) {
			dojo.addClass(dojo.body(), "dijitRtl");
		}
	});
}
if (!dojo._hasResource["dijit._base.typematic"]) {
	dojo._hasResource["dijit._base.typematic"] = true;
	dojo.provide("dijit._base.typematic");
	dijit.typematic = {_fireEventAndReload:function () {
		this._timer = null;
		this._callback(++this._count, this._node, this._evt);
		this._currentTimeout = (this._currentTimeout < 0) ? this._initialDelay : ((this._subsequentDelay > 1) ? this._subsequentDelay : Math.round(this._currentTimeout * this._subsequentDelay));
		this._timer = setTimeout(dojo.hitch(this, "_fireEventAndReload"), this._currentTimeout);
	}, trigger:function (evt, _this, node, callback, obj, subsequentDelay, initialDelay) {
		if (obj != this._obj) {
			this.stop();
			this._initialDelay = initialDelay || 500;
			this._subsequentDelay = subsequentDelay || 0.9;
			this._obj = obj;
			this._evt = evt;
			this._node = node;
			this._currentTimeout = -1;
			this._count = -1;
			this._callback = dojo.hitch(_this, callback);
			this._fireEventAndReload();
		}
	}, stop:function () {
		if (this._timer) {
			clearTimeout(this._timer);
			this._timer = null;
		}
		if (this._obj) {
			this._callback(-1, this._node, this._evt);
			this._obj = null;
		}
	}, addKeyListener:function (node, keyObject, _this, callback, subsequentDelay, initialDelay) {
		return [dojo.connect(node, "onkeypress", this, function (evt) {
			if (evt.keyCode == keyObject.keyCode && (!keyObject.charCode || keyObject.charCode == evt.charCode) && (keyObject.ctrlKey === undefined || keyObject.ctrlKey == evt.ctrlKey) && (keyObject.altKey === undefined || keyObject.altKey == evt.ctrlKey) && (keyObject.shiftKey === undefined || keyObject.shiftKey == evt.ctrlKey)) {
				dojo.stopEvent(evt);
				dijit.typematic.trigger(keyObject, _this, node, callback, keyObject, subsequentDelay, initialDelay);
			} else {
				if (dijit.typematic._obj == keyObject) {
					dijit.typematic.stop();
				}
			}
		}), dojo.connect(node, "onkeyup", this, function (evt) {
			if (dijit.typematic._obj == keyObject) {
				dijit.typematic.stop();
			}
		})];
	}, addMouseListener:function (node, _this, callback, subsequentDelay, initialDelay) {
		var dc = dojo.connect;
		return [dc(node, "mousedown", this, function (evt) {
			dojo.stopEvent(evt);
			dijit.typematic.trigger(evt, _this, node, callback, node, subsequentDelay, initialDelay);
		}), dc(node, "mouseup", this, function (evt) {
			dojo.stopEvent(evt);
			dijit.typematic.stop();
		}), dc(node, "mouseout", this, function (evt) {
			dojo.stopEvent(evt);
			dijit.typematic.stop();
		}), dc(node, "mousemove", this, function (evt) {
			dojo.stopEvent(evt);
		}), dc(node, "dblclick", this, function (evt) {
			dojo.stopEvent(evt);
			if (dojo.isIE) {
				dijit.typematic.trigger(evt, _this, node, callback, node, subsequentDelay, initialDelay);
				setTimeout(dojo.hitch(this, dijit.typematic.stop), 50);
			}
		})];
	}, addListener:function (mouseNode, keyNode, keyObject, _this, callback, subsequentDelay, initialDelay) {
		return this.addKeyListener(keyNode, keyObject, _this, callback, subsequentDelay, initialDelay).concat(this.addMouseListener(mouseNode, _this, callback, subsequentDelay, initialDelay));
	}};
}
if (!dojo._hasResource["dijit._base.wai"]) {
	dojo._hasResource["dijit._base.wai"] = true;
	dojo.provide("dijit._base.wai");
	dijit.wai = {onload:function () {
		var div = dojo.doc.createElement("div");
		div.id = "a11yTestNode";
		div.style.cssText = "border: 1px solid;" + "border-color:red green;" + "position: absolute;" + "height: 5px;" + "top: -999px;" + "background-image: url(\"" + dojo.moduleUrl("dojo", "resources/blank.gif") + "\");";
		dojo.body().appendChild(div);
		var cs = dojo.getComputedStyle(div);
		if (cs) {
			var bkImg = cs.backgroundImage;
			var needsA11y = (cs.borderTopColor == cs.borderRightColor) || (bkImg != null && (bkImg == "none" || bkImg == "url(invalid-url:)"));
			dojo[needsA11y ? "addClass" : "removeClass"](dojo.body(), "dijit_a11y");
			dojo.body().removeChild(div);
		}
	}};
	if (dojo.isIE || dojo.isMoz) {
		dojo._loaders.unshift(dijit.wai.onload);
	}
	dojo.mixin(dijit, {hasWaiRole:function (elem) {
		return elem.hasAttribute ? elem.hasAttribute("role") : !!elem.getAttribute("role");
	}, getWaiRole:function (elem) {
		var value = elem.getAttribute("role");
		if (value) {
			var prefixEnd = value.indexOf(":");
			return prefixEnd == -1 ? value : value.substring(prefixEnd + 1);
		} else {
			return "";
		}
	}, setWaiRole:function (elem, role) {
		elem.setAttribute("role", (dojo.isFF && dojo.isFF < 3) ? "wairole:" + role : role);
	}, removeWaiRole:function (elem) {
		elem.removeAttribute("role");
	}, hasWaiState:function (elem, state) {
		if (dojo.isFF && dojo.isFF < 3) {
			return elem.hasAttributeNS("http://www.w3.org/2005/07/aaa", state);
		} else {
			return elem.hasAttribute ? elem.hasAttribute("aria-" + state) : !!elem.getAttribute("aria-" + state);
		}
	}, getWaiState:function (elem, state) {
		if (dojo.isFF && dojo.isFF < 3) {
			return elem.getAttributeNS("http://www.w3.org/2005/07/aaa", state);
		} else {
			var value = elem.getAttribute("aria-" + state);
			return value ? value : "";
		}
	}, setWaiState:function (elem, state, value) {
		if (dojo.isFF && dojo.isFF < 3) {
			elem.setAttributeNS("http://www.w3.org/2005/07/aaa", "aaa:" + state, value);
		} else {
			elem.setAttribute("aria-" + state, value);
		}
	}, removeWaiState:function (elem, state) {
		if (dojo.isFF && dojo.isFF < 3) {
			elem.removeAttributeNS("http://www.w3.org/2005/07/aaa", state);
		} else {
			elem.removeAttribute("aria-" + state);
		}
	}});
}
if (!dojo._hasResource["dijit._base"]) {
	dojo._hasResource["dijit._base"] = true;
	dojo.provide("dijit._base");
	if (dojo.isSafari) {
		dojo.connect(window, "load", function () {
			window.resizeBy(1, 0);
			setTimeout(function () {
				window.resizeBy(-1, 0);
			}, 10);
		});
	}
}
if (!dojo._hasResource["dojo.date.stamp"]) {
	dojo._hasResource["dojo.date.stamp"] = true;
	dojo.provide("dojo.date.stamp");
	dojo.date.stamp.fromISOString = function (formattedString, defaultTime) {
		if (!dojo.date.stamp._isoRegExp) {
			dojo.date.stamp._isoRegExp = /^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;
		}
		var match = dojo.date.stamp._isoRegExp.exec(formattedString);
		var result = null;
		if (match) {
			match.shift();
			if (match[1]) {
				match[1]--;
			}
			if (match[6]) {
				match[6] *= 1000;
			}
			if (defaultTime) {
				defaultTime = new Date(defaultTime);
				dojo.map(["FullYear", "Month", "Date", "Hours", "Minutes", "Seconds", "Milliseconds"], function (prop) {
					return defaultTime["get" + prop]();
				}).forEach(function (value, index) {
					if (match[index] === undefined) {
						match[index] = value;
					}
				});
			}
			result = new Date(match[0] || 1970, match[1] || 0, match[2] || 1, match[3] || 0, match[4] || 0, match[5] || 0, match[6] || 0);
			var offset = 0;
			var zoneSign = match[7] && match[7].charAt(0);
			if (zoneSign != "Z") {
				offset = ((match[8] || 0) * 60) + (Number(match[9]) || 0);
				if (zoneSign != "-") {
					offset *= -1;
				}
			}
			if (zoneSign) {
				offset -= result.getTimezoneOffset();
			}
			if (offset) {
				result.setTime(result.getTime() + offset * 60000);
			}
		}
		return result;
	};
	dojo.date.stamp.toISOString = function (dateObject, options) {
		var _ = function (n) {
			return (n < 10) ? "0" + n : n;
		};
		options = options || {};
		var formattedDate = [];
		var getter = options.zulu ? "getUTC" : "get";
		var date = "";
		if (options.selector != "time") {
			var year = dateObject[getter + "FullYear"]();
			date = ["0000".substr((year + "").length) + year, _(dateObject[getter + "Month"]() + 1), _(dateObject[getter + "Date"]())].join("-");
		}
		formattedDate.push(date);
		if (options.selector != "date") {
			var time = [_(dateObject[getter + "Hours"]()), _(dateObject[getter + "Minutes"]()), _(dateObject[getter + "Seconds"]())].join(":");
			var millis = dateObject[getter + "Milliseconds"]();
			if (options.milliseconds) {
				time += "." + (millis < 100 ? "0" : "") + _(millis);
			}
			if (options.zulu) {
				time += "Z";
			} else {
				if (options.selector != "time") {
					var timezoneOffset = dateObject.getTimezoneOffset();
					var absOffset = Math.abs(timezoneOffset);
					time += (timezoneOffset > 0 ? "-" : "+") + _(Math.floor(absOffset / 60)) + ":" + _(absOffset % 60);
				}
			}
			formattedDate.push(time);
		}
		return formattedDate.join("T");
	};
}
if (!dojo._hasResource["dojo.parser"]) {
	dojo._hasResource["dojo.parser"] = true;
	dojo.provide("dojo.parser");
	dojo.parser = new function () {
		var d = dojo;
		var dtName = d._scopeName + "Type";
		var qry = "[" + dtName + "]";
		function val2type(value) {
			if (d.isString(value)) {
				return "string";
			}
			if (typeof value == "number") {
				return "number";
			}
			if (typeof value == "boolean") {
				return "boolean";
			}
			if (d.isFunction(value)) {
				return "function";
			}
			if (d.isArray(value)) {
				return "array";
			}
			if (value instanceof Date) {
				return "date";
			}
			if (value instanceof d._Url) {
				return "url";
			}
			return "object";
		}
		function str2obj(value, type) {
			switch (type) {
			  case "string":
				return value;
			  case "number":
				return value.length ? Number(value) : NaN;
			  case "boolean":
				return typeof value == "boolean" ? value : !(value.toLowerCase() == "false");
			  case "function":
				if (d.isFunction(value)) {
					value = value.toString();
					value = d.trim(value.substring(value.indexOf("{") + 1, value.length - 1));
				}
				try {
					if (value.search(/[^\w\.]+/i) != -1) {
						value = d.parser._nameAnonFunc(new Function(value), this);
					}
					return d.getObject(value, false);
				}
				catch (e) {
					return new Function();
				}
			  case "array":
				return value.split(/\s*,\s*/);
			  case "date":
				switch (value) {
				  case "":
					return new Date("");
				  case "now":
					return new Date();
				  default:
					return d.date.stamp.fromISOString(value);
				}
			  case "url":
				return d.baseUrl + value;
			  default:
				return d.fromJson(value);
			}
		}
		var instanceClasses = {};
		function getClassInfo(className) {
			if (!instanceClasses[className]) {
				var cls = d.getObject(className);
				if (!d.isFunction(cls)) {
					throw new Error("Could not load class '" + className + "'. Did you spell the name correctly and use a full path, like 'dijit.form.Button'?");
				}
				var proto = cls.prototype;
				var params = {};
				for (var name in proto) {
					if (name.charAt(0) == "_") {
						continue;
					}
					var defVal = proto[name];
					params[name] = val2type(defVal);
				}
				instanceClasses[className] = {cls:cls, params:params};
			}
			return instanceClasses[className];
		}
		this._functionFromScript = function (script) {
			var preamble = "";
			var suffix = "";
			var argsStr = script.getAttribute("args");
			if (argsStr) {
				d.forEach(argsStr.split(/\s*,\s*/), function (part, idx) {
					preamble += "var " + part + " = arguments[" + idx + "]; ";
				});
			}
			var withStr = script.getAttribute("with");
			if (withStr && withStr.length) {
				d.forEach(withStr.split(/\s*,\s*/), function (part) {
					preamble += "with(" + part + "){";
					suffix += "}";
				});
			}
			return new Function(preamble + script.innerHTML + suffix);
		};
		this.instantiate = function (nodes) {
			var thelist = [];
			d.forEach(nodes, function (node) {
				if (!node) {
					return;
				}
				var type = node.getAttribute(dtName);
				if ((!type) || (!type.length)) {
					return;
				}
				var clsInfo = getClassInfo(type);
				var clazz = clsInfo.cls;
				var ps = clazz._noScript || clazz.prototype._noScript;
				var params = {};
				var attributes = node.attributes;
				for (var name in clsInfo.params) {
					var item = attributes.getNamedItem(name);
					if (!item || (!item.specified && (!dojo.isIE || name.toLowerCase() != "value"))) {
						continue;
					}
					var value = item.value;
					switch (name) {
					  case "class":
						value = node.className;
						break;
					  case "style":
						value = node.style && node.style.cssText;
					}
					var _type = clsInfo.params[name];
					params[name] = str2obj(value, _type);
				}
				if (!ps) {
					var connects = [], calls = [];
					d.query("> script[type^='dojo/']", node).orphan().forEach(function (script) {
						var event = script.getAttribute("event"), type = script.getAttribute("type"), nf = d.parser._functionFromScript(script);
						if (event) {
							if (type == "dojo/connect") {
								connects.push({event:event, func:nf});
							} else {
								params[event] = nf;
							}
						} else {
							calls.push(nf);
						}
					});
				}
				var markupFactory = clazz["markupFactory"];
				if (!markupFactory && clazz["prototype"]) {
					markupFactory = clazz.prototype["markupFactory"];
				}
				var instance = markupFactory ? markupFactory(params, node, clazz) : new clazz(params, node);
				thelist.push(instance);
				var jsname = node.getAttribute("jsId");
				if (jsname) {
					d.setObject(jsname, instance);
				}
				if (!ps) {
					d.forEach(connects, function (connect) {
						d.connect(instance, connect.event, null, connect.func);
					});
					d.forEach(calls, function (func) {
						func.call(instance);
					});
				}
			});
			d.forEach(thelist, function (instance) {
				if (instance && instance.startup && !instance._started && (!instance.getParent || !instance.getParent())) {
					instance.startup();
				}
			});
			return thelist;
		};
		this.parse = function (rootNode) {
			var list = d.query(qry, rootNode);
			var instances = this.instantiate(list);
			return instances;
		};
	}();
	(function () {
		var parseRunner = function () {
			if (dojo.config["parseOnLoad"] == true) {
				dojo.parser.parse();
			}
		};
		if (dojo.exists("dijit.wai.onload") && (dijit.wai.onload === dojo._loaders[0])) {
			dojo._loaders.splice(1, 0, parseRunner);
		} else {
			dojo._loaders.unshift(parseRunner);
		}
	})();
	dojo.parser._anonCtr = 0;
	dojo.parser._anon = {};
	dojo.parser._nameAnonFunc = function (anonFuncPtr, thisObj) {
		var jpn = "$joinpoint";
		var nso = (thisObj || dojo.parser._anon);
		if (dojo.isIE) {
			var cn = anonFuncPtr["__dojoNameCache"];
			if (cn && nso[cn] === anonFuncPtr) {
				return anonFuncPtr["__dojoNameCache"];
			}
		}
		var ret = "__" + dojo.parser._anonCtr++;
		while (typeof nso[ret] != "undefined") {
			ret = "__" + dojo.parser._anonCtr++;
		}
		nso[ret] = anonFuncPtr;
		return ret;
	};
}
if (!dojo._hasResource["dijit._Widget"]) {
	dojo._hasResource["dijit._Widget"] = true;
	dojo.provide("dijit._Widget");
	dojo.require("dijit._base");
	dojo.declare("dijit._Widget", null, {id:"", lang:"", dir:"", "class":"", style:"", title:"", srcNodeRef:null, domNode:null, attributeMap:{id:"", dir:"", lang:"", "class":"", style:"", title:""}, postscript:function (params, srcNodeRef) {
		this.create(params, srcNodeRef);
	}, create:function (params, srcNodeRef) {
		this.srcNodeRef = dojo.byId(srcNodeRef);
		this._connects = [];
		this._attaches = [];
		if (this.srcNodeRef && (typeof this.srcNodeRef.id == "string")) {
			this.id = this.srcNodeRef.id;
		}
		if (params) {
			this.params = params;
			dojo.mixin(this, params);
		}
		this.postMixInProperties();
		if (!this.id) {
			this.id = dijit.getUniqueId(this.declaredClass.replace(/\./g, "_"));
		}
		dijit.registry.add(this);
		this.buildRendering();
		if (this.domNode) {
			for (var attr in this.attributeMap) {
				var value = this[attr];
				if (typeof value != "object" && ((value !== "" && value !== false) || (params && params[attr]))) {
					this.setAttribute(attr, value);
				}
			}
		}
		if (this.domNode) {
			this.domNode.setAttribute("widgetId", this.id);
		}
		this.postCreate();
		if (this.srcNodeRef && !this.srcNodeRef.parentNode) {
			delete this.srcNodeRef;
		}
	}, postMixInProperties:function () {
	}, buildRendering:function () {
		this.domNode = this.srcNodeRef || dojo.doc.createElement("div");
	}, postCreate:function () {
	}, startup:function () {
		this._started = true;
	}, destroyRecursive:function (finalize) {
		this.destroyDescendants();
		this.destroy();
	}, destroy:function (finalize) {
		this.uninitialize();
		dojo.forEach(this._connects, function (array) {
			dojo.forEach(array, dojo.disconnect);
		});
		dojo.forEach(this._supportingWidgets || [], function (w) {
			w.destroy();
		});
		this.destroyRendering(finalize);
		dijit.registry.remove(this.id);
	}, destroyRendering:function (finalize) {
		if (this.bgIframe) {
			this.bgIframe.destroy();
			delete this.bgIframe;
		}
		if (this.domNode) {
			dojo._destroyElement(this.domNode);
			delete this.domNode;
		}
		if (this.srcNodeRef) {
			dojo._destroyElement(this.srcNodeRef);
			delete this.srcNodeRef;
		}
	}, destroyDescendants:function () {
		dojo.forEach(this.getDescendants(), function (widget) {
			widget.destroy();
		});
	}, uninitialize:function () {
		return false;
	}, onFocus:function () {
	}, onBlur:function () {
	}, _onFocus:function (e) {
		this.onFocus();
	}, _onBlur:function () {
		this.onBlur();
	}, setAttribute:function (attr, value) {
		var mapNode = this[this.attributeMap[attr] || "domNode"];
		this[attr] = value;
		switch (attr) {
		  case "class":
			dojo.addClass(mapNode, value);
			break;
		  case "style":
			if (mapNode.style.cssText) {
				mapNode.style.cssText += "; " + value;
			} else {
				mapNode.style.cssText = value;
			}
			break;
		  default:
			if (/^on[A-Z]/.test(attr)) {
				attr = attr.toLowerCase();
			}
			if (typeof value == "function") {
				value = dojo.hitch(this, value);
			}
			dojo.attr(mapNode, attr, value);
		}
	}, toString:function () {
		return "[Widget " + this.declaredClass + ", " + (this.id || "NO ID") + "]";
	}, getDescendants:function () {
		if (this.containerNode) {
			var list = dojo.query("[widgetId]", this.containerNode);
			return list.map(dijit.byNode);
		} else {
			return [];
		}
	}, nodesWithKeyClick:["input", "button"], connect:function (obj, event, method) {
		var handles = [];
		if (event == "ondijitclick") {
			if (!this.nodesWithKeyClick[obj.nodeName]) {
				handles.push(dojo.connect(obj, "onkeydown", this, function (e) {
					if (e.keyCode == dojo.keys.ENTER) {
						return (dojo.isString(method)) ? this[method](e) : method.call(this, e);
					} else {
						if (e.keyCode == dojo.keys.SPACE) {
							dojo.stopEvent(e);
						}
					}
				}));
				handles.push(dojo.connect(obj, "onkeyup", this, function (e) {
					if (e.keyCode == dojo.keys.SPACE) {
						return dojo.isString(method) ? this[method](e) : method.call(this, e);
					}
				}));
			}
			event = "onclick";
		}
		handles.push(dojo.connect(obj, event, this, method));
		this._connects.push(handles);
		return handles;
	}, disconnect:function (handles) {
		for (var i = 0; i < this._connects.length; i++) {
			if (this._connects[i] == handles) {
				dojo.forEach(handles, dojo.disconnect);
				this._connects.splice(i, 1);
				return;
			}
		}
	}, isLeftToRight:function () {
		if (!("_ltr" in this)) {
			this._ltr = dojo.getComputedStyle(this.domNode).direction != "rtl";
		}
		return this._ltr;
	}, isFocusable:function () {
		return this.focus && (dojo.style(this.domNode, "display") != "none");
	}});
}
if (!dojo._hasResource["dojo.string"]) {
	dojo._hasResource["dojo.string"] = true;
	dojo.provide("dojo.string");
	dojo.string.pad = function (text, size, ch, end) {
		var out = String(text);
		if (!ch) {
			ch = "0";
		}
		while (out.length < size) {
			if (end) {
				out += ch;
			} else {
				out = ch + out;
			}
		}
		return out;
	};
	dojo.string.substitute = function (template, map, transform, thisObject) {
		return template.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g, function (match, key, format) {
			var value = dojo.getObject(key, false, map);
			if (format) {
				value = dojo.getObject(format, false, thisObject)(value);
			}
			if (transform) {
				value = transform(value, key);
			}
			return value.toString();
		});
	};
	dojo.string.trim = function (str) {
		str = str.replace(/^\s+/, "");
		for (var i = str.length - 1; i > 0; i--) {
			if (/\S/.test(str.charAt(i))) {
				str = str.substring(0, i + 1);
				break;
			}
		}
		return str;
	};
}
if (!dojo._hasResource["dijit._Templated"]) {
	dojo._hasResource["dijit._Templated"] = true;
	dojo.provide("dijit._Templated");
	dojo.declare("dijit._Templated", null, {templateNode:null, templateString:null, templatePath:null, widgetsInTemplate:false, containerNode:null, _skipNodeCache:false, _stringRepl:function (tmpl) {
		var className = this.declaredClass, _this = this;
		return dojo.string.substitute(tmpl, this, function (value, key) {
			if (key.charAt(0) == "!") {
				value = _this[key.substr(1)];
			}
			if (typeof value == "undefined") {
				throw new Error(className + " template:" + key);
			}
			if (!value) {
				return "";
			}
			return key.charAt(0) == "!" ? value : value.toString().replace(/"/g, "&quot;");
		}, this);
	}, buildRendering:function () {
		var cached = dijit._Templated.getCachedTemplate(this.templatePath, this.templateString, this._skipNodeCache);
		var node;
		if (dojo.isString(cached)) {
			node = dijit._Templated._createNodesFromText(this._stringRepl(cached))[0];
		} else {
			node = cached.cloneNode(true);
		}
		this._attachTemplateNodes(node);
		var source = this.srcNodeRef;
		if (source && source.parentNode) {
			source.parentNode.replaceChild(node, source);
		}
		this.domNode = node;
		if (this.widgetsInTemplate) {
			var cw = this._supportingWidgets = dojo.parser.parse(node);
			this._attachTemplateNodes(cw, function (n, p) {
				return n[p];
			});
		}
		this._fillContent(source);
	}, _fillContent:function (source) {
		var dest = this.containerNode;
		if (source && dest) {
			while (source.hasChildNodes()) {
				dest.appendChild(source.firstChild);
			}
		}
	}, _attachTemplateNodes:function (rootNode, getAttrFunc) {
		getAttrFunc = getAttrFunc || function (n, p) {
			return n.getAttribute(p);
		};
		var nodes = dojo.isArray(rootNode) ? rootNode : (rootNode.all || rootNode.getElementsByTagName("*"));
		var x = dojo.isArray(rootNode) ? 0 : -1;
		for (; x < nodes.length; x++) {
			var baseNode = (x == -1) ? rootNode : nodes[x];
			if (this.widgetsInTemplate && getAttrFunc(baseNode, "dojoType")) {
				continue;
			}
			var attachPoint = getAttrFunc(baseNode, "dojoAttachPoint");
			if (attachPoint) {
				var point, points = attachPoint.split(/\s*,\s*/);
				while ((point = points.shift())) {
					if (dojo.isArray(this[point])) {
						this[point].push(baseNode);
					} else {
						this[point] = baseNode;
					}
				}
			}
			var attachEvent = getAttrFunc(baseNode, "dojoAttachEvent");
			if (attachEvent) {
				var event, events = attachEvent.split(/\s*,\s*/);
				var trim = dojo.trim;
				while ((event = events.shift())) {
					if (event) {
						var thisFunc = null;
						if (event.indexOf(":") != -1) {
							var funcNameArr = event.split(":");
							event = trim(funcNameArr[0]);
							thisFunc = trim(funcNameArr[1]);
						} else {
							event = trim(event);
						}
						if (!thisFunc) {
							thisFunc = event;
						}
						this.connect(baseNode, event, thisFunc);
					}
				}
			}
			var role = getAttrFunc(baseNode, "waiRole");
			if (role) {
				dijit.setWaiRole(baseNode, role);
			}
			var values = getAttrFunc(baseNode, "waiState");
			if (values) {
				dojo.forEach(values.split(/\s*,\s*/), function (stateValue) {
					if (stateValue.indexOf("-") != -1) {
						var pair = stateValue.split("-");
						dijit.setWaiState(baseNode, pair[0], pair[1]);
					}
				});
			}
		}
	}});
	dijit._Templated._templateCache = {};
	dijit._Templated.getCachedTemplate = function (templatePath, templateString, alwaysUseString) {
		var tmplts = dijit._Templated._templateCache;
		var key = templateString || templatePath;
		var cached = tmplts[key];
		if (cached) {
			return cached;
		}
		if (!templateString) {
			templateString = dijit._Templated._sanitizeTemplateString(dojo._getText(templatePath));
		}
		templateString = dojo.string.trim(templateString);
		if (alwaysUseString || templateString.match(/\$\{([^\}]+)\}/g)) {
			return (tmplts[key] = templateString);
		} else {
			return (tmplts[key] = dijit._Templated._createNodesFromText(templateString)[0]);
		}
	};
	dijit._Templated._sanitizeTemplateString = function (tString) {
		if (tString) {
			tString = tString.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, "");
			var matches = tString.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
			if (matches) {
				tString = matches[1];
			}
		} else {
			tString = "";
		}
		return tString;
	};
	if (dojo.isIE) {
		dojo.addOnUnload(function () {
			var cache = dijit._Templated._templateCache;
			for (var key in cache) {
				var value = cache[key];
				if (!isNaN(value.nodeType)) {
					dojo._destroyElement(value);
				}
				delete cache[key];
			}
		});
	}
	(function () {
		var tagMap = {cell:{re:/^<t[dh][\s\r\n>]/i, pre:"<table><tbody><tr>", post:"</tr></tbody></table>"}, row:{re:/^<tr[\s\r\n>]/i, pre:"<table><tbody>", post:"</tbody></table>"}, section:{re:/^<(thead|tbody|tfoot)[\s\r\n>]/i, pre:"<table>", post:"</table>"}};
		var tn;
		dijit._Templated._createNodesFromText = function (text) {
			if (!tn) {
				tn = dojo.doc.createElement("div");
				tn.style.display = "none";
				dojo.body().appendChild(tn);
			}
			var tableType = "none";
			var rtext = text.replace(/^\s+/, "");
			for (var type in tagMap) {
				var map = tagMap[type];
				if (map.re.test(rtext)) {
					tableType = type;
					text = map.pre + text + map.post;
					break;
				}
			}
			tn.innerHTML = text;
			if (tn.normalize) {
				tn.normalize();
			}
			var tag = {cell:"tr", row:"tbody", section:"table"}[tableType];
			var _parent = (typeof tag != "undefined") ? tn.getElementsByTagName(tag)[0] : tn;
			var nodes = [];
			while (_parent.firstChild) {
				nodes.push(_parent.removeChild(_parent.firstChild));
			}
			tn.innerHTML = "";
			return nodes;
		};
	})();
	dojo.extend(dijit._Widget, {dojoAttachEvent:"", dojoAttachPoint:"", waiRole:"", waiState:""});
}
if (!dojo._hasResource["dijit._Container"]) {
	dojo._hasResource["dijit._Container"] = true;
	dojo.provide("dijit._Container");
	dojo.declare("dijit._Contained", null, {getParent:function () {
		for (var p = this.domNode.parentNode; p; p = p.parentNode) {
			var id = p.getAttribute && p.getAttribute("widgetId");
			if (id) {
				var parent = dijit.byId(id);
				return parent.isContainer ? parent : null;
			}
		}
		return null;
	}, _getSibling:function (which) {
		var node = this.domNode;
		do {
			node = node[which + "Sibling"];
		} while (node && node.nodeType != 1);
		if (!node) {
			return null;
		}
		var id = node.getAttribute("widgetId");
		return dijit.byId(id);
	}, getPreviousSibling:function () {
		return this._getSibling("previous");
	}, getNextSibling:function () {
		return this._getSibling("next");
	}});
	dojo.declare("dijit._Container", null, {isContainer:true, addChild:function (widget, insertIndex) {
		if (insertIndex === undefined) {
			insertIndex = "last";
		}
		var refNode = this.containerNode || this.domNode;
		if (insertIndex && typeof insertIndex == "number") {
			var children = dojo.query("> [widgetid]", refNode);
			if (children && children.length >= insertIndex) {
				refNode = children[insertIndex - 1];
				insertIndex = "after";
			}
		}
		dojo.place(widget.domNode, refNode, insertIndex);
		if (this._started && !widget._started) {
			widget.startup();
		}
	}, removeChild:function (widget) {
		var node = widget.domNode;
		node.parentNode.removeChild(node);
	}, _nextElement:function (node) {
		do {
			node = node.nextSibling;
		} while (node && node.nodeType != 1);
		return node;
	}, _firstElement:function (node) {
		node = node.firstChild;
		if (node && node.nodeType != 1) {
			node = this._nextElement(node);
		}
		return node;
	}, getChildren:function () {
		return dojo.query("> [widgetId]", this.containerNode || this.domNode).map(dijit.byNode);
	}, hasChildren:function () {
		var cn = this.containerNode || this.domNode;
		return !!this._firstElement(cn);
	}, _getSiblingOfChild:function (child, dir) {
		var node = child.domNode;
		var which = (dir > 0 ? "nextSibling" : "previousSibling");
		do {
			node = node[which];
		} while (node && (node.nodeType != 1 || !dijit.byNode(node)));
		return node ? dijit.byNode(node) : null;
	}});
	dojo.declare("dijit._KeyNavContainer", [dijit._Container], {_keyNavCodes:{}, connectKeyNavHandlers:function (prevKeyCodes, nextKeyCodes) {
		var keyCodes = this._keyNavCodes = {};
		var prev = dojo.hitch(this, this.focusPrev);
		var next = dojo.hitch(this, this.focusNext);
		dojo.forEach(prevKeyCodes, function (code) {
			keyCodes[code] = prev;
		});
		dojo.forEach(nextKeyCodes, function (code) {
			keyCodes[code] = next;
		});
		this.connect(this.domNode, "onkeypress", "_onContainerKeypress");
		this.connect(this.domNode, "onfocus", "_onContainerFocus");
	}, startupKeyNavChildren:function () {
		dojo.forEach(this.getChildren(), dojo.hitch(this, "_startupChild"));
	}, addChild:function (widget, insertIndex) {
		dijit._KeyNavContainer.superclass.addChild.apply(this, arguments);
		this._startupChild(widget);
	}, focus:function () {
		this.focusFirstChild();
	}, focusFirstChild:function () {
		this.focusChild(this._getFirstFocusableChild());
	}, focusNext:function () {
		if (this.focusedChild && this.focusedChild.hasNextFocalNode && this.focusedChild.hasNextFocalNode()) {
			this.focusedChild.focusNext();
			return;
		}
		var child = this._getNextFocusableChild(this.focusedChild, 1);
		if (child.getFocalNodes) {
			this.focusChild(child, child.getFocalNodes()[0]);
		} else {
			this.focusChild(child);
		}
	}, focusPrev:function () {
		if (this.focusedChild && this.focusedChild.hasPrevFocalNode && this.focusedChild.hasPrevFocalNode()) {
			this.focusedChild.focusPrev();
			return;
		}
		var child = this._getNextFocusableChild(this.focusedChild, -1);
		if (child.getFocalNodes) {
			var nodes = child.getFocalNodes();
			this.focusChild(child, nodes[nodes.length - 1]);
		} else {
			this.focusChild(child);
		}
	}, focusChild:function (widget, node) {
		if (widget) {
			if (this.focusedChild && widget !== this.focusedChild) {
				this._onChildBlur(this.focusedChild);
			}
			this.focusedChild = widget;
			if (node && widget.focusFocalNode) {
				widget.focusFocalNode(node);
			} else {
				widget.focus();
			}
		}
	}, _startupChild:function (widget) {
		if (widget.getFocalNodes) {
			dojo.forEach(widget.getFocalNodes(), function (node) {
				dojo.attr(node, "tabindex", -1);
				this._connectNode(node);
			}, this);
		} else {
			var node = widget.focusNode || widget.domNode;
			if (widget.isFocusable()) {
				dojo.attr(node, "tabindex", -1);
			}
			this._connectNode(node);
		}
	}, _connectNode:function (node) {
		this.connect(node, "onfocus", "_onNodeFocus");
		this.connect(node, "onblur", "_onNodeBlur");
	}, _onContainerFocus:function (evt) {
		if (evt.target === this.domNode) {
			this.focusFirstChild();
		}
	}, _onContainerKeypress:function (evt) {
		if (evt.ctrlKey || evt.altKey) {
			return;
		}
		var func = this._keyNavCodes[evt.keyCode];
		if (func) {
			func();
			dojo.stopEvent(evt);
		}
	}, _onNodeFocus:function (evt) {
		dojo.attr(this.domNode, "tabindex", -1);
		var widget = dijit.getEnclosingWidget(evt.target);
		if (widget && widget.isFocusable()) {
			this.focusedChild = widget;
		}
		dojo.stopEvent(evt);
	}, _onNodeBlur:function (evt) {
		if (this.tabIndex) {
			dojo.attr(this.domNode, "tabindex", this.tabIndex);
		}
		dojo.stopEvent(evt);
	}, _onChildBlur:function (widget) {
	}, _getFirstFocusableChild:function () {
		return this._getNextFocusableChild(null, 1);
	}, _getNextFocusableChild:function (child, dir) {
		if (child) {
			child = this._getSiblingOfChild(child, dir);
		}
		var children = this.getChildren();
		for (var i = 0; i < children.length; i++) {
			if (!child) {
				child = children[(dir > 0) ? 0 : (children.length - 1)];
			}
			if (child.isFocusable()) {
				return child;
			}
			child = this._getSiblingOfChild(child, dir);
		}
		return null;
	}});
}
if (!dojo._hasResource["dijit.layout._LayoutWidget"]) {
	dojo._hasResource["dijit.layout._LayoutWidget"] = true;
	dojo.provide("dijit.layout._LayoutWidget");
	dojo.declare("dijit.layout._LayoutWidget", [dijit._Widget, dijit._Container, dijit._Contained], {isLayoutContainer:true, postCreate:function () {
		dojo.addClass(this.domNode, "dijitContainer");
	}, startup:function () {
		if (this._started) {
			return;
		}
		dojo.forEach(this.getChildren(), function (child) {
			child.startup();
		});
		if (!this.getParent || !this.getParent()) {
			this.resize();
			this.connect(window, "onresize", function () {
				this.resize();
			});
		}
		this.inherited(arguments);
	}, resize:function (args) {
		var node = this.domNode;
		if (args) {
			dojo.marginBox(node, args);
			if (args.t) {
				node.style.top = args.t + "px";
			}
			if (args.l) {
				node.style.left = args.l + "px";
			}
		}
		var mb = dojo.mixin(dojo.marginBox(node), args || {});
		this._contentBox = dijit.layout.marginBox2contentBox(node, mb);
		this.layout();
	}, layout:function () {
	}});
	dijit.layout.marginBox2contentBox = function (node, mb) {
		var cs = dojo.getComputedStyle(node);
		var me = dojo._getMarginExtents(node, cs);
		var pb = dojo._getPadBorderExtents(node, cs);
		return {l:dojo._toPixelValue(node, cs.paddingLeft), t:dojo._toPixelValue(node, cs.paddingTop), w:mb.w - (me.w + pb.w), h:mb.h - (me.h + pb.h)};
	};
	(function () {
		var capitalize = function (word) {
			return word.substring(0, 1).toUpperCase() + word.substring(1);
		};
		var size = function (widget, dim) {
			widget.resize ? widget.resize(dim) : dojo.marginBox(widget.domNode, dim);
			dojo.mixin(widget, dojo.marginBox(widget.domNode));
			dojo.mixin(widget, dim);
		};
		dijit.layout.layoutChildren = function (container, dim, children) {
			dim = dojo.mixin({}, dim);
			dojo.addClass(container, "dijitLayoutContainer");
			children = dojo.filter(children, function (item) {
				return item.layoutAlign != "client";
			}).concat(dojo.filter(children, function (item) {
				return item.layoutAlign == "client";
			}));
			dojo.forEach(children, function (child) {
				var elm = child.domNode, pos = child.layoutAlign;
				var elmStyle = elm.style;
				elmStyle.left = dim.l + "px";
				elmStyle.top = dim.t + "px";
				elmStyle.bottom = elmStyle.right = "auto";
				dojo.addClass(elm, "dijitAlign" + capitalize(pos));
				if (pos == "top" || pos == "bottom") {
					size(child, {w:dim.w});
					dim.h -= child.h;
					if (pos == "top") {
						dim.t += child.h;
					} else {
						elmStyle.top = dim.t + dim.h + "px";
					}
				} else {
					if (pos == "left" || pos == "right") {
						size(child, {h:dim.h});
						dim.w -= child.w;
						if (pos == "left") {
							dim.l += child.w;
						} else {
							elmStyle.left = dim.l + dim.w + "px";
						}
					} else {
						if (pos == "client") {
							size(child, dim);
						}
					}
				}
			});
		};
	})();
}
if (!dojo._hasResource["dijit.form._FormWidget"]) {
	dojo._hasResource["dijit.form._FormWidget"] = true;
	dojo.provide("dijit.form._FormWidget");
	dojo.declare("dijit.form._FormWidget", [dijit._Widget, dijit._Templated], {baseClass:"", name:"", alt:"", value:"", type:"text", tabIndex:"0", disabled:false, readOnly:false, intermediateChanges:false, attributeMap:dojo.mixin(dojo.clone(dijit._Widget.prototype.attributeMap), {value:"focusNode", disabled:"focusNode", readOnly:"focusNode", id:"focusNode", tabIndex:"focusNode", alt:"focusNode"}), setAttribute:function (attr, value) {
		this.inherited(arguments);
		switch (attr) {
		  case "disabled":
			var tabIndexNode = this[this.attributeMap["tabIndex"] || "domNode"];
			if (value) {
				this._hovering = false;
				this._active = false;
				tabIndexNode.removeAttribute("tabIndex");
			} else {
				tabIndexNode.setAttribute("tabIndex", this.tabIndex);
			}
			dijit.setWaiState(this[this.attributeMap["disabled"] || "domNode"], "disabled", value);
			this._setStateClass();
		}
	}, setDisabled:function (disabled) {
		dojo.deprecated("setDisabled(" + disabled + ") is deprecated. Use setAttribute('disabled'," + disabled + ") instead.", "", "2.0");
		this.setAttribute("disabled", disabled);
	}, _onMouse:function (event) {
		var mouseNode = event.currentTarget;
		if (mouseNode && mouseNode.getAttribute) {
			this.stateModifier = mouseNode.getAttribute("stateModifier") || "";
		}
		if (!this.disabled) {
			switch (event.type) {
			  case "mouseenter":
			  case "mouseover":
				this._hovering = true;
				this._active = this._mouseDown;
				break;
			  case "mouseout":
			  case "mouseleave":
				this._hovering = false;
				this._active = false;
				break;
			  case "mousedown":
				this._active = true;
				this._mouseDown = true;
				var mouseUpConnector = this.connect(dojo.body(), "onmouseup", function () {
					this._active = false;
					this._mouseDown = false;
					this._setStateClass();
					this.disconnect(mouseUpConnector);
				});
				if (this.isFocusable()) {
					this.focus();
				}
				break;
			}
			this._setStateClass();
		}
	}, isFocusable:function () {
		return !this.disabled && !this.readOnly && this.focusNode && (dojo.style(this.domNode, "display") != "none");
	}, focus:function () {
		setTimeout(dojo.hitch(this, dijit.focus, this.focusNode), 0);
	}, _setStateClass:function () {
		if (!("staticClass" in this)) {
			this.staticClass = (this.stateNode || this.domNode).className;
		}
		var classes = [this.baseClass];
		function multiply(modifier) {
			classes = classes.concat(dojo.map(classes, function (c) {
				return c + modifier;
			}), "dijit" + modifier);
		}
		if (this.checked) {
			multiply("Checked");
		}
		if (this.state) {
			multiply(this.state);
		}
		if (this.selected) {
			multiply("Selected");
		}
		if (this.disabled) {
			multiply("Disabled");
		} else {
			if (this.readOnly) {
				multiply("ReadOnly");
			} else {
				if (this._active) {
					multiply(this.stateModifier + "Active");
				} else {
					if (this._focused) {
						multiply("Focused");
					}
					if (this._hovering) {
						multiply(this.stateModifier + "Hover");
					}
				}
			}
		}
		(this.stateNode || this.domNode).className = this.staticClass + " " + classes.join(" ");
	}, onChange:function (newValue) {
	}, _onChangeMonitor:"value", _onChangeActive:false, _handleOnChange:function (newValue, priorityChange) {
		this._lastValue = newValue;
		if (this._lastValueReported == undefined && (priorityChange === null || !this._onChangeActive)) {
			this._resetValue = this._lastValueReported = newValue;
		}
		if ((this.intermediateChanges || priorityChange || priorityChange === undefined) && ((newValue && newValue.toString) ? newValue.toString() : newValue) !== ((this._lastValueReported && this._lastValueReported.toString) ? this._lastValueReported.toString() : this._lastValueReported)) {
			this._lastValueReported = newValue;
			if (this._onChangeActive) {
				this.onChange(newValue);
			}
		}
	}, reset:function () {
		this._hasBeenBlurred = false;
		if (this.setValue && !this._getValueDeprecated) {
			this.setValue(this._resetValue, true);
		} else {
			if (this._onChangeMonitor) {
				this.setAttribute(this._onChangeMonitor, (this._resetValue !== undefined && this._resetValue !== null) ? this._resetValue : "");
			}
		}
	}, create:function () {
		this.inherited(arguments);
		this._onChangeActive = true;
		this._setStateClass();
	}, destroy:function () {
		if (this._layoutHackHandle) {
			clearTimeout(this._layoutHackHandle);
		}
		this.inherited(arguments);
	}, setValue:function (value) {
		dojo.deprecated("dijit.form._FormWidget:setValue(" + value + ") is deprecated.  Use setAttribute('value'," + value + ") instead.", "", "2.0");
		this.setAttribute("value", value);
	}, _getValueDeprecated:true, getValue:function () {
		dojo.deprecated("dijit.form._FormWidget:getValue() is deprecated.  Use widget.value instead.", "", "2.0");
		return this.value;
	}, _layoutHack:function () {
		if (dojo.isFF == 2) {
			var node = this.domNode;
			var old = node.style.opacity;
			node.style.opacity = "0.999";
			this._layoutHackHandle = setTimeout(dojo.hitch(this, function () {
				this._layoutHackHandle = null;
				node.style.opacity = old;
			}), 0);
		}
	}});
	dojo.declare("dijit.form._FormValueWidget", dijit.form._FormWidget, {attributeMap:dojo.mixin(dojo.clone(dijit.form._FormWidget.prototype.attributeMap), {value:""}), postCreate:function () {
		this.setValue(this.value, null);
	}, setValue:function (newValue, priorityChange) {
		this.value = newValue;
		this._handleOnChange(newValue, priorityChange);
	}, _getValueDeprecated:false, getValue:function () {
		return this._lastValue;
	}, undo:function () {
		this.setValue(this._lastValueReported, false);
	}, _valueChanged:function () {
		var v = this.getValue();
		var lv = this._lastValueReported;
		return ((v !== null && (v !== undefined) && v.toString) ? v.toString() : "") !== ((lv !== null && (lv !== undefined) && lv.toString) ? lv.toString() : "");
	}, _onKeyPress:function (e) {
		if (e.keyCode == dojo.keys.ESCAPE && !e.shiftKey && !e.ctrlKey && !e.altKey) {
			if (this._valueChanged()) {
				this.undo();
				dojo.stopEvent(e);
				return false;
			}
		}
		return true;
	}});
}
if (!dojo._hasResource["dijit.dijit"]) {
	dojo._hasResource["dijit.dijit"] = true;
	dojo.provide("dijit.dijit");
}
if (!dojo._hasResource["dojo.dnd.common"]) {
	dojo._hasResource["dojo.dnd.common"] = true;
	dojo.provide("dojo.dnd.common");
	dojo.dnd._copyKey = navigator.appVersion.indexOf("Macintosh") < 0 ? "ctrlKey" : "metaKey";
	dojo.dnd.getCopyKeyState = function (e) {
		return e[dojo.dnd._copyKey];
	};
	dojo.dnd._uniqueId = 0;
	dojo.dnd.getUniqueId = function () {
		var id;
		do {
			id = dojo._scopeName + "Unique" + (++dojo.dnd._uniqueId);
		} while (dojo.byId(id));
		return id;
	};
	dojo.dnd._empty = {};
	dojo.dnd.isFormElement = function (e) {
		var t = e.target;
		if (t.nodeType == 3) {
			t = t.parentNode;
		}
		return " button textarea input select option ".indexOf(" " + t.tagName.toLowerCase() + " ") >= 0;
	};
}
if (!dojo._hasResource["dojo.dnd.autoscroll"]) {
	dojo._hasResource["dojo.dnd.autoscroll"] = true;
	dojo.provide("dojo.dnd.autoscroll");
	dojo.dnd.getViewport = function () {
		var d = dojo.doc, dd = d.documentElement, w = window, b = dojo.body();
		if (dojo.isMozilla) {
			return {w:dd.clientWidth, h:w.innerHeight};
		} else {
			if (!dojo.isOpera && w.innerWidth) {
				return {w:w.innerWidth, h:w.innerHeight};
			} else {
				if (!dojo.isOpera && dd && dd.clientWidth) {
					return {w:dd.clientWidth, h:dd.clientHeight};
				} else {
					if (b.clientWidth) {
						return {w:b.clientWidth, h:b.clientHeight};
					}
				}
			}
		}
		return null;
	};
	dojo.dnd.V_TRIGGER_AUTOSCROLL = 32;
	dojo.dnd.H_TRIGGER_AUTOSCROLL = 32;
	dojo.dnd.V_AUTOSCROLL_VALUE = 16;
	dojo.dnd.H_AUTOSCROLL_VALUE = 16;
	dojo.dnd.autoScroll = function (e) {
		var v = dojo.dnd.getViewport(), dx = 0, dy = 0;
		if (e.clientX < dojo.dnd.H_TRIGGER_AUTOSCROLL) {
			dx = -dojo.dnd.H_AUTOSCROLL_VALUE;
		} else {
			if (e.clientX > v.w - dojo.dnd.H_TRIGGER_AUTOSCROLL) {
				dx = dojo.dnd.H_AUTOSCROLL_VALUE;
			}
		}
		if (e.clientY < dojo.dnd.V_TRIGGER_AUTOSCROLL) {
			dy = -dojo.dnd.V_AUTOSCROLL_VALUE;
		} else {
			if (e.clientY > v.h - dojo.dnd.V_TRIGGER_AUTOSCROLL) {
				dy = dojo.dnd.V_AUTOSCROLL_VALUE;
			}
		}
		window.scrollBy(dx, dy);
	};
	dojo.dnd._validNodes = {"div":1, "p":1, "td":1};
	dojo.dnd._validOverflow = {"auto":1, "scroll":1};
	dojo.dnd.autoScrollNodes = function (e) {
		for (var n = e.target; n; ) {
			if (n.nodeType == 1 && (n.tagName.toLowerCase() in dojo.dnd._validNodes)) {
				var s = dojo.getComputedStyle(n);
				if (s.overflow.toLowerCase() in dojo.dnd._validOverflow) {
					var b = dojo._getContentBox(n, s), t = dojo._abs(n, true);
					b.l += t.x + n.scrollLeft;
					b.t += t.y + n.scrollTop;
					var w = Math.min(dojo.dnd.H_TRIGGER_AUTOSCROLL, b.w / 2), h = Math.min(dojo.dnd.V_TRIGGER_AUTOSCROLL, b.h / 2), rx = e.pageX - b.l, ry = e.pageY - b.t, dx = 0, dy = 0;
					if (rx > 0 && rx < b.w) {
						if (rx < w) {
							dx = -dojo.dnd.H_AUTOSCROLL_VALUE;
						} else {
							if (rx > b.w - w) {
								dx = dojo.dnd.H_AUTOSCROLL_VALUE;
							}
						}
					}
					if (ry > 0 && ry < b.h) {
						if (ry < h) {
							dy = -dojo.dnd.V_AUTOSCROLL_VALUE;
						} else {
							if (ry > b.h - h) {
								dy = dojo.dnd.V_AUTOSCROLL_VALUE;
							}
						}
					}
					var oldLeft = n.scrollLeft, oldTop = n.scrollTop;
					n.scrollLeft = n.scrollLeft + dx;
					n.scrollTop = n.scrollTop + dy;
					if (oldLeft != n.scrollLeft || oldTop != n.scrollTop) {
						return;
					}
				}
			}
			try {
				n = n.parentNode;
			}
			catch (x) {
				n = null;
			}
		}
		dojo.dnd.autoScroll(e);
	};
}
if (!dojo._hasResource["dojo.dnd.Mover"]) {
	dojo._hasResource["dojo.dnd.Mover"] = true;
	dojo.provide("dojo.dnd.Mover");
	dojo.declare("dojo.dnd.Mover", null, {constructor:function (node, e, host) {
		this.node = dojo.byId(node);
		this.marginBox = {l:e.pageX, t:e.pageY};
		this.mouseButton = e.button;
		var h = this.host = host, d = node.ownerDocument, firstEvent = dojo.connect(d, "onmousemove", this, "onFirstMove");
		this.events = [dojo.connect(d, "onmousemove", this, "onMouseMove"), dojo.connect(d, "onmouseup", this, "onMouseUp"), dojo.connect(d, "ondragstart", dojo, "stopEvent"), dojo.connect(d, "onselectstart", dojo, "stopEvent"), firstEvent];
		if (h && h.onMoveStart) {
			h.onMoveStart(this);
		}
	}, onMouseMove:function (e) {
		dojo.dnd.autoScroll(e);
		var m = this.marginBox;
		this.host.onMove(this, {l:m.l + e.pageX, t:m.t + e.pageY});
	}, onMouseUp:function (e) {
		if (this.mouseButton == e.button) {
			this.destroy();
		}
	}, onFirstMove:function () {
		var s = this.node.style, l, t;
		switch (s.position) {
		  case "relative":
		  case "absolute":
			l = Math.round(parseFloat(s.left));
			t = Math.round(parseFloat(s.top));
			break;
		  default:
			s.position = "absolute";
			var m = dojo.marginBox(this.node);
			l = m.l;
			t = m.t;
			break;
		}
		this.marginBox.l = l - this.marginBox.l;
		this.marginBox.t = t - this.marginBox.t;
		this.host.onFirstMove(this);
		dojo.disconnect(this.events.pop());
	}, destroy:function () {
		dojo.forEach(this.events, dojo.disconnect);
		var h = this.host;
		if (h && h.onMoveStop) {
			h.onMoveStop(this);
		}
		this.events = this.node = null;
	}});
}
if (!dojo._hasResource["dojo.dnd.Moveable"]) {
	dojo._hasResource["dojo.dnd.Moveable"] = true;
	dojo.provide("dojo.dnd.Moveable");
	dojo.declare("dojo.dnd.Moveable", null, {handle:"", delay:0, skip:false, constructor:function (node, params) {
		this.node = dojo.byId(node);
		if (!params) {
			params = {};
		}
		this.handle = params.handle ? dojo.byId(params.handle) : null;
		if (!this.handle) {
			this.handle = this.node;
		}
		this.delay = params.delay > 0 ? params.delay : 0;
		this.skip = params.skip;
		this.mover = params.mover ? params.mover : dojo.dnd.Mover;
		this.events = [dojo.connect(this.handle, "onmousedown", this, "onMouseDown"), dojo.connect(this.handle, "ondragstart", this, "onSelectStart"), dojo.connect(this.handle, "onselectstart", this, "onSelectStart")];
	}, markupFactory:function (params, node) {
		return new dojo.dnd.Moveable(node, params);
	}, destroy:function () {
		dojo.forEach(this.events, dojo.disconnect);
		this.events = this.node = this.handle = null;
	}, onMouseDown:function (e) {
		if (this.skip && dojo.dnd.isFormElement(e)) {
			return;
		}
		if (this.delay) {
			this.events.push(dojo.connect(this.handle, "onmousemove", this, "onMouseMove"));
			this.events.push(dojo.connect(this.handle, "onmouseup", this, "onMouseUp"));
			this._lastX = e.pageX;
			this._lastY = e.pageY;
		} else {
			new this.mover(this.node, e, this);
		}
		dojo.stopEvent(e);
	}, onMouseMove:function (e) {
		if (Math.abs(e.pageX - this._lastX) > this.delay || Math.abs(e.pageY - this._lastY) > this.delay) {
			this.onMouseUp(e);
			new this.mover(this.node, e, this);
		}
		dojo.stopEvent(e);
	}, onMouseUp:function (e) {
		dojo.disconnect(this.events.pop());
		dojo.disconnect(this.events.pop());
	}, onSelectStart:function (e) {
		if (!this.skip || !dojo.dnd.isFormElement(e)) {
			dojo.stopEvent(e);
		}
	}, onMoveStart:function (mover) {
		dojo.publish("/dnd/move/start", [mover]);
		dojo.addClass(dojo.body(), "dojoMove");
		dojo.addClass(this.node, "dojoMoveItem");
	}, onMoveStop:function (mover) {
		dojo.publish("/dnd/move/stop", [mover]);
		dojo.removeClass(dojo.body(), "dojoMove");
		dojo.removeClass(this.node, "dojoMoveItem");
	}, onFirstMove:function (mover) {
	}, onMove:function (mover, leftTop) {
		this.onMoving(mover, leftTop);
		var s = mover.node.style;
		s.left = leftTop.l + "px";
		s.top = leftTop.t + "px";
		this.onMoved(mover, leftTop);
	}, onMoving:function (mover, leftTop) {
	}, onMoved:function (mover, leftTop) {
	}});
}
if (!dojo._hasResource["dojo.dnd.TimedMoveable"]) {
	dojo._hasResource["dojo.dnd.TimedMoveable"] = true;
	dojo.provide("dojo.dnd.TimedMoveable");
	(function () {
		var oldOnMove = dojo.dnd.Moveable.prototype.onMove;
		dojo.declare("dojo.dnd.TimedMoveable", dojo.dnd.Moveable, {timeout:40, constructor:function (node, params) {
			if (!params) {
				params = {};
			}
			if (params.timeout && typeof params.timeout == "number" && params.timeout >= 0) {
				this.timeout = params.timeout;
			}
		}, markupFactory:function (params, node) {
			return new dojo.dnd.TimedMoveable(node, params);
		}, onMoveStop:function (mover) {
			if (mover._timer) {
				clearTimeout(mover._timer);
				oldOnMove.call(this, mover, mover._leftTop);
			}
			dojo.dnd.Moveable.prototype.onMoveStop.apply(this, arguments);
		}, onMove:function (mover, leftTop) {
			mover._leftTop = leftTop;
			if (!mover._timer) {
				var _t = this;
				mover._timer = setTimeout(function () {
					mover._timer = null;
					oldOnMove.call(_t, mover, mover._leftTop);
				}, this.timeout);
			}
		}});
	})();
}
if (!dojo._hasResource["dojo.fx"]) {
	dojo._hasResource["dojo.fx"] = true;
	dojo.provide("dojo.fx");
	dojo.provide("dojo.fx.Toggler");
	(function () {
		var _baseObj = {_fire:function (evt, args) {
			if (this[evt]) {
				this[evt].apply(this, args || []);
			}
			return this;
		}};
		var _chain = function (animations) {
			this._index = -1;
			this._animations = animations || [];
			this._current = this._onAnimateCtx = this._onEndCtx = null;
			this.duration = 0;
			dojo.forEach(this._animations, function (a) {
				this.duration += a.duration;
				if (a.delay) {
					this.duration += a.delay;
				}
			}, this);
		};
		dojo.extend(_chain, {_onAnimate:function () {
			this._fire("onAnimate", arguments);
		}, _onEnd:function () {
			dojo.disconnect(this._onAnimateCtx);
			dojo.disconnect(this._onEndCtx);
			this._onAnimateCtx = this._onEndCtx = null;
			if (this._index + 1 == this._animations.length) {
				this._fire("onEnd");
			} else {
				this._current = this._animations[++this._index];
				this._onAnimateCtx = dojo.connect(this._current, "onAnimate", this, "_onAnimate");
				this._onEndCtx = dojo.connect(this._current, "onEnd", this, "_onEnd");
				this._current.play(0, true);
			}
		}, play:function (delay, gotoStart) {
			if (!this._current) {
				this._current = this._animations[this._index = 0];
			}
			if (!gotoStart && this._current.status() == "playing") {
				return this;
			}
			var beforeBegin = dojo.connect(this._current, "beforeBegin", this, function () {
				this._fire("beforeBegin");
			}), onBegin = dojo.connect(this._current, "onBegin", this, function (arg) {
				this._fire("onBegin", arguments);
			}), onPlay = dojo.connect(this._current, "onPlay", this, function (arg) {
				this._fire("onPlay", arguments);
				dojo.disconnect(beforeBegin);
				dojo.disconnect(onBegin);
				dojo.disconnect(onPlay);
			});
			if (this._onAnimateCtx) {
				dojo.disconnect(this._onAnimateCtx);
			}
			this._onAnimateCtx = dojo.connect(this._current, "onAnimate", this, "_onAnimate");
			if (this._onEndCtx) {
				dojo.disconnect(this._onEndCtx);
			}
			this._onEndCtx = dojo.connect(this._current, "onEnd", this, "_onEnd");
			this._current.play.apply(this._current, arguments);
			return this;
		}, pause:function () {
			if (this._current) {
				var e = dojo.connect(this._current, "onPause", this, function (arg) {
					this._fire("onPause", arguments);
					dojo.disconnect(e);
				});
				this._current.pause();
			}
			return this;
		}, gotoPercent:function (percent, andPlay) {
			this.pause();
			var offset = this.duration * percent;
			this._current = null;
			dojo.some(this._animations, function (a) {
				if (a.duration <= offset) {
					this._current = a;
					return true;
				}
				offset -= a.duration;
				return false;
			});
			if (this._current) {
				this._current.gotoPercent(offset / _current.duration, andPlay);
			}
			return this;
		}, stop:function (gotoEnd) {
			if (this._current) {
				if (gotoEnd) {
					for (; this._index + 1 < this._animations.length; ++this._index) {
						this._animations[this._index].stop(true);
					}
					this._current = this._animations[this._index];
				}
				var e = dojo.connect(this._current, "onStop", this, function (arg) {
					this._fire("onStop", arguments);
					dojo.disconnect(e);
				});
				this._current.stop();
			}
			return this;
		}, status:function () {
			return this._current ? this._current.status() : "stopped";
		}, destroy:function () {
			if (this._onAnimateCtx) {
				dojo.disconnect(this._onAnimateCtx);
			}
			if (this._onEndCtx) {
				dojo.disconnect(this._onEndCtx);
			}
		}});
		dojo.extend(_chain, _baseObj);
		dojo.fx.chain = function (animations) {
			return new _chain(animations);
		};
		var _combine = function (animations) {
			this._animations = animations || [];
			this._connects = [];
			this._finished = 0;
			this.duration = 0;
			dojo.forEach(animations, function (a) {
				var duration = a.duration;
				if (a.delay) {
					duration += a.delay;
				}
				if (this.duration < duration) {
					this.duration = duration;
				}
				this._connects.push(dojo.connect(a, "onEnd", this, "_onEnd"));
			}, this);
			this._pseudoAnimation = new dojo._Animation({curve:[0, 1], duration:this.duration});
			dojo.forEach(["beforeBegin", "onBegin", "onPlay", "onAnimate", "onPause", "onStop"], function (evt) {
				this._connects.push(dojo.connect(this._pseudoAnimation, evt, dojo.hitch(this, "_fire", evt)));
			}, this);
		};
		dojo.extend(_combine, {_doAction:function (action, args) {
			dojo.forEach(this._animations, function (a) {
				a[action].apply(a, args);
			});
			return this;
		}, _onEnd:function () {
			if (++this._finished == this._animations.length) {
				this._fire("onEnd");
			}
		}, _call:function (action, args) {
			var t = this._pseudoAnimation;
			t[action].apply(t, args);
		}, play:function (delay, gotoStart) {
			this._finished = 0;
			this._doAction("play", arguments);
			this._call("play", arguments);
			return this;
		}, pause:function () {
			this._doAction("pause", arguments);
			this._call("pause", arguments);
			return this;
		}, gotoPercent:function (percent, andPlay) {
			var ms = this.duration * percent;
			dojo.forEach(this._animations, function (a) {
				a.gotoPercent(a.duration < ms ? 1 : (ms / a.duration), andPlay);
			});
			this._call("gotoProcent", arguments);
			return this;
		}, stop:function (gotoEnd) {
			this._doAction("stop", arguments);
			this._call("stop", arguments);
			return this;
		}, status:function () {
			return this._pseudoAnimation.status();
		}, destroy:function () {
			dojo.forEach(this._connects, dojo.disconnect);
		}});
		dojo.extend(_combine, _baseObj);
		dojo.fx.combine = function (animations) {
			return new _combine(animations);
		};
	})();
	dojo.declare("dojo.fx.Toggler", null, {constructor:function (args) {
		var _t = this;
		dojo.mixin(_t, args);
		_t.node = args.node;
		_t._showArgs = dojo.mixin({}, args);
		_t._showArgs.node = _t.node;
		_t._showArgs.duration = _t.showDuration;
		_t.showAnim = _t.showFunc(_t._showArgs);
		_t._hideArgs = dojo.mixin({}, args);
		_t._hideArgs.node = _t.node;
		_t._hideArgs.duration = _t.hideDuration;
		_t.hideAnim = _t.hideFunc(_t._hideArgs);
		dojo.connect(_t.showAnim, "beforeBegin", dojo.hitch(_t.hideAnim, "stop", true));
		dojo.connect(_t.hideAnim, "beforeBegin", dojo.hitch(_t.showAnim, "stop", true));
	}, node:null, showFunc:dojo.fadeIn, hideFunc:dojo.fadeOut, showDuration:200, hideDuration:200, show:function (delay) {
		return this.showAnim.play(delay || 0);
	}, hide:function (delay) {
		return this.hideAnim.play(delay || 0);
	}});
	dojo.fx.wipeIn = function (args) {
		args.node = dojo.byId(args.node);
		var node = args.node, s = node.style;
		var anim = dojo.animateProperty(dojo.mixin({properties:{height:{start:function () {
			s.overflow = "hidden";
			if (s.visibility == "hidden" || s.display == "none") {
				s.height = "1px";
				s.display = "";
				s.visibility = "";
				return 1;
			} else {
				var height = dojo.style(node, "height");
				return Math.max(height, 1);
			}
		}, end:function () {
			return node.scrollHeight;
		}}}}, args));
		dojo.connect(anim, "onEnd", function () {
			s.height = "auto";
		});
		return anim;
	};
	dojo.fx.wipeOut = function (args) {
		var node = args.node = dojo.byId(args.node);
		var s = node.style;
		var anim = dojo.animateProperty(dojo.mixin({properties:{height:{end:1}}}, args));
		dojo.connect(anim, "beforeBegin", function () {
			s.overflow = "hidden";
			s.display = "";
		});
		dojo.connect(anim, "onEnd", function () {
			s.height = "auto";
			s.display = "none";
		});
		return anim;
	};
	dojo.fx.slideTo = function (args) {
		var node = (args.node = dojo.byId(args.node));
		var top = null;
		var left = null;
		var init = (function (n) {
			return function () {
				var cs = dojo.getComputedStyle(n);
				var pos = cs.position;
				top = (pos == "absolute" ? n.offsetTop : parseInt(cs.top) || 0);
				left = (pos == "absolute" ? n.offsetLeft : parseInt(cs.left) || 0);
				if (pos != "absolute" && pos != "relative") {
					var ret = dojo.coords(n, true);
					top = ret.y;
					left = ret.x;
					n.style.position = "absolute";
					n.style.top = top + "px";
					n.style.left = left + "px";
				}
			};
		})(node);
		init();
		var anim = dojo.animateProperty(dojo.mixin({properties:{top:{end:args.top || 0}, left:{end:args.left || 0}}}, args));
		dojo.connect(anim, "beforeBegin", anim, init);
		return anim;
	};
}
if (!dojo._hasResource["dojo.i18n"]) {
	dojo._hasResource["dojo.i18n"] = true;
	dojo.provide("dojo.i18n");
	dojo.i18n.getLocalization = function (packageName, bundleName, locale) {
		locale = dojo.i18n.normalizeLocale(locale);
		var elements = locale.split("-");
		var module = [packageName, "nls", bundleName].join(".");
		var bundle = dojo._loadedModules[module];
		if (bundle) {
			var localization;
			for (var i = elements.length; i > 0; i--) {
				var loc = elements.slice(0, i).join("_");
				if (bundle[loc]) {
					localization = bundle[loc];
					break;
				}
			}
			if (!localization) {
				localization = bundle.ROOT;
			}
			if (localization) {
				var clazz = function () {
				};
				clazz.prototype = localization;
				return new clazz();
			}
		}
		throw new Error("Bundle not found: " + bundleName + " in " + packageName + " , locale=" + locale);
	};
	dojo.i18n.normalizeLocale = function (locale) {
		var result = locale ? locale.toLowerCase() : dojo.locale;
		if (result == "root") {
			result = "ROOT";
		}
		return result;
	};
	dojo.i18n._requireLocalization = function (moduleName, bundleName, locale, availableFlatLocales) {
		var targetLocale = dojo.i18n.normalizeLocale(locale);
		var bundlePackage = [moduleName, "nls", bundleName].join(".");
		var bestLocale = "";
		if (availableFlatLocales) {
			var flatLocales = availableFlatLocales.split(",");
			for (var i = 0; i < flatLocales.length; i++) {
				if (targetLocale.indexOf(flatLocales[i]) == 0) {
					if (flatLocales[i].length > bestLocale.length) {
						bestLocale = flatLocales[i];
					}
				}
			}
			if (!bestLocale) {
				bestLocale = "ROOT";
			}
		}
		var tempLocale = availableFlatLocales ? bestLocale : targetLocale;
		var bundle = dojo._loadedModules[bundlePackage];
		var localizedBundle = null;
		if (bundle) {
			if (dojo.config.localizationComplete && bundle._built) {
				return;
			}
			var jsLoc = tempLocale.replace(/-/g, "_");
			var translationPackage = bundlePackage + "." + jsLoc;
			localizedBundle = dojo._loadedModules[translationPackage];
		}
		if (!localizedBundle) {
			bundle = dojo["provide"](bundlePackage);
			var syms = dojo._getModuleSymbols(moduleName);
			var modpath = syms.concat("nls").join("/");
			var parent;
			dojo.i18n._searchLocalePath(tempLocale, availableFlatLocales, function (loc) {
				var jsLoc = loc.replace(/-/g, "_");
				var translationPackage = bundlePackage + "." + jsLoc;
				var loaded = false;
				if (!dojo._loadedModules[translationPackage]) {
					dojo["provide"](translationPackage);
					var module = [modpath];
					if (loc != "ROOT") {
						module.push(loc);
					}
					module.push(bundleName);
					var filespec = module.join("/") + ".js";
					loaded = dojo._loadPath(filespec, null, function (hash) {
						var clazz = function () {
						};
						clazz.prototype = parent;
						bundle[jsLoc] = new clazz();
						for (var j in hash) {
							bundle[jsLoc][j] = hash[j];
						}
					});
				} else {
					loaded = true;
				}
				if (loaded && bundle[jsLoc]) {
					parent = bundle[jsLoc];
				} else {
					bundle[jsLoc] = parent;
				}
				if (availableFlatLocales) {
					return true;
				}
			});
		}
		if (availableFlatLocales && targetLocale != bestLocale) {
			bundle[targetLocale.replace(/-/g, "_")] = bundle[bestLocale.replace(/-/g, "_")];
		}
	};
	(function () {
		var extra = dojo.config.extraLocale;
		if (extra) {
			if (!extra instanceof Array) {
				extra = [extra];
			}
			var req = dojo.i18n._requireLocalization;
			dojo.i18n._requireLocalization = function (m, b, locale, availableFlatLocales) {
				req(m, b, locale, availableFlatLocales);
				if (locale) {
					return;
				}
				for (var i = 0; i < extra.length; i++) {
					req(m, b, extra[i], availableFlatLocales);
				}
			};
		}
	})();
	dojo.i18n._searchLocalePath = function (locale, down, searchFunc) {
		locale = dojo.i18n.normalizeLocale(locale);
		var elements = locale.split("-");
		var searchlist = [];
		for (var i = elements.length; i > 0; i--) {
			searchlist.push(elements.slice(0, i).join("-"));
		}
		searchlist.push(false);
		if (down) {
			searchlist.reverse();
		}
		for (var j = searchlist.length - 1; j >= 0; j--) {
			var loc = searchlist[j] || "ROOT";
			var stop = searchFunc(loc);
			if (stop) {
				break;
			}
		}
	};
	dojo.i18n._preloadLocalizations = function (bundlePrefix, localesGenerated) {
		function preload(locale) {
			locale = dojo.i18n.normalizeLocale(locale);
			dojo.i18n._searchLocalePath(locale, true, function (loc) {
				for (var i = 0; i < localesGenerated.length; i++) {
					if (localesGenerated[i] == loc) {
						dojo["require"](bundlePrefix + "_" + loc);
						return true;
					}
				}
				return false;
			});
		}
		preload();
		var extra = dojo.config.extraLocale || [];
		for (var i = 0; i < extra.length; i++) {
			preload(extra[i]);
		}
	};
}
if (!dojo._hasResource["dijit.layout.ContentPane"]) {
	dojo._hasResource["dijit.layout.ContentPane"] = true;
	dojo.provide("dijit.layout.ContentPane");
	dojo.declare("dijit.layout.ContentPane", dijit._Widget, {href:"", extractContent:false, parseOnLoad:true, preventCache:false, preload:false, refreshOnShow:false, loadingMessage:"<span class='dijitContentPaneLoading'>${loadingState}</span>", errorMessage:"<span class='dijitContentPaneError'>${errorState}</span>", isLoaded:false, "class":"dijitContentPane", doLayout:"auto", postCreate:function () {
		this.domNode.title = "";
		if (!this.containerNode) {
			this.containerNode = this.domNode;
		}
		if (this.preload) {
			this._loadCheck();
		}
		var messages = dojo.i18n.getLocalization("dijit", "loading", this.lang);
		this.loadingMessage = dojo.string.substitute(this.loadingMessage, messages);
		this.errorMessage = dojo.string.substitute(this.errorMessage, messages);
		var curRole = dijit.getWaiRole(this.domNode);
		if (!curRole) {
			dijit.setWaiRole(this.domNode, "group");
		}
		dojo.addClass(this.domNode, this["class"]);
	}, startup:function () {
		if (this._started) {
			return;
		}
		if (this.doLayout != "false" && this.doLayout !== false) {
			this._checkIfSingleChild();
			if (this._singleChild) {
				this._singleChild.startup();
			}
		}
		this._loadCheck();
		this.inherited(arguments);
	}, _checkIfSingleChild:function () {
		var childNodes = dojo.query(">", this.containerNode || this.domNode), childWidgets = childNodes.filter("[widgetId]");
		if (childNodes.length == 1 && childWidgets.length == 1) {
			this.isContainer = true;
			this._singleChild = dijit.byNode(childWidgets[0]);
		} else {
			delete this.isContainer;
			delete this._singleChild;
		}
	}, refresh:function () {
		return this._prepareLoad(true);
	}, setHref:function (href) {
		this.href = href;
		return this._prepareLoad();
	}, setContent:function (data) {
		if (!this._isDownloaded) {
			this.href = "";
			this._onUnloadHandler();
		}
		this._setContent(data || "");
		this._isDownloaded = false;
		if (this.parseOnLoad) {
			this._createSubWidgets();
		}
		if (this.doLayout != "false" && this.doLayout !== false) {
			this._checkIfSingleChild();
			if (this._singleChild && this._singleChild.resize) {
				this._singleChild.startup();
				this._singleChild.resize(this._contentBox || dojo.contentBox(this.containerNode || this.domNode));
			}
		}
		this._onLoadHandler();
	}, cancel:function () {
		if (this._xhrDfd && (this._xhrDfd.fired == -1)) {
			this._xhrDfd.cancel();
		}
		delete this._xhrDfd;
	}, destroy:function () {
		if (this._beingDestroyed) {
			return;
		}
		this._onUnloadHandler();
		this._beingDestroyed = true;
		this.inherited("destroy", arguments);
	}, resize:function (size) {
		dojo.marginBox(this.domNode, size);
		var node = this.containerNode || this.domNode, mb = dojo.mixin(dojo.marginBox(node), size || {});
		this._contentBox = dijit.layout.marginBox2contentBox(node, mb);
		if (this._singleChild && this._singleChild.resize) {
			this._singleChild.resize(this._contentBox);
		}
	}, _prepareLoad:function (forceLoad) {
		this.cancel();
		this.isLoaded = false;
		this._loadCheck(forceLoad);
	}, _isShown:function () {
		if ("open" in this) {
			return this.open;
		} else {
			var node = this.domNode;
			return (node.style.display != "none") && (node.style.visibility != "hidden");
		}
	}, _loadCheck:function (forceLoad) {
		var displayState = this._isShown();
		if (this.href && (forceLoad || (this.preload && !this._xhrDfd) || (this.refreshOnShow && displayState && !this._xhrDfd) || (!this.isLoaded && displayState && !this._xhrDfd))) {
			this._downloadExternalContent();
		}
	}, _downloadExternalContent:function () {
		this._onUnloadHandler();
		this._setContent(this.onDownloadStart.call(this));
		var self = this;
		var getArgs = {preventCache:(this.preventCache || this.refreshOnShow), url:this.href, handleAs:"text"};
		if (dojo.isObject(this.ioArgs)) {
			dojo.mixin(getArgs, this.ioArgs);
		}
		var hand = this._xhrDfd = (this.ioMethod || dojo.xhrGet)(getArgs);
		hand.addCallback(function (html) {
			try {
				self.onDownloadEnd.call(self);
				self._isDownloaded = true;
				self.setContent.call(self, html);
			}
			catch (err) {
				self._onError.call(self, "Content", err);
			}
			delete self._xhrDfd;
			return html;
		});
		hand.addErrback(function (err) {
			if (!hand.cancelled) {
				self._onError.call(self, "Download", err);
			}
			delete self._xhrDfd;
			return err;
		});
	}, _onLoadHandler:function () {
		this.isLoaded = true;
		try {
			this.onLoad.call(this);
		}
		catch (e) {
			console.error("Error " + this.widgetId + " running custom onLoad code");
		}
	}, _onUnloadHandler:function () {
		this.isLoaded = false;
		this.cancel();
		try {
			this.onUnload.call(this);
		}
		catch (e) {
			console.error("Error " + this.widgetId + " running custom onUnload code");
		}
	}, _setContent:function (cont) {
		this.destroyDescendants();
		try {
			var node = this.containerNode || this.domNode;
			while (node.firstChild) {
				dojo._destroyElement(node.firstChild);
			}
			if (typeof cont == "string") {
				if (this.extractContent) {
					match = cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
					if (match) {
						cont = match[1];
					}
				}
				node.innerHTML = cont;
			} else {
				if (cont.nodeType) {
					node.appendChild(cont);
				} else {
					dojo.forEach(cont, function (n) {
						node.appendChild(n.cloneNode(true));
					});
				}
			}
		}
		catch (e) {
			var errMess = this.onContentError(e);
			try {
				node.innerHTML = errMess;
			}
			catch (e) {
				console.error("Fatal " + this.id + " could not change content due to " + e.message, e);
			}
		}
	}, _onError:function (type, err, consoleText) {
		var errText = this["on" + type + "Error"].call(this, err);
		if (consoleText) {
			console.error(consoleText, err);
		} else {
			if (errText) {
				this._setContent.call(this, errText);
			}
		}
	}, _createSubWidgets:function () {
		var rootNode = this.containerNode || this.domNode;
		try {
			dojo.parser.parse(rootNode, true);
		}
		catch (e) {
			this._onError("Content", e, "Couldn't create widgets in " + this.id + (this.href ? " from " + this.href : ""));
		}
	}, onLoad:function (e) {
	}, onUnload:function (e) {
	}, onDownloadStart:function () {
		return this.loadingMessage;
	}, onContentError:function (error) {
	}, onDownloadError:function (error) {
		return this.errorMessage;
	}, onDownloadEnd:function () {
	}});
}
if (!dojo._hasResource["dijit.form.Form"]) {
	dojo._hasResource["dijit.form.Form"] = true;
	dojo.provide("dijit.form.Form");
	dojo.declare("dijit.form._FormMixin", null, {reset:function () {
		dojo.forEach(this.getDescendants(), function (widget) {
			if (widget.reset) {
				widget.reset();
			}
		});
	}, validate:function () {
		var didFocus = false;
		return dojo.every(dojo.map(this.getDescendants(), function (widget) {
			widget._hasBeenBlurred = true;
			var valid = !widget.validate || widget.validate();
			if (!valid && !didFocus) {
				dijit.scrollIntoView(widget.containerNode || widget.domNode);
				widget.focus();
				didFocus = true;
			}
			return valid;
		}), "return item;");
	}, setValues:function (obj) {
		var map = {};
		dojo.forEach(this.getDescendants(), function (widget) {
			if (!widget.name) {
				return;
			}
			var entry = map[widget.name] || (map[widget.name] = []);
			entry.push(widget);
		});
		for (var name in map) {
			var widgets = map[name], values = dojo.getObject(name, false, obj);
			if (!dojo.isArray(values)) {
				values = [values];
			}
			if (typeof widgets[0].checked == "boolean") {
				dojo.forEach(widgets, function (w, i) {
					w.setValue(dojo.indexOf(values, w.value) != -1);
				});
			} else {
				if (widgets[0]._multiValue) {
					widgets[0].setValue(values);
				} else {
					dojo.forEach(widgets, function (w, i) {
						w.setValue(values[i]);
					});
				}
			}
		}
	}, getValues:function () {
		var obj = {};
		dojo.forEach(this.getDescendants(), function (widget) {
			var name = widget.name;
			if (!name) {
				return;
			}
			var value = (widget.getValue && !widget._getValueDeprecated) ? widget.getValue() : widget.value;
			if (typeof widget.checked == "boolean") {
				if (/Radio/.test(widget.declaredClass)) {
					if (value !== false) {
						dojo.setObject(name, value, obj);
					}
				} else {
					var ary = dojo.getObject(name, false, obj);
					if (!ary) {
						ary = [];
						dojo.setObject(name, ary, obj);
					}
					if (value !== false) {
						ary.push(value);
					}
				}
			} else {
				dojo.setObject(name, value, obj);
			}
		});
		return obj;
	}, isValid:function () {
		return dojo.every(this.getDescendants(), function (widget) {
			return !widget.isValid || widget.isValid();
		});
	}});
	dojo.declare("dijit.form.Form", [dijit._Widget, dijit._Templated, dijit.form._FormMixin], {name:"", action:"", method:"", encType:"", "accept-charset":"", accept:"", target:"", templateString:"<form dojoAttachPoint='containerNode' dojoAttachEvent='onreset:_onReset,onsubmit:_onSubmit' name='${name}'></form>", attributeMap:dojo.mixin(dojo.clone(dijit._Widget.prototype.attributeMap), {action:"", method:"", encType:"", "accept-charset":"", accept:"", target:""}), execute:function (formContents) {
	}, onExecute:function () {
	}, setAttribute:function (attr, value) {
		this.inherited(arguments);
		switch (attr) {
		  case "encType":
			if (dojo.isIE) {
				this.domNode.encoding = value;
			}
		}
	}, postCreate:function () {
		if (dojo.isIE && this.srcNodeRef && this.srcNodeRef.attributes) {
			var item = this.srcNodeRef.attributes.getNamedItem("encType");
			if (item && !item.specified && (typeof item.value == "string")) {
				this.setAttribute("encType", item.value);
			}
		}
		this.inherited(arguments);
	}, onReset:function (e) {
		return true;
	}, _onReset:function (e) {
		var faux = {returnValue:true, preventDefault:function () {
			this.returnValue = false;
		}, stopPropagation:function () {
		}, currentTarget:e.currentTarget, target:e.target};
		if (!(this.onReset(faux) === false) && faux.returnValue) {
			this.reset();
		}
		dojo.stopEvent(e);
		return false;
	}, _onSubmit:function (e) {
		var fp = dijit.form.Form.prototype;
		if (this.execute != fp.execute || this.onExecute != fp.onExecute) {
			dojo.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.", "", "2.0");
			this.onExecute();
			this.execute(this.getValues());
		}
		if (this.onSubmit(e) === false) {
			dojo.stopEvent(e);
		}
	}, onSubmit:function (e) {
		return this.isValid();
	}, submit:function () {
		if (!(this.onSubmit() === false)) {
			this.containerNode.submit();
		}
	}});
}
if (!dojo._hasResource["dijit.Dialog"]) {
	dojo._hasResource["dijit.Dialog"] = true;
	dojo.provide("dijit.Dialog");
	dojo.declare("dijit.DialogUnderlay", [dijit._Widget, dijit._Templated], {templateString:"<div class='dijitDialogUnderlayWrapper' id='${id}_wrapper'><div class='dijitDialogUnderlay ${class}' id='${id}' dojoAttachPoint='node'></div></div>", attributeMap:{}, postCreate:function () {
		dojo.body().appendChild(this.domNode);
		this.bgIframe = new dijit.BackgroundIframe(this.domNode);
	}, layout:function () {
		var viewport = dijit.getViewport();
		var is = this.node.style, os = this.domNode.style;
		os.top = viewport.t + "px";
		os.left = viewport.l + "px";
		is.width = viewport.w + "px";
		is.height = viewport.h + "px";
		var viewport2 = dijit.getViewport();
		if (viewport.w != viewport2.w) {
			is.width = viewport2.w + "px";
		}
		if (viewport.h != viewport2.h) {
			is.height = viewport2.h + "px";
		}
	}, show:function () {
		this.domNode.style.display = "block";
		this.layout();
		if (this.bgIframe.iframe) {
			this.bgIframe.iframe.style.display = "block";
		}
		this._resizeHandler = this.connect(window, "onresize", "layout");
	}, hide:function () {
		this.domNode.style.display = "none";
		if (this.bgIframe.iframe) {
			this.bgIframe.iframe.style.display = "none";
		}
		this.disconnect(this._resizeHandler);
	}, uninitialize:function () {
		if (this.bgIframe) {
			this.bgIframe.destroy();
		}
	}});
	dojo.declare("dijit._DialogMixin", null, {attributeMap:dijit._Widget.prototype.attributeMap, execute:function (formContents) {
	}, onCancel:function () {
	}, onExecute:function () {
	}, _onSubmit:function () {
		this.onExecute();
		this.execute(this.getValues());
	}, _getFocusItems:function (dialogNode) {
		var focusItem = dijit.getFirstInTabbingOrder(dialogNode);
		this._firstFocusItem = focusItem ? focusItem : dialogNode;
		focusItem = dijit.getLastInTabbingOrder(dialogNode);
		this._lastFocusItem = focusItem ? focusItem : this._firstFocusItem;
		if (dojo.isMoz && this._firstFocusItem.tagName.toLowerCase() == "input" && dojo.attr(this._firstFocusItem, "type").toLowerCase() == "file") {
			dojo.attr(dialogNode, "tabindex", "0");
			this._firstFocusItem = dialogNode;
		}
	}});
	dojo.declare("dijit.Dialog", [dijit.layout.ContentPane, dijit._Templated, dijit.form._FormMixin, dijit._DialogMixin], {templateString:null, templateString:"<div class=\"dijitDialog\" tabindex=\"-1\" waiRole=\"dialog\" waiState=\"labelledby-${id}_title\">\r\n\t<div dojoAttachPoint=\"titleBar\" class=\"dijitDialogTitleBar\">\r\n\t<span dojoAttachPoint=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\">${title}</span>\r\n\t<span dojoAttachPoint=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" dojoAttachEvent=\"onclick: onCancel\">\r\n\t\t<span dojoAttachPoint=\"closeText\" class=\"closeText\">x</span>\r\n\t</span>\r\n\t</div>\r\n\t\t<div dojoAttachPoint=\"containerNode\" class=\"dijitDialogPaneContent\"></div>\r\n</div>\r\n", open:false, duration:400, refocus:true, _firstFocusItem:null, _lastFocusItem:null, doLayout:false, attributeMap:dojo.mixin(dojo.clone(dijit._Widget.prototype.attributeMap), {title:"titleBar"}), postCreate:function () {
		dojo.body().appendChild(this.domNode);
		this.inherited(arguments);
		var _nlsResources = dojo.i18n.getLocalization("dijit", "common");
		if (this.closeButtonNode) {
			this.closeButtonNode.setAttribute("title", _nlsResources.buttonCancel);
		}
		if (this.closeText) {
			this.closeText.setAttribute("title", _nlsResources.buttonCancel);
		}
		var s = this.domNode.style;
		s.visibility = "hidden";
		s.position = "absolute";
		s.display = "";
		s.top = "-9999px";
		this.connect(this, "onExecute", "hide");
		this.connect(this, "onCancel", "hide");
		this._modalconnects = [];
	}, onLoad:function () {
		this._position();
		this.inherited(arguments);
	}, _setup:function () {
		if (this.titleBar) {
			this._moveable = new dojo.dnd.TimedMoveable(this.domNode, {handle:this.titleBar, timeout:0});
		}
		this._underlay = new dijit.DialogUnderlay({id:this.id + "_underlay", "class":dojo.map(this["class"].split(/\s/), function (s) {
			return s + "_underlay";
		}).join(" ")});
		var node = this.domNode;
		this._fadeIn = dojo.fx.combine([dojo.fadeIn({node:node, duration:this.duration}), dojo.fadeIn({node:this._underlay.domNode, duration:this.duration, onBegin:dojo.hitch(this._underlay, "show")})]);
		this._fadeOut = dojo.fx.combine([dojo.fadeOut({node:node, duration:this.duration, onEnd:function () {
			node.style.visibility = "hidden";
			node.style.top = "-9999px";
		}}), dojo.fadeOut({node:this._underlay.domNode, duration:this.duration, onEnd:dojo.hitch(this._underlay, "hide")})]);
	}, uninitialize:function () {
		if (this._fadeIn && this._fadeIn.status() == "playing") {
			this._fadeIn.stop();
		}
		if (this._fadeOut && this._fadeOut.status() == "playing") {
			this._fadeOut.stop();
		}
		if (this._underlay) {
			this._underlay.destroy();
		}
	}, _position:function () {
		if (dojo.hasClass(dojo.body(), "dojoMove")) {
			return;
		}
		var viewport = dijit.getViewport();
		var mb = dojo.marginBox(this.domNode);
		var style = this.domNode.style;
		style.left = Math.floor((viewport.l + (viewport.w - mb.w) / 2)) + "px";
		style.top = Math.floor((viewport.t + (viewport.h - mb.h) / 2)) + "px";
	}, _onKey:function (evt) {
		if (evt.keyCode) {
			var node = evt.target;
			if (evt.keyCode == dojo.keys.TAB) {
				this._getFocusItems(this.domNode);
			}
			var singleFocusItem = (this._firstFocusItem == this._lastFocusItem);
			if (node == this._firstFocusItem && evt.shiftKey && evt.keyCode == dojo.keys.TAB) {
				if (!singleFocusItem) {
					dijit.focus(this._lastFocusItem);
				}
				dojo.stopEvent(evt);
			} else {
				if (node == this._lastFocusItem && evt.keyCode == dojo.keys.TAB && !evt.shiftKey) {
					if (!singleFocusItem) {
						dijit.focus(this._firstFocusItem);
					}
					dojo.stopEvent(evt);
				} else {
					while (node) {
						if (node == this.domNode) {
							if (evt.keyCode == dojo.keys.ESCAPE) {
								this.hide();
							} else {
								return;
							}
						}
						node = node.parentNode;
					}
					if (evt.keyCode != dojo.keys.TAB) {
						dojo.stopEvent(evt);
					} else {
						if (!dojo.isOpera) {
							try {
								this._firstFocusItem.focus();
							}
							catch (e) {
							}
						}
					}
				}
			}
		}
	}, show:function () {
		if (this.open) {
			return;
		}
		if (!this._alreadyInitialized) {
			this._setup();
			this._alreadyInitialized = true;
		}
		if (this._fadeOut.status() == "playing") {
			this._fadeOut.stop();
		}
		this._modalconnects.push(dojo.connect(window, "onscroll", this, "layout"));
		this._modalconnects.push(dojo.connect(dojo.doc.documentElement, "onkeypress", this, "_onKey"));
		dojo.style(this.domNode, "opacity", 0);
		this.domNode.style.visibility = "";
		this.open = true;
		this._loadCheck();
		this._position();
		this._fadeIn.play();
		this._savedFocus = dijit.getFocus(this);
		this._getFocusItems(this.domNode);
		setTimeout(dojo.hitch(this, function () {
			dijit.focus(this._firstFocusItem);
		}), 50);
	}, hide:function () {
		if (!this._alreadyInitialized) {
			return;
		}
		if (this._fadeIn.status() == "playing") {
			this._fadeIn.stop();
		}
		this._fadeOut.play();
		if (this._scrollConnected) {
			this._scrollConnected = false;
		}
		dojo.forEach(this._modalconnects, dojo.disconnect);
		this._modalconnects = [];
		if (this.refocus) {
			this.connect(this._fadeOut, "onEnd", dojo.hitch(dijit, "focus", this._savedFocus));
		}
		this.open = false;
	}, layout:function () {
		if (this.domNode.style.visibility != "hidden") {
			this._underlay.layout();
			this._position();
		}
	}, destroy:function () {
		dojo.forEach(this._modalconnects, dojo.disconnect);
		if (this.refocus && this.open) {
			var fo = this._savedFocus;
			setTimeout(dojo.hitch(dijit, "focus", fo), 25);
		}
		this.inherited(arguments);
	}});
	dojo.declare("dijit.TooltipDialog", [dijit.layout.ContentPane, dijit._Templated, dijit.form._FormMixin, dijit._DialogMixin], {title:"", doLayout:false, _firstFocusItem:null, _lastFocusItem:null, templateString:null, templateString:"<div class=\"dijitTooltipDialog\" waiRole=\"presentation\">\r\n\t<div class=\"dijitTooltipContainer\" waiRole=\"presentation\">\r\n\t\t<div class =\"dijitTooltipContents dijitTooltipFocusNode\" dojoAttachPoint=\"containerNode\" tabindex=\"-1\" waiRole=\"dialog\"></div>\r\n\t</div>\r\n\t<div class=\"dijitTooltipConnector\" waiRole=\"presenation\"></div>\r\n</div>\r\n", postCreate:function () {
		this.inherited(arguments);
		this.connect(this.containerNode, "onkeypress", "_onKey");
		this.containerNode.title = this.title;
	}, orient:function (node, aroundCorner, corner) {
		this.domNode.className = "dijitTooltipDialog " + " dijitTooltipAB" + (corner.charAt(1) == "L" ? "Left" : "Right") + " dijitTooltip" + (corner.charAt(0) == "T" ? "Below" : "Above");
	}, onOpen:function (pos) {
		this._getFocusItems(this.containerNode);
		this.orient(this.domNode, pos.aroundCorner, pos.corner);
		this._loadCheck();
		dijit.focus(this._firstFocusItem);
	}, _onKey:function (evt) {
		var node = evt.target;
		if (evt.keyCode == dojo.keys.TAB) {
			this._getFocusItems(this.containerNode);
		}
		var singleFocusItem = (this._firstFocusItem == this._lastFocusItem);
		if (evt.keyCode == dojo.keys.ESCAPE) {
			this.onCancel();
		} else {
			if (node == this._firstFocusItem && evt.shiftKey && evt.keyCode == dojo.keys.TAB) {
				if (!singleFocusItem) {
					dijit.focus(this._lastFocusItem);
				}
				dojo.stopEvent(evt);
			} else {
				if (node == this._lastFocusItem && evt.keyCode == dojo.keys.TAB && !evt.shiftKey) {
					if (!singleFocusItem) {
						dijit.focus(this._firstFocusItem);
					}
					dojo.stopEvent(evt);
				} else {
					if (evt.keyCode == dojo.keys.TAB) {
						evt.stopPropagation();
					}
				}
			}
		}
	}});
}
if (!dojo._hasResource["dijit.Tooltip"]) {
	dojo._hasResource["dijit.Tooltip"] = true;
	dojo.provide("dijit.Tooltip");
	dojo.declare("dijit._MasterTooltip", [dijit._Widget, dijit._Templated], {duration:200, templateString:"<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\">\r\n\t<div class=\"dijitTooltipContainer dijitTooltipContents\" dojoAttachPoint=\"containerNode\" waiRole='alert'></div>\r\n\t<div class=\"dijitTooltipConnector\"></div>\r\n</div>\r\n", postCreate:function () {
		dojo.body().appendChild(this.domNode);
		this.bgIframe = new dijit.BackgroundIframe(this.domNode);
		this.fadeIn = dojo.fadeIn({node:this.domNode, duration:this.duration, onEnd:dojo.hitch(this, "_onShow")});
		this.fadeOut = dojo.fadeOut({node:this.domNode, duration:this.duration, onEnd:dojo.hitch(this, "_onHide")});
	}, show:function (innerHTML, aroundNode, position) {
		if (this.aroundNode && this.aroundNode === aroundNode) {
			return;
		}
		if (this.fadeOut.status() == "playing") {
			this._onDeck = arguments;
			return;
		}
		this.containerNode.innerHTML = innerHTML;
		this.domNode.style.top = (this.domNode.offsetTop + 1) + "px";
		var align = {};
		var ltr = this.isLeftToRight();
		dojo.forEach((position && position.length) ? position : dijit.Tooltip.defaultPosition, function (pos) {
			switch (pos) {
			  case "after":
				align[ltr ? "BR" : "BL"] = ltr ? "BL" : "BR";
				break;
			  case "before":
				align[ltr ? "BL" : "BR"] = ltr ? "BR" : "BL";
				break;
			  case "below":
				align[ltr ? "BL" : "BR"] = ltr ? "TL" : "TR";
				align[ltr ? "BR" : "BL"] = ltr ? "TR" : "TL";
				break;
			  case "above":
			  default:
				align[ltr ? "TL" : "TR"] = ltr ? "BL" : "BR";
				align[ltr ? "TR" : "TL"] = ltr ? "BR" : "BL";
				break;
			}
		});
		var pos = dijit.placeOnScreenAroundElement(this.domNode, aroundNode, align, dojo.hitch(this, "orient"));
		dojo.style(this.domNode, "opacity", 0);
		this.fadeIn.play();
		this.isShowingNow = true;
		this.aroundNode = aroundNode;
	}, orient:function (node, aroundCorner, tooltipCorner) {
		node.className = "dijitTooltip " + {"BL-TL":"dijitTooltipBelow dijitTooltipABLeft", "TL-BL":"dijitTooltipAbove dijitTooltipABLeft", "BR-TR":"dijitTooltipBelow dijitTooltipABRight", "TR-BR":"dijitTooltipAbove dijitTooltipABRight", "BR-BL":"dijitTooltipRight", "BL-BR":"dijitTooltipLeft"}[aroundCorner + "-" + tooltipCorner];
	}, _onShow:function () {
		if (dojo.isIE) {
			this.domNode.style.filter = "";
		}
	}, hide:function (aroundNode) {
		if (!this.aroundNode || this.aroundNode !== aroundNode) {
			return;
		}
		if (this._onDeck) {
			this._onDeck = null;
			return;
		}
		this.fadeIn.stop();
		this.isShowingNow = false;
		this.aroundNode = null;
		this.fadeOut.play();
	}, _onHide:function () {
		this.domNode.style.cssText = "";
		if (this._onDeck) {
			this.show.apply(this, this._onDeck);
			this._onDeck = null;
		}
	}});
	dijit.showTooltip = function (innerHTML, aroundNode, position) {
		if (!dijit._masterTT) {
			dijit._masterTT = new dijit._MasterTooltip();
		}
		return dijit._masterTT.show(innerHTML, aroundNode, position);
	};
	dijit.hideTooltip = function (aroundNode) {
		if (!dijit._masterTT) {
			dijit._masterTT = new dijit._MasterTooltip();
		}
		return dijit._masterTT.hide(aroundNode);
	};
	dojo.declare("dijit.Tooltip", dijit._Widget, {label:"", showDelay:400, connectId:[], position:[], postCreate:function () {
		if (this.srcNodeRef) {
			this.srcNodeRef.style.display = "none";
		}
		this._connectNodes = [];
		dojo.forEach(this.connectId, function (id) {
			var node = dojo.byId(id);
			if (node) {
				this._connectNodes.push(node);
				dojo.forEach(["onMouseOver", "onMouseOut", "onFocus", "onBlur", "onHover", "onUnHover"], function (event) {
					this.connect(node, event.toLowerCase(), "_" + event);
				}, this);
				if (dojo.isIE) {
					node.style.zoom = 1;
				}
			}
		}, this);
	}, _onMouseOver:function (e) {
		this._onHover(e);
	}, _onMouseOut:function (e) {
		if (dojo.isDescendant(e.relatedTarget, e.target)) {
			return;
		}
		this._onUnHover(e);
	}, _onFocus:function (e) {
		this._focus = true;
		this._onHover(e);
		this.inherited(arguments);
	}, _onBlur:function (e) {
		this._focus = false;
		this._onUnHover(e);
		this.inherited(arguments);
	}, _onHover:function (e) {
		if (!this._showTimer) {
			var target = e.target;
			this._showTimer = setTimeout(dojo.hitch(this, function () {
				this.open(target);
			}), this.showDelay);
		}
	}, _onUnHover:function (e) {
		if (this._focus) {
			return;
		}
		if (this._showTimer) {
			clearTimeout(this._showTimer);
			delete this._showTimer;
		}
		this.close();
	}, open:function (target) {
		target = target || this._connectNodes[0];
		if (!target) {
			return;
		}
		if (this._showTimer) {
			clearTimeout(this._showTimer);
			delete this._showTimer;
		}
		dijit.showTooltip(this.label || this.domNode.innerHTML, target, this.position);
		this._connectNode = target;
	}, close:function () {
		dijit.hideTooltip(this._connectNode);
		delete this._connectNode;
		if (this._showTimer) {
			clearTimeout(this._showTimer);
			delete this._showTimer;
		}
	}, uninitialize:function () {
		this.close();
	}});
	dijit.Tooltip.defaultPosition = ["after", "before"];
}
dojo.i18n._preloadLocalizations("dojo.nls.product", ["es-es", "es", "hu", "it-it", "de", "pt-br", "pl", "fr-fr", "zh-cn", "pt", "en-us", "zh", "ru", "xx", "fr", "zh-tw", "it", "cs", "en-gb", "de-de", "ja-jp", "ko-kr", "ko", "en", "ROOT", "ja"]);

