if (!dojo._hasResource["dijit._base.manager"]) { // _hasResource checks added // by build. Do not use // _hasResource directly in // your code. dojo._hasResource["dijit._base.manager"] = true; dojo.provide("dijit._base.manager"); dojo.declare("dijit.WidgetSet", null, { constructor : function() { // summary: // A set of widgets indexed by id this._hash = {}; }, add : function(/* Widget */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(/* String */id) { delete this._hash[id]; }, forEach : function(/* Function */func) { for (var id in this._hash) { func(this._hash[id]); } }, filter : function(/* Function */filter) { var res = new dijit.WidgetSet(); this.forEach(function(widget) { if (filter(widget)) { res.add(widget); } }); return res; // dijit.WidgetSet }, byId : function(/* String */id) { return this._hash[id]; }, byClass : function(/* String */cls) { return this.filter(function(widget) { return widget.declaredClass == cls; }); // dijit.WidgetSet } }); // registry: list of all widgets on page dijit.registry = new dijit.WidgetSet(); dijit._widgetTypeCtr = {}; dijit.getUniqueId = function(/* String */widgetType) { // summary // Generates a unique id for a given widgetType var id; do { id = widgetType + "_" + (dijit._widgetTypeCtr[widgetType] !== undefined ? ++dijit._widgetTypeCtr[widgetType] : dijit._widgetTypeCtr[widgetType] = 0); } while (dijit.byId(id)); return id; // String }; if (dojo.isIE) { // Only run this for IE because we think it's only necessary in that // case, // and because it causes problems on FF. See bug #3531 for details. dojo.addOnUnload(function() { dijit.registry.forEach(function(widget) { widget.destroy(); }); }); } dijit.byId = function(/* String|Widget */id) { // summary: // Returns a widget by its id, or if passed a widget, no-op (like // dojo.byId()) return (dojo.isString(id)) ? dijit.registry.byId(id) : id; // Widget }; dijit.byNode = function(/* DOMNode */node) { // summary: // Returns the widget as referenced by node return dijit.registry.byId(node.getAttribute("widgetId")); // Widget }; dijit.getEnclosingWidget = function(/* DOMNode */node) { // summary: // Returns the widget whose dom tree contains node or null if // the node is not contained within the dom tree of any widget while (node) { if (node.getAttribute && node.getAttribute("widgetId")) { return dijit.registry.byId(node.getAttribute("widgetId")); } node = node.parentNode; } return null; }; }