/*
	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.dnd.common"]) {
	dojo._hasResource["dojo.dnd.common"] = true;
	dojo.provide("dojo.dnd.common");
	dojo.dnd._copyKey = navigator.appVersion.indexOf("Macintosh") < 0 ? "ctrlKey" : "metaKey";
	dojo.dnd.getCopyKeyState = function (e) {
		return e[dojo.dnd._copyKey];
	};
	dojo.dnd._uniqueId = 0;
	dojo.dnd.getUniqueId = function () {
		var id;
		do {
			id = dojo._scopeName + "Unique" + (++dojo.dnd._uniqueId);
		} while (dojo.byId(id));
		return id;
	};
	dojo.dnd._empty = {};
	dojo.dnd.isFormElement = function (e) {
		var t = e.target;
		if (t.nodeType == 3) {
			t = t.parentNode;
		}
		return " button textarea input select option ".indexOf(" " + t.tagName.toLowerCase() + " ") >= 0;
	};
}
if (!dojo._hasResource["dojo.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.dnd.Container"]) {
	dojo._hasResource["dojo.dnd.Container"] = true;
	dojo.provide("dojo.dnd.Container");
	dojo.declare("dojo.dnd.Container", null, {skipForm:false, constructor:function (node, params) {
		this.node = dojo.byId(node);
		if (!params) {
			params = {};
		}
		this.creator = params.creator || null;
		this.skipForm = params.skipForm;
		this.defaultCreator = dojo.dnd._defaultCreator(this.node);
		this.map = {};
		this.current = null;
		this.containerState = "";
		dojo.addClass(this.node, "dojoDndContainer");
		if (!(params && params._skipStartup)) {
			this.startup();
		}
		this.events = [dojo.connect(this.node, "onmouseover", this, "onMouseOver"), dojo.connect(this.node, "onmouseout", this, "onMouseOut"), dojo.connect(this.node, "ondragstart", this, "onSelectStart"), dojo.connect(this.node, "onselectstart", this, "onSelectStart")];
	}, creator:function () {
	}, getItem:function (key) {
		return this.map[key];
	}, setItem:function (key, data) {
		this.map[key] = data;
	}, delItem:function (key) {
		delete this.map[key];
	}, forInItems:function (f, o) {
		o = o || dojo.global;
		var m = this.map, e = dojo.dnd._empty;
		for (var i in this.map) {
			if (i in e) {
				continue;
			}
			f.call(o, m[i], i, m);
		}
	}, clearItems:function () {
		this.map = {};
	}, getAllNodes:function () {
		return dojo.query("> .dojoDndItem", this.parent);
	}, insertNodes:function (data, before, anchor) {
		if (!this.parent.firstChild) {
			anchor = null;
		} else {
			if (before) {
				if (!anchor) {
					anchor = this.parent.firstChild;
				}
			} else {
				if (anchor) {
					anchor = anchor.nextSibling;
				}
			}
		}
		if (anchor) {
			for (var i = 0; i < data.length; ++i) {
				var t = this._normalizedCreator(data[i]);
				this.setItem(t.node.id, {data:t.data, type:t.type});
				this.parent.insertBefore(t.node, anchor);
			}
		} else {
			for (var i = 0; i < data.length; ++i) {
				var t = this._normalizedCreator(data[i]);
				this.setItem(t.node.id, {data:t.data, type:t.type});
				this.parent.appendChild(t.node);
			}
		}
		return this;
	}, destroy:function () {
		dojo.forEach(this.events, dojo.disconnect);
		this.clearItems();
		this.node = this.parent = this.current;
	}, markupFactory:function (params, node) {
		params._skipStartup = true;
		return new dojo.dnd.Container(node, params);
	}, startup:function () {
		this.parent = this.node;
		if (this.parent.tagName.toLowerCase() == "table") {
			var c = this.parent.getElementsByTagName("tbody");
			if (c && c.length) {
				this.parent = c[0];
			}
		}
		this.getAllNodes().forEach(function (node) {
			if (!node.id) {
				node.id = dojo.dnd.getUniqueId();
			}
			var type = node.getAttribute("dndType"), data = node.getAttribute("dndData");
			this.setItem(node.id, {data:data ? data : node.innerHTML, type:type ? type.split(/\s*,\s*/) : ["text"]});
		}, this);
	}, onMouseOver:function (e) {
		var n = e.relatedTarget;
		while (n) {
			if (n == this.node) {
				break;
			}
			try {
				n = n.parentNode;
			}
			catch (x) {
				n = null;
			}
		}
		if (!n) {
			this._changeState("Container", "Over");
			this.onOverEvent();
		}
		n = this._getChildByEvent(e);
		if (this.current == n) {
			return;
		}
		if (this.current) {
			this._removeItemClass(this.current, "Over");
		}
		if (n) {
			this._addItemClass(n, "Over");
		}
		this.current = n;
	}, onMouseOut:function (e) {
		for (var n = e.relatedTarget; n; ) {
			if (n == this.node) {
				return;
			}
			try {
				n = n.parentNode;
			}
			catch (x) {
				n = null;
			}
		}
		if (this.current) {
			this._removeItemClass(this.current, "Over");
			this.current = null;
		}
		this._changeState("Container", "");
		this.onOutEvent();
	}, onSelectStart:function (e) {
		if (!this.skipForm || !dojo.dnd.isFormElement(e)) {
			dojo.stopEvent(e);
		}
	}, onOverEvent:function () {
	}, onOutEvent:function () {
	}, _changeState:function (type, newState) {
		var prefix = "dojoDnd" + type;
		var state = type.toLowerCase() + "State";
		dojo.removeClass(this.node, prefix + this[state]);
		dojo.addClass(this.node, prefix + newState);
		this[state] = newState;
	}, _addItemClass:function (node, type) {
		dojo.addClass(node, "dojoDndItem" + type);
	}, _removeItemClass:function (node, type) {
		dojo.removeClass(node, "dojoDndItem" + type);
	}, _getChildByEvent:function (e) {
		var node = e.target;
		if (node) {
			for (var parent = node.parentNode; parent; node = parent, parent = node.parentNode) {
				if (parent == this.parent && dojo.hasClass(node, "dojoDndItem")) {
					return node;
				}
			}
		}
		return null;
	}, _normalizedCreator:function (item, hint) {
		var t = (this.creator ? this.creator : this.defaultCreator)(item, hint);
		if (!dojo.isArray(t.type)) {
			t.type = ["text"];
		}
		if (!t.node.id) {
			t.node.id = dojo.dnd.getUniqueId();
		}
		dojo.addClass(t.node, "dojoDndItem");
		return t;
	}});
	dojo.dnd._createNode = function (tag) {
		if (!tag) {
			return dojo.dnd._createSpan;
		}
		return function (text) {
			var n = dojo.doc.createElement(tag);
			n.innerHTML = text;
			return n;
		};
	};
	dojo.dnd._createTrTd = function (text) {
		var tr = dojo.doc.createElement("tr");
		var td = dojo.doc.createElement("td");
		td.innerHTML = text;
		tr.appendChild(td);
		return tr;
	};
	dojo.dnd._createSpan = function (text) {
		var n = dojo.doc.createElement("span");
		n.innerHTML = text;
		return n;
	};
	dojo.dnd._defaultCreatorNodes = {ul:"li", ol:"li", div:"div", p:"div"};
	dojo.dnd._defaultCreator = function (node) {
		var tag = node.tagName.toLowerCase();
		var c = tag == "table" ? dojo.dnd._createTrTd : dojo.dnd._createNode(dojo.dnd._defaultCreatorNodes[tag]);
		return function (item, hint) {
			var isObj = dojo.isObject(item) && item;
			var data = (isObj && item.data) ? item.data : item;
			var type = (isObj && item.type) ? item.type : ["text"];
			var t = String(data), n = (hint == "avatar" ? dojo.dnd._createSpan : c)(t);
			n.id = dojo.dnd.getUniqueId();
			return {node:n, data:data, type:type};
		};
	};
}
if (!dojo._hasResource["dojo.dnd.Selector"]) {
	dojo._hasResource["dojo.dnd.Selector"] = true;
	dojo.provide("dojo.dnd.Selector");
	dojo.declare("dojo.dnd.Selector", dojo.dnd.Container, {constructor:function (node, params) {
		if (!params) {
			params = {};
		}
		this.singular = params.singular;
		this.selection = {};
		this.anchor = null;
		this.simpleSelection = false;
		this.events.push(dojo.connect(this.node, "onmousedown", this, "onMouseDown"), dojo.connect(this.node, "onmouseup", this, "onMouseUp"));
	}, singular:false, getSelectedNodes:function () {
		var t = new dojo.NodeList();
		var e = dojo.dnd._empty;
		for (var i in this.selection) {
			if (i in e) {
				continue;
			}
			t.push(dojo.byId(i));
		}
		return t;
	}, selectNone:function () {
		return this._removeSelection()._removeAnchor();
	}, selectAll:function () {
		this.forInItems(function (data, id) {
			this._addItemClass(dojo.byId(id), "Selected");
			this.selection[id] = 1;
		}, this);
		return this._removeAnchor();
	}, deleteSelectedNodes:function () {
		var e = dojo.dnd._empty;
		for (var i in this.selection) {
			if (i in e) {
				continue;
			}
			var n = dojo.byId(i);
			this.delItem(i);
			dojo._destroyElement(n);
		}
		this.anchor = null;
		this.selection = {};
		return this;
	}, insertNodes:function (addSelected, data, before, anchor) {
		var oldCreator = this._normalizedCreator;
		this._normalizedCreator = function (item, hint) {
			var t = oldCreator.call(this, item, hint);
			if (addSelected) {
				if (!this.anchor) {
					this.anchor = t.node;
					this._removeItemClass(t.node, "Selected");
					this._addItemClass(this.anchor, "Anchor");
				} else {
					if (this.anchor != t.node) {
						this._removeItemClass(t.node, "Anchor");
						this._addItemClass(t.node, "Selected");
					}
				}
				this.selection[t.node.id] = 1;
			} else {
				this._removeItemClass(t.node, "Selected");
				this._removeItemClass(t.node, "Anchor");
			}
			return t;
		};
		dojo.dnd.Selector.superclass.insertNodes.call(this, data, before, anchor);
		this._normalizedCreator = oldCreator;
		return this;
	}, destroy:function () {
		dojo.dnd.Selector.superclass.destroy.call(this);
		this.selection = this.anchor = null;
	}, markupFactory:function (params, node) {
		params._skipStartup = true;
		return new dojo.dnd.Selector(node, params);
	}, onMouseDown:function (e) {
		if (!this.current) {
			return;
		}
		if (!this.singular && !dojo.dnd.getCopyKeyState(e) && !e.shiftKey && (this.current.id in this.selection)) {
			this.simpleSelection = true;
			dojo.stopEvent(e);
			return;
		}
		if (!this.singular && e.shiftKey) {
			if (!dojo.dnd.getCopyKeyState(e)) {
				this._removeSelection();
			}
			var c = this.getAllNodes();
			if (c.length) {
				if (!this.anchor) {
					this.anchor = c[0];
					this._addItemClass(this.anchor, "Anchor");
				}
				this.selection[this.anchor.id] = 1;
				if (this.anchor != this.current) {
					var i = 0;
					for (; i < c.length; ++i) {
						var node = c[i];
						if (node == this.anchor || node == this.current) {
							break;
						}
					}
					for (++i; i < c.length; ++i) {
						var node = c[i];
						if (node == this.anchor || node == this.current) {
							break;
						}
						this._addItemClass(node, "Selected");
						this.selection[node.id] = 1;
					}
					this._addItemClass(this.current, "Selected");
					this.selection[this.current.id] = 1;
				}
			}
		} else {
			if (this.singular) {
				if (this.anchor == this.current) {
					if (dojo.dnd.getCopyKeyState(e)) {
						this.selectNone();
					}
				} else {
					this.selectNone();
					this.anchor = this.current;
					this._addItemClass(this.anchor, "Anchor");
					this.selection[this.current.id] = 1;
				}
			} else {
				if (dojo.dnd.getCopyKeyState(e)) {
					if (this.anchor == this.current) {
						delete this.selection[this.anchor.id];
						this._removeAnchor();
					} else {
						if (this.current.id in this.selection) {
							this._removeItemClass(this.current, "Selected");
							delete this.selection[this.current.id];
						} else {
							if (this.anchor) {
								this._removeItemClass(this.anchor, "Anchor");
								this._addItemClass(this.anchor, "Selected");
							}
							this.anchor = this.current;
							this._addItemClass(this.current, "Anchor");
							this.selection[this.current.id] = 1;
						}
					}
				} else {
					if (!(this.current.id in this.selection)) {
						this.selectNone();
						this.anchor = this.current;
						this._addItemClass(this.current, "Anchor");
						this.selection[this.current.id] = 1;
					}
				}
			}
		}
		dojo.stopEvent(e);
	}, onMouseUp:function (e) {
		if (!this.simpleSelection) {
			return;
		}
		this.simpleSelection = false;
		this.selectNone();
		if (this.current) {
			this.anchor = this.current;
			this._addItemClass(this.anchor, "Anchor");
			this.selection[this.current.id] = 1;
		}
	}, onMouseMove:function (e) {
		this.simpleSelection = false;
	}, onOverEvent:function () {
		this.onmousemoveEvent = dojo.connect(this.node, "onmousemove", this, "onMouseMove");
	}, onOutEvent:function () {
		dojo.disconnect(this.onmousemoveEvent);
		delete this.onmousemoveEvent;
	}, _removeSelection:function () {
		var e = dojo.dnd._empty;
		for (var i in this.selection) {
			if (i in e) {
				continue;
			}
			var node = dojo.byId(i);
			if (node) {
				this._removeItemClass(node, "Selected");
			}
		}
		this.selection = {};
		return this;
	}, _removeAnchor:function () {
		if (this.anchor) {
			this._removeItemClass(this.anchor, "Anchor");
			this.anchor = null;
		}
		return this;
	}});
}
if (!dojo._hasResource["dojo.dnd.autoscroll"]) {
	dojo._hasResource["dojo.dnd.autoscroll"] = true;
	dojo.provide("dojo.dnd.autoscroll");
	dojo.dnd.getViewport = function () {
		var d = dojo.doc, dd = d.documentElement, w = window, b = dojo.body();
		if (dojo.isMozilla) {
			return {w:dd.clientWidth, h:w.innerHeight};
		} else {
			if (!dojo.isOpera && w.innerWidth) {
				return {w:w.innerWidth, h:w.innerHeight};
			} else {
				if (!dojo.isOpera && dd && dd.clientWidth) {
					return {w:dd.clientWidth, h:dd.clientHeight};
				} else {
					if (b.clientWidth) {
						return {w:b.clientWidth, h:b.clientHeight};
					}
				}
			}
		}
		return null;
	};
	dojo.dnd.V_TRIGGER_AUTOSCROLL = 32;
	dojo.dnd.H_TRIGGER_AUTOSCROLL = 32;
	dojo.dnd.V_AUTOSCROLL_VALUE = 16;
	dojo.dnd.H_AUTOSCROLL_VALUE = 16;
	dojo.dnd.autoScroll = function (e) {
		var v = dojo.dnd.getViewport(), dx = 0, dy = 0;
		if (e.clientX < dojo.dnd.H_TRIGGER_AUTOSCROLL) {
			dx = -dojo.dnd.H_AUTOSCROLL_VALUE;
		} else {
			if (e.clientX > v.w - dojo.dnd.H_TRIGGER_AUTOSCROLL) {
				dx = dojo.dnd.H_AUTOSCROLL_VALUE;
			}
		}
		if (e.clientY < dojo.dnd.V_TRIGGER_AUTOSCROLL) {
			dy = -dojo.dnd.V_AUTOSCROLL_VALUE;
		} else {
			if (e.clientY > v.h - dojo.dnd.V_TRIGGER_AUTOSCROLL) {
				dy = dojo.dnd.V_AUTOSCROLL_VALUE;
			}
		}
		window.scrollBy(dx, dy);
	};
	dojo.dnd._validNodes = {"div":1, "p":1, "td":1};
	dojo.dnd._validOverflow = {"auto":1, "scroll":1};
	dojo.dnd.autoScrollNodes = function (e) {
		for (var n = e.target; n; ) {
			if (n.nodeType == 1 && (n.tagName.toLowerCase() in dojo.dnd._validNodes)) {
				var s = dojo.getComputedStyle(n);
				if (s.overflow.toLowerCase() in dojo.dnd._validOverflow) {
					var b = dojo._getContentBox(n, s), t = dojo._abs(n, true);
					b.l += t.x + n.scrollLeft;
					b.t += t.y + n.scrollTop;
					var w = Math.min(dojo.dnd.H_TRIGGER_AUTOSCROLL, b.w / 2), h = Math.min(dojo.dnd.V_TRIGGER_AUTOSCROLL, b.h / 2), rx = e.pageX - b.l, ry = e.pageY - b.t, dx = 0, dy = 0;
					if (rx > 0 && rx < b.w) {
						if (rx < w) {
							dx = -dojo.dnd.H_AUTOSCROLL_VALUE;
						} else {
							if (rx > b.w - w) {
								dx = dojo.dnd.H_AUTOSCROLL_VALUE;
							}
						}
					}
					if (ry > 0 && ry < b.h) {
						if (ry < h) {
							dy = -dojo.dnd.V_AUTOSCROLL_VALUE;
						} else {
							if (ry > b.h - h) {
								dy = dojo.dnd.V_AUTOSCROLL_VALUE;
							}
						}
					}
					var oldLeft = n.scrollLeft, oldTop = n.scrollTop;
					n.scrollLeft = n.scrollLeft + dx;
					n.scrollTop = n.scrollTop + dy;
					if (oldLeft != n.scrollLeft || oldTop != n.scrollTop) {
						return;
					}
				}
			}
			try {
				n = n.parentNode;
			}
			catch (x) {
				n = null;
			}
		}
		dojo.dnd.autoScroll(e);
	};
}
if (!dojo._hasResource["dojo.dnd.Avatar"]) {
	dojo._hasResource["dojo.dnd.Avatar"] = true;
	dojo.provide("dojo.dnd.Avatar");
	dojo.declare("dojo.dnd.Avatar", null, {constructor:function (manager) {
		this.manager = manager;
		this.construct();
	}, construct:function () {
		var a = dojo.doc.createElement("table");
		a.className = "dojoDndAvatar";
		a.style.position = "absolute";
		a.style.zIndex = 1999;
		a.style.margin = "0px";
		var b = dojo.doc.createElement("tbody");
		var tr = dojo.doc.createElement("tr");
		tr.className = "dojoDndAvatarHeader";
		var td = dojo.doc.createElement("td");
		td.innerHTML = this._generateText();
		tr.appendChild(td);
		dojo.style(tr, "opacity", 0.9);
		b.appendChild(tr);
		var k = Math.min(5, this.manager.nodes.length);
		var source = this.manager.source;
		for (var i = 0; i < k; ++i) {
			tr = dojo.doc.createElement("tr");
			tr.className = "dojoDndAvatarItem";
			td = dojo.doc.createElement("td");
			if (source.creator) {
				node = source._normalizedCreator(source.getItem(this.manager.nodes[i].id).data, "avatar").node;
			} else {
				node = this.manager.nodes[i].cloneNode(true);
				if (node.tagName.toLowerCase() == "tr") {
					var table = dojo.doc.createElement("table"), tbody = dojo.doc.createElement("tbody");
					tbody.appendChild(node);
					table.appendChild(tbody);
					node = table;
				}
			}
			node.id = "";
			td.appendChild(node);
			tr.appendChild(td);
			dojo.style(tr, "opacity", (9 - i) / 10);
			b.appendChild(tr);
		}
		a.appendChild(b);
		this.node = a;
	}, destroy:function () {
		dojo._destroyElement(this.node);
		this.node = false;
	}, update:function () {
		dojo[(this.manager.canDropFlag ? "add" : "remove") + "Class"](this.node, "dojoDndAvatarCanDrop");
		dojo.query("tr.dojoDndAvatarHeader td").forEach(function (node) {
			node.innerHTML = this._generateText();
		}, this);
	}, _generateText:function () {
		return this.manager.nodes.length.toString();
	}});
}
if (!dojo._hasResource["dojo.dnd.Manager"]) {
	dojo._hasResource["dojo.dnd.Manager"] = true;
	dojo.provide("dojo.dnd.Manager");
	dojo.declare("dojo.dnd.Manager", null, {constructor:function () {
		this.avatar = null;
		this.source = null;
		this.nodes = [];
		this.copy = true;
		this.target = null;
		this.canDropFlag = false;
		this.events = [];
	}, OFFSET_X:16, OFFSET_Y:16, overSource:function (source) {
		if (this.avatar) {
			this.target = (source && source.targetState != "Disabled") ? source : null;
			this.avatar.update();
		}
		dojo.publish("/dnd/source/over", [source]);
	}, outSource:function (source) {
		if (this.avatar) {
			if (this.target == source) {
				this.target = null;
				this.canDropFlag = false;
				this.avatar.update();
				dojo.publish("/dnd/source/over", [null]);
			}
		} else {
			dojo.publish("/dnd/source/over", [null]);
		}
	}, startDrag:function (source, nodes, copy) {
		this.source = source;
		this.nodes = nodes;
		this.copy = Boolean(copy);
		this.avatar = this.makeAvatar();
		dojo.body().appendChild(this.avatar.node);
		dojo.publish("/dnd/start", [source, nodes, this.copy]);
		this.events = [dojo.connect(dojo.doc, "onmousemove", this, "onMouseMove"), dojo.connect(dojo.doc, "onmouseup", this, "onMouseUp"), dojo.connect(dojo.doc, "onkeydown", this, "onKeyDown"), dojo.connect(dojo.doc, "onkeyup", this, "onKeyUp")];
		var c = "dojoDnd" + (copy ? "Copy" : "Move");
		dojo.addClass(dojo.body(), c);
	}, canDrop:function (flag) {
		var canDropFlag = Boolean(this.target && flag);
		if (this.canDropFlag != canDropFlag) {
			this.canDropFlag = canDropFlag;
			this.avatar.update();
		}
	}, stopDrag:function () {
		dojo.removeClass(dojo.body(), "dojoDndCopy");
		dojo.removeClass(dojo.body(), "dojoDndMove");
		dojo.forEach(this.events, dojo.disconnect);
		this.events = [];
		this.avatar.destroy();
		this.avatar = null;
		this.source = null;
		this.nodes = [];
	}, makeAvatar:function () {
		return new dojo.dnd.Avatar(this);
	}, updateAvatar:function () {
		this.avatar.update();
	}, onMouseMove:function (e) {
		var a = this.avatar;
		if (a) {
			dojo.dnd.autoScroll(e);
			var s = a.node.style;
			s.left = (e.pageX + this.OFFSET_X) + "px";
			s.top = (e.pageY + this.OFFSET_Y) + "px";
			var copy = Boolean(this.source.copyState(dojo.dnd.getCopyKeyState(e)));
			if (this.copy != copy) {
				this._setCopyStatus(copy);
			}
		}
	}, onMouseUp:function (e) {
		if (this.avatar && (!("mouseButton" in this.source) || this.source.mouseButton == e.button)) {
			if (this.target && this.canDropFlag) {
				var params = [this.source, this.nodes, Boolean(this.source.copyState(dojo.dnd.getCopyKeyState(e))), this.target];
				dojo.publish("/dnd/drop/before", params);
				dojo.publish("/dnd/drop", params);
			} else {
				dojo.publish("/dnd/cancel");
			}
			this.stopDrag();
		}
	}, onKeyDown:function (e) {
		if (this.avatar) {
			switch (e.keyCode) {
			  case dojo.keys.CTRL:
				var copy = Boolean(this.source.copyState(true));
				if (this.copy != copy) {
					this._setCopyStatus(copy);
				}
				break;
			  case dojo.keys.ESCAPE:
				dojo.publish("/dnd/cancel");
				this.stopDrag();
				break;
			}
		}
	}, onKeyUp:function (e) {
		if (this.avatar && e.keyCode == dojo.keys.CTRL) {
			var copy = Boolean(this.source.copyState(false));
			if (this.copy != copy) {
				this._setCopyStatus(copy);
			}
		}
	}, _setCopyStatus:function (copy) {
		this.copy = copy;
		this.source._markDndStatus(this.copy);
		this.updateAvatar();
		dojo.removeClass(dojo.body(), "dojoDnd" + (this.copy ? "Move" : "Copy"));
		dojo.addClass(dojo.body(), "dojoDnd" + (this.copy ? "Copy" : "Move"));
	}});
	dojo.dnd._manager = null;
	dojo.dnd.manager = function () {
		if (!dojo.dnd._manager) {
			dojo.dnd._manager = new dojo.dnd.Manager();
		}
		return dojo.dnd._manager;
	};
}
if (!dojo._hasResource["dojo.dnd.Source"]) {
	dojo._hasResource["dojo.dnd.Source"] = true;
	dojo.provide("dojo.dnd.Source");
	dojo.declare("dojo.dnd.Source", dojo.dnd.Selector, {isSource:true, horizontal:false, copyOnly:false, skipForm:false, withHandles:false, accept:["text"], constructor:function (node, params) {
		dojo.mixin(this, dojo.mixin({}, params));
		var type = this.accept;
		if (type.length) {
			this.accept = {};
			for (var i = 0; i < type.length; ++i) {
				this.accept[type[i]] = 1;
			}
		}
		this.isDragging = false;
		this.mouseDown = false;
		this.targetAnchor = null;
		this.targetBox = null;
		this.before = true;
		this.sourceState = "";
		if (this.isSource) {
			dojo.addClass(this.node, "dojoDndSource");
		}
		this.targetState = "";
		if (this.accept) {
			dojo.addClass(this.node, "dojoDndTarget");
		}
		if (this.horizontal) {
			dojo.addClass(this.node, "dojoDndHorizontal");
		}
		this.topics = [dojo.subscribe("/dnd/source/over", this, "onDndSourceOver"), dojo.subscribe("/dnd/start", this, "onDndStart"), dojo.subscribe("/dnd/drop", this, "onDndDrop"), dojo.subscribe("/dnd/cancel", this, "onDndCancel")];
	}, checkAcceptance:function (source, nodes) {
		if (this == source) {
			return true;
		}
		for (var i = 0; i < nodes.length; ++i) {
			var type = source.getItem(nodes[i].id).type;
			var flag = false;
			for (var j = 0; j < type.length; ++j) {
				if (type[j] in this.accept) {
					flag = true;
					break;
				}
			}
			if (!flag) {
				return false;
			}
		}
		return true;
	}, copyState:function (keyPressed) {
		return this.copyOnly || keyPressed;
	}, destroy:function () {
		dojo.dnd.Source.superclass.destroy.call(this);
		dojo.forEach(this.topics, dojo.unsubscribe);
		this.targetAnchor = null;
	}, markupFactory:function (params, node) {
		params._skipStartup = true;
		return new dojo.dnd.Source(node, params);
	}, onMouseMove:function (e) {
		if (this.isDragging && this.targetState == "Disabled") {
			return;
		}
		dojo.dnd.Source.superclass.onMouseMove.call(this, e);
		var m = dojo.dnd.manager();
		if (this.isDragging) {
			var before = false;
			if (this.current) {
				if (!this.targetBox || this.targetAnchor != this.current) {
					this.targetBox = {xy:dojo.coords(this.current, true), w:this.current.offsetWidth, h:this.current.offsetHeight};
				}
				if (this.horizontal) {
					before = (e.pageX - this.targetBox.xy.x) < (this.targetBox.w / 2);
				} else {
					before = (e.pageY - this.targetBox.xy.y) < (this.targetBox.h / 2);
				}
			}
			if (this.current != this.targetAnchor || before != this.before) {
				this._markTargetAnchor(before);
				m.canDrop(!this.current || m.source != this || !(this.current.id in this.selection));
			}
		} else {
			if (this.mouseDown && this.isSource) {
				var nodes = this.getSelectedNodes();
				if (nodes.length) {
					m.startDrag(this, nodes, this.copyState(dojo.dnd.getCopyKeyState(e)));
				}
			}
		}
	}, onMouseDown:function (e) {
		if (this._legalMouseDown(e) && (!this.skipForm || !dojo.dnd.isFormElement(e))) {
			this.mouseDown = true;
			this.mouseButton = e.button;
			dojo.dnd.Source.superclass.onMouseDown.call(this, e);
		}
	}, onMouseUp:function (e) {
		if (this.mouseDown) {
			this.mouseDown = false;
			dojo.dnd.Source.superclass.onMouseUp.call(this, e);
		}
	}, onDndSourceOver:function (source) {
		if (this != source) {
			this.mouseDown = false;
			if (this.targetAnchor) {
				this._unmarkTargetAnchor();
			}
		} else {
			if (this.isDragging) {
				var m = dojo.dnd.manager();
				m.canDrop(this.targetState != "Disabled" && (!this.current || m.source != this || !(this.current.id in this.selection)));
			}
		}
	}, onDndStart:function (source, nodes, copy) {
		if (this.isSource) {
			this._changeState("Source", this == source ? (copy ? "Copied" : "Moved") : "");
		}
		var accepted = this.accept && this.checkAcceptance(source, nodes);
		this._changeState("Target", accepted ? "" : "Disabled");
		if (accepted && this == source) {
			dojo.dnd.manager().overSource(this);
		}
		this.isDragging = true;
	}, onDndDrop:function (source, nodes, copy) {
		do {
			if (this.containerState != "Over") {
				break;
			}
			var oldCreator = this._normalizedCreator;
			if (this != source) {
				if (this.creator) {
					this._normalizedCreator = function (node, hint) {
						return oldCreator.call(this, source.getItem(node.id).data, hint);
					};
				} else {
					if (copy) {
						this._normalizedCreator = function (node, hint) {
							var t = source.getItem(node.id);
							var n = node.cloneNode(true);
							n.id = dojo.dnd.getUniqueId();
							return {node:n, data:t.data, type:t.type};
						};
					} else {
						this._normalizedCreator = function (node, hint) {
							var t = source.getItem(node.id);
							source.delItem(node.id);
							return {node:node, data:t.data, type:t.type};
						};
					}
				}
			} else {
				if (this.current && this.current.id in this.selection) {
					break;
				}
				if (this.creator) {
					if (copy) {
						this._normalizedCreator = function (node, hint) {
							return oldCreator.call(this, source.getItem(node.id).data, hint);
						};
					} else {
						if (!this.current) {
							break;
						}
						this._normalizedCreator = function (node, hint) {
							var t = source.getItem(node.id);
							return {node:node, data:t.data, type:t.type};
						};
					}
				} else {
					if (copy) {
						this._normalizedCreator = function (node, hint) {
							var t = source.getItem(node.id);
							var n = node.cloneNode(true);
							n.id = dojo.dnd.getUniqueId();
							return {node:n, data:t.data, type:t.type};
						};
					} else {
						if (!this.current) {
							break;
						}
						this._normalizedCreator = function (node, hint) {
							var t = source.getItem(node.id);
							return {node:node, data:t.data, type:t.type};
						};
					}
				}
			}
			this._removeSelection();
			if (this != source) {
				this._removeAnchor();
			}
			if (this != source && !copy && !this.creator) {
				source.selectNone();
			}
			this.insertNodes(true, nodes, this.before, this.current);
			if (this != source && !copy && this.creator) {
				source.deleteSelectedNodes();
			}
			this._normalizedCreator = oldCreator;
		} while (false);
		this.onDndCancel();
	}, onDndCancel:function () {
		if (this.targetAnchor) {
			this._unmarkTargetAnchor();
			this.targetAnchor = null;
		}
		this.before = true;
		this.isDragging = false;
		this.mouseDown = false;
		delete this.mouseButton;
		this._changeState("Source", "");
		this._changeState("Target", "");
	}, onOverEvent:function () {
		dojo.dnd.Source.superclass.onOverEvent.call(this);
		dojo.dnd.manager().overSource(this);
	}, onOutEvent:function () {
		dojo.dnd.Source.superclass.onOutEvent.call(this);
		dojo.dnd.manager().outSource(this);
	}, _markTargetAnchor:function (before) {
		if (this.current == this.targetAnchor && this.before == before) {
			return;
		}
		if (this.targetAnchor) {
			this._removeItemClass(this.targetAnchor, this.before ? "Before" : "After");
		}
		this.targetAnchor = this.current;
		this.targetBox = null;
		this.before = before;
		if (this.targetAnchor) {
			this._addItemClass(this.targetAnchor, this.before ? "Before" : "After");
		}
	}, _unmarkTargetAnchor:function () {
		if (!this.targetAnchor) {
			return;
		}
		this._removeItemClass(this.targetAnchor, this.before ? "Before" : "After");
		this.targetAnchor = null;
		this.targetBox = null;
		this.before = true;
	}, _markDndStatus:function (copy) {
		this._changeState("Source", copy ? "Copied" : "Moved");
	}, _legalMouseDown:function (e) {
		if (!this.withHandles) {
			return true;
		}
		for (var node = e.target; node && !dojo.hasClass(node, "dojoDndItem"); node = node.parentNode) {
			if (dojo.hasClass(node, "dojoDndHandle")) {
				return true;
			}
		}
		return false;
	}});
	dojo.declare("dojo.dnd.Target", dojo.dnd.Source, {constructor:function (node, params) {
		this.isSource = false;
		dojo.removeClass(this.node, "dojoDndSource");
	}, markupFactory:function (params, node) {
		params._skipStartup = true;
		return new dojo.dnd.Target(node, params);
	}});
}
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["dijit._Container"]) {
	dojo._hasResource["dijit._Container"] = true;
	dojo.provide("dijit._Container");
	dojo.declare("dijit._Contained", null, {getParent:function () {
		for (var p = this.domNode.parentNode; p; p = p.parentNode) {
			var id = p.getAttribute && p.getAttribute("widgetId");
			if (id) {
				var parent = dijit.byId(id);
				return parent.isContainer ? parent : null;
			}
		}
		return null;
	}, _getSibling:function (which) {
		var node = this.domNode;
		do {
			node = node[which + "Sibling"];
		} while (node && node.nodeType != 1);
		if (!node) {
			return null;
		}
		var id = node.getAttribute("widgetId");
		return dijit.byId(id);
	}, getPreviousSibling:function () {
		return this._getSibling("previous");
	}, getNextSibling:function () {
		return this._getSibling("next");
	}});
	dojo.declare("dijit._Container", null, {isContainer:true, addChild:function (widget, insertIndex) {
		if (insertIndex === undefined) {
			insertIndex = "last";
		}
		var refNode = this.containerNode || this.domNode;
		if (insertIndex && typeof insertIndex == "number") {
			var children = dojo.query("> [widgetid]", refNode);
			if (children && children.length >= insertIndex) {
				refNode = children[insertIndex - 1];
				insertIndex = "after";
			}
		}
		dojo.place(widget.domNode, refNode, insertIndex);
		if (this._started && !widget._started) {
			widget.startup();
		}
	}, removeChild:function (widget) {
		var node = widget.domNode;
		node.parentNode.removeChild(node);
	}, _nextElement:function (node) {
		do {
			node = node.nextSibling;
		} while (node && node.nodeType != 1);
		return node;
	}, _firstElement:function (node) {
		node = node.firstChild;
		if (node && node.nodeType != 1) {
			node = this._nextElement(node);
		}
		return node;
	}, getChildren:function () {
		return dojo.query("> [widgetId]", this.containerNode || this.domNode).map(dijit.byNode);
	}, hasChildren:function () {
		var cn = this.containerNode || this.domNode;
		return !!this._firstElement(cn);
	}, _getSiblingOfChild:function (child, dir) {
		var node = child.domNode;
		var which = (dir > 0 ? "nextSibling" : "previousSibling");
		do {
			node = node[which];
		} while (node && (node.nodeType != 1 || !dijit.byNode(node)));
		return node ? dijit.byNode(node) : null;
	}});
	dojo.declare("dijit._KeyNavContainer", [dijit._Container], {_keyNavCodes:{}, connectKeyNavHandlers:function (prevKeyCodes, nextKeyCodes) {
		var keyCodes = this._keyNavCodes = {};
		var prev = dojo.hitch(this, this.focusPrev);
		var next = dojo.hitch(this, this.focusNext);
		dojo.forEach(prevKeyCodes, function (code) {
			keyCodes[code] = prev;
		});
		dojo.forEach(nextKeyCodes, function (code) {
			keyCodes[code] = next;
		});
		this.connect(this.domNode, "onkeypress", "_onContainerKeypress");
		this.connect(this.domNode, "onfocus", "_onContainerFocus");
	}, startupKeyNavChildren:function () {
		dojo.forEach(this.getChildren(), dojo.hitch(this, "_startupChild"));
	}, addChild:function (widget, insertIndex) {
		dijit._KeyNavContainer.superclass.addChild.apply(this, arguments);
		this._startupChild(widget);
	}, focus:function () {
		this.focusFirstChild();
	}, focusFirstChild:function () {
		this.focusChild(this._getFirstFocusableChild());
	}, focusNext:function () {
		if (this.focusedChild && this.focusedChild.hasNextFocalNode && this.focusedChild.hasNextFocalNode()) {
			this.focusedChild.focusNext();
			return;
		}
		var child = this._getNextFocusableChild(this.focusedChild, 1);
		if (child.getFocalNodes) {
			this.focusChild(child, child.getFocalNodes()[0]);
		} else {
			this.focusChild(child);
		}
	}, focusPrev:function () {
		if (this.focusedChild && this.focusedChild.hasPrevFocalNode && this.focusedChild.hasPrevFocalNode()) {
			this.focusedChild.focusPrev();
			return;
		}
		var child = this._getNextFocusableChild(this.focusedChild, -1);
		if (child.getFocalNodes) {
			var nodes = child.getFocalNodes();
			this.focusChild(child, nodes[nodes.length - 1]);
		} else {
			this.focusChild(child);
		}
	}, focusChild:function (widget, node) {
		if (widget) {
			if (this.focusedChild && widget !== this.focusedChild) {
				this._onChildBlur(this.focusedChild);
			}
			this.focusedChild = widget;
			if (node && widget.focusFocalNode) {
				widget.focusFocalNode(node);
			} else {
				widget.focus();
			}
		}
	}, _startupChild:function (widget) {
		if (widget.getFocalNodes) {
			dojo.forEach(widget.getFocalNodes(), function (node) {
				dojo.attr(node, "tabindex", -1);
				this._connectNode(node);
			}, this);
		} else {
			var node = widget.focusNode || widget.domNode;
			if (widget.isFocusable()) {
				dojo.attr(node, "tabindex", -1);
			}
			this._connectNode(node);
		}
	}, _connectNode:function (node) {
		this.connect(node, "onfocus", "_onNodeFocus");
		this.connect(node, "onblur", "_onNodeBlur");
	}, _onContainerFocus:function (evt) {
		if (evt.target === this.domNode) {
			this.focusFirstChild();
		}
	}, _onContainerKeypress:function (evt) {
		if (evt.ctrlKey || evt.altKey) {
			return;
		}
		var func = this._keyNavCodes[evt.keyCode];
		if (func) {
			func();
			dojo.stopEvent(evt);
		}
	}, _onNodeFocus:function (evt) {
		dojo.attr(this.domNode, "tabindex", -1);
		var widget = dijit.getEnclosingWidget(evt.target);
		if (widget && widget.isFocusable()) {
			this.focusedChild = widget;
		}
		dojo.stopEvent(evt);
	}, _onNodeBlur:function (evt) {
		if (this.tabIndex) {
			dojo.attr(this.domNode, "tabindex", this.tabIndex);
		}
		dojo.stopEvent(evt);
	}, _onChildBlur:function (widget) {
	}, _getFirstFocusableChild:function () {
		return this._getNextFocusableChild(null, 1);
	}, _getNextFocusableChild:function (child, dir) {
		if (child) {
			child = this._getSiblingOfChild(child, dir);
		}
		var children = this.getChildren();
		for (var i = 0; i < children.length; i++) {
			if (!child) {
				child = children[(dir > 0) ? 0 : (children.length - 1)];
			}
			if (child.isFocusable()) {
				return child;
			}
			child = this._getSiblingOfChild(child, dir);
		}
		return null;
	}});
}
if (!dojo._hasResource["dijit.layout._LayoutWidget"]) {
	dojo._hasResource["dijit.layout._LayoutWidget"] = true;
	dojo.provide("dijit.layout._LayoutWidget");
	dojo.declare("dijit.layout._LayoutWidget", [dijit._Widget, dijit._Container, dijit._Contained], {isLayoutContainer:true, postCreate:function () {
		dojo.addClass(this.domNode, "dijitContainer");
	}, startup:function () {
		if (this._started) {
			return;
		}
		dojo.forEach(this.getChildren(), function (child) {
			child.startup();
		});
		if (!this.getParent || !this.getParent()) {
			this.resize();
			this.connect(window, "onresize", function () {
				this.resize();
			});
		}
		this.inherited(arguments);
	}, resize:function (args) {
		var node = this.domNode;
		if (args) {
			dojo.marginBox(node, args);
			if (args.t) {
				node.style.top = args.t + "px";
			}
			if (args.l) {
				node.style.left = args.l + "px";
			}
		}
		var mb = dojo.mixin(dojo.marginBox(node), args || {});
		this._contentBox = dijit.layout.marginBox2contentBox(node, mb);
		this.layout();
	}, layout:function () {
	}});
	dijit.layout.marginBox2contentBox = function (node, mb) {
		var cs = dojo.getComputedStyle(node);
		var me = dojo._getMarginExtents(node, cs);
		var pb = dojo._getPadBorderExtents(node, cs);
		return {l:dojo._toPixelValue(node, cs.paddingLeft), t:dojo._toPixelValue(node, cs.paddingTop), w:mb.w - (me.w + pb.w), h:mb.h - (me.h + pb.h)};
	};
	(function () {
		var capitalize = function (word) {
			return word.substring(0, 1).toUpperCase() + word.substring(1);
		};
		var size = function (widget, dim) {
			widget.resize ? widget.resize(dim) : dojo.marginBox(widget.domNode, dim);
			dojo.mixin(widget, dojo.marginBox(widget.domNode));
			dojo.mixin(widget, dim);
		};
		dijit.layout.layoutChildren = function (container, dim, children) {
			dim = dojo.mixin({}, dim);
			dojo.addClass(container, "dijitLayoutContainer");
			children = dojo.filter(children, function (item) {
				return item.layoutAlign != "client";
			}).concat(dojo.filter(children, function (item) {
				return item.layoutAlign == "client";
			}));
			dojo.forEach(children, function (child) {
				var elm = child.domNode, pos = child.layoutAlign;
				var elmStyle = elm.style;
				elmStyle.left = dim.l + "px";
				elmStyle.top = dim.t + "px";
				elmStyle.bottom = elmStyle.right = "auto";
				dojo.addClass(elm, "dijitAlign" + capitalize(pos));
				if (pos == "top" || pos == "bottom") {
					size(child, {w:dim.w});
					dim.h -= child.h;
					if (pos == "top") {
						dim.t += child.h;
					} else {
						elmStyle.top = dim.t + dim.h + "px";
					}
				} else {
					if (pos == "left" || pos == "right") {
						size(child, {h:dim.h});
						dim.w -= child.w;
						if (pos == "left") {
							dim.l += child.w;
						} else {
							elmStyle.left = dim.l + dim.w + "px";
						}
					} else {
						if (pos == "client") {
							size(child, dim);
						}
					}
				}
			});
		};
	})();
}
if (!dojo._hasResource["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["dojo.i18n"]) {
	dojo._hasResource["dojo.i18n"] = true;
	dojo.provide("dojo.i18n");
	dojo.i18n.getLocalization = function (packageName, bundleName, locale) {
		locale = dojo.i18n.normalizeLocale(locale);
		var elements = locale.split("-");
		var module = [packageName, "nls", bundleName].join(".");
		var bundle = dojo._loadedModules[module];
		if (bundle) {
			var localization;
			for (var i = elements.length; i > 0; i--) {
				var loc = elements.slice(0, i).join("_");
				if (bundle[loc]) {
					localization = bundle[loc];
					break;
				}
			}
			if (!localization) {
				localization = bundle.ROOT;
			}
			if (localization) {
				var clazz = function () {
				};
				clazz.prototype = localization;
				return new clazz();
			}
		}
		throw new Error("Bundle not found: " + bundleName + " in " + packageName + " , locale=" + locale);
	};
	dojo.i18n.normalizeLocale = function (locale) {
		var result = locale ? locale.toLowerCase() : dojo.locale;
		if (result == "root") {
			result = "ROOT";
		}
		return result;
	};
	dojo.i18n._requireLocalization = function (moduleName, bundleName, locale, availableFlatLocales) {
		var targetLocale = dojo.i18n.normalizeLocale(locale);
		var bundlePackage = [moduleName, "nls", bundleName].join(".");
		var bestLocale = "";
		if (availableFlatLocales) {
			var flatLocales = availableFlatLocales.split(",");
			for (var i = 0; i < flatLocales.length; i++) {
				if (targetLocale.indexOf(flatLocales[i]) == 0) {
					if (flatLocales[i].length > bestLocale.length) {
						bestLocale = flatLocales[i];
					}
				}
			}
			if (!bestLocale) {
				bestLocale = "ROOT";
			}
		}
		var tempLocale = availableFlatLocales ? bestLocale : targetLocale;
		var bundle = dojo._loadedModules[bundlePackage];
		var localizedBundle = null;
		if (bundle) {
			if (dojo.config.localizationComplete && bundle._built) {
				return;
			}
			var jsLoc = tempLocale.replace(/-/g, "_");
			var translationPackage = bundlePackage + "." + jsLoc;
			localizedBundle = dojo._loadedModules[translationPackage];
		}
		if (!localizedBundle) {
			bundle = dojo["provide"](bundlePackage);
			var syms = dojo._getModuleSymbols(moduleName);
			var modpath = syms.concat("nls").join("/");
			var parent;
			dojo.i18n._searchLocalePath(tempLocale, availableFlatLocales, function (loc) {
				var jsLoc = loc.replace(/-/g, "_");
				var translationPackage = bundlePackage + "." + jsLoc;
				var loaded = false;
				if (!dojo._loadedModules[translationPackage]) {
					dojo["provide"](translationPackage);
					var module = [modpath];
					if (loc != "ROOT") {
						module.push(loc);
					}
					module.push(bundleName);
					var filespec = module.join("/") + ".js";
					loaded = dojo._loadPath(filespec, null, function (hash) {
						var clazz = function () {
						};
						clazz.prototype = parent;
						bundle[jsLoc] = new clazz();
						for (var j in hash) {
							bundle[jsLoc][j] = hash[j];
						}
					});
				} else {
					loaded = true;
				}
				if (loaded && bundle[jsLoc]) {
					parent = bundle[jsLoc];
				} else {
					bundle[jsLoc] = parent;
				}
				if (availableFlatLocales) {
					return true;
				}
			});
		}
		if (availableFlatLocales && targetLocale != bestLocale) {
			bundle[targetLocale.replace(/-/g, "_")] = bundle[bestLocale.replace(/-/g, "_")];
		}
	};
	(function () {
		var extra = dojo.config.extraLocale;
		if (extra) {
			if (!extra instanceof Array) {
				extra = [extra];
			}
			var req = dojo.i18n._requireLocalization;
			dojo.i18n._requireLocalization = function (m, b, locale, availableFlatLocales) {
				req(m, b, locale, availableFlatLocales);
				if (locale) {
					return;
				}
				for (var i = 0; i < extra.length; i++) {
					req(m, b, extra[i], availableFlatLocales);
				}
			};
		}
	})();
	dojo.i18n._searchLocalePath = function (locale, down, searchFunc) {
		locale = dojo.i18n.normalizeLocale(locale);
		var elements = locale.split("-");
		var searchlist = [];
		for (var i = elements.length; i > 0; i--) {
			searchlist.push(elements.slice(0, i).join("-"));
		}
		searchlist.push(false);
		if (down) {
			searchlist.reverse();
		}
		for (var j = searchlist.length - 1; j >= 0; j--) {
			var loc = searchlist[j] || "ROOT";
			var stop = searchFunc(loc);
			if (stop) {
				break;
			}
		}
	};
	dojo.i18n._preloadLocalizations = function (bundlePrefix, localesGenerated) {
		function preload(locale) {
			locale = dojo.i18n.normalizeLocale(locale);
			dojo.i18n._searchLocalePath(locale, true, function (loc) {
				for (var i = 0; i < localesGenerated.length; i++) {
					if (localesGenerated[i] == loc) {
						dojo["require"](bundlePrefix + "_" + loc);
						return true;
					}
				}
				return false;
			});
		}
		preload();
		var extra = dojo.config.extraLocale || [];
		for (var i = 0; i < extra.length; i++) {
			preload(extra[i]);
		}
	};
}
if (!dojo._hasResource["dijit.layout.ContentPane"]) {
	dojo._hasResource["dijit.layout.ContentPane"] = true;
	dojo.provide("dijit.layout.ContentPane");
	dojo.declare("dijit.layout.ContentPane", dijit._Widget, {href:"", extractContent:false, parseOnLoad:true, preventCache:false, preload:false, refreshOnShow:false, loadingMessage:"<span class='dijitContentPaneLoading'>${loadingState}</span>", errorMessage:"<span class='dijitContentPaneError'>${errorState}</span>", isLoaded:false, "class":"dijitContentPane", doLayout:"auto", postCreate:function () {
		this.domNode.title = "";
		if (!this.containerNode) {
			this.containerNode = this.domNode;
		}
		if (this.preload) {
			this._loadCheck();
		}
		var messages = dojo.i18n.getLocalization("dijit", "loading", this.lang);
		this.loadingMessage = dojo.string.substitute(this.loadingMessage, messages);
		this.errorMessage = dojo.string.substitute(this.errorMessage, messages);
		var curRole = dijit.getWaiRole(this.domNode);
		if (!curRole) {
			dijit.setWaiRole(this.domNode, "group");
		}
		dojo.addClass(this.domNode, this["class"]);
	}, startup:function () {
		if (this._started) {
			return;
		}
		if (this.doLayout != "false" && this.doLayout !== false) {
			this._checkIfSingleChild();
			if (this._singleChild) {
				this._singleChild.startup();
			}
		}
		this._loadCheck();
		this.inherited(arguments);
	}, _checkIfSingleChild:function () {
		var childNodes = dojo.query(">", this.containerNode || this.domNode), childWidgets = childNodes.filter("[widgetId]");
		if (childNodes.length == 1 && childWidgets.length == 1) {
			this.isContainer = true;
			this._singleChild = dijit.byNode(childWidgets[0]);
		} else {
			delete this.isContainer;
			delete this._singleChild;
		}
	}, refresh:function () {
		return this._prepareLoad(true);
	}, setHref:function (href) {
		this.href = href;
		return this._prepareLoad();
	}, setContent:function (data) {
		if (!this._isDownloaded) {
			this.href = "";
			this._onUnloadHandler();
		}
		this._setContent(data || "");
		this._isDownloaded = false;
		if (this.parseOnLoad) {
			this._createSubWidgets();
		}
		if (this.doLayout != "false" && this.doLayout !== false) {
			this._checkIfSingleChild();
			if (this._singleChild && this._singleChild.resize) {
				this._singleChild.startup();
				this._singleChild.resize(this._contentBox || dojo.contentBox(this.containerNode || this.domNode));
			}
		}
		this._onLoadHandler();
	}, cancel:function () {
		if (this._xhrDfd && (this._xhrDfd.fired == -1)) {
			this._xhrDfd.cancel();
		}
		delete this._xhrDfd;
	}, destroy:function () {
		if (this._beingDestroyed) {
			return;
		}
		this._onUnloadHandler();
		this._beingDestroyed = true;
		this.inherited("destroy", arguments);
	}, resize:function (size) {
		dojo.marginBox(this.domNode, size);
		var node = this.containerNode || this.domNode, mb = dojo.mixin(dojo.marginBox(node), size || {});
		this._contentBox = dijit.layout.marginBox2contentBox(node, mb);
		if (this._singleChild && this._singleChild.resize) {
			this._singleChild.resize(this._contentBox);
		}
	}, _prepareLoad:function (forceLoad) {
		this.cancel();
		this.isLoaded = false;
		this._loadCheck(forceLoad);
	}, _isShown:function () {
		if ("open" in this) {
			return this.open;
		} else {
			var node = this.domNode;
			return (node.style.display != "none") && (node.style.visibility != "hidden");
		}
	}, _loadCheck:function (forceLoad) {
		var displayState = this._isShown();
		if (this.href && (forceLoad || (this.preload && !this._xhrDfd) || (this.refreshOnShow && displayState && !this._xhrDfd) || (!this.isLoaded && displayState && !this._xhrDfd))) {
			this._downloadExternalContent();
		}
	}, _downloadExternalContent:function () {
		this._onUnloadHandler();
		this._setContent(this.onDownloadStart.call(this));
		var self = this;
		var getArgs = {preventCache:(this.preventCache || this.refreshOnShow), url:this.href, handleAs:"text"};
		if (dojo.isObject(this.ioArgs)) {
			dojo.mixin(getArgs, this.ioArgs);
		}
		var hand = this._xhrDfd = (this.ioMethod || dojo.xhrGet)(getArgs);
		hand.addCallback(function (html) {
			try {
				self.onDownloadEnd.call(self);
				self._isDownloaded = true;
				self.setContent.call(self, html);
			}
			catch (err) {
				self._onError.call(self, "Content", err);
			}
			delete self._xhrDfd;
			return html;
		});
		hand.addErrback(function (err) {
			if (!hand.cancelled) {
				self._onError.call(self, "Download", err);
			}
			delete self._xhrDfd;
			return err;
		});
	}, _onLoadHandler:function () {
		this.isLoaded = true;
		try {
			this.onLoad.call(this);
		}
		catch (e) {
			console.error("Error " + this.widgetId + " running custom onLoad code");
		}
	}, _onUnloadHandler:function () {
		this.isLoaded = false;
		this.cancel();
		try {
			this.onUnload.call(this);
		}
		catch (e) {
			console.error("Error " + this.widgetId + " running custom onUnload code");
		}
	}, _setContent:function (cont) {
		this.destroyDescendants();
		try {
			var node = this.containerNode || this.domNode;
			while (node.firstChild) {
				dojo._destroyElement(node.firstChild);
			}
			if (typeof cont == "string") {
				if (this.extractContent) {
					match = cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
					if (match) {
						cont = match[1];
					}
				}
				node.innerHTML = cont;
			} else {
				if (cont.nodeType) {
					node.appendChild(cont);
				} else {
					dojo.forEach(cont, function (n) {
						node.appendChild(n.cloneNode(true));
					});
				}
			}
		}
		catch (e) {
			var errMess = this.onContentError(e);
			try {
				node.innerHTML = errMess;
			}
			catch (e) {
				console.error("Fatal " + this.id + " could not change content due to " + e.message, e);
			}
		}
	}, _onError:function (type, err, consoleText) {
		var errText = this["on" + type + "Error"].call(this, err);
		if (consoleText) {
			console.error(consoleText, err);
		} else {
			if (errText) {
				this._setContent.call(this, errText);
			}
		}
	}, _createSubWidgets:function () {
		var rootNode = this.containerNode || this.domNode;
		try {
			dojo.parser.parse(rootNode, true);
		}
		catch (e) {
			this._onError("Content", e, "Couldn't create widgets in " + this.id + (this.href ? " from " + this.href : ""));
		}
	}, onLoad:function (e) {
	}, onUnload:function (e) {
	}, onDownloadStart:function () {
		return this.loadingMessage;
	}, onContentError:function (error) {
	}, onDownloadError:function (error) {
		return this.errorMessage;
	}, onDownloadEnd:function () {
	}});
}
if (!dojo._hasResource["dijit._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.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["dojox.collections._base"]) {
	dojo._hasResource["dojox.collections._base"] = true;
	dojo.provide("dojox.collections._base");
	dojox.collections.DictionaryEntry = function (k, v) {
		this.key = k;
		this.value = v;
		this.valueOf = function () {
			return this.value;
		};
		this.toString = function () {
			return String(this.value);
		};
	};
	dojox.collections.Iterator = function (arr) {
		var a = arr;
		var position = 0;
		this.element = a[position] || null;
		this.atEnd = function () {
			return (position >= a.length);
		};
		this.get = function () {
			if (this.atEnd()) {
				return null;
			}
			this.element = a[position++];
			return this.element;
		};
		this.map = function (fn, scope) {
			return dojo.map(a, fn, scope);
		};
		this.reset = function () {
			position = 0;
			this.element = a[position];
		};
	};
	dojox.collections.DictionaryIterator = function (obj) {
		var a = [];
		var testObject = {};
		for (var p in obj) {
			if (!testObject[p]) {
				a.push(obj[p]);
			}
		}
		var position = 0;
		this.element = a[position] || null;
		this.atEnd = function () {
			return (position >= a.length);
		};
		this.get = function () {
			if (this.atEnd()) {
				return null;
			}
			this.element = a[position++];
			return this.element;
		};
		this.map = function (fn, scope) {
			return dojo.map(a, fn, scope);
		};
		this.reset = function () {
			position = 0;
			this.element = a[position];
		};
	};
}
if (!dojo._hasResource["dojox.collections.ArrayList"]) {
	dojo._hasResource["dojox.collections.ArrayList"] = true;
	dojo.provide("dojox.collections.ArrayList");
	dojox.collections.ArrayList = function (arr) {
		var items = [];
		if (arr) {
			items = items.concat(arr);
		}
		this.count = items.length;
		this.add = function (obj) {
			items.push(obj);
			this.count = items.length;
		};
		this.addRange = function (a) {
			if (a.getIterator) {
				var e = a.getIterator();
				while (!e.atEnd()) {
					this.add(e.get());
				}
				this.count = items.length;
			} else {
				for (var i = 0; i < a.length; i++) {
					items.push(a[i]);
				}
				this.count = items.length;
			}
		};
		this.clear = function () {
			items.splice(0, items.length);
			this.count = 0;
		};
		this.clone = function () {
			return new dojox.collections.ArrayList(items);
		};
		this.contains = function (obj) {
			for (var i = 0; i < items.length; i++) {
				if (items[i] == obj) {
					return true;
				}
			}
			return false;
		};
		this.forEach = function (fn, scope) {
			dojo.forEach(items, fn, scope);
		};
		this.getIterator = function () {
			return new dojox.collections.Iterator(items);
		};
		this.indexOf = function (obj) {
			for (var i = 0; i < items.length; i++) {
				if (items[i] == obj) {
					return i;
				}
			}
			return -1;
		};
		this.insert = function (i, obj) {
			items.splice(i, 0, obj);
			this.count = items.length;
		};
		this.item = function (i) {
			return items[i];
		};
		this.remove = function (obj) {
			var i = this.indexOf(obj);
			if (i >= 0) {
				items.splice(i, 1);
			}
			this.count = items.length;
		};
		this.removeAt = function (i) {
			items.splice(i, 1);
			this.count = items.length;
		};
		this.reverse = function () {
			items.reverse();
		};
		this.sort = function (fn) {
			if (fn) {
				items.sort(fn);
			} else {
				items.sort();
			}
		};
		this.setByIndex = function (i, obj) {
			items[i] = obj;
			this.count = items.length;
		};
		this.toArray = function () {
			return [].concat(items);
		};
		this.toString = function (delim) {
			return items.join((delim || ","));
		};
	};
}
if (!dojo._hasResource["dojox.collections.Stack"]) {
	dojo._hasResource["dojox.collections.Stack"] = true;
	dojo.provide("dojox.collections.Stack");
	dojox.collections.Stack = function (arr) {
		var q = [];
		if (arr) {
			q = q.concat(arr);
		}
		this.count = q.length;
		this.clear = function () {
			q = [];
			this.count = q.length;
		};
		this.clone = function () {
			return new dojox.collections.Stack(q);
		};
		this.contains = function (o) {
			for (var i = 0; i < q.length; i++) {
				if (q[i] == o) {
					return true;
				}
			}
			return false;
		};
		this.copyTo = function (arr, i) {
			arr.splice(i, 0, q);
		};
		this.forEach = function (fn, scope) {
			dojo.forEach(q, fn, scope);
		};
		this.getIterator = function () {
			return new dojox.collections.Iterator(q);
		};
		this.peek = function () {
			return q[(q.length - 1)];
		};
		this.pop = function () {
			var r = q.pop();
			this.count = q.length;
			return r;
		};
		this.push = function (o) {
			this.count = q.push(o);
		};
		this.toArray = function () {
			return [].concat(q);
		};
	};
}
if (!dojo._hasResource["dojo.dnd.Mover"]) {
	dojo._hasResource["dojo.dnd.Mover"] = true;
	dojo.provide("dojo.dnd.Mover");
	dojo.declare("dojo.dnd.Mover", null, {constructor:function (node, e, host) {
		this.node = dojo.byId(node);
		this.marginBox = {l:e.pageX, t:e.pageY};
		this.mouseButton = e.button;
		var h = this.host = host, d = node.ownerDocument, firstEvent = dojo.connect(d, "onmousemove", this, "onFirstMove");
		this.events = [dojo.connect(d, "onmousemove", this, "onMouseMove"), dojo.connect(d, "onmouseup", this, "onMouseUp"), dojo.connect(d, "ondragstart", dojo, "stopEvent"), dojo.connect(d, "onselectstart", dojo, "stopEvent"), firstEvent];
		if (h && h.onMoveStart) {
			h.onMoveStart(this);
		}
	}, onMouseMove:function (e) {
		dojo.dnd.autoScroll(e);
		var m = this.marginBox;
		this.host.onMove(this, {l:m.l + e.pageX, t:m.t + e.pageY});
	}, onMouseUp:function (e) {
		if (this.mouseButton == e.button) {
			this.destroy();
		}
	}, onFirstMove:function () {
		var s = this.node.style, l, t;
		switch (s.position) {
		  case "relative":
		  case "absolute":
			l = Math.round(parseFloat(s.left));
			t = Math.round(parseFloat(s.top));
			break;
		  default:
			s.position = "absolute";
			var m = dojo.marginBox(this.node);
			l = m.l;
			t = m.t;
			break;
		}
		this.marginBox.l = l - this.marginBox.l;
		this.marginBox.t = t - this.marginBox.t;
		this.host.onFirstMove(this);
		dojo.disconnect(this.events.pop());
	}, destroy:function () {
		dojo.forEach(this.events, dojo.disconnect);
		var h = this.host;
		if (h && h.onMoveStop) {
			h.onMoveStop(this);
		}
		this.events = this.node = null;
	}});
}
if (!dojo._hasResource["dojo.dnd.Moveable"]) {
	dojo._hasResource["dojo.dnd.Moveable"] = true;
	dojo.provide("dojo.dnd.Moveable");
	dojo.declare("dojo.dnd.Moveable", null, {handle:"", delay:0, skip:false, constructor:function (node, params) {
		this.node = dojo.byId(node);
		if (!params) {
			params = {};
		}
		this.handle = params.handle ? dojo.byId(params.handle) : null;
		if (!this.handle) {
			this.handle = this.node;
		}
		this.delay = params.delay > 0 ? params.delay : 0;
		this.skip = params.skip;
		this.mover = params.mover ? params.mover : dojo.dnd.Mover;
		this.events = [dojo.connect(this.handle, "onmousedown", this, "onMouseDown"), dojo.connect(this.handle, "ondragstart", this, "onSelectStart"), dojo.connect(this.handle, "onselectstart", this, "onSelectStart")];
	}, markupFactory:function (params, node) {
		return new dojo.dnd.Moveable(node, params);
	}, destroy:function () {
		dojo.forEach(this.events, dojo.disconnect);
		this.events = this.node = this.handle = null;
	}, onMouseDown:function (e) {
		if (this.skip && dojo.dnd.isFormElement(e)) {
			return;
		}
		if (this.delay) {
			this.events.push(dojo.connect(this.handle, "onmousemove", this, "onMouseMove"));
			this.events.push(dojo.connect(this.handle, "onmouseup", this, "onMouseUp"));
			this._lastX = e.pageX;
			this._lastY = e.pageY;
		} else {
			new this.mover(this.node, e, this);
		}
		dojo.stopEvent(e);
	}, onMouseMove:function (e) {
		if (Math.abs(e.pageX - this._lastX) > this.delay || Math.abs(e.pageY - this._lastY) > this.delay) {
			this.onMouseUp(e);
			new this.mover(this.node, e, this);
		}
		dojo.stopEvent(e);
	}, onMouseUp:function (e) {
		dojo.disconnect(this.events.pop());
		dojo.disconnect(this.events.pop());
	}, onSelectStart:function (e) {
		if (!this.skip || !dojo.dnd.isFormElement(e)) {
			dojo.stopEvent(e);
		}
	}, onMoveStart:function (mover) {
		dojo.publish("/dnd/move/start", [mover]);
		dojo.addClass(dojo.body(), "dojoMove");
		dojo.addClass(this.node, "dojoMoveItem");
	}, onMoveStop:function (mover) {
		dojo.publish("/dnd/move/stop", [mover]);
		dojo.removeClass(dojo.body(), "dojoMove");
		dojo.removeClass(this.node, "dojoMoveItem");
	}, onFirstMove:function (mover) {
	}, onMove:function (mover, leftTop) {
		this.onMoving(mover, leftTop);
		var s = mover.node.style;
		s.left = leftTop.l + "px";
		s.top = leftTop.t + "px";
		this.onMoved(mover, leftTop);
	}, onMoving:function (mover, leftTop) {
	}, onMoved:function (mover, leftTop) {
	}});
}
if (!dojo._hasResource["dojo.dnd.move"]) {
	dojo._hasResource["dojo.dnd.move"] = true;
	dojo.provide("dojo.dnd.move");
	dojo.declare("dojo.dnd.move.constrainedMoveable", dojo.dnd.Moveable, {constraints:function () {
	}, within:false, markupFactory:function (params, node) {
		return new dojo.dnd.move.constrainedMoveable(node, params);
	}, constructor:function (node, params) {
		if (!params) {
			params = {};
		}
		this.constraints = params.constraints;
		this.within = params.within;
	}, onFirstMove:function (mover) {
		var c = this.constraintBox = this.constraints.call(this, mover);
		c.r = c.l + c.w;
		c.b = c.t + c.h;
		if (this.within) {
			var mb = dojo.marginBox(mover.node);
			c.r -= mb.w;
			c.b -= mb.h;
		}
	}, onMove:function (mover, leftTop) {
		var c = this.constraintBox, s = mover.node.style;
		s.left = (leftTop.l < c.l ? c.l : c.r < leftTop.l ? c.r : leftTop.l) + "px";
		s.top = (leftTop.t < c.t ? c.t : c.b < leftTop.t ? c.b : leftTop.t) + "px";
	}});
	dojo.declare("dojo.dnd.move.boxConstrainedMoveable", dojo.dnd.move.constrainedMoveable, {box:{}, markupFactory:function (params, node) {
		return new dojo.dnd.move.boxConstrainedMoveable(node, params);
	}, constructor:function (node, params) {
		var box = params && params.box;
		this.constraints = function () {
			return box;
		};
	}});
	dojo.declare("dojo.dnd.move.parentConstrainedMoveable", dojo.dnd.move.constrainedMoveable, {area:"content", markupFactory:function (params, node) {
		return new dojo.dnd.move.parentConstrainedMoveable(node, params);
	}, constructor:function (node, params) {
		var area = params && params.area;
		this.constraints = function () {
			var n = this.node.parentNode, s = dojo.getComputedStyle(n), mb = dojo._getMarginBox(n, s);
			if (area == "margin") {
				return mb;
			}
			var t = dojo._getMarginExtents(n, s);
			mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
			if (area == "border") {
				return mb;
			}
			t = dojo._getBorderExtents(n, s);
			mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
			if (area == "padding") {
				return mb;
			}
			t = dojo._getPadExtents(n, s);
			mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
			return mb;
		};
	}});
	dojo.dnd.move.constrainedMover = function (fun, within) {
		dojo.deprecated("dojo.dnd.move.constrainedMover, use dojo.dnd.move.constrainedMoveable instead");
		var mover = function (node, e, notifier) {
			dojo.dnd.Mover.call(this, node, e, notifier);
		};
		dojo.extend(mover, dojo.dnd.Mover.prototype);
		dojo.extend(mover, {onMouseMove:function (e) {
			dojo.dnd.autoScroll(e);
			var m = this.marginBox, c = this.constraintBox, l = m.l + e.pageX, t = m.t + e.pageY;
			l = l < c.l ? c.l : c.r < l ? c.r : l;
			t = t < c.t ? c.t : c.b < t ? c.b : t;
			this.host.onMove(this, {l:l, t:t});
		}, onFirstMove:function () {
			dojo.dnd.Mover.prototype.onFirstMove.call(this);
			var c = this.constraintBox = fun.call(this);
			c.r = c.l + c.w;
			c.b = c.t + c.h;
			if (within) {
				var mb = dojo.marginBox(this.node);
				c.r -= mb.w;
				c.b -= mb.h;
			}
		}});
		return mover;
	};
	dojo.dnd.move.boxConstrainedMover = function (box, within) {
		dojo.deprecated("dojo.dnd.move.boxConstrainedMover, use dojo.dnd.move.boxConstrainedMoveable instead");
		return dojo.dnd.move.constrainedMover(function () {
			return box;
		}, within);
	};
	dojo.dnd.move.parentConstrainedMover = function (area, within) {
		dojo.deprecated("dojo.dnd.move.parentConstrainedMover, use dojo.dnd.move.parentConstrainedMoveable instead");
		var fun = function () {
			var n = this.node.parentNode, s = dojo.getComputedStyle(n), mb = dojo._getMarginBox(n, s);
			if (area == "margin") {
				return mb;
			}
			var t = dojo._getMarginExtents(n, s);
			mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
			if (area == "border") {
				return mb;
			}
			t = dojo._getBorderExtents(n, s);
			mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
			if (area == "padding") {
				return mb;
			}
			t = dojo._getPadExtents(n, s);
			mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
			return mb;
		};
		return dojo.dnd.move.constrainedMover(fun, within);
	};
	dojo.dnd.constrainedMover = dojo.dnd.move.constrainedMover;
	dojo.dnd.boxConstrainedMover = dojo.dnd.move.boxConstrainedMover;
	dojo.dnd.parentConstrainedMover = dojo.dnd.move.parentConstrainedMover;
}
if (!dojo._hasResource["dijit.form.CheckBox"]) {
	dojo._hasResource["dijit.form.CheckBox"] = true;
	dojo.provide("dijit.form.CheckBox");
	dojo.declare("dijit.form.CheckBox", dijit.form.ToggleButton, {templateString:"<div class=\"dijitReset dijitInline\" waiRole=\"presentation\"\r\n\t><input\r\n\t \ttype=\"${type}\" name=\"${name}\"\r\n\t\tclass=\"dijitReset dijitCheckBoxInput\"\r\n\t\tdojoAttachPoint=\"focusNode\"\r\n\t \tdojoAttachEvent=\"onmouseover:_onMouse,onmouseout:_onMouse,onclick:_onClick\"\r\n/></div>\r\n", baseClass:"dijitCheckBox", type:"checkbox", value:"on", setValue:function (newValue) {
		if (typeof newValue == "string") {
			this.setAttribute("value", newValue);
			newValue = true;
		}
		this.setAttribute("checked", newValue);
	}, _getValueDeprecated:false, getValue:function () {
		return (this.checked ? this.value : false);
	}, reset:function () {
		this.inherited(arguments);
		this.setAttribute("value", this._resetValueAttr);
	}, postCreate:function () {
		this.inherited(arguments);
		this._resetValueAttr = this.value;
	}});
	dojo.declare("dijit.form.RadioButton", dijit.form.CheckBox, {type:"radio", baseClass:"dijitRadio", _groups:{}, postCreate:function () {
		(this._groups[this.name] = this._groups[this.name] || []).push(this);
		this.inherited(arguments);
	}, uninitialize:function () {
		dojo.forEach(this._groups[this.name], function (widget, i, arr) {
			if (widget === this) {
				arr.splice(i, 1);
				return;
			}
		}, this);
	}, setAttribute:function (attr, value) {
		this.inherited(arguments);
		switch (attr) {
		  case "checked":
			if (this.checked) {
				dojo.forEach(this._groups[this.name], function (widget) {
					if (widget != this && widget.checked) {
						widget.setAttribute("checked", false);
					}
				}, this);
			}
		}
	}, _clicked:function (e) {
		if (!this.checked) {
			this.setAttribute("checked", true);
		}
	}});
}
if (!dojo._hasResource["dojo.dnd.TimedMoveable"]) {
	dojo._hasResource["dojo.dnd.TimedMoveable"] = true;
	dojo.provide("dojo.dnd.TimedMoveable");
	(function () {
		var oldOnMove = dojo.dnd.Moveable.prototype.onMove;
		dojo.declare("dojo.dnd.TimedMoveable", dojo.dnd.Moveable, {timeout:40, constructor:function (node, params) {
			if (!params) {
				params = {};
			}
			if (params.timeout && typeof params.timeout == "number" && params.timeout >= 0) {
				this.timeout = params.timeout;
			}
		}, markupFactory:function (params, node) {
			return new dojo.dnd.TimedMoveable(node, params);
		}, onMoveStop:function (mover) {
			if (mover._timer) {
				clearTimeout(mover._timer);
				oldOnMove.call(this, mover, mover._leftTop);
			}
			dojo.dnd.Moveable.prototype.onMoveStop.apply(this, arguments);
		}, onMove:function (mover, leftTop) {
			mover._leftTop = leftTop;
			if (!mover._timer) {
				var _t = this;
				mover._timer = setTimeout(function () {
					mover._timer = null;
					oldOnMove.call(_t, mover, mover._leftTop);
				}, this.timeout);
			}
		}});
	})();
}
if (!dojo._hasResource["dojo.fx"]) {
	dojo._hasResource["dojo.fx"] = true;
	dojo.provide("dojo.fx");
	dojo.provide("dojo.fx.Toggler");
	(function () {
		var _baseObj = {_fire:function (evt, args) {
			if (this[evt]) {
				this[evt].apply(this, args || []);
			}
			return this;
		}};
		var _chain = function (animations) {
			this._index = -1;
			this._animations = animations || [];
			this._current = this._onAnimateCtx = this._onEndCtx = null;
			this.duration = 0;
			dojo.forEach(this._animations, function (a) {
				this.duration += a.duration;
				if (a.delay) {
					this.duration += a.delay;
				}
			}, this);
		};
		dojo.extend(_chain, {_onAnimate:function () {
			this._fire("onAnimate", arguments);
		}, _onEnd:function () {
			dojo.disconnect(this._onAnimateCtx);
			dojo.disconnect(this._onEndCtx);
			this._onAnimateCtx = this._onEndCtx = null;
			if (this._index + 1 == this._animations.length) {
				this._fire("onEnd");
			} else {
				this._current = this._animations[++this._index];
				this._onAnimateCtx = dojo.connect(this._current, "onAnimate", this, "_onAnimate");
				this._onEndCtx = dojo.connect(this._current, "onEnd", this, "_onEnd");
				this._current.play(0, true);
			}
		}, play:function (delay, gotoStart) {
			if (!this._current) {
				this._current = this._animations[this._index = 0];
			}
			if (!gotoStart && this._current.status() == "playing") {
				return this;
			}
			var beforeBegin = dojo.connect(this._current, "beforeBegin", this, function () {
				this._fire("beforeBegin");
			}), onBegin = dojo.connect(this._current, "onBegin", this, function (arg) {
				this._fire("onBegin", arguments);
			}), onPlay = dojo.connect(this._current, "onPlay", this, function (arg) {
				this._fire("onPlay", arguments);
				dojo.disconnect(beforeBegin);
				dojo.disconnect(onBegin);
				dojo.disconnect(onPlay);
			});
			if (this._onAnimateCtx) {
				dojo.disconnect(this._onAnimateCtx);
			}
			this._onAnimateCtx = dojo.connect(this._current, "onAnimate", this, "_onAnimate");
			if (this._onEndCtx) {
				dojo.disconnect(this._onEndCtx);
			}
			this._onEndCtx = dojo.connect(this._current, "onEnd", this, "_onEnd");
			this._current.play.apply(this._current, arguments);
			return this;
		}, pause:function () {
			if (this._current) {
				var e = dojo.connect(this._current, "onPause", this, function (arg) {
					this._fire("onPause", arguments);
					dojo.disconnect(e);
				});
				this._current.pause();
			}
			return this;
		}, gotoPercent:function (percent, andPlay) {
			this.pause();
			var offset = this.duration * percent;
			this._current = null;
			dojo.some(this._animations, function (a) {
				if (a.duration <= offset) {
					this._current = a;
					return true;
				}
				offset -= a.duration;
				return false;
			});
			if (this._current) {
				this._current.gotoPercent(offset / _current.duration, andPlay);
			}
			return this;
		}, stop:function (gotoEnd) {
			if (this._current) {
				if (gotoEnd) {
					for (; this._index + 1 < this._animations.length; ++this._index) {
						this._animations[this._index].stop(true);
					}
					this._current = this._animations[this._index];
				}
				var e = dojo.connect(this._current, "onStop", this, function (arg) {
					this._fire("onStop", arguments);
					dojo.disconnect(e);
				});
				this._current.stop();
			}
			return this;
		}, status:function () {
			return this._current ? this._current.status() : "stopped";
		}, destroy:function () {
			if (this._onAnimateCtx) {
				dojo.disconnect(this._onAnimateCtx);
			}
			if (this._onEndCtx) {
				dojo.disconnect(this._onEndCtx);
			}
		}});
		dojo.extend(_chain, _baseObj);
		dojo.fx.chain = function (animations) {
			return new _chain(animations);
		};
		var _combine = function (animations) {
			this._animations = animations || [];
			this._connects = [];
			this._finished = 0;
			this.duration = 0;
			dojo.forEach(animations, function (a) {
				var duration = a.duration;
				if (a.delay) {
					duration += a.delay;
				}
				if (this.duration < duration) {
					this.duration = duration;
				}
				this._connects.push(dojo.connect(a, "onEnd", this, "_onEnd"));
			}, this);
			this._pseudoAnimation = new dojo._Animation({curve:[0, 1], duration:this.duration});
			dojo.forEach(["beforeBegin", "onBegin", "onPlay", "onAnimate", "onPause", "onStop"], function (evt) {
				this._connects.push(dojo.connect(this._pseudoAnimation, evt, dojo.hitch(this, "_fire", evt)));
			}, this);
		};
		dojo.extend(_combine, {_doAction:function (action, args) {
			dojo.forEach(this._animations, function (a) {
				a[action].apply(a, args);
			});
			return this;
		}, _onEnd:function () {
			if (++this._finished == this._animations.length) {
				this._fire("onEnd");
			}
		}, _call:function (action, args) {
			var t = this._pseudoAnimation;
			t[action].apply(t, args);
		}, play:function (delay, gotoStart) {
			this._finished = 0;
			this._doAction("play", arguments);
			this._call("play", arguments);
			return this;
		}, pause:function () {
			this._doAction("pause", arguments);
			this._call("pause", arguments);
			return this;
		}, gotoPercent:function (percent, andPlay) {
			var ms = this.duration * percent;
			dojo.forEach(this._animations, function (a) {
				a.gotoPercent(a.duration < ms ? 1 : (ms / a.duration), andPlay);
			});
			this._call("gotoProcent", arguments);
			return this;
		}, stop:function (gotoEnd) {
			this._doAction("stop", arguments);
			this._call("stop", arguments);
			return this;
		}, status:function () {
			return this._pseudoAnimation.status();
		}, destroy:function () {
			dojo.forEach(this._connects, dojo.disconnect);
		}});
		dojo.extend(_combine, _baseObj);
		dojo.fx.combine = function (animations) {
			return new _combine(animations);
		};
	})();
	dojo.declare("dojo.fx.Toggler", null, {constructor:function (args) {
		var _t = this;
		dojo.mixin(_t, args);
		_t.node = args.node;
		_t._showArgs = dojo.mixin({}, args);
		_t._showArgs.node = _t.node;
		_t._showArgs.duration = _t.showDuration;
		_t.showAnim = _t.showFunc(_t._showArgs);
		_t._hideArgs = dojo.mixin({}, args);
		_t._hideArgs.node = _t.node;
		_t._hideArgs.duration = _t.hideDuration;
		_t.hideAnim = _t.hideFunc(_t._hideArgs);
		dojo.connect(_t.showAnim, "beforeBegin", dojo.hitch(_t.hideAnim, "stop", true));
		dojo.connect(_t.hideAnim, "beforeBegin", dojo.hitch(_t.showAnim, "stop", true));
	}, node:null, showFunc:dojo.fadeIn, hideFunc:dojo.fadeOut, showDuration:200, hideDuration:200, show:function (delay) {
		return this.showAnim.play(delay || 0);
	}, hide:function (delay) {
		return this.hideAnim.play(delay || 0);
	}});
	dojo.fx.wipeIn = function (args) {
		args.node = dojo.byId(args.node);
		var node = args.node, s = node.style;
		var anim = dojo.animateProperty(dojo.mixin({properties:{height:{start:function () {
			s.overflow = "hidden";
			if (s.visibility == "hidden" || s.display == "none") {
				s.height = "1px";
				s.display = "";
				s.visibility = "";
				return 1;
			} else {
				var height = dojo.style(node, "height");
				return Math.max(height, 1);
			}
		}, end:function () {
			return node.scrollHeight;
		}}}}, args));
		dojo.connect(anim, "onEnd", function () {
			s.height = "auto";
		});
		return anim;
	};
	dojo.fx.wipeOut = function (args) {
		var node = args.node = dojo.byId(args.node);
		var s = node.style;
		var anim = dojo.animateProperty(dojo.mixin({properties:{height:{end:1}}}, args));
		dojo.connect(anim, "beforeBegin", function () {
			s.overflow = "hidden";
			s.display = "";
		});
		dojo.connect(anim, "onEnd", function () {
			s.height = "auto";
			s.display = "none";
		});
		return anim;
	};
	dojo.fx.slideTo = function (args) {
		var node = (args.node = dojo.byId(args.node));
		var top = null;
		var left = null;
		var init = (function (n) {
			return function () {
				var cs = dojo.getComputedStyle(n);
				var pos = cs.position;
				top = (pos == "absolute" ? n.offsetTop : parseInt(cs.top) || 0);
				left = (pos == "absolute" ? n.offsetLeft : parseInt(cs.left) || 0);
				if (pos != "absolute" && pos != "relative") {
					var ret = dojo.coords(n, true);
					top = ret.y;
					left = ret.x;
					n.style.position = "absolute";
					n.style.top = top + "px";
					n.style.left = left + "px";
				}
			};
		})(node);
		init();
		var anim = dojo.animateProperty(dojo.mixin({properties:{top:{end:args.top || 0}, left:{end:args.left || 0}}}, args));
		dojo.connect(anim, "beforeBegin", anim, init);
		return anim;
	};
}
if (!dojo._hasResource["dijit.form.Form"]) {
	dojo._hasResource["dijit.form.Form"] = true;
	dojo.provide("dijit.form.Form");
	dojo.declare("dijit.form._FormMixin", null, {reset:function () {
		dojo.forEach(this.getDescendants(), function (widget) {
			if (widget.reset) {
				widget.reset();
			}
		});
	}, validate:function () {
		var didFocus = false;
		return dojo.every(dojo.map(this.getDescendants(), function (widget) {
			widget._hasBeenBlurred = true;
			var valid = !widget.validate || widget.validate();
			if (!valid && !didFocus) {
				dijit.scrollIntoView(widget.containerNode || widget.domNode);
				widget.focus();
				didFocus = true;
			}
			return valid;
		}), "return item;");
	}, setValues:function (obj) {
		var map = {};
		dojo.forEach(this.getDescendants(), function (widget) {
			if (!widget.name) {
				return;
			}
			var entry = map[widget.name] || (map[widget.name] = []);
			entry.push(widget);
		});
		for (var name in map) {
			var widgets = map[name], values = dojo.getObject(name, false, obj);
			if (!dojo.isArray(values)) {
				values = [values];
			}
			if (typeof widgets[0].checked == "boolean") {
				dojo.forEach(widgets, function (w, i) {
					w.setValue(dojo.indexOf(values, w.value) != -1);
				});
			} else {
				if (widgets[0]._multiValue) {
					widgets[0].setValue(values);
				} else {
					dojo.forEach(widgets, function (w, i) {
						w.setValue(values[i]);
					});
				}
			}
		}
	}, getValues:function () {
		var obj = {};
		dojo.forEach(this.getDescendants(), function (widget) {
			var name = widget.name;
			if (!name) {
				return;
			}
			var value = (widget.getValue && !widget._getValueDeprecated) ? widget.getValue() : widget.value;
			if (typeof widget.checked == "boolean") {
				if (/Radio/.test(widget.declaredClass)) {
					if (value !== false) {
						dojo.setObject(name, value, obj);
					}
				} else {
					var ary = dojo.getObject(name, false, obj);
					if (!ary) {
						ary = [];
						dojo.setObject(name, ary, obj);
					}
					if (value !== false) {
						ary.push(value);
					}
				}
			} else {
				dojo.setObject(name, value, obj);
			}
		});
		return obj;
	}, isValid:function () {
		return dojo.every(this.getDescendants(), function (widget) {
			return !widget.isValid || widget.isValid();
		});
	}});
	dojo.declare("dijit.form.Form", [dijit._Widget, dijit._Templated, dijit.form._FormMixin], {name:"", action:"", method:"", encType:"", "accept-charset":"", accept:"", target:"", templateString:"<form dojoAttachPoint='containerNode' dojoAttachEvent='onreset:_onReset,onsubmit:_onSubmit' name='${name}'></form>", attributeMap:dojo.mixin(dojo.clone(dijit._Widget.prototype.attributeMap), {action:"", method:"", encType:"", "accept-charset":"", accept:"", target:""}), execute:function (formContents) {
	}, onExecute:function () {
	}, setAttribute:function (attr, value) {
		this.inherited(arguments);
		switch (attr) {
		  case "encType":
			if (dojo.isIE) {
				this.domNode.encoding = value;
			}
		}
	}, postCreate:function () {
		if (dojo.isIE && this.srcNodeRef && this.srcNodeRef.attributes) {
			var item = this.srcNodeRef.attributes.getNamedItem("encType");
			if (item && !item.specified && (typeof item.value == "string")) {
				this.setAttribute("encType", item.value);
			}
		}
		this.inherited(arguments);
	}, onReset:function (e) {
		return true;
	}, _onReset:function (e) {
		var faux = {returnValue:true, preventDefault:function () {
			this.returnValue = false;
		}, stopPropagation:function () {
		}, currentTarget:e.currentTarget, target:e.target};
		if (!(this.onReset(faux) === false) && faux.returnValue) {
			this.reset();
		}
		dojo.stopEvent(e);
		return false;
	}, _onSubmit:function (e) {
		var fp = dijit.form.Form.prototype;
		if (this.execute != fp.execute || this.onExecute != fp.onExecute) {
			dojo.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.", "", "2.0");
			this.onExecute();
			this.execute(this.getValues());
		}
		if (this.onSubmit(e) === false) {
			dojo.stopEvent(e);
		}
	}, onSubmit:function (e) {
		return this.isValid();
	}, submit:function () {
		if (!(this.onSubmit() === false)) {
			this.containerNode.submit();
		}
	}});
}
if (!dojo._hasResource["dijit.Dialog"]) {
	dojo._hasResource["dijit.Dialog"] = true;
	dojo.provide("dijit.Dialog");
	dojo.declare("dijit.DialogUnderlay", [dijit._Widget, dijit._Templated], {templateString:"<div class='dijitDialogUnderlayWrapper' id='${id}_wrapper'><div class='dijitDialogUnderlay ${class}' id='${id}' dojoAttachPoint='node'></div></div>", attributeMap:{}, postCreate:function () {
		dojo.body().appendChild(this.domNode);
		this.bgIframe = new dijit.BackgroundIframe(this.domNode);
	}, layout:function () {
		var viewport = dijit.getViewport();
		var is = this.node.style, os = this.domNode.style;
		os.top = viewport.t + "px";
		os.left = viewport.l + "px";
		is.width = viewport.w + "px";
		is.height = viewport.h + "px";
		var viewport2 = dijit.getViewport();
		if (viewport.w != viewport2.w) {
			is.width = viewport2.w + "px";
		}
		if (viewport.h != viewport2.h) {
			is.height = viewport2.h + "px";
		}
	}, show:function () {
		this.domNode.style.display = "block";
		this.layout();
		if (this.bgIframe.iframe) {
			this.bgIframe.iframe.style.display = "block";
		}
		this._resizeHandler = this.connect(window, "onresize", "layout");
	}, hide:function () {
		this.domNode.style.display = "none";
		if (this.bgIframe.iframe) {
			this.bgIframe.iframe.style.display = "none";
		}
		this.disconnect(this._resizeHandler);
	}, uninitialize:function () {
		if (this.bgIframe) {
			this.bgIframe.destroy();
		}
	}});
	dojo.declare("dijit._DialogMixin", null, {attributeMap:dijit._Widget.prototype.attributeMap, execute:function (formContents) {
	}, onCancel:function () {
	}, onExecute:function () {
	}, _onSubmit:function () {
		this.onExecute();
		this.execute(this.getValues());
	}, _getFocusItems:function (dialogNode) {
		var focusItem = dijit.getFirstInTabbingOrder(dialogNode);
		this._firstFocusItem = focusItem ? focusItem : dialogNode;
		focusItem = dijit.getLastInTabbingOrder(dialogNode);
		this._lastFocusItem = focusItem ? focusItem : this._firstFocusItem;
		if (dojo.isMoz && this._firstFocusItem.tagName.toLowerCase() == "input" && dojo.attr(this._firstFocusItem, "type").toLowerCase() == "file") {
			dojo.attr(dialogNode, "tabindex", "0");
			this._firstFocusItem = dialogNode;
		}
	}});
	dojo.declare("dijit.Dialog", [dijit.layout.ContentPane, dijit._Templated, dijit.form._FormMixin, dijit._DialogMixin], {templateString:null, templateString:"<div class=\"dijitDialog\" tabindex=\"-1\" waiRole=\"dialog\" waiState=\"labelledby-${id}_title\">\r\n\t<div dojoAttachPoint=\"titleBar\" class=\"dijitDialogTitleBar\">\r\n\t<span dojoAttachPoint=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\">${title}</span>\r\n\t<span dojoAttachPoint=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" dojoAttachEvent=\"onclick: onCancel\">\r\n\t\t<span dojoAttachPoint=\"closeText\" class=\"closeText\">x</span>\r\n\t</span>\r\n\t</div>\r\n\t\t<div dojoAttachPoint=\"containerNode\" class=\"dijitDialogPaneContent\"></div>\r\n</div>\r\n", open:false, duration:400, refocus:true, _firstFocusItem:null, _lastFocusItem:null, doLayout:false, attributeMap:dojo.mixin(dojo.clone(dijit._Widget.prototype.attributeMap), {title:"titleBar"}), postCreate:function () {
		dojo.body().appendChild(this.domNode);
		this.inherited(arguments);
		var _nlsResources = dojo.i18n.getLocalization("dijit", "common");
		if (this.closeButtonNode) {
			this.closeButtonNode.setAttribute("title", _nlsResources.buttonCancel);
		}
		if (this.closeText) {
			this.closeText.setAttribute("title", _nlsResources.buttonCancel);
		}
		var s = this.domNode.style;
		s.visibility = "hidden";
		s.position = "absolute";
		s.display = "";
		s.top = "-9999px";
		this.connect(this, "onExecute", "hide");
		this.connect(this, "onCancel", "hide");
		this._modalconnects = [];
	}, onLoad:function () {
		this._position();
		this.inherited(arguments);
	}, _setup:function () {
		if (this.titleBar) {
			this._moveable = new dojo.dnd.TimedMoveable(this.domNode, {handle:this.titleBar, timeout:0});
		}
		this._underlay = new dijit.DialogUnderlay({id:this.id + "_underlay", "class":dojo.map(this["class"].split(/\s/), function (s) {
			return s + "_underlay";
		}).join(" ")});
		var node = this.domNode;
		this._fadeIn = dojo.fx.combine([dojo.fadeIn({node:node, duration:this.duration}), dojo.fadeIn({node:this._underlay.domNode, duration:this.duration, onBegin:dojo.hitch(this._underlay, "show")})]);
		this._fadeOut = dojo.fx.combine([dojo.fadeOut({node:node, duration:this.duration, onEnd:function () {
			node.style.visibility = "hidden";
			node.style.top = "-9999px";
		}}), dojo.fadeOut({node:this._underlay.domNode, duration:this.duration, onEnd:dojo.hitch(this._underlay, "hide")})]);
	}, uninitialize:function () {
		if (this._fadeIn && this._fadeIn.status() == "playing") {
			this._fadeIn.stop();
		}
		if (this._fadeOut && this._fadeOut.status() == "playing") {
			this._fadeOut.stop();
		}
		if (this._underlay) {
			this._underlay.destroy();
		}
	}, _position:function () {
		if (dojo.hasClass(dojo.body(), "dojoMove")) {
			return;
		}
		var viewport = dijit.getViewport();
		var mb = dojo.marginBox(this.domNode);
		var style = this.domNode.style;
		style.left = Math.floor((viewport.l + (viewport.w - mb.w) / 2)) + "px";
		style.top = Math.floor((viewport.t + (viewport.h - mb.h) / 2)) + "px";
	}, _onKey:function (evt) {
		if (evt.keyCode) {
			var node = evt.target;
			if (evt.keyCode == dojo.keys.TAB) {
				this._getFocusItems(this.domNode);
			}
			var singleFocusItem = (this._firstFocusItem == this._lastFocusItem);
			if (node == this._firstFocusItem && evt.shiftKey && evt.keyCode == dojo.keys.TAB) {
				if (!singleFocusItem) {
					dijit.focus(this._lastFocusItem);
				}
				dojo.stopEvent(evt);
			} else {
				if (node == this._lastFocusItem && evt.keyCode == dojo.keys.TAB && !evt.shiftKey) {
					if (!singleFocusItem) {
						dijit.focus(this._firstFocusItem);
					}
					dojo.stopEvent(evt);
				} else {
					while (node) {
						if (node == this.domNode) {
							if (evt.keyCode == dojo.keys.ESCAPE) {
								this.hide();
							} else {
								return;
							}
						}
						node = node.parentNode;
					}
					if (evt.keyCode != dojo.keys.TAB) {
						dojo.stopEvent(evt);
					} else {
						if (!dojo.isOpera) {
							try {
								this._firstFocusItem.focus();
							}
							catch (e) {
							}
						}
					}
				}
			}
		}
	}, show:function () {
		if (this.open) {
			return;
		}
		if (!this._alreadyInitialized) {
			this._setup();
			this._alreadyInitialized = true;
		}
		if (this._fadeOut.status() == "playing") {
			this._fadeOut.stop();
		}
		this._modalconnects.push(dojo.connect(window, "onscroll", this, "layout"));
		this._modalconnects.push(dojo.connect(dojo.doc.documentElement, "onkeypress", this, "_onKey"));
		dojo.style(this.domNode, "opacity", 0);
		this.domNode.style.visibility = "";
		this.open = true;
		this._loadCheck();
		this._position();
		this._fadeIn.play();
		this._savedFocus = dijit.getFocus(this);
		this._getFocusItems(this.domNode);
		setTimeout(dojo.hitch(this, function () {
			dijit.focus(this._firstFocusItem);
		}), 50);
	}, hide:function () {
		if (!this._alreadyInitialized) {
			return;
		}
		if (this._fadeIn.status() == "playing") {
			this._fadeIn.stop();
		}
		this._fadeOut.play();
		if (this._scrollConnected) {
			this._scrollConnected = false;
		}
		dojo.forEach(this._modalconnects, dojo.disconnect);
		this._modalconnects = [];
		if (this.refocus) {
			this.connect(this._fadeOut, "onEnd", dojo.hitch(dijit, "focus", this._savedFocus));
		}
		this.open = false;
	}, layout:function () {
		if (this.domNode.style.visibility != "hidden") {
			this._underlay.layout();
			this._position();
		}
	}, destroy:function () {
		dojo.forEach(this._modalconnects, dojo.disconnect);
		if (this.refocus && this.open) {
			var fo = this._savedFocus;
			setTimeout(dojo.hitch(dijit, "focus", fo), 25);
		}
		this.inherited(arguments);
	}});
	dojo.declare("dijit.TooltipDialog", [dijit.layout.ContentPane, dijit._Templated, dijit.form._FormMixin, dijit._DialogMixin], {title:"", doLayout:false, _firstFocusItem:null, _lastFocusItem:null, templateString:null, templateString:"<div class=\"dijitTooltipDialog\" waiRole=\"presentation\">\r\n\t<div class=\"dijitTooltipContainer\" waiRole=\"presentation\">\r\n\t\t<div class =\"dijitTooltipContents dijitTooltipFocusNode\" dojoAttachPoint=\"containerNode\" tabindex=\"-1\" waiRole=\"dialog\"></div>\r\n\t</div>\r\n\t<div class=\"dijitTooltipConnector\" waiRole=\"presenation\"></div>\r\n</div>\r\n", postCreate:function () {
		this.inherited(arguments);
		this.connect(this.containerNode, "onkeypress", "_onKey");
		this.containerNode.title = this.title;
	}, orient:function (node, aroundCorner, corner) {
		this.domNode.className = "dijitTooltipDialog " + " dijitTooltipAB" + (corner.charAt(1) == "L" ? "Left" : "Right") + " dijitTooltip" + (corner.charAt(0) == "T" ? "Below" : "Above");
	}, onOpen:function (pos) {
		this._getFocusItems(this.containerNode);
		this.orient(this.domNode, pos.aroundCorner, pos.corner);
		this._loadCheck();
		dijit.focus(this._firstFocusItem);
	}, _onKey:function (evt) {
		var node = evt.target;
		if (evt.keyCode == dojo.keys.TAB) {
			this._getFocusItems(this.containerNode);
		}
		var singleFocusItem = (this._firstFocusItem == this._lastFocusItem);
		if (evt.keyCode == dojo.keys.ESCAPE) {
			this.onCancel();
		} else {
			if (node == this._firstFocusItem && evt.shiftKey && evt.keyCode == dojo.keys.TAB) {
				if (!singleFocusItem) {
					dijit.focus(this._lastFocusItem);
				}
				dojo.stopEvent(evt);
			} else {
				if (node == this._lastFocusItem && evt.keyCode == dojo.keys.TAB && !evt.shiftKey) {
					if (!singleFocusItem) {
						dijit.focus(this._firstFocusItem);
					}
					dojo.stopEvent(evt);
				} else {
					if (evt.keyCode == dojo.keys.TAB) {
						evt.stopPropagation();
					}
				}
			}
		}
	}});
}
if (!dojo._hasResource["dijit.form.TextBox"]) {
	dojo._hasResource["dijit.form.TextBox"] = true;
	dojo.provide("dijit.form.TextBox");
	dojo.declare("dijit.form.TextBox", dijit.form._FormValueWidget, {trim:false, uppercase:false, lowercase:false, propercase:false, maxLength:"", templateString:"<input class=\"dijit dijitReset dijitLeft\" dojoAttachPoint='textbox,focusNode' name=\"${name}\"\r\n\tdojoAttachEvent='onmouseenter:_onMouse,onmouseleave:_onMouse,onfocus:_onMouse,onblur:_onMouse,onkeypress:_onKeyPress'\r\n\tautocomplete=\"off\" type=\"${type}\"\r\n\t/>\r\n", baseClass:"dijitTextBox", attributeMap:dojo.mixin(dojo.clone(dijit.form._FormValueWidget.prototype.attributeMap), {maxLength:"focusNode"}), getDisplayedValue:function () {
		return this.filter(this.textbox.value);
	}, getValue:function () {
		return this.parse(this.getDisplayedValue(), this.constraints);
	}, setValue:function (value, priorityChange, formattedValue) {
		var filteredValue = this.filter(value);
		if ((((typeof filteredValue == typeof value) && (value !== undefined)) || (value === null)) && (formattedValue == null || formattedValue == undefined)) {
			formattedValue = this.format(filteredValue, this.constraints);
		}
		if (formattedValue != null && formattedValue != undefined) {
			this.textbox.value = formattedValue;
		}
		dijit.form.TextBox.superclass.setValue.call(this, filteredValue, priorityChange);
	}, setDisplayedValue:function (value, priorityChange) {
		this.textbox.value = value;
		this.setValue(this.getValue(), priorityChange);
	}, format:function (value, constraints) {
		return ((value == null || value == undefined) ? "" : (value.toString ? value.toString() : value));
	}, parse:function (value, constraints) {
		return value;
	}, postCreate:function () {
		this.textbox.setAttribute("value", this.getDisplayedValue());
		this.inherited(arguments);
		this._layoutHack();
	}, filter:function (val) {
		if (val === null || val === undefined) {
			return "";
		} else {
			if (typeof val != "string") {
				return val;
			}
		}
		if (this.trim) {
			val = dojo.trim(val);
		}
		if (this.uppercase) {
			val = val.toUpperCase();
		}
		if (this.lowercase) {
			val = val.toLowerCase();
		}
		if (this.propercase) {
			val = val.replace(/[^\s]+/g, function (word) {
				return word.substring(0, 1).toUpperCase() + word.substring(1);
			});
		}
		return val;
	}, _setBlurValue:function () {
		this.setValue(this.getValue(), (this.isValid ? this.isValid() : true));
	}, _onBlur:function () {
		this._setBlurValue();
		this.inherited(arguments);
	}});
	dijit.selectInputText = function (element, start, stop) {
		var _window = dojo.global;
		var _document = dojo.doc;
		element = dojo.byId(element);
		if (isNaN(start)) {
			start = 0;
		}
		if (isNaN(stop)) {
			stop = element.value ? element.value.length : 0;
		}
		element.focus();
		if (_document["selection"] && dojo.body()["createTextRange"]) {
			if (element.createTextRange) {
				var range = element.createTextRange();
				with (range) {
					collapse(true);
					moveStart("character", start);
					moveEnd("character", stop);
					select();
				}
			}
		} else {
			if (_window["getSelection"]) {
				var selection = _window.getSelection();
				if (element.setSelectionRange) {
					element.setSelectionRange(start, stop);
				}
			}
		}
	};
}
if (!dojo._hasResource["dijit.Tooltip"]) {
	dojo._hasResource["dijit.Tooltip"] = true;
	dojo.provide("dijit.Tooltip");
	dojo.declare("dijit._MasterTooltip", [dijit._Widget, dijit._Templated], {duration:200, templateString:"<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\">\r\n\t<div class=\"dijitTooltipContainer dijitTooltipContents\" dojoAttachPoint=\"containerNode\" waiRole='alert'></div>\r\n\t<div class=\"dijitTooltipConnector\"></div>\r\n</div>\r\n", postCreate:function () {
		dojo.body().appendChild(this.domNode);
		this.bgIframe = new dijit.BackgroundIframe(this.domNode);
		this.fadeIn = dojo.fadeIn({node:this.domNode, duration:this.duration, onEnd:dojo.hitch(this, "_onShow")});
		this.fadeOut = dojo.fadeOut({node:this.domNode, duration:this.duration, onEnd:dojo.hitch(this, "_onHide")});
	}, show:function (innerHTML, aroundNode, position) {
		if (this.aroundNode && this.aroundNode === aroundNode) {
			return;
		}
		if (this.fadeOut.status() == "playing") {
			this._onDeck = arguments;
			return;
		}
		this.containerNode.innerHTML = innerHTML;
		this.domNode.style.top = (this.domNode.offsetTop + 1) + "px";
		var align = {};
		var ltr = this.isLeftToRight();
		dojo.forEach((position && position.length) ? position : dijit.Tooltip.defaultPosition, function (pos) {
			switch (pos) {
			  case "after":
				align[ltr ? "BR" : "BL"] = ltr ? "BL" : "BR";
				break;
			  case "before":
				align[ltr ? "BL" : "BR"] = ltr ? "BR" : "BL";
				break;
			  case "below":
				align[ltr ? "BL" : "BR"] = ltr ? "TL" : "TR";
				align[ltr ? "BR" : "BL"] = ltr ? "TR" : "TL";
				break;
			  case "above":
			  default:
				align[ltr ? "TL" : "TR"] = ltr ? "BL" : "BR";
				align[ltr ? "TR" : "TL"] = ltr ? "BR" : "BL";
				break;
			}
		});
		var pos = dijit.placeOnScreenAroundElement(this.domNode, aroundNode, align, dojo.hitch(this, "orient"));
		dojo.style(this.domNode, "opacity", 0);
		this.fadeIn.play();
		this.isShowingNow = true;
		this.aroundNode = aroundNode;
	}, orient:function (node, aroundCorner, tooltipCorner) {
		node.className = "dijitTooltip " + {"BL-TL":"dijitTooltipBelow dijitTooltipABLeft", "TL-BL":"dijitTooltipAbove dijitTooltipABLeft", "BR-TR":"dijitTooltipBelow dijitTooltipABRight", "TR-BR":"dijitTooltipAbove dijitTooltipABRight", "BR-BL":"dijitTooltipRight", "BL-BR":"dijitTooltipLeft"}[aroundCorner + "-" + tooltipCorner];
	}, _onShow:function () {
		if (dojo.isIE) {
			this.domNode.style.filter = "";
		}
	}, hide:function (aroundNode) {
		if (!this.aroundNode || this.aroundNode !== aroundNode) {
			return;
		}
		if (this._onDeck) {
			this._onDeck = null;
			return;
		}
		this.fadeIn.stop();
		this.isShowingNow = false;
		this.aroundNode = null;
		this.fadeOut.play();
	}, _onHide:function () {
		this.domNode.style.cssText = "";
		if (this._onDeck) {
			this.show.apply(this, this._onDeck);
			this._onDeck = null;
		}
	}});
	dijit.showTooltip = function (innerHTML, aroundNode, position) {
		if (!dijit._masterTT) {
			dijit._masterTT = new dijit._MasterTooltip();
		}
		return dijit._masterTT.show(innerHTML, aroundNode, position);
	};
	dijit.hideTooltip = function (aroundNode) {
		if (!dijit._masterTT) {
			dijit._masterTT = new dijit._MasterTooltip();
		}
		return dijit._masterTT.hide(aroundNode);
	};
	dojo.declare("dijit.Tooltip", dijit._Widget, {label:"", showDelay:400, connectId:[], position:[], postCreate:function () {
		if (this.srcNodeRef) {
			this.srcNodeRef.style.display = "none";
		}
		this._connectNodes = [];
		dojo.forEach(this.connectId, function (id) {
			var node = dojo.byId(id);
			if (node) {
				this._connectNodes.push(node);
				dojo.forEach(["onMouseOver", "onMouseOut", "onFocus", "onBlur", "onHover", "onUnHover"], function (event) {
					this.connect(node, event.toLowerCase(), "_" + event);
				}, this);
				if (dojo.isIE) {
					node.style.zoom = 1;
				}
			}
		}, this);
	}, _onMouseOver:function (e) {
		this._onHover(e);
	}, _onMouseOut:function (e) {
		if (dojo.isDescendant(e.relatedTarget, e.target)) {
			return;
		}
		this._onUnHover(e);
	}, _onFocus:function (e) {
		this._focus = true;
		this._onHover(e);
		this.inherited(arguments);
	}, _onBlur:function (e) {
		this._focus = false;
		this._onUnHover(e);
		this.inherited(arguments);
	}, _onHover:function (e) {
		if (!this._showTimer) {
			var target = e.target;
			this._showTimer = setTimeout(dojo.hitch(this, function () {
				this.open(target);
			}), this.showDelay);
		}
	}, _onUnHover:function (e) {
		if (this._focus) {
			return;
		}
		if (this._showTimer) {
			clearTimeout(this._showTimer);
			delete this._showTimer;
		}
		this.close();
	}, open:function (target) {
		target = target || this._connectNodes[0];
		if (!target) {
			return;
		}
		if (this._showTimer) {
			clearTimeout(this._showTimer);
			delete this._showTimer;
		}
		dijit.showTooltip(this.label || this.domNode.innerHTML, target, this.position);
		this._connectNode = target;
	}, close:function () {
		dijit.hideTooltip(this._connectNode);
		delete this._connectNode;
		if (this._showTimer) {
			clearTimeout(this._showTimer);
			delete this._showTimer;
		}
	}, uninitialize:function () {
		this.close();
	}});
	dijit.Tooltip.defaultPosition = ["after", "before"];
}
if (!dojo._hasResource["dijit.form.ValidationTextBox"]) {
	dojo._hasResource["dijit.form.ValidationTextBox"] = true;
	dojo.provide("dijit.form.ValidationTextBox");
	dojo.declare("dijit.form.ValidationTextBox", dijit.form.TextBox, {templateString:"<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\r\n\tid=\"widget_${id}\"\r\n\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\" waiRole=\"presentation\"\r\n\t><div style=\"overflow:hidden;\"\r\n\t\t><div class=\"dijitReset dijitValidationIcon\"><br></div\r\n\t\t><div class=\"dijitReset dijitValidationIconText\">&Chi;</div\r\n\t\t><div class=\"dijitReset dijitInputField\"\r\n\t\t\t><input class=\"dijitReset\" dojoAttachPoint='textbox,focusNode' dojoAttachEvent='onfocus:_update,onkeyup:_update,onblur:_onMouse,onkeypress:_onKeyPress' autocomplete=\"off\"\r\n\t\t\ttype='${type}' name='${name}'\r\n\t\t/></div\r\n\t></div\r\n></div>\r\n", baseClass:"dijitTextBox", required:false, promptMessage:"", invalidMessage:"$_unset_$", constraints:{}, regExp:".*", regExpGen:function (constraints) {
		return this.regExp;
	}, state:"", tooltipPosition:[], setValue:function () {
		this.inherited(arguments);
		this.validate(this._focused);
	}, validator:function (value, constraints) {
		return (new RegExp("^(" + this.regExpGen(constraints) + ")" + (this.required ? "" : "?") + "$")).test(value) && (!this.required || !this._isEmpty(value)) && (this._isEmpty(value) || this.parse(value, constraints) !== undefined);
	}, isValid:function (isFocused) {
		return this.validator(this.textbox.value, this.constraints);
	}, _isEmpty:function (value) {
		return /^\s*$/.test(value);
	}, getErrorMessage:function (isFocused) {
		return this.invalidMessage;
	}, getPromptMessage:function (isFocused) {
		return this.promptMessage;
	}, validate:function (isFocused) {
		var message = "";
		var isValid = this.isValid(isFocused);
		var isEmpty = this._isEmpty(this.textbox.value);
		this.state = (isValid || (!this._hasBeenBlurred && isEmpty)) ? "" : "Error";
		this._setStateClass();
		dijit.setWaiState(this.focusNode, "invalid", isValid ? "false" : "true");
		if (isFocused) {
			if (isEmpty) {
				message = this.getPromptMessage(true);
			}
			if (!message && this.state == "Error") {
				message = this.getErrorMessage(true);
			}
		}
		this.displayMessage(message);
		return isValid;
	}, _message:"", displayMessage:function (message) {
		if (this._message == message) {
			return;
		}
		this._message = message;
		dijit.hideTooltip(this.domNode);
		if (message) {
			dijit.showTooltip(message, this.domNode, this.tooltipPosition);
		}
	}, _refreshState:function () {
		this.validate(this._focused);
	}, _update:function (e) {
		this._refreshState();
		this._onMouse(e);
	}, constructor:function () {
		this.constraints = {};
	}, postMixInProperties:function () {
		this.inherited(arguments);
		this.constraints.locale = this.lang;
		this.messages = dojo.i18n.getLocalization("dijit.form", "validate", this.lang);
		if (this.invalidMessage == "$_unset_$") {
			this.invalidMessage = this.messages.invalidMessage;
		}
		var p = this.regExpGen(this.constraints);
		this.regExp = p;
	}});
	dojo.declare("dijit.form.MappedTextBox", dijit.form.ValidationTextBox, {serialize:function (val, options) {
		return val.toString ? val.toString() : "";
	}, toString:function () {
		var val = this.filter(this.getValue());
		return val != null ? (typeof val == "string" ? val : this.serialize(val, this.constraints)) : "";
	}, validate:function () {
		this.valueNode.value = this.toString();
		return this.inherited(arguments);
	}, setAttribute:function (attr, value) {
		this.inherited(arguments);
		switch (attr) {
		  case "disabled":
			if (this.valueNode) {
				this.valueNode.disabled = this.disabled;
			}
		}
	}, postCreate:function () {
		var textbox = this.textbox;
		var valueNode = (this.valueNode = dojo.doc.createElement("input"));
		valueNode.setAttribute("type", textbox.type);
		valueNode.setAttribute("value", this.toString());
		dojo.style(valueNode, "display", "none");
		valueNode.name = this.textbox.name;
		valueNode.disabled = this.textbox.disabled;
		this.textbox.name = this.textbox.name + "_displayed_";
		this.textbox.removeAttribute("name");
		dojo.place(valueNode, textbox, "after");
		this.inherited(arguments);
	}});
	dojo.declare("dijit.form.RangeBoundTextBox", dijit.form.MappedTextBox, {rangeMessage:"", compare:function (val1, val2) {
		return val1 - val2;
	}, rangeCheck:function (primitive, constraints) {
		var isMin = "min" in constraints;
		var isMax = "max" in constraints;
		if (isMin || isMax) {
			return (!isMin || this.compare(primitive, constraints.min) >= 0) && (!isMax || this.compare(primitive, constraints.max) <= 0);
		}
		return true;
	}, isInRange:function (isFocused) {
		return this.rangeCheck(this.getValue(), this.constraints);
	}, isValid:function (isFocused) {
		return this.inherited(arguments) && ((this._isEmpty(this.textbox.value) && !this.required) || this.isInRange(isFocused));
	}, getErrorMessage:function (isFocused) {
		if (dijit.form.RangeBoundTextBox.superclass.isValid.call(this, false) && !this.isInRange(isFocused)) {
			return this.rangeMessage;
		}
		return this.inherited(arguments);
	}, postMixInProperties:function () {
		this.inherited(arguments);
		if (!this.rangeMessage) {
			this.messages = dojo.i18n.getLocalization("dijit.form", "validate", this.lang);
			this.rangeMessage = this.messages.rangeMessage;
		}
	}, postCreate:function () {
		this.inherited(arguments);
		if (this.constraints.min !== undefined) {
			dijit.setWaiState(this.focusNode, "valuemin", this.constraints.min);
		}
		if (this.constraints.max !== undefined) {
			dijit.setWaiState(this.focusNode, "valuemax", this.constraints.max);
		}
	}, setValue:function (value, priorityChange) {
		dijit.setWaiState(this.focusNode, "valuenow", value);
		this.inherited("setValue", arguments);
	}});
}
if (!dojo._hasResource["dijit.form.ComboBox"]) {
	dojo._hasResource["dijit.form.ComboBox"] = true;
	dojo.provide("dijit.form.ComboBox");
	dojo.declare("dijit.form.ComboBoxMixin", null, {item:null, pageSize:Infinity, store:null, query:{}, autoComplete:true, searchDelay:100, searchAttr:"name", queryExpr:"${0}*", ignoreCase:true, hasDownArrow:true, templateString:"<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\r\n\tid=\"widget_${id}\"\r\n\tdojoAttachEvent=\"onmouseenter:_onMouse,onmouseleave:_onMouse,onmousedown:_onMouse\" dojoAttachPoint=\"comboNode\" waiRole=\"combobox\" tabIndex=\"-1\"\r\n\t><div style=\"overflow:hidden;\"\r\n\t\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton'\r\n\t\t\tdojoAttachPoint=\"downArrowNode\" waiRole=\"presentation\"\r\n\t\t\tdojoAttachEvent=\"onmousedown:_onArrowMouseDown,onmouseup:_onMouse,onmouseenter:_onMouse,onmouseleave:_onMouse\"\r\n\t\t\t><div class=\"dijitArrowButtonInner\">&thinsp;</div\r\n\t\t\t><div class=\"dijitArrowButtonChar\">&#9660;</div\r\n\t\t></div\r\n\t\t><div class=\"dijitReset dijitValidationIcon\"><br></div\r\n\t\t><div class=\"dijitReset dijitValidationIconText\">&Chi;</div\r\n\t\t><div class=\"dijitReset dijitInputField\"\r\n\t\t\t><input type=\"text\" autocomplete=\"off\" name=\"${name}\" class='dijitReset'\r\n\t\t\tdojoAttachEvent=\"onkeypress:_onKeyPress, onfocus:_update, compositionend\"\r\n\t\t\tdojoAttachPoint=\"textbox,focusNode\" waiRole=\"textbox\" waiState=\"haspopup-true,autocomplete-list\"\r\n\t\t/></div\r\n\t></div\r\n></div>\r\n", baseClass:"dijitComboBox", _getCaretPos:function (element) {
		var pos = 0;
		if (typeof (element.selectionStart) == "number") {
			pos = element.selectionStart;
		} else {
			if (dojo.isIE) {
				var tr = dojo.doc.selection.createRange().duplicate();
				var ntr = element.createTextRange();
				tr.move("character", 0);
				ntr.move("character", 0);
				try {
					ntr.setEndPoint("EndToEnd", tr);
					pos = String(ntr.text).replace(/\r/g, "").length;
				}
				catch (e) {
				}
			}
		}
		return pos;
	}, _setCaretPos:function (element, location) {
		location = parseInt(location);
		dijit.selectInputText(element, location, location);
	}, _setAttribute:function (attr, value) {
		if (attr == "disabled") {
			dijit.setWaiState(this.comboNode, "disabled", value);
		}
	}, _onKeyPress:function (evt) {
		if (evt.altKey || (evt.ctrlKey && evt.charCode != 118)) {
			return;
		}
		var doSearch = false;
		var pw = this._popupWidget;
		var dk = dojo.keys;
		if (this._isShowingNow) {
			pw.handleKey(evt);
		}
		switch (evt.keyCode) {
		  case dk.PAGE_DOWN:
		  case dk.DOWN_ARROW:
			if (!this._isShowingNow || this._prev_key_esc) {
				this._arrowPressed();
				doSearch = true;
			} else {
				this._announceOption(pw.getHighlightedOption());
			}
			dojo.stopEvent(evt);
			this._prev_key_backspace = false;
			this._prev_key_esc = false;
			break;
		  case dk.PAGE_UP:
		  case dk.UP_ARROW:
			if (this._isShowingNow) {
				this._announceOption(pw.getHighlightedOption());
			}
			dojo.stopEvent(evt);
			this._prev_key_backspace = false;
			this._prev_key_esc = false;
			break;
		  case dk.ENTER:
			var highlighted;
			if (this._isShowingNow && (highlighted = pw.getHighlightedOption())) {
				if (highlighted == pw.nextButton) {
					this._nextSearch(1);
					dojo.stopEvent(evt);
					break;
				} else {
					if (highlighted == pw.previousButton) {
						this._nextSearch(-1);
						dojo.stopEvent(evt);
						break;
					}
				}
			} else {
				this.setDisplayedValue(this.getDisplayedValue());
			}
			evt.preventDefault();
		  case dk.TAB:
			var newvalue = this.getDisplayedValue();
			if (pw && (newvalue == pw._messages["previousMessage"] || newvalue == pw._messages["nextMessage"])) {
				break;
			}
			if (this._isShowingNow) {
				this._prev_key_backspace = false;
				this._prev_key_esc = false;
				if (pw.getHighlightedOption()) {
					pw.setValue({target:pw.getHighlightedOption()}, true);
				}
				this._hideResultList();
			}
			break;
		  case dk.SPACE:
			this._prev_key_backspace = false;
			this._prev_key_esc = false;
			if (this._isShowingNow && pw.getHighlightedOption()) {
				dojo.stopEvent(evt);
				this._selectOption();
				this._hideResultList();
			} else {
				doSearch = true;
			}
			break;
		  case dk.ESCAPE:
			this._prev_key_backspace = false;
			this._prev_key_esc = true;
			if (this._isShowingNow) {
				dojo.stopEvent(evt);
				this._hideResultList();
			}
			this.inherited(arguments);
			break;
		  case dk.DELETE:
		  case dk.BACKSPACE:
			this._prev_key_esc = false;
			this._prev_key_backspace = true;
			doSearch = true;
			break;
		  case dk.RIGHT_ARROW:
		  case dk.LEFT_ARROW:
			this._prev_key_backspace = false;
			this._prev_key_esc = false;
			break;
		  default:
			this._prev_key_backspace = false;
			this._prev_key_esc = false;
			if (dojo.isIE || evt.charCode != 0) {
				doSearch = true;
			}
		}
		if (this.searchTimer) {
			clearTimeout(this.searchTimer);
		}
		if (doSearch) {
			setTimeout(dojo.hitch(this, "_startSearchFromInput"), 1);
		}
	}, _autoCompleteText:function (text) {
		var fn = this.focusNode;
		dijit.selectInputText(fn, fn.value.length);
		var caseFilter = this.ignoreCase ? "toLowerCase" : "substr";
		if (text[caseFilter](0).indexOf(this.focusNode.value[caseFilter](0)) == 0) {
			var cpos = this._getCaretPos(fn);
			if ((cpos + 1) > fn.value.length) {
				fn.value = text;
				dijit.selectInputText(fn, cpos);
			}
		} else {
			fn.value = text;
			dijit.selectInputText(fn);
		}
	}, _openResultList:function (results, dataObject) {
		if (this.disabled || this.readOnly || (dataObject.query[this.searchAttr] != this._lastQuery)) {
			return;
		}
		this._popupWidget.clearResultList();
		if (!results.length) {
			this._hideResultList();
			return;
		}
		var zerothvalue = new String(this.store.getValue(results[0], this.searchAttr));
		if (zerothvalue && this.autoComplete && !this._prev_key_backspace && (dataObject.query[this.searchAttr] != "*")) {
			this._autoCompleteText(zerothvalue);
		}
		this._popupWidget.createOptions(results, dataObject, dojo.hitch(this, "_getMenuLabelFromItem"));
		this._showResultList();
		if (dataObject.direction) {
			if (1 == dataObject.direction) {
				this._popupWidget.highlightFirstOption();
			} else {
				if (-1 == dataObject.direction) {
					this._popupWidget.highlightLastOption();
				}
			}
			this._announceOption(this._popupWidget.getHighlightedOption());
		}
	}, _showResultList:function () {
		this._hideResultList();
		var items = this._popupWidget.getItems(), visibleCount = Math.min(items.length, this.maxListLength);
		this._arrowPressed();
		this.displayMessage("");
		with (this._popupWidget.domNode.style) {
			width = "";
			height = "";
		}
		var best = this.open();
		var popupbox = dojo.marginBox(this._popupWidget.domNode);
		this._popupWidget.domNode.style.overflow = ((best.h == popupbox.h) && (best.w == popupbox.w)) ? "hidden" : "auto";
		var newwidth = best.w;
		if (best.h < this._popupWidget.domNode.scrollHeight) {
			newwidth += 16;
		}
		dojo.marginBox(this._popupWidget.domNode, {h:best.h, w:Math.max(newwidth, this.domNode.offsetWidth)});
		dijit.setWaiState(this.comboNode, "expanded", "true");
	}, _hideResultList:function () {
		if (this._isShowingNow) {
			dijit.popup.close(this._popupWidget);
			this._arrowIdle();
			this._isShowingNow = false;
			dijit.setWaiState(this.comboNode, "expanded", "false");
			dijit.removeWaiState(this.focusNode, "activedescendant");
		}
	}, _setBlurValue:function () {
		var newvalue = this.getDisplayedValue();
		var pw = this._popupWidget;
		if (pw && (newvalue == pw._messages["previousMessage"] || newvalue == pw._messages["nextMessage"])) {
			this.setValue(this._lastValueReported, true);
		} else {
			this.setDisplayedValue(newvalue);
		}
	}, _onBlur:function () {
		this._hideResultList();
		this._arrowIdle();
		this.inherited(arguments);
	}, _announceOption:function (node) {
		if (node == null) {
			return;
		}
		var newValue;
		if (node == this._popupWidget.nextButton || node == this._popupWidget.previousButton) {
			newValue = node.innerHTML;
		} else {
			newValue = this.store.getValue(node.item, this.searchAttr);
		}
		this.focusNode.value = this.focusNode.value.substring(0, this._getCaretPos(this.focusNode));
		dijit.setWaiState(this.focusNode, "activedescendant", dojo.attr(node, "id"));
		this._autoCompleteText(newValue);
	}, _selectOption:function (evt) {
		var tgt = null;
		if (!evt) {
			evt = {target:this._popupWidget.getHighlightedOption()};
		}
		if (!evt.target) {
			this.setDisplayedValue(this.getDisplayedValue());
			return;
		} else {
			tgt = evt.target;
		}
		if (!evt.noHide) {
			this._hideResultList();
			this._setCaretPos(this.focusNode, this.store.getValue(tgt.item, this.searchAttr).length);
		}
		this._doSelect(tgt);
	}, _doSelect:function (tgt) {
		this.item = tgt.item;
		this.setValue(this.store.getValue(tgt.item, this.searchAttr), true);
	}, _onArrowMouseDown:function (evt) {
		if (this.disabled || this.readOnly) {
			return;
		}
		dojo.stopEvent(evt);
		this.focus();
		if (this._isShowingNow) {
			this._hideResultList();
		} else {
			this._startSearch("");
		}
	}, _startSearchFromInput:function () {
		this._startSearch(this.focusNode.value);
	}, _getQueryString:function (text) {
		return dojo.string.substitute(this.queryExpr, [text]);
	}, _startSearch:function (key) {
		if (!this._popupWidget) {
			var popupId = this.id + "_popup";
			this._popupWidget = new dijit.form._ComboBoxMenu({onChange:dojo.hitch(this, this._selectOption), id:popupId});
			dijit.removeWaiState(this.focusNode, "activedescendant");
			dijit.setWaiState(this.textbox, "owns", popupId);
		}
		this.item = null;
		var query = dojo.clone(this.query);
		this._lastQuery = query[this.searchAttr] = this._getQueryString(key);
		this.searchTimer = setTimeout(dojo.hitch(this, function (query, _this) {
			var dataObject = this.store.fetch({queryOptions:{ignoreCase:this.ignoreCase, deep:true}, query:query, onComplete:dojo.hitch(this, "_openResultList"), onError:function (errText) {
				console.error("dijit.form.ComboBox: " + errText);
				dojo.hitch(_this, "_hideResultList")();
			}, start:0, count:this.pageSize});
			var nextSearch = function (dataObject, direction) {
				dataObject.start += dataObject.count * direction;
				dataObject.direction = direction;
				this.store.fetch(dataObject);
			};
			this._nextSearch = this._popupWidget.onPage = dojo.hitch(this, nextSearch, dataObject);
		}, query, this), this.searchDelay);
	}, _getValueField:function () {
		return this.searchAttr;
	}, _arrowPressed:function () {
		if (!this.disabled && !this.readOnly && this.hasDownArrow) {
			dojo.addClass(this.downArrowNode, "dijitArrowButtonActive");
		}
	}, _arrowIdle:function () {
		if (!this.disabled && !this.readOnly && this.hasDownArrow) {
			dojo.removeClass(this.downArrowNode, "dojoArrowButtonPushed");
		}
	}, compositionend:function (evt) {
		this.onkeypress({charCode:-1});
	}, constructor:function () {
		this.query = {};
	}, postMixInProperties:function () {
		if (!this.hasDownArrow) {
			this.baseClass = "dijitTextBox";
		}
		if (!this.store) {
			var srcNodeRef = this.srcNodeRef;
			this.store = new dijit.form._ComboBoxDataStore(srcNodeRef);
			if (!this.value || ((typeof srcNodeRef.selectedIndex == "number") && srcNodeRef.selectedIndex.toString() === this.value)) {
				var item = this.store.fetchSelectedItem();
				if (item) {
					this.value = this.store.getValue(item, this._getValueField());
				}
			}
		}
	}, _postCreate:function () {
		var label = dojo.query("label[for=\"" + this.id + "\"]");
		if (label.length) {
			label[0].id = (this.id + "_label");
			var cn = this.comboNode;
			dijit.setWaiState(cn, "labelledby", label[0].id);
			dijit.setWaiState(cn, "disabled", this.disabled);
		}
	}, uninitialize:function () {
		if (this._popupWidget) {
			this._hideResultList();
			this._popupWidget.destroy();
		}
	}, _getMenuLabelFromItem:function (item) {
		return {html:false, label:this.store.getValue(item, this.searchAttr)};
	}, open:function () {
		this._isShowingNow = true;
		return dijit.popup.open({popup:this._popupWidget, around:this.domNode, parent:this});
	}, reset:function () {
		this.item = null;
		this.inherited(arguments);
	}});
	dojo.declare("dijit.form._ComboBoxMenu", [dijit._Widget, dijit._Templated], {templateString:"<ul class='dijitMenu' dojoAttachEvent='onmousedown:_onMouseDown,onmouseup:_onMouseUp,onmouseover:_onMouseOver,onmouseout:_onMouseOut' tabIndex='-1' style='overflow:\"auto\";'>" + "<li class='dijitMenuItem dijitMenuPreviousButton' dojoAttachPoint='previousButton'></li>" + "<li class='dijitMenuItem dijitMenuNextButton' dojoAttachPoint='nextButton'></li>" + "</ul>", _messages:null, postMixInProperties:function () {
		this._messages = dojo.i18n.getLocalization("dijit.form", "ComboBox", this.lang);
		this.inherited("postMixInProperties", arguments);
	}, setValue:function (value) {
		this.value = value;
		this.onChange(value);
	}, onChange:function (value) {
	}, onPage:function (direction) {
	}, postCreate:function () {
		this.previousButton.innerHTML = this._messages["previousMessage"];
		this.nextButton.innerHTML = this._messages["nextMessage"];
		this.inherited("postCreate", arguments);
	}, onClose:function () {
		this._blurOptionNode();
	}, _createOption:function (item, labelFunc) {
		var labelObject = labelFunc(item);
		var menuitem = dojo.doc.createElement("li");
		dijit.setWaiRole(menuitem, "option");
		if (labelObject.html) {
			menuitem.innerHTML = labelObject.label;
		} else {
			menuitem.appendChild(dojo.doc.createTextNode(labelObject.label));
		}
		if (menuitem.innerHTML == "") {
			menuitem.innerHTML = "&nbsp;";
		}
		menuitem.item = item;
		return menuitem;
	}, createOptions:function (results, dataObject, labelFunc) {
		this.previousButton.style.display = (dataObject.start == 0) ? "none" : "";
		dojo.attr(this.previousButton, "id", this.id + "_prev");
		dojo.forEach(results, function (item, i) {
			var menuitem = this._createOption(item, labelFunc);
			menuitem.className = "dijitMenuItem";
			dojo.attr(menuitem, "id", this.id + i);
			this.domNode.insertBefore(menuitem, this.nextButton);
		}, this);
		this.nextButton.style.display = (dataObject.count == results.length) ? "" : "none";
		dojo.attr(this.nextButton, "id", this.id + "_next");
	}, clearResultList:function () {
		while (this.domNode.childNodes.length > 2) {
			this.domNode.removeChild(this.domNode.childNodes[this.domNode.childNodes.length - 2]);
		}
	}, getItems:function () {
		return this.domNode.childNodes;
	}, getListLength:function () {
		return this.domNode.childNodes.length - 2;
	}, _onMouseDown:function (evt) {
		dojo.stopEvent(evt);
	}, _onMouseUp:function (evt) {
		if (evt.target === this.domNode) {
			return;
		} else {
			if (evt.target == this.previousButton) {
				this.onPage(-1);
			} else {
				if (evt.target == this.nextButton) {
					this.onPage(1);
				} else {
					var tgt = evt.target;
					while (!tgt.item) {
						tgt = tgt.parentNode;
					}
					this.setValue({target:tgt}, true);
				}
			}
		}
	}, _onMouseOver:function (evt) {
		if (evt.target === this.domNode) {
			return;
		}
		var tgt = evt.target;
		if (!(tgt == this.previousButton || tgt == this.nextButton)) {
			while (!tgt.item) {
				tgt = tgt.parentNode;
			}
		}
		this._focusOptionNode(tgt);
	}, _onMouseOut:function (evt) {
		if (evt.target === this.domNode) {
			return;
		}
		this._blurOptionNode();
	}, _focusOptionNode:function (node) {
		if (this._highlighted_option != node) {
			this._blurOptionNode();
			this._highlighted_option = node;
			dojo.addClass(this._highlighted_option, "dijitMenuItemHover");
		}
	}, _blurOptionNode:function () {
		if (this._highlighted_option) {
			dojo.removeClass(this._highlighted_option, "dijitMenuItemHover");
			this._highlighted_option = null;
		}
	}, _highlightNextOption:function () {
		var fc = this.domNode.firstChild;
		if (!this.getHighlightedOption()) {
			this._focusOptionNode(fc.style.display == "none" ? fc.nextSibling : fc);
		} else {
			var ns = this._highlighted_option.nextSibling;
			if (ns && ns.style.display != "none") {
				this._focusOptionNode(ns);
			}
		}
		dijit.scrollIntoView(this._highlighted_option);
	}, highlightFirstOption:function () {
		this._focusOptionNode(this.domNode.firstChild.nextSibling);
		dijit.scrollIntoView(this._highlighted_option);
	}, highlightLastOption:function () {
		this._focusOptionNode(this.domNode.lastChild.previousSibling);
		dijit.scrollIntoView(this._highlighted_option);
	}, _highlightPrevOption:function () {
		var lc = this.domNode.lastChild;
		if (!this.getHighlightedOption()) {
			this._focusOptionNode(lc.style.display == "none" ? lc.previousSibling : lc);
		} else {
			var ps = this._highlighted_option.previousSibling;
			if (ps && ps.style.display != "none") {
				this._focusOptionNode(ps);
			}
		}
		dijit.scrollIntoView(this._highlighted_option);
	}, _page:function (up) {
		var scrollamount = 0;
		var oldscroll = this.domNode.scrollTop;
		var height = dojo.style(this.domNode, "height");
		if (!this.getHighlightedOption()) {
			this._highlightNextOption();
		}
		while (scrollamount < height) {
			if (up) {
				if (!this.getHighlightedOption().previousSibling || this._highlighted_option.previousSibling.style.display == "none") {
					break;
				}
				this._highlightPrevOption();
			} else {
				if (!this.getHighlightedOption().nextSibling || this._highlighted_option.nextSibling.style.display == "none") {
					break;
				}
				this._highlightNextOption();
			}
			var newscroll = this.domNode.scrollTop;
			scrollamount += (newscroll - oldscroll) * (up ? -1 : 1);
			oldscroll = newscroll;
		}
	}, pageUp:function () {
		this._page(true);
	}, pageDown:function () {
		this._page(false);
	}, getHighlightedOption:function () {
		var ho = this._highlighted_option;
		return (ho && ho.parentNode) ? ho : null;
	}, handleKey:function (evt) {
		switch (evt.keyCode) {
		  case dojo.keys.DOWN_ARROW:
			this._highlightNextOption();
			break;
		  case dojo.keys.PAGE_DOWN:
			this.pageDown();
			break;
		  case dojo.keys.UP_ARROW:
			this._highlightPrevOption();
			break;
		  case dojo.keys.PAGE_UP:
			this.pageUp();
			break;
		}
	}});
	dojo.declare("dijit.form.ComboBox", [dijit.form.ValidationTextBox, dijit.form.ComboBoxMixin], {postMixInProperties:function () {
		dijit.form.ComboBoxMixin.prototype.postMixInProperties.apply(this, arguments);
		dijit.form.ValidationTextBox.prototype.postMixInProperties.apply(this, arguments);
	}, postCreate:function () {
		dijit.form.ComboBoxMixin.prototype._postCreate.apply(this, arguments);
		dijit.form.ValidationTextBox.prototype.postCreate.apply(this, arguments);
	}, setAttribute:function (attr, value) {
		dijit.form.ValidationTextBox.prototype.setAttribute.apply(this, arguments);
		dijit.form.ComboBoxMixin.prototype._setAttribute.apply(this, arguments);
	}});
	dojo.declare("dijit.form._ComboBoxDataStore", null, {constructor:function (root) {
		this.root = root;
	}, getValue:function (item, attribute, defaultValue) {
		return (attribute == "value") ? item.value : (item.innerText || item.textContent || "");
	}, isItemLoaded:function (something) {
		return true;
	}, fetch:function (args) {
		var query = "^" + args.query.name.replace(/([\\\|\(\)\[\{\^\$\+\?\.\<\>])/g, "\\$1").replace("*", ".*") + "$", matcher = new RegExp(query, args.queryOptions.ignoreCase ? "i" : ""), items = dojo.query("> option", this.root).filter(function (option) {
			return (option.innerText || option.textContent || "").match(matcher);
		});
		var start = args.start || 0, end = ("count" in args && args.count != Infinity) ? (start + args.count) : items.length;
		args.onComplete(items.slice(start, end), args);
		return args;
	}, close:function (request) {
		return;
	}, getLabel:function (item) {
		return item.innerHTML;
	}, getIdentity:function (item) {
		return dojo.attr(item, "value");
	}, fetchItemByIdentity:function (args) {
		var item = dojo.query("option[value='" + args.identity + "']", this.root)[0];
		args.onItem(item);
	}, fetchSelectedItem:function () {
		var root = this.root, si = root.selectedIndex;
		return dojo.query("> option:nth-child(" + (si != -1 ? si + 1 : 1) + ")", root)[0];
	}});
}
if (!dojo._hasResource["dojox.layout.ResizeHandle"]) {
	dojo._hasResource["dojox.layout.ResizeHandle"] = true;
	dojo.provide("dojox.layout.ResizeHandle");
	dojo.experimental("dojox.layout.ResizeHandle");
	dojo.declare("dojox.layout.ResizeHandle", [dijit._Widget, dijit._Templated], {targetId:"", targetContainer:null, resizeAxis:"xy", activeResize:false, activeResizeClass:"dojoxResizeHandleClone", animateSizing:true, animateMethod:"chain", animateDuration:225, minHeight:5, minWidth:5, cssClass:"", baseCssClass:"", direction:"", containerPosition:"", offsetBorder:2, containerName:"contentholder", anchorWidth:10, templateString:"<div dojoAttachPoint=\"resizeHandle\" ><div></div></div>", postCreate:function () {
		this.connect(this.resizeHandle, "onmousedown", "_beginSizing");
		var resizeHelper = "dojoxGlobalResizeHelper";
		this.baseCssClass = "dojoxResizeHandle" + this.targetId;
		this.cssClass = this.baseCssClass + this.direction;
		dojo.addClass(this.resizeHandle, this.cssClass);
		dojo.addClass(this.resizeHandle, "resizeBlock");
		this.containerPosition = dojo.byId(this.containerName) ? dojo.coords(dojo.byId(this.containerName), true) : {l:0, t:0, w:0, h:0, x:0, y:0};
		var version = navigator.appVersion;
		if (version.indexOf("Safari") > -1) {
		}
		this.containerPosition.x += this.offsetBorder;
		this.containerPosition.y += this.offsetBorder;
		if (!this.activeResize) {
			this._resizeHelper = dijit.byId(resizeHelper);
			if (!this._resizeHelper) {
				var tmpNode = document.createElement("div");
				tmpNode.style.display = "none";
				dojo.body().appendChild(tmpNode);
				dojo.addClass(tmpNode, this.activeResizeClass);
				this._resizeHelper = new dojox.layout._ResizeHelper({id:resizeHelper}, tmpNode);
				this._resizeHelper.startup();
				dojo.subscribe("/dnd/move/start", function (mover) {
					dojo.query(".dojoxResizeHandle" + mover.node.id + "*").style("display", "none");
				});
				dojo.subscribe("/dnd/move/stop", function (mover) {
					var anchorWidth = 10;
					coords = dojo.coords(mover.node.id, true);
					var regex = new RegExp("dojoxResizeHandle" + mover.node.id + "[a-z]");
					dojo.query(".dojoxResizeHandle" + mover.node.id + "*").forEach(function (inputElement) {
						var tempClass = inputElement.className;
						if (tempClass.indexOf("dojoxResizeHandle" + mover.node.id + "r") > -1) {
							dojo.style(inputElement, "left", coords.l + coords.w + "px");
							dojo.style(inputElement, "top", coords.t + (coords.h / 2) - (anchorWidth / 2) + "px");
						}
						if (tempClass.indexOf("dojoxResizeHandle" + mover.node.id + "tr") > -1) {
							dojo.style(inputElement, "left", coords.l + coords.w + "px");
							dojo.style(inputElement, "top", (coords.t - anchorWidth) + "px");
						}
						if (tempClass.indexOf("dojoxResizeHandle" + mover.node.id + "t ") > -1) {
							dojo.style(inputElement, "left", coords.l + (coords.w / 2) + "px");
							dojo.style(inputElement, "top", coords.t - anchorWidth + "px");
						}
						if (tempClass.indexOf("dojoxResizeHandle" + mover.node.id + "tl") > -1) {
							dojo.style(inputElement, "left", coords.l - anchorWidth + "px");
							dojo.style(inputElement, "top", coords.t - anchorWidth + "px");
						}
						if (tempClass.indexOf("dojoxResizeHandle" + mover.node.id + "l") > -1) {
							dojo.style(inputElement, "left", coords.l - anchorWidth + "px");
							dojo.style(inputElement, "top", coords.t + (coords.h / 2) - (anchorWidth / 2) + "px");
						}
						if (tempClass.indexOf("dojoxResizeHandle" + mover.node.id + "bl") > -1) {
							dojo.style(inputElement, "left", coords.l - anchorWidth + "px");
							dojo.style(inputElement, "top", coords.t + coords.h + "px");
						}
						if (tempClass.indexOf("dojoxResizeHandle" + mover.node.id + "b ") > -1) {
							dojo.style(inputElement, "left", coords.l + (coords.w / 2) + "px");
							dojo.style(inputElement, "top", coords.t + coords.h + "px");
						}
						if (tempClass.indexOf("dojoxResizeHandle" + mover.node.id + "br") > -1) {
							dojo.style(inputElement, "left", coords.l + coords.w + "px");
							dojo.style(inputElement, "top", coords.t + coords.h + "px");
						}
						if (regex.test(tempClass)) {
							dojo.style(inputElement, "display", "block");
						}
					});
				});
			}
		} else {
			this.animateSizing = false;
		}
		if (!this.minSize) {
			this.minSize = {w:this.minWidth, h:this.minHeight};
		}
		this._resizeX = this._resizeY = true;
		switch (this.direction.toLowerCase()) {
		  case "br":
			dojo.addClass(this.resizeHandle, "dojoxResizeNW");
			break;
		  case "r":
			dojo.addClass(this.resizeHandle, "dojoxResizeW");
			break;
		  case "t":
			dojo.addClass(this.resizeHandle, "dojoxResizeN");
			break;
		  case "tr":
			dojo.addClass(this.resizeHandle, "dojoxResizeNE");
			break;
		  case "tl":
			dojo.addClass(this.resizeHandle, "dojoxResizeNW");
			break;
		  case "l":
			dojo.addClass(this.resizeHandle, "dojoxResizeW");
			break;
		  case "bl":
			dojo.addClass(this.resizeHandle, "dojoxResizeNE");
			break;
		  case "b":
			dojo.addClass(this.resizeHandle, "dojoxResizeN");
			break;
		}
		this.resizeWidget = dojo.byId(this.targetId);
		var coords = dojo.coords(this.resizeWidget, true);
		switch (this.direction.toLowerCase()) {
		  case "br":
			dojo.query("." + this.cssClass).style("left", coords.l + coords.w + "px");
			dojo.query("." + this.cssClass).style("top", coords.t + coords.h + "px");
			break;
		  case "r":
			dojo.query("." + this.cssClass).style("left", coords.l + coords.w + "px");
			dojo.query("." + this.cssClass).style("top", coords.t + (coords.h / 2) - (this.anchorWidth / 2) + "px");
			break;
		  case "t":
			dojo.query("." + this.cssClass).style("left", coords.l + (coords.w / 2) + "px");
			dojo.query("." + this.cssClass).style("top", coords.t - this.anchorWidth + "px");
			break;
		  case "tr":
			dojo.query("." + this.cssClass).style("left", coords.l + coords.w + "px");
			dojo.query("." + this.cssClass).style("top", coords.t - this.anchorWidth + "px");
			break;
		  case "tl":
			dojo.query("." + this.cssClass).style("left", coords.l - this.anchorWidth + "px");
			dojo.query("." + this.cssClass).style("top", coords.t - this.anchorWidth + "px");
			break;
		  case "l":
			dojo.query("." + this.cssClass).style("left", coords.l - this.anchorWidth + "px");
			dojo.query("." + this.cssClass).style("top", coords.t + (coords.h / 2) - (this.anchorWidth / 2) + "px");
			break;
		  case "bl":
			dojo.query("." + this.cssClass).style("left", coords.l - this.anchorWidth + "px");
			dojo.query("." + this.cssClass).style("top", coords.t + coords.h + "px");
			break;
		  case "b":
			dojo.query("." + this.cssClass).style("left", coords.l + (coords.w / 2) + "px");
			dojo.query("." + this.cssClass).style("top", coords.t + coords.h + "px");
			break;
		}
	}, _beginSizing:function (e) {
		if (this._isSizing) {
			return false;
		}
		this.targetWidget = dijit.byId(this.targetId);
		this.targetDomNode = this.targetWidget ? this.targetWidget.domNode : dojo.byId(this.targetId);
		if (this.targetContainer) {
			this.targetDomNode = this.targetContainer;
		}
		if (!this.targetDomNode) {
			return false;
		}
		if (!this.activeResize) {
			var c = dojo.coords(this.targetDomNode, true);
			this._resizeHelper.resize({l:c.x, t:c.y, w:c.w, h:c.h}, this.direction, e, this.containerPosition);
			this._resizeHelper.show();
		}
		this._isSizing = true;
		this.startPoint = {"x":e.clientX, "y":e.clientY};
		var mb = (this.targetWidget) ? dojo.marginBox(this.targetDomNode) : dojo.contentBox(this.targetDomNode);
		this.startSize = {"w":mb.w, "h":mb.h};
		this._pconnects = [];
		this._pconnects.push(dojo.connect(document, "onmousemove", this, "_updateSizing"));
		this._pconnects.push(dojo.connect(document, "onmouseup", this, "_endSizing"));
		e.preventDefault();
		dojo.publish("/layout/ResizeHandle/OnResize", [e]);
	}, _updateSizing:function (e) {
		var tmp = this._getNewCoords(e);
		if (this.activeResize) {
			this._changeSizing(e);
		} else {
			if (tmp === false) {
				return;
			}
			this._resizeHelper.resize(tmp, this.direction, e, this.containerPosition);
		}
		e.preventDefault();
		this._adjustSize(e);
	}, _adjustSize:function (e) {
		var coords = this._resizeHelper.getCoords();
		dojo.style(this.targetDomNode, "width", coords.w + "px");
		dojo.style(this.targetDomNode, "height", coords.h + "px");
		dojo.style(this.targetDomNode, "top", coords.t - this.containerPosition.y + "px");
		dojo.style(this.targetDomNode, "left", coords.l - this.containerPosition.x + "px");
		baseClass = this.baseCssClass;
		thisContainerPosition = this.containerPosition;
		thisAnchorWidth = this.anchorWidth;
		var regex = new RegExp("dojoxResizeHandle" + this.targetDomNode.id + "[a-z]");
		dojo.query("." + this.baseCssClass + "*").forEach(function (inputElement) {
			var tempClass = inputElement.className;
			if (tempClass.indexOf(baseClass + "r") > -1) {
				dojo.style(inputElement, "left", coords.l + coords.w - thisContainerPosition.x + "px");
				dojo.style(inputElement, "top", coords.t + (coords.h / 2) - (thisAnchorWidth / 2) - thisContainerPosition.y + "px");
			}
			if (tempClass.indexOf(baseClass + "tr") > -1) {
				dojo.style(inputElement, "left", coords.l + coords.w - thisContainerPosition.x + "px");
				dojo.style(inputElement, "top", coords.t - thisAnchorWidth - thisContainerPosition.y + "px");
			}
			if (tempClass.indexOf(baseClass + "t ") > -1) {
				dojo.style(inputElement, "left", coords.l + (coords.w / 2) - thisContainerPosition.x + "px");
				dojo.style(inputElement, "top", coords.t - thisAnchorWidth - thisContainerPosition.y + "px");
			}
			if (tempClass.indexOf(baseClass + "tl") > -1) {
				dojo.style(inputElement, "left", coords.l - thisAnchorWidth - thisContainerPosition.x + "px");
				dojo.style(inputElement, "top", coords.t - thisAnchorWidth - thisContainerPosition.y + "px");
			}
			if (tempClass.indexOf(baseClass + "l") > -1) {
				dojo.style(inputElement, "left", coords.l - thisAnchorWidth - thisContainerPosition.x + "px");
				dojo.style(inputElement, "top", coords.t + (coords.h / 2) - (thisAnchorWidth / 2) - thisContainerPosition.y + "px");
			}
			if (tempClass.indexOf(baseClass + "bl") > -1) {
				dojo.style(inputElement, "left", coords.l - thisAnchorWidth - thisContainerPosition.x + "px");
				dojo.style(inputElement, "top", coords.t + coords.h - thisContainerPosition.y + "px");
			}
			if (tempClass.indexOf(baseClass + "b ") > -1) {
				dojo.style(inputElement, "left", coords.l + (coords.w / 2) - thisContainerPosition.x + "px");
				dojo.style(inputElement, "top", coords.t + coords.h - thisContainerPosition.y + "px");
			}
			if (tempClass.indexOf(baseClass + "br") > -1) {
				dojo.style(inputElement, "left", coords.l + coords.w - thisContainerPosition.x + "px");
				dojo.style(inputElement, "top", coords.t + coords.h - thisContainerPosition.y + "px");
			}
			if (regex.test(tempClass)) {
				dojo.style(inputElement, "display", "block");
			}
		});
	}, _getNewCoords:function (e) {
		try {
			if (!e.clientX || !e.clientY) {
				return false;
			}
		}
		catch (e) {
			return false;
		}
		this._activeResizeLastEvent = e;
		var dx = this.startPoint.x - e.clientX;
		var dy = this.startPoint.y - e.clientY;
		var ratio = this.startSize.w / this.startSize.h;
		switch (this.direction.toLowerCase()) {
		  case "br":
			var newW = this.startSize.w - dx;
			var newH = newW / ratio;
			globalScaleDirection = "corner";
			break;
		  case "r":
			var newW = this.startSize.w - dx;
			var newH = this.startSize.h;
			globalScaleDirection = "side";
			break;
		  case "t":
			var newH = this.startSize.h + dy;
			var newW = this.startSize.w;
			globalScaleDirection = "side";
			break;
		  case "tr":
			var newW = Math.round(this.startSize.w - dx);
			var newH = Math.round(newW / ratio);
			globalScaleDirection = "corner";
			break;
		  case "tl":
			var newW = Math.round(this.startSize.w + dx);
			var newH = Math.round(newW / ratio);
			globalScaleDirection = "corner";
			break;
		  case "l":
			var newW = this.startSize.w + dx;
			var newH = this.startSize.h;
			globalScaleDirection = "side";
			break;
		  case "bl":
			var newW = this.startSize.w + dx;
			var newH = newW / ratio;
			globalScaleDirection = "corner";
			break;
		  case "b":
			var newH = this.startSize.h - dy;
			var newW = this.startSize.w;
			globalScaleDirection = "side";
			break;
		}
		setClip();
		var newScale = newW / newH;
		this.minSize.w = Math.round(this.minSize.h * newScale);
		if (this.minSize) {
			if (newW < this.minSize.w) {
				newW = this.minSize.w;
			}
			if (newH < this.minSize.h) {
				newH = this.minSize.h;
			}
		}
		return {w:newW, h:newH, dx:dx, dy:dy};
	}, _changeSizing:function (e) {
		var tmp = this._getNewCoords(e);
		if (tmp === false) {
			return;
		}
		if (this.targetWidget && typeof this.targetWidget.resize == "function") {
			this.targetWidget.resize(tmp);
		} else {
			if (this.animateSizing) {
				var anim = dojo.fx[this.animateMethod]([dojo.animateProperty({node:this.targetDomNode, properties:{width:{start:this.startSize.w, end:tmp.w, unit:"px"}}, duration:this.animateDuration}), dojo.animateProperty({node:this.targetDomNode, properties:{height:{start:this.startSize.h, end:tmp.h, unit:"px"}}, duration:this.animateDuration})]);
				anim.play();
			} else {
				dojo.style(this.targetDomNode, "width", tmp.w + "px");
				dojo.style(this.targetDomNode, "height", tmp.h + "px");
			}
		}
	}, _endSizing:function (e) {
		dojo.forEach(this._pconnects, dojo.disconnect);
		if (!this.activeResize) {
			this._resizeHelper.hide();
			this._changeSizing(e);
		}
		this._isSizing = false;
		this.onResize(e);
	}, onResize:function (e) {
		dojo.publish("/layout/ResizeHandle/OnResizeEnd", [e]);
	}});
	dojo.declare("dojox.layout._ResizeHelper", dijit._Widget, {lastMoveX:0, lastMoveY:0, startup:function () {
		if (this._started) {
			return;
		}
		this.inherited(arguments);
	}, show:function () {
		dojo.fadeIn({node:this.domNode, duration:120, beforeBegin:dojo.hitch(this, function () {
			this.domNode.style.display = "";
		})}).play();
	}, hide:function () {
		dojo.fadeOut({node:this.domNode, duration:250, onEnd:dojo.hitch(this, function () {
			this.domNode.style.display = "none";
		})}).play();
	}, resize:function (dim, currentDirection, theEvent, containerPosition) {
		var c = this.getCoords();
		var dx = dim.dx;
		var dy = dim.dy;
		if (dx == undefined) {
			dx = 0;
		}
		if (dy == undefined) {
			dy = 0;
		}
		var containerOffsetX = containerPosition.l;
		var containerOffsetY = containerPosition.t;
		switch (currentDirection) {
		  case "l":
			dojo.style(this.domNode, "top", c.t + "px");
			dojo.style(this.domNode, "left", c.l - (dx - this.lastMoveX) + "px");
			break;
		  case "tr":
			dojo.style(this.domNode, "top", c.t - (dim.h - c.h) + "px");
			dojo.style(this.domNode, "left", c.l + "px");
			break;
		  case "t":
			dojo.style(this.domNode, "top", c.t - (dy - this.lastMoveY) + "px");
			dojo.style(this.domNode, "left", c.l + "px");
			break;
		  case "tl":
			dojo.style(this.domNode, "top", c.t - (dim.h - c.h) + "px");
			dojo.style(this.domNode, "left", c.l - (dim.w - c.w) + "px");
			break;
		  case "bl":
			dojo.style(this.domNode, "top", c.t + "px");
			dojo.style(this.domNode, "left", c.l - (dim.w - c.w) + "px");
			break;
		}
		this.lastMoveX = dx;
		this.lastMoveY = dy;
		dojo.marginBox(this.domNode, dim);
	}, getCoords:function () {
		return (dojo.coords(this.domNode, true));
	}});
}
if (!dojo._hasResource["dojo.regexp"]) {
	dojo._hasResource["dojo.regexp"] = true;
	dojo.provide("dojo.regexp");
	dojo.regexp.escapeString = function (str, except) {
		return str.replace(/([\.$?*!=:|{}\(\)\[\]\\\/^])/g, function (ch) {
			if (except && except.indexOf(ch) != -1) {
				return ch;
			}
			return "\\" + ch;
		});
	};
	dojo.regexp.buildGroupRE = function (arr, re, nonCapture) {
		if (!(arr instanceof Array)) {
			return re(arr);
		}
		var b = [];
		for (var i = 0; i < arr.length; i++) {
			b.push(re(arr[i]));
		}
		return dojo.regexp.group(b.join("|"), nonCapture);
	};
	dojo.regexp.group = function (expression, nonCapture) {
		return "(" + (nonCapture ? "?:" : "") + expression + ")";
	};
}
if (!dojo._hasResource["dojo.cookie"]) {
	dojo._hasResource["dojo.cookie"] = true;
	dojo.provide("dojo.cookie");
	dojo.cookie = function (name, value, props) {
		var c = document.cookie;
		if (arguments.length == 1) {
			var matches = c.match(new RegExp("(?:^|; )" + dojo.regexp.escapeString(name) + "=([^;]*)"));
			return matches ? decodeURIComponent(matches[1]) : undefined;
		} else {
			props = props || {};
			var exp = props.expires;
			if (typeof exp == "number") {
				var d = new Date();
				d.setTime(d.getTime() + exp * 24 * 60 * 60 * 1000);
				exp = props.expires = d;
			}
			if (exp && exp.toUTCString) {
				props.expires = exp.toUTCString();
			}
			value = encodeURIComponent(value);
			var updatedCookie = name + "=" + value;
			for (propName in props) {
				updatedCookie += "; " + propName;
				var propValue = props[propName];
				if (propValue !== true) {
					updatedCookie += "=" + propValue;
				}
			}
			document.cookie = updatedCookie;
		}
	};
	dojo.cookie.isSupported = function () {
		if (!("cookieEnabled" in navigator)) {
			this("__djCookieTest__", "CookiesAllowed");
			navigator.cookieEnabled = this("__djCookieTest__") == "CookiesAllowed";
			if (navigator.cookieEnabled) {
				this("__djCookieTest__", "", {expires:-1});
			}
		}
		return navigator.cookieEnabled;
	};
}
dojo.i18n._preloadLocalizations("dojo.nls.racedesign", ["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"]);


