/*
	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["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["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["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._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["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.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.form.Button"]) {
	dojo._hasResource["dijit.form.Button"] = true;
	dojo.provide("dijit.form.Button");
	dojo.declare("dijit.form.Button", dijit.form._FormWidget, {label:"", showLabel:true, iconClass:"", type:"button", baseClass:"dijitButton", templateString:"<div class=\"dijit dijitReset dijitLeft dijitInline\"\r\n\tdojoAttachEvent=\"onclick:_onButtonClick,onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\"\r\n\twaiRole=\"presentation\"\r\n\t><button class=\"dijitReset dijitStretch dijitButtonNode dijitButtonContents\" dojoAttachPoint=\"focusNode,titleNode\"\r\n\t\ttype=\"${type}\" waiRole=\"button\" waiState=\"labelledby-${id}_label\"\r\n\t\t><span class=\"dijitReset dijitInline ${iconClass}\" dojoAttachPoint=\"iconNode\" \r\n \t\t\t><span class=\"dijitReset dijitToggleButtonIconChar\">&#10003;</span \r\n\t\t></span\r\n\t\t><div class=\"dijitReset dijitInline\"><center class=\"dijitReset dijitButtonText\" id=\"${id}_label\" dojoAttachPoint=\"containerNode\">${label}</center></div\r\n\t></button\r\n></div>\r\n", _onChangeMonitor:"", _onClick:function (e) {
		if (this.disabled || this.readOnly) {
			dojo.stopEvent(e);
			return false;
		}
		this._clicked();
		return this.onClick(e);
	}, _onButtonClick:function (e) {
		if (this._onClick(e) === false) {
			dojo.stopEvent(e);
		} else {
			if (this.type == "submit" && !this.focusNode.form) {
				for (var node = this.domNode; node.parentNode; node = node.parentNode) {
					var widget = dijit.byNode(node);
					if (widget && typeof widget._onSubmit == "function") {
						widget._onSubmit(e);
						break;
					}
				}
			}
		}
	}, postCreate:function () {
		if (this.showLabel == false) {
			var labelText = "";
			this.label = this.containerNode.innerHTML;
			labelText = dojo.trim(this.containerNode.innerText || this.containerNode.textContent || "");
			this.titleNode.title = labelText;
			dojo.addClass(this.containerNode, "dijitDisplayNone");
		}
		dojo.setSelectable(this.focusNode, false);
		this.inherited(arguments);
	}, onClick:function (e) {
		return true;
	}, _clicked:function (e) {
	}, setLabel:function (content) {
		this.containerNode.innerHTML = this.label = content;
		this._layoutHack();
		if (this.showLabel == false) {
			this.titleNode.title = dojo.trim(this.containerNode.innerText || this.containerNode.textContent || "");
		}
	}});
	dojo.declare("dijit.form.DropDownButton", [dijit.form.Button, dijit._Container], {baseClass:"dijitDropDownButton", templateString:"<div class=\"dijit dijitReset dijitLeft dijitInline\"\r\n\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse,onclick:_onDropDownClick,onkeydown:_onDropDownKeydown,onblur:_onDropDownBlur,onkeypress:_onKey\"\r\n\twaiRole=\"presentation\"\r\n\t><div class='dijitReset dijitRight' waiRole=\"presentation\"\r\n\t><button class=\"dijitReset dijitStretch dijitButtonNode dijitButtonContents\" type=\"${type}\"\r\n\t\tdojoAttachPoint=\"focusNode,titleNode\" waiRole=\"button\" waiState=\"haspopup-true,labelledby-${id}_label\"\r\n\t\t><div class=\"dijitReset dijitInline ${iconClass}\" dojoAttachPoint=\"iconNode\" waiRole=\"presentation\"></div\r\n\t\t><div class=\"dijitReset dijitInline dijitButtonText\"  dojoAttachPoint=\"containerNode,popupStateNode\" waiRole=\"presentation\"\r\n\t\t\tid=\"${id}_label\">${label}</div\r\n\t\t><div class=\"dijitReset dijitInline dijitArrowButtonInner\" waiRole=\"presentation\">&thinsp;</div\r\n\t\t><div class=\"dijitReset dijitInline dijitArrowButtonChar\" waiRole=\"presentation\">&#9660;</div\r\n\t></button\r\n></div></div>\r\n", _fillContent:function () {
		if (this.srcNodeRef) {
			var nodes = dojo.query("*", this.srcNodeRef);
			dijit.form.DropDownButton.superclass._fillContent.call(this, nodes[0]);
			this.dropDownContainer = this.srcNodeRef;
		}
	}, startup:function () {
		if (this._started) {
			return;
		}
		if (!this.dropDown) {
			var dropDownNode = dojo.query("[widgetId]", this.dropDownContainer)[0];
			this.dropDown = dijit.byNode(dropDownNode);
			delete this.dropDownContainer;
		}
		dijit.popup.prepare(this.dropDown.domNode);
		this.inherited(arguments);
	}, destroyDescendants:function () {
		if (this.dropDown) {
			this.dropDown.destroyRecursive();
			delete this.dropDown;
		}
		this.inherited(arguments);
	}, _onArrowClick:function (e) {
		if (this.disabled || this.readOnly) {
			return;
		}
		this._toggleDropDown();
	}, _onDropDownClick:function (e) {
		var isMacFFlessThan3 = dojo.isFF && dojo.isFF < 3 && navigator.appVersion.indexOf("Macintosh") != -1;
		if (!isMacFFlessThan3 || e.detail != 0 || this._seenKeydown) {
			this._onArrowClick(e);
		}
		this._seenKeydown = false;
	}, _onDropDownKeydown:function (e) {
		this._seenKeydown = true;
	}, _onDropDownBlur:function (e) {
		this._seenKeydown = false;
	}, _onKey:function (e) {
		if (this.disabled || this.readOnly) {
			return;
		}
		if (e.keyCode == dojo.keys.DOWN_ARROW) {
			if (!this.dropDown || this.dropDown.domNode.style.visibility == "hidden") {
				dojo.stopEvent(e);
				this._toggleDropDown();
			}
		}
	}, _onBlur:function () {
		this._closeDropDown();
		this.inherited(arguments);
	}, _toggleDropDown:function () {
		if (this.disabled || this.readOnly) {
			return;
		}
		dijit.focus(this.popupStateNode);
		var dropDown = this.dropDown;
		if (!dropDown) {
			return;
		}
		if (!this._opened) {
			if (dropDown.href && !dropDown.isLoaded) {
				var self = this;
				var handler = dojo.connect(dropDown, "onLoad", function () {
					dojo.disconnect(handler);
					self._openDropDown();
				});
				dropDown._loadCheck(true);
				return;
			} else {
				this._openDropDown();
			}
		} else {
			this._closeDropDown();
		}
	}, _openDropDown:function () {
		var dropDown = this.dropDown;
		var oldWidth = dropDown.domNode.style.width;
		var self = this;
		dijit.popup.open({parent:this, popup:dropDown, around:this.domNode, orient:this.isLeftToRight() ? {"BL":"TL", "BR":"TR", "TL":"BL", "TR":"BR"} : {"BR":"TR", "BL":"TL", "TR":"BR", "TL":"BL"}, onExecute:function () {
			self._closeDropDown(true);
		}, onCancel:function () {
			self._closeDropDown(true);
		}, onClose:function () {
			dropDown.domNode.style.width = oldWidth;
			self.popupStateNode.removeAttribute("popupActive");
			this._opened = false;
		}});
		if (this.domNode.offsetWidth > dropDown.domNode.offsetWidth) {
			var adjustNode = null;
			if (!this.isLeftToRight()) {
				adjustNode = dropDown.domNode.parentNode;
				var oldRight = adjustNode.offsetLeft + adjustNode.offsetWidth;
			}
			dojo.marginBox(dropDown.domNode, {w:this.domNode.offsetWidth});
			if (adjustNode) {
				adjustNode.style.left = oldRight - this.domNode.offsetWidth + "px";
			}
		}
		this.popupStateNode.setAttribute("popupActive", "true");
		this._opened = true;
		if (dropDown.focus) {
			dropDown.focus();
		}
	}, _closeDropDown:function (focus) {
		if (this._opened) {
			dijit.popup.close(this.dropDown);
			if (focus) {
				this.focus();
			}
			this._opened = false;
		}
	}});
	dojo.declare("dijit.form.ComboButton", dijit.form.DropDownButton, {templateString:"<table class='dijit dijitReset dijitInline dijitLeft'\r\n\tcellspacing='0' cellpadding='0' waiRole=\"presentation\"\r\n\t><tbody waiRole=\"presentation\"><tr waiRole=\"presentation\"\r\n\t\t><td\tclass=\"dijitReset dijitStretch dijitButtonContents dijitButtonNode\"\r\n\t\t\ttabIndex=\"${tabIndex}\"\r\n\t\t\tdojoAttachEvent=\"ondijitclick:_onButtonClick,onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\"  dojoAttachPoint=\"titleNode\"\r\n\t\t\twaiRole=\"button\" waiState=\"labelledby-${id}_label\"\r\n\t\t\t><div class=\"dijitReset dijitInline ${iconClass}\" dojoAttachPoint=\"iconNode\" waiRole=\"presentation\"></div\r\n\t\t\t><div class=\"dijitReset dijitInline dijitButtonText\" id=\"${id}_label\" dojoAttachPoint=\"containerNode\" waiRole=\"presentation\">${label}</div\r\n\t\t></td\r\n\t\t><td class='dijitReset dijitStretch dijitButtonNode dijitArrowButton dijitDownArrowButton'\r\n\t\t\tdojoAttachPoint=\"popupStateNode,focusNode\"\r\n\t\t\tdojoAttachEvent=\"ondijitclick:_onArrowClick, onkeypress:_onKey,onmouseenter:_onMouse,onmouseleave:_onMouse\"\r\n\t\t\tstateModifier=\"DownArrow\"\r\n\t\t\ttitle=\"${optionsTitle}\" name=\"${name}\"\r\n\t\t\twaiRole=\"button\" waiState=\"haspopup-true\"\r\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" waiRole=\"presentation\">&thinsp;</div\r\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" waiRole=\"presentation\">&#9660;</div\r\n\t\t></td\r\n\t></tr></tbody\r\n></table>\r\n", attributeMap:dojo.mixin(dojo.clone(dijit.form._FormWidget.prototype.attributeMap), {id:"", name:""}), optionsTitle:"", baseClass:"dijitComboButton", _focusedNode:null, postCreate:function () {
		this.inherited(arguments);
		this._focalNodes = [this.titleNode, this.popupStateNode];
		dojo.forEach(this._focalNodes, dojo.hitch(this, function (node) {
			if (dojo.isIE) {
				this.connect(node, "onactivate", this._onNodeFocus);
				this.connect(node, "ondeactivate", this._onNodeBlur);
			} else {
				this.connect(node, "onfocus", this._onNodeFocus);
				this.connect(node, "onblur", this._onNodeBlur);
			}
		}));
	}, focusFocalNode:function (node) {
		this._focusedNode = node;
		dijit.focus(node);
	}, hasNextFocalNode:function () {
		return this._focusedNode !== this.getFocalNodes()[1];
	}, focusNext:function () {
		this._focusedNode = this.getFocalNodes()[this._focusedNode ? 1 : 0];
		dijit.focus(this._focusedNode);
	}, hasPrevFocalNode:function () {
		return this._focusedNode !== this.getFocalNodes()[0];
	}, focusPrev:function () {
		this._focusedNode = this.getFocalNodes()[this._focusedNode ? 0 : 1];
		dijit.focus(this._focusedNode);
	}, getFocalNodes:function () {
		return this._focalNodes;
	}, _onNodeFocus:function (evt) {
		this._focusedNode = evt.currentTarget;
		var fnc = this._focusedNode == this.focusNode ? "dijitDownArrowButtonFocused" : "dijitButtonContentsFocused";
		dojo.addClass(this._focusedNode, fnc);
	}, _onNodeBlur:function (evt) {
		var fnc = evt.currentTarget == this.focusNode ? "dijitDownArrowButtonFocused" : "dijitButtonContentsFocused";
		dojo.removeClass(evt.currentTarget, fnc);
	}, _onBlur:function () {
		this.inherited(arguments);
		this._focusedNode = null;
	}});
	dojo.declare("dijit.form.ToggleButton", dijit.form.Button, {baseClass:"dijitToggleButton", checked:false, _onChangeMonitor:"checked", attributeMap:dojo.mixin(dojo.clone(dijit.form.Button.prototype.attributeMap), {checked:"focusNode"}), _clicked:function (evt) {
		this.setAttribute("checked", !this.checked);
	}, setAttribute:function (attr, value) {
		this.inherited(arguments);
		switch (attr) {
		  case "checked":
			dijit.setWaiState(this.focusNode || this.domNode, "pressed", this.checked);
			this._setStateClass();
			this._handleOnChange(this.checked, true);
		}
	}, setChecked:function (checked) {
		dojo.deprecated("setChecked(" + checked + ") is deprecated. Use setAttribute('checked'," + checked + ") instead.", "", "2.0");
		this.setAttribute("checked", checked);
	}, postCreate:function () {
		this.inherited(arguments);
		this.setAttribute("checked", this.checked);
	}});
}
if (!dojo._hasResource["dijit.Menu"]) {
	dojo._hasResource["dijit.Menu"] = true;
	dojo.provide("dijit.Menu");
	dojo.declare("dijit.Menu", [dijit._Widget, dijit._Templated, dijit._KeyNavContainer], {constructor:function () {
		this._bindings = [];
	}, templateString:"<table class=\"dijit dijitMenu dijitReset dijitMenuTable\" waiRole=\"menu\" dojoAttachEvent=\"onkeypress:_onKeyPress\">" + "<tbody class=\"dijitReset\" dojoAttachPoint=\"containerNode\"></tbody>" + "</table>", targetNodeIds:[], contextMenuForWindow:false, leftClickToOpen:false, parentMenu:null, popupDelay:500, _contextMenuWithMouse:false, postCreate:function () {
		if (this.contextMenuForWindow) {
			this.bindDomNode(dojo.body());
		} else {
			dojo.forEach(this.targetNodeIds, this.bindDomNode, this);
		}
		this.connectKeyNavHandlers([dojo.keys.UP_ARROW], [dojo.keys.DOWN_ARROW]);
	}, startup:function () {
		if (this._started) {
			return;
		}
		dojo.forEach(this.getChildren(), function (child) {
			child.startup();
		});
		this.startupKeyNavChildren();
		this.inherited(arguments);
	}, onExecute:function () {
	}, onCancel:function (closeAll) {
	}, _moveToPopup:function (evt) {
		if (this.focusedChild && this.focusedChild.popup && !this.focusedChild.disabled) {
			this.focusedChild._onClick(evt);
		}
	}, _onKeyPress:function (evt) {
		if (evt.ctrlKey || evt.altKey) {
			return;
		}
		switch (evt.keyCode) {
		  case dojo.keys.RIGHT_ARROW:
			this._moveToPopup(evt);
			dojo.stopEvent(evt);
			break;
		  case dojo.keys.LEFT_ARROW:
			if (this.parentMenu) {
				this.onCancel(false);
			} else {
				dojo.stopEvent(evt);
			}
			break;
		}
	}, onItemHover:function (item) {
		this.focusChild(item);
		if (this.focusedChild.popup && !this.focusedChild.disabled && !this.hover_timer) {
			this.hover_timer = setTimeout(dojo.hitch(this, "_openPopup"), this.popupDelay);
		}
	}, _onChildBlur:function (item) {
		dijit.popup.close(item.popup);
		item._blur();
		this._stopPopupTimer();
	}, onItemUnhover:function (item) {
	}, _stopPopupTimer:function () {
		if (this.hover_timer) {
			clearTimeout(this.hover_timer);
			this.hover_timer = null;
		}
	}, _getTopMenu:function () {
		for (var top = this; top.parentMenu; top = top.parentMenu) {
		}
		return top;
	}, onItemClick:function (item, evt) {
		if (item.disabled) {
			return false;
		}
		if (item.popup) {
			if (!this.is_open) {
				this._openPopup();
			}
		} else {
			this.onExecute();
			item.onClick(evt);
		}
	}, _iframeContentWindow:function (iframe_el) {
		var win = dijit.getDocumentWindow(dijit.Menu._iframeContentDocument(iframe_el)) || dijit.Menu._iframeContentDocument(iframe_el)["__parent__"] || (iframe_el.name && dojo.doc.frames[iframe_el.name]) || null;
		return win;
	}, _iframeContentDocument:function (iframe_el) {
		var doc = iframe_el.contentDocument || (iframe_el.contentWindow && iframe_el.contentWindow.document) || (iframe_el.name && dojo.doc.frames[iframe_el.name] && dojo.doc.frames[iframe_el.name].document) || null;
		return doc;
	}, bindDomNode:function (node) {
		node = dojo.byId(node);
		var win = dijit.getDocumentWindow(node.ownerDocument);
		if (node.tagName.toLowerCase() == "iframe") {
			win = this._iframeContentWindow(node);
			node = dojo.withGlobal(win, dojo.body);
		}
		var cn = (node == dojo.body() ? dojo.doc : node);
		node[this.id] = this._bindings.push([dojo.connect(cn, (this.leftClickToOpen) ? "onclick" : "oncontextmenu", this, "_openMyself"), dojo.connect(cn, "onkeydown", this, "_contextKey"), dojo.connect(cn, "onmousedown", this, "_contextMouse")]);
	}, unBindDomNode:function (nodeName) {
		var node = dojo.byId(nodeName);
		if (node) {
			var bid = node[this.id] - 1, b = this._bindings[bid];
			dojo.forEach(b, dojo.disconnect);
			delete this._bindings[bid];
		}
	}, _contextKey:function (e) {
		this._contextMenuWithMouse = false;
		if (e.keyCode == dojo.keys.F10) {
			dojo.stopEvent(e);
			if (e.shiftKey && e.type == "keydown") {
				var _e = {target:e.target, pageX:e.pageX, pageY:e.pageY};
				_e.preventDefault = _e.stopPropagation = function () {
				};
				window.setTimeout(dojo.hitch(this, function () {
					this._openMyself(_e);
				}), 1);
			}
		}
	}, _contextMouse:function (e) {
		this._contextMenuWithMouse = true;
	}, _openMyself:function (e) {
		if (this.leftClickToOpen && e.button > 0) {
			return;
		}
		dojo.stopEvent(e);
		var x, y;
		if (dojo.isSafari || this._contextMenuWithMouse) {
			x = e.pageX;
			y = e.pageY;
		} else {
			var coords = dojo.coords(e.target, true);
			x = coords.x + 10;
			y = coords.y + 10;
		}
		var self = this;
		var savedFocus = dijit.getFocus(this);
		function closeAndRestoreFocus() {
			dijit.focus(savedFocus);
			dijit.popup.close(self);
		}
		dijit.popup.open({popup:this, x:x, y:y, onExecute:closeAndRestoreFocus, onCancel:closeAndRestoreFocus, orient:this.isLeftToRight() ? "L" : "R"});
		this.focus();
		this._onBlur = function () {
			this.inherited("_onBlur", arguments);
			dijit.popup.close(this);
		};
	}, onOpen:function (e) {
		this.isShowingNow = true;
	}, onClose:function () {
		this._stopPopupTimer();
		this.parentMenu = null;
		this.isShowingNow = false;
		this.currentPopup = null;
		if (this.focusedChild) {
			this._onChildBlur(this.focusedChild);
			this.focusedChild = null;
		}
	}, _openPopup:function () {
		this._stopPopupTimer();
		var from_item = this.focusedChild;
		var popup = from_item.popup;
		if (popup.isShowingNow) {
			return;
		}
		popup.parentMenu = this;
		var self = this;
		dijit.popup.open({parent:this, popup:popup, around:from_item.arrowCell, orient:this.isLeftToRight() ? {"TR":"TL", "TL":"TR"} : {"TL":"TR", "TR":"TL"}, onCancel:function () {
			dijit.popup.close(popup);
			from_item.focus();
			self.currentPopup = null;
		}});
		this.currentPopup = popup;
		if (popup.focus) {
			popup.focus();
		}
	}, uninitialize:function () {
		dojo.forEach(this.targetNodeIds, this.unBindDomNode, this);
		this.inherited(arguments);
	}});
	dojo.declare("dijit.MenuItem", [dijit._Widget, dijit._Templated, dijit._Contained], {templateString:"<tr class=\"dijitReset dijitMenuItem\" " + "dojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">" + "<td class=\"dijitReset\"><div class=\"dijitMenuItemIcon ${iconClass}\" dojoAttachPoint=\"iconNode\"></div></td>" + "<td tabIndex=\"-1\" class=\"dijitReset dijitMenuItemLabel\" dojoAttachPoint=\"containerNode,focusNode\" waiRole=\"menuitem\"></td>" + "<td class=\"dijitReset\" dojoAttachPoint=\"arrowCell\">" + "<div class=\"dijitMenuExpand\" dojoAttachPoint=\"expand\" style=\"display:none\">" + "<span class=\"dijitInline dijitArrowNode dijitMenuExpandInner\">+</span>" + "</div>" + "</td>" + "</tr>", label:"", iconClass:"", disabled:false, postCreate:function () {
		dojo.setSelectable(this.domNode, false);
		this.setDisabled(this.disabled);
		if (this.label) {
			this.setLabel(this.label);
		}
	}, _onHover:function () {
		this.getParent().onItemHover(this);
	}, _onUnhover:function () {
		this.getParent().onItemUnhover(this);
	}, _onClick:function (evt) {
		this.getParent().onItemClick(this, evt);
		dojo.stopEvent(evt);
	}, onClick:function (evt) {
	}, focus:function () {
		dojo.addClass(this.domNode, "dijitMenuItemHover");
		try {
			dijit.focus(this.containerNode);
		}
		catch (e) {
		}
	}, _blur:function () {
		dojo.removeClass(this.domNode, "dijitMenuItemHover");
	}, setLabel:function (value) {
		this.containerNode.innerHTML = this.label = value;
	}, setDisabled:function (value) {
		this.disabled = value;
		dojo[value ? "addClass" : "removeClass"](this.domNode, "dijitMenuItemDisabled");
		dijit.setWaiState(this.containerNode, "disabled", value ? "true" : "false");
	}});
	dojo.declare("dijit.PopupMenuItem", dijit.MenuItem, {_fillContent:function () {
		if (this.srcNodeRef) {
			var nodes = dojo.query("*", this.srcNodeRef);
			dijit.PopupMenuItem.superclass._fillContent.call(this, nodes[0]);
			this.dropDownContainer = this.srcNodeRef;
		}
	}, startup:function () {
		if (this._started) {
			return;
		}
		this.inherited(arguments);
		if (!this.popup) {
			var node = dojo.query("[widgetId]", this.dropDownContainer)[0];
			this.popup = dijit.byNode(node);
		}
		dojo.body().appendChild(this.popup.domNode);
		this.popup.domNode.style.display = "none";
		dojo.addClass(this.expand, "dijitMenuExpandEnabled");
		dojo.style(this.expand, "display", "");
		dijit.setWaiState(this.containerNode, "haspopup", "true");
	}, destroyDescendants:function () {
		if (this.popup) {
			this.popup.destroyRecursive();
			delete this.popup;
		}
		this.inherited(arguments);
	}});
	dojo.declare("dijit.MenuSeparator", [dijit._Widget, dijit._Templated, dijit._Contained], {templateString:"<tr class=\"dijitMenuSeparator\"><td colspan=3>" + "<div class=\"dijitMenuSeparatorTop\"></div>" + "<div class=\"dijitMenuSeparatorBottom\"></div>" + "</td></tr>", postCreate:function () {
		dojo.setSelectable(this.domNode, false);
	}, isFocusable:function () {
		return false;
	}});
}
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.StackContainer"]) {
	dojo._hasResource["dijit.layout.StackContainer"] = true;
	dojo.provide("dijit.layout.StackContainer");
	dojo.declare("dijit.layout.StackContainer", dijit.layout._LayoutWidget, {doLayout:true, _started:false, postCreate:function () {
		dijit.setWaiRole((this.containerNode || this.domNode), "tabpanel");
		this.connect(this.domNode, "onkeypress", this._onKeyPress);
	}, startup:function () {
		if (this._started) {
			return;
		}
		var children = this.getChildren();
		dojo.forEach(children, this._setupChild, this);
		dojo.some(children, function (child) {
			if (child.selected) {
				this.selectedChildWidget = child;
			}
			return child.selected;
		}, this);
		var selected = this.selectedChildWidget;
		if (!selected && children[0]) {
			selected = this.selectedChildWidget = children[0];
			selected.selected = true;
		}
		if (selected) {
			this._showChild(selected);
		}
		dojo.publish(this.id + "-startup", [{children:children, selected:selected}]);
		this.inherited(arguments);
	}, _setupChild:function (page) {
		page.domNode.style.display = "none";
		page.domNode.style.position = "relative";
		return page;
	}, addChild:function (child, insertIndex) {
		dijit._Container.prototype.addChild.apply(this, arguments);
		child = this._setupChild(child);
		if (this._started) {
			this.layout();
			dojo.publish(this.id + "-addChild", [child, insertIndex]);
			if (!this.selectedChildWidget) {
				this.selectChild(child);
			}
		}
	}, removeChild:function (page) {
		dijit._Container.prototype.removeChild.apply(this, arguments);
		if (this._beingDestroyed) {
			return;
		}
		if (this._started) {
			dojo.publish(this.id + "-removeChild", [page]);
			this.layout();
		}
		if (this.selectedChildWidget === page) {
			this.selectedChildWidget = undefined;
			if (this._started) {
				var children = this.getChildren();
				if (children.length) {
					this.selectChild(children[0]);
				}
			}
		}
	}, selectChild:function (page) {
		page = dijit.byId(page);
		if (this.selectedChildWidget != page) {
			this._transition(page, this.selectedChildWidget);
			this.selectedChildWidget = page;
			dojo.publish(this.id + "-selectChild", [page]);
		}
	}, _transition:function (newWidget, oldWidget) {
		if (oldWidget) {
			this._hideChild(oldWidget);
		}
		this._showChild(newWidget);
		if (this.doLayout && newWidget.resize) {
			newWidget.resize(this._containerContentBox || this._contentBox);
		}
	}, _adjacent:function (forward) {
		var children = this.getChildren();
		var index = dojo.indexOf(children, this.selectedChildWidget);
		index += forward ? 1 : children.length - 1;
		return children[index % children.length];
	}, forward:function () {
		this.selectChild(this._adjacent(true));
	}, back:function () {
		this.selectChild(this._adjacent(false));
	}, _onKeyPress:function (e) {
		dojo.publish(this.id + "-containerKeyPress", [{e:e, page:this}]);
	}, layout:function () {
		if (this.doLayout && this.selectedChildWidget && this.selectedChildWidget.resize) {
			this.selectedChildWidget.resize(this._contentBox);
		}
	}, _showChild:function (page) {
		var children = this.getChildren();
		page.isFirstChild = (page == children[0]);
		page.isLastChild = (page == children[children.length - 1]);
		page.selected = true;
		page.domNode.style.display = "";
		if (page._loadCheck) {
			page._loadCheck();
		}
		if (page.onShow) {
			page.onShow();
		}
	}, _hideChild:function (page) {
		page.selected = false;
		page.domNode.style.display = "none";
		if (page.onHide) {
			page.onHide();
		}
	}, closeChild:function (page) {
		var remove = page.onClose(this, page);
		if (remove) {
			this.removeChild(page);
			page.destroyRecursive();
		}
	}, destroy:function () {
		this._beingDestroyed = true;
		this.inherited(arguments);
	}});
	dojo.declare("dijit.layout.StackController", [dijit._Widget, dijit._Templated, dijit._Container], {templateString:"<span wairole='tablist' dojoAttachEvent='onkeypress' class='dijitStackController'></span>", containerId:"", buttonWidget:"dijit.layout._StackButton", postCreate:function () {
		dijit.setWaiRole(this.domNode, "tablist");
		this.pane2button = {};
		this.pane2menu = {};
		this._subscriptions = [dojo.subscribe(this.containerId + "-startup", this, "onStartup"), dojo.subscribe(this.containerId + "-addChild", this, "onAddChild"), dojo.subscribe(this.containerId + "-removeChild", this, "onRemoveChild"), dojo.subscribe(this.containerId + "-selectChild", this, "onSelectChild"), dojo.subscribe(this.containerId + "-containerKeyPress", this, "onContainerKeyPress")];
	}, onStartup:function (info) {
		dojo.forEach(info.children, this.onAddChild, this);
		this.onSelectChild(info.selected);
	}, destroy:function () {
		for (var pane in this.pane2button) {
			this.onRemoveChild(pane);
		}
		dojo.forEach(this._subscriptions, dojo.unsubscribe);
		this.inherited(arguments);
	}, onAddChild:function (page, insertIndex) {
		var refNode = dojo.doc.createElement("span");
		this.domNode.appendChild(refNode);
		var cls = dojo.getObject(this.buttonWidget);
		var button = new cls({label:page.title, closeButton:page.closable}, refNode);
		this.addChild(button, insertIndex);
		this.pane2button[page] = button;
		page.controlButton = button;
		dojo.connect(button, "onClick", dojo.hitch(this, "onButtonClick", page));
		if (page.closable) {
			dojo.connect(button, "onClickCloseButton", dojo.hitch(this, "onCloseButtonClick", page));
			var _nlsResources = dojo.i18n.getLocalization("dijit", "common");
			var closeMenu = new dijit.Menu({targetNodeIds:[button.id], id:button.id + "_Menu"});
			var mItem = new dijit.MenuItem({label:_nlsResources.itemClose});
			dojo.connect(mItem, "onClick", dojo.hitch(this, "onCloseButtonClick", page));
			closeMenu.addChild(mItem);
			this.pane2menu[page] = closeMenu;
		}
		if (!this._currentChild) {
			button.focusNode.setAttribute("tabIndex", "0");
			this._currentChild = page;
		}
		if (!this.isLeftToRight() && dojo.isIE && this._rectifyRtlTabList) {
			this._rectifyRtlTabList();
		}
	}, onRemoveChild:function (page) {
		if (this._currentChild === page) {
			this._currentChild = null;
		}
		var button = this.pane2button[page];
		var menu = this.pane2menu[page];
		if (menu) {
			menu.destroy();
		}
		if (button) {
			button.destroy();
		}
		this.pane2button[page] = null;
	}, onSelectChild:function (page) {
		if (!page) {
			return;
		}
		if (this._currentChild) {
			var oldButton = this.pane2button[this._currentChild];
			oldButton.setAttribute("checked", false);
			oldButton.focusNode.setAttribute("tabIndex", "-1");
		}
		var newButton = this.pane2button[page];
		newButton.setAttribute("checked", true);
		this._currentChild = page;
		newButton.focusNode.setAttribute("tabIndex", "0");
		var container = dijit.byId(this.containerId);
		dijit.setWaiState(container.containerNode || container.domNode, "labelledby", newButton.id);
	}, onButtonClick:function (page) {
		var container = dijit.byId(this.containerId);
		container.selectChild(page);
	}, onCloseButtonClick:function (page) {
		var container = dijit.byId(this.containerId);
		container.closeChild(page);
		var b = this.pane2button[this._currentChild];
		if (b) {
			dijit.focus(b.focusNode || b.domNode);
		}
	}, adjacent:function (forward) {
		if (!this.isLeftToRight() && (!this.tabPosition || /top|bottom/.test(this.tabPosition))) {
			forward = !forward;
		}
		var children = this.getChildren();
		var current = dojo.indexOf(children, this.pane2button[this._currentChild]);
		var offset = forward ? 1 : children.length - 1;
		return children[(current + offset) % children.length];
	}, onkeypress:function (e) {
		if (this.disabled || e.altKey) {
			return;
		}
		var forward = null;
		if (e.ctrlKey || !e._djpage) {
			var k = dojo.keys;
			switch (e.keyCode) {
			  case k.LEFT_ARROW:
			  case k.UP_ARROW:
				if (!e._djpage) {
					forward = false;
				}
				break;
			  case k.PAGE_UP:
				if (e.ctrlKey) {
					forward = false;
				}
				break;
			  case k.RIGHT_ARROW:
			  case k.DOWN_ARROW:
				if (!e._djpage) {
					forward = true;
				}
				break;
			  case k.PAGE_DOWN:
				if (e.ctrlKey) {
					forward = true;
				}
				break;
			  case k.DELETE:
				if (this._currentChild.closable) {
					this.onCloseButtonClick(this._currentChild);
				}
				dojo.stopEvent(e);
				break;
			  default:
				if (e.ctrlKey) {
					if (e.keyCode == k.TAB) {
						this.adjacent(!e.shiftKey).onClick();
						dojo.stopEvent(e);
					} else {
						if (e.keyChar == "w") {
							if (this._currentChild.closable) {
								this.onCloseButtonClick(this._currentChild);
							}
							dojo.stopEvent(e);
						}
					}
				}
			}
			if (forward !== null) {
				this.adjacent(forward).onClick();
				dojo.stopEvent(e);
			}
		}
	}, onContainerKeyPress:function (info) {
		info.e._djpage = info.page;
		this.onkeypress(info.e);
	}});
	dojo.declare("dijit.layout._StackButton", dijit.form.ToggleButton, {tabIndex:"-1", postCreate:function (evt) {
		dijit.setWaiRole((this.focusNode || this.domNode), "tab");
		this.inherited(arguments);
	}, onClick:function (evt) {
		dijit.focus(this.focusNode);
	}, onClickCloseButton:function (evt) {
		evt.stopPropagation();
	}});
	dojo.extend(dijit._Widget, {title:"", selected:false, closable:false, onClose:function () {
		return true;
	}});
}
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.layout.AccordionContainer"]) {
	dojo._hasResource["dijit.layout.AccordionContainer"] = true;
	dojo.provide("dijit.layout.AccordionContainer");
	dojo.declare("dijit.layout.AccordionContainer", dijit.layout.StackContainer, {duration:250, _verticalSpace:0, postCreate:function () {
		this.domNode.style.overflow = "hidden";
		this.inherited("postCreate", arguments);
		dijit.setWaiRole(this.domNode, "tablist");
		dojo.addClass(this.domNode, "dijitAccordionContainer");
	}, startup:function () {
		if (this._started) {
			return;
		}
		this.inherited("startup", arguments);
		if (this.selectedChildWidget) {
			var style = this.selectedChildWidget.containerNode.style;
			style.display = "";
			style.overflow = "auto";
			this.selectedChildWidget._setSelectedState(true);
		}
	}, layout:function () {
		var totalCollapsedHeight = 0;
		var openPane = this.selectedChildWidget;
		dojo.forEach(this.getChildren(), function (child) {
			totalCollapsedHeight += child.getTitleHeight();
		});
		var mySize = this._contentBox;
		this._verticalSpace = (mySize.h - totalCollapsedHeight);
		if (openPane) {
			openPane.containerNode.style.height = this._verticalSpace + "px";
		}
	}, _setupChild:function (page) {
		return page;
	}, _transition:function (newWidget, oldWidget) {
		if (this._inTransition) {
			return;
		}
		this._inTransition = true;
		var animations = [];
		var paneHeight = this._verticalSpace;
		if (newWidget) {
			newWidget.setSelected(true);
			var newContents = newWidget.containerNode;
			newContents.style.display = "";
			animations.push(dojo.animateProperty({node:newContents, duration:this.duration, properties:{height:{start:"1", end:paneHeight}}, onEnd:function () {
				newContents.style.overflow = "auto";
			}}));
		}
		if (oldWidget) {
			oldWidget.setSelected(false);
			var oldContents = oldWidget.containerNode;
			oldContents.style.overflow = "hidden";
			animations.push(dojo.animateProperty({node:oldContents, duration:this.duration, properties:{height:{start:paneHeight, end:"1"}}, onEnd:function () {
				oldContents.style.display = "none";
			}}));
		}
		this._inTransition = false;
		dojo.fx.combine(animations).play();
	}, _onKeyPress:function (e) {
		if (this.disabled || e.altKey || !(e._dijitWidget || e.ctrlKey)) {
			return;
		}
		var k = dojo.keys;
		var fromTitle = e._dijitWidget;
		switch (e.keyCode) {
		  case k.LEFT_ARROW:
		  case k.UP_ARROW:
			if (fromTitle) {
				this._adjacent(false)._onTitleClick();
				dojo.stopEvent(e);
			}
			break;
		  case k.PAGE_UP:
			if (e.ctrlKey) {
				this._adjacent(false)._onTitleClick();
				dojo.stopEvent(e);
			}
			break;
		  case k.RIGHT_ARROW:
		  case k.DOWN_ARROW:
			if (fromTitle) {
				this._adjacent(true)._onTitleClick();
				dojo.stopEvent(e);
			}
			break;
		  case k.PAGE_DOWN:
			if (e.ctrlKey) {
				this._adjacent(true)._onTitleClick();
				dojo.stopEvent(e);
			}
			break;
		  default:
			if (e.ctrlKey && e.keyCode == k.TAB) {
				this._adjacent(e._dijitWidget, !e.shiftKey)._onTitleClick();
				dojo.stopEvent(e);
			}
		}
	}});
	dojo.declare("dijit.layout.AccordionPane", [dijit.layout.ContentPane, dijit._Templated, dijit._Contained], {templateString:"<div class='dijitAccordionPane'\r\n\t><div dojoAttachPoint='titleNode,focusNode' dojoAttachEvent='ondijitclick:_onTitleClick,onkeypress:_onTitleKeyPress,onfocus:_handleFocus,onblur:_handleFocus'\r\n\t\tclass='dijitAccordionTitle' wairole=\"tab\"\r\n\t\t><div class='dijitAccordionArrow' waiRole=\"presentation\"></div\r\n\t\t><div class='arrowTextUp' waiRole=\"presentation\">&#9650;</div\r\n\t\t><div class='arrowTextDown' waiRole=\"presentation\">&#9660;</div\r\n\t\t><div waiRole=\"presentation\" dojoAttachPoint='titleTextNode' class='dijitAccordionText'>${title}</div></div\r\n\t><div><div dojoAttachPoint='containerNode' style='overflow: hidden; height: 1px; display: none'\r\n\t\tclass='dijitAccordionBody' wairole=\"tabpanel\"\r\n\t></div></div>\r\n</div>\r\n", postCreate:function () {
		this.inherited("postCreate", arguments);
		dojo.setSelectable(this.titleNode, false);
		this.setSelected(this.selected);
	}, getTitleHeight:function () {
		return dojo.marginBox(this.titleNode).h;
	}, _onTitleClick:function () {
		var parent = this.getParent();
		if (!parent._inTransition) {
			parent.selectChild(this);
			dijit.focus(this.focusNode);
		}
	}, _onTitleKeyPress:function (evt) {
		evt._dijitWidget = this;
		return this.getParent()._onKeyPress(evt);
	}, _setSelectedState:function (isSelected) {
		this.selected = isSelected;
		dojo[(isSelected ? "addClass" : "removeClass")](this.titleNode, "dijitAccordionTitle-selected");
		this.focusNode.setAttribute("tabIndex", isSelected ? "0" : "-1");
	}, _handleFocus:function (e) {
		dojo[(e.type == "focus" ? "addClass" : "removeClass")](this.focusNode, "dijitAccordionFocused");
	}, setSelected:function (isSelected) {
		this._setSelectedState(isSelected);
		if (isSelected) {
			this.onSelected();
			this._loadCheck(true);
		}
	}, onSelected:function () {
	}});
}
dojo.i18n._preloadLocalizations("dojo.nls.rg-help", ["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"]);

