a:46:{s:9:"#provides";s:13:"dijit.Tooltip";s:9:"#resource";s:10:"Tooltip.js";s:9:"#requires";a:2:{i:0;a:2:{i:0;s:6:"common";i:1;s:13:"dijit._Widget";}i:1;a:2:{i:0;s:6:"common";i:1;s:16:"dijit._Templated";}}s:20:"dijit._MasterTooltip";a:5:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:13:"dijit._Widget";}s:4:"call";a:2:{i:0;s:13:"dijit._Widget";i:1;s:16:"dijit._Templated";}}s:6:"mixins";a:1:{s:9:"prototype";a:1:{i:0;s:26:"dijit._Templated.prototype";}}s:7:"summary";s:168:"Internal widget that holds the actual tooltip markup, which occurs once per page. Called by Tooltip widgets which are just containers to hold the markup tags: protected";s:9:"classlike";b:1;}s:29:"dijit._MasterTooltip.duration";a:3:{s:9:"prototype";s:20:"dijit._MasterTooltip";s:4:"type";s:7:"Integer";s:7:"summary";s:32:"Milliseconds to fade in/fade out";}s:33:"dijit._MasterTooltip.templatePath";a:2:{s:9:"prototype";s:20:"dijit._MasterTooltip";s:7:"summary";s:0:"";}s:31:"dijit._MasterTooltip.postCreate";a:4:{s:9:"prototype";s:20:"dijit._MasterTooltip";s:4:"type";s:8:"Function";s:6:"source";s:382:" dojo.body().appendChild(this.domNode); this.bgIframe = new dijit.BackgroundIframe(this.domNode); // Setup fade-in and fade-out functions. 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") });";s:7:"summary";s:0:"";}s:25:"dijit._MasterTooltip.show";a:5:{s:9:"prototype";s:20:"dijit._MasterTooltip";s:4:"type";s:8:"Function";s:10:"parameters";a:3:{s:9:"innerHTML";a:1:{s:4:"type";s:6:"String";}s:10:"aroundNode";a:1:{s:4:"type";s:7:"DomNode";}s:8:"position";a:2:{s:8:"optional";b:1;s:4:"type";s:8:"String[]";}}s:6:"source";s:1692:" if(this.aroundNode && this.aroundNode === aroundNode){ return; } if(this.fadeOut.status() == "playing"){ // previous tooltip is being hidden; wait until the hide completes then show new one this._onDeck=arguments; return; } this.containerNode.innerHTML=innerHTML; // Firefox bug. when innerHTML changes to be shorter than previous // one, the node size will not be updated until it moves. this.domNode.style.top = (this.domNode.offsetTop + 1) + "px"; // position the element and change CSS according to position[] (a list of positions to try) 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": // first try to align left borders, next try to align right borders (or reverse for RTL mode) align[ltr ? "BL" : "BR"] = ltr ? "TL" : "TR"; align[ltr ? "BR" : "BL"] = ltr ? "TR" : "TL"; break; case "above": default: // first try to align left borders, next try to align right borders (or reverse for RTL mode) 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")); // show it dojo.style(this.domNode, "opacity", 0); this.fadeIn.play(); this.isShowingNow = true; this.aroundNode = aroundNode;";s:7:"summary";s:124:"Display tooltip w/specified contents to right of specified node (To left if there's no space on the right, or if LTR==right)";}s:27:"dijit._MasterTooltip.orient";a:6:{s:9:"prototype";s:20:"dijit._MasterTooltip";s:4:"type";s:8:"Function";s:10:"parameters";a:3:{s:4:"node";a:1:{s:4:"type";s:7:"DomNode";}s:12:"aroundCorner";a:1:{s:4:"type";s:6:"String";}s:13:"tooltipCorner";a:1:{s:4:"type";s:6:"String";}}s:6:"source";s:372:" 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];";s:7:"summary";s:117:"Private function to set CSS for tooltip node based on which position it's in. This is called by the dijit popup code.";s:4:"tags";s:9:"protected";}s:28:"dijit._MasterTooltip._onShow";a:6:{s:9:"prototype";s:20:"dijit._MasterTooltip";s:4:"type";s:8:"Function";s:6:"source";s:117:" if(dojo.isIE){ // the arrow won't show up on a node w/an opacity filter this.domNode.style.filter=""; }";s:7:"summary";s:34:"Called at end of fade-in operation";s:4:"tags";s:9:"protected";s:7:"private";b:1;}s:25:"dijit._MasterTooltip.hide";a:5:{s:9:"prototype";s:20:"dijit._MasterTooltip";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:10:"aroundNode";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:494:" if(this._onDeck && this._onDeck[1] == aroundNode){ // this hide request is for a show() that hasn't even started yet; // just cancel the pending show() this._onDeck=null; }else if(this.aroundNode === aroundNode){ // this hide request is for the currently displayed tooltip this.fadeIn.stop(); this.isShowingNow = false; this.aroundNode = null; this.fadeOut.play(); }else{ // just ignore the call, it's for a tooltip that has already been erased }";s:7:"summary";s:16:"Hide the tooltip";}s:28:"dijit._MasterTooltip._onHide";a:7:{s:9:"prototype";s:20:"dijit._MasterTooltip";s:4:"type";s:8:"Function";s:6:"source";s:206:" this.domNode.style.cssText=""; // to position offscreen again if(this._onDeck){ // a show request has been queued up; do it now this.show.apply(this, this._onDeck); this._onDeck=null; }";s:7:"summary";s:35:"Called at end of fade-out operation";s:4:"tags";s:9:"protected";s:6:"chains";a:1:{s:4:"call";a:1:{i:0;s:9:"this.show";}}s:7:"private";b:1;}s:29:"dijit._MasterTooltip.bgIframe";a:2:{s:8:"instance";s:20:"dijit._MasterTooltip";s:7:"summary";s:0:"";}s:27:"dijit._MasterTooltip.fadeIn";a:2:{s:8:"instance";s:20:"dijit._MasterTooltip";s:7:"summary";s:0:"";}s:28:"dijit._MasterTooltip.fadeOut";a:2:{s:8:"instance";s:20:"dijit._MasterTooltip";s:7:"summary";s:0:"";}s:31:"dijit._MasterTooltip.aroundNode";a:2:{s:8:"instance";s:20:"dijit._MasterTooltip";s:7:"summary";s:0:"";}s:28:"dijit._MasterTooltip._onDeck";a:3:{s:8:"instance";s:20:"dijit._MasterTooltip";s:7:"private";b:1;s:7:"summary";s:0:"";}s:44:"dijit._MasterTooltip.containerNode.innerHTML";a:2:{s:8:"instance";s:20:"dijit._MasterTooltip";s:7:"summary";s:0:"";}s:38:"dijit._MasterTooltip.domNode.style.top";a:2:{s:8:"instance";s:20:"dijit._MasterTooltip";s:7:"summary";s:0:"";}s:33:"dijit._MasterTooltip.isShowingNow";a:2:{s:8:"instance";s:20:"dijit._MasterTooltip";s:7:"summary";s:0:"";}s:41:"dijit._MasterTooltip.domNode.style.filter";a:2:{s:8:"instance";s:20:"dijit._MasterTooltip";s:7:"summary";s:0:"";}s:42:"dijit._MasterTooltip.domNode.style.cssText";a:2:{s:8:"instance";s:20:"dijit._MasterTooltip";s:7:"summary";s:0:"";}s:13:"dijit.Tooltip";a:4:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:13:"dijit._Widget";}s:4:"call";a:1:{i:0;s:13:"dijit._Widget";}}s:9:"classlike";b:1;s:7:"summary";s:0:"";}s:19:"dijit.Tooltip.label";a:2:{s:9:"prototype";s:13:"dijit.Tooltip";s:7:"summary";s:0:"";}s:23:"dijit.Tooltip.showDelay";a:3:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:7:"Integer";s:7:"summary";s:107:"Number of milliseconds to wait after hovering over/focusing on the object, before the tooltip is displayed.";}s:23:"dijit.Tooltip.connectId";a:5:{s:9:"prototype";s:13:"dijit.Tooltip";s:8:"instance";s:13:"dijit.Tooltip";s:4:"tags";a:1:{i:0;s:5:"const";}s:4:"type";s:7:"String[";s:7:"summary";s:306:"Id's of domNodes to attach the tooltip to. When user hovers over any of the specified dom nodes, the tooltip will appear. Note: Currently connectId can only be specified on initialization, it cannot be changed via attr('connectId', ...) Note: in 2.0 this will be renamed to connectIds for less confusion.";}s:22:"dijit.Tooltip.position";a:3:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:7:"String[";s:7:"summary";s:85:"See description of `dijit.Tooltip.defaultPosition` for details on position parameter.";}s:31:"dijit.Tooltip._setConnectIdAttr";a:6:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:3:"ids";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:7024:"dojo.provide("dijit.Tooltip"); dojo.require("dijit._Widget"); dojo.require("dijit._Templated"); dojo.declare( "dijit._MasterTooltip", [dijit._Widget, dijit._Templated], { // summary: // Internal widget that holds the actual tooltip markup, // which occurs once per page. // Called by Tooltip widgets which are just containers to hold // the markup // tags: // protected // duration: Integer // Milliseconds to fade in/fade out duration: dijit.defaultDuration, templatePath: dojo.moduleUrl("dijit", "templates/Tooltip.html"), postCreate: function(){ dojo.body().appendChild(this.domNode); this.bgIframe = new dijit.BackgroundIframe(this.domNode); // Setup fade-in and fade-out functions. 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(/*String*/ innerHTML, /*DomNode*/ aroundNode, /*String[]?*/ position){ // summary: // Display tooltip w/specified contents to right of specified node // (To left if there's no space on the right, or if LTR==right) if(this.aroundNode && this.aroundNode === aroundNode){ return; } if(this.fadeOut.status() == "playing"){ // previous tooltip is being hidden; wait until the hide completes then show new one this._onDeck=arguments; return; } this.containerNode.innerHTML=innerHTML; // Firefox bug. when innerHTML changes to be shorter than previous // one, the node size will not be updated until it moves. this.domNode.style.top = (this.domNode.offsetTop + 1) + "px"; // position the element and change CSS according to position[] (a list of positions to try) 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": // first try to align left borders, next try to align right borders (or reverse for RTL mode) align[ltr ? "BL" : "BR"] = ltr ? "TL" : "TR"; align[ltr ? "BR" : "BL"] = ltr ? "TR" : "TL"; break; case "above": default: // first try to align left borders, next try to align right borders (or reverse for RTL mode) 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")); // show it dojo.style(this.domNode, "opacity", 0); this.fadeIn.play(); this.isShowingNow = true; this.aroundNode = aroundNode; }, orient: function(/* DomNode */ node, /* String */ aroundCorner, /* String */ tooltipCorner){ // summary: // Private function to set CSS for tooltip node based on which position it's in. // This is called by the dijit popup code. // tags: // protected 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(){ // summary: // Called at end of fade-in operation // tags: // protected if(dojo.isIE){ // the arrow won't show up on a node w/an opacity filter this.domNode.style.filter=""; } }, hide: function(aroundNode){ // summary: // Hide the tooltip if(this._onDeck && this._onDeck[1] == aroundNode){ // this hide request is for a show() that hasn't even started yet; // just cancel the pending show() this._onDeck=null; }else if(this.aroundNode === aroundNode){ // this hide request is for the currently displayed tooltip this.fadeIn.stop(); this.isShowingNow = false; this.aroundNode = null; this.fadeOut.play(); }else{ // just ignore the call, it's for a tooltip that has already been erased } }, _onHide: function(){ // summary: // Called at end of fade-out operation // tags: // protected this.domNode.style.cssText=""; // to position offscreen again if(this._onDeck){ // a show request has been queued up; do it now this.show.apply(this, this._onDeck); this._onDeck=null; } } } ); dijit.showTooltip = function(/*String*/ innerHTML, /*DomNode*/ aroundNode, /*String[]?*/ position){ // summary: // Display tooltip w/specified contents in specified position. // See description of dijit.Tooltip.defaultPosition for details on position parameter. // If position is not specified then dijit.Tooltip.defaultPosition is used. if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); } return dijit._masterTT.show(innerHTML, aroundNode, position); }; dijit.hideTooltip = function(aroundNode){ // summary: // Hide the tooltip if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); } return dijit._masterTT.hide(aroundNode); }; dojo.declare( "dijit.Tooltip", dijit._Widget, { // summary // Pops up a tooltip (a help message) when you hover over a node. // label: String // Text to display in the tooltip. // Specified as innerHTML when creating the widget from markup. label: "", // showDelay: Integer // Number of milliseconds to wait after hovering over/focusing on the object, before // the tooltip is displayed. showDelay: 400, // connectId: [const] String[] // Id's of domNodes to attach the tooltip to. // When user hovers over any of the specified dom nodes, the tooltip will appear. // // Note: Currently connectId can only be specified on initialization, it cannot // be changed via attr('connectId', ...) // // Note: in 2.0 this will be renamed to connectIds for less confusion. connectId: [], // position: String[] // See description of `dijit.Tooltip.defaultPosition` for details on position parameter. position: [], _setConnectIdAttr: function(ids){ // TODO: erase old conections this._connectNodes = []; // TODO: rename connectId to connectIds for 2.0, and remove this code converting from string to array this.connectId = dojo.isArrayLike(ids) ? ids : [ids]; dojo.forEach(this.connectId, function(id) { var node = dojo.byId(id); if (node) { this._connectNodes.push(node); dojo.forEach(["onMouseEnter", "onMouseLeave", "onFocus", "onBlur"], function(event){ this.connect(node, event.toLowerCase(), "_"+event); }, this); if(dojo.isIE){ // BiDi workaround node.style.zoom = 1; } } }, this);";s:7:"private";b:1;s:7:"summary";s:0:"";}s:24:"dijit.Tooltip.postCreate";a:4:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:8:"Function";s:6:"source";s:50:" dojo.addClass(this.domNode,"dijitTooltipData");";s:7:"summary";s:0:"";}s:27:"dijit.Tooltip._onMouseEnter";a:7:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:5:"Event";}}s:6:"source";s:20:" this._onHover(e);";s:7:"summary";s:47:"Handler for mouseenter event on the target node";s:4:"tags";s:7:"private";s:7:"private";b:1;}s:27:"dijit.Tooltip._onMouseLeave";a:7:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:5:"Event";}}s:6:"source";s:22:" this._onUnHover(e);";s:7:"summary";s:47:"Handler for mouseleave event on the target node";s:4:"tags";s:7:"private";s:7:"private";b:1;}s:22:"dijit.Tooltip._onFocus";a:6:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:5:"Event";}}s:6:"source";s:7867:"dojo.provide("dijit.Tooltip"); dojo.require("dijit._Widget"); dojo.require("dijit._Templated"); dojo.declare( "dijit._MasterTooltip", [dijit._Widget, dijit._Templated], { // summary: // Internal widget that holds the actual tooltip markup, // which occurs once per page. // Called by Tooltip widgets which are just containers to hold // the markup // tags: // protected // duration: Integer // Milliseconds to fade in/fade out duration: dijit.defaultDuration, templatePath: dojo.moduleUrl("dijit", "templates/Tooltip.html"), postCreate: function(){ dojo.body().appendChild(this.domNode); this.bgIframe = new dijit.BackgroundIframe(this.domNode); // Setup fade-in and fade-out functions. 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(/*String*/ innerHTML, /*DomNode*/ aroundNode, /*String[]?*/ position){ // summary: // Display tooltip w/specified contents to right of specified node // (To left if there's no space on the right, or if LTR==right) if(this.aroundNode && this.aroundNode === aroundNode){ return; } if(this.fadeOut.status() == "playing"){ // previous tooltip is being hidden; wait until the hide completes then show new one this._onDeck=arguments; return; } this.containerNode.innerHTML=innerHTML; // Firefox bug. when innerHTML changes to be shorter than previous // one, the node size will not be updated until it moves. this.domNode.style.top = (this.domNode.offsetTop + 1) + "px"; // position the element and change CSS according to position[] (a list of positions to try) 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": // first try to align left borders, next try to align right borders (or reverse for RTL mode) align[ltr ? "BL" : "BR"] = ltr ? "TL" : "TR"; align[ltr ? "BR" : "BL"] = ltr ? "TR" : "TL"; break; case "above": default: // first try to align left borders, next try to align right borders (or reverse for RTL mode) 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")); // show it dojo.style(this.domNode, "opacity", 0); this.fadeIn.play(); this.isShowingNow = true; this.aroundNode = aroundNode; }, orient: function(/* DomNode */ node, /* String */ aroundCorner, /* String */ tooltipCorner){ // summary: // Private function to set CSS for tooltip node based on which position it's in. // This is called by the dijit popup code. // tags: // protected 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(){ // summary: // Called at end of fade-in operation // tags: // protected if(dojo.isIE){ // the arrow won't show up on a node w/an opacity filter this.domNode.style.filter=""; } }, hide: function(aroundNode){ // summary: // Hide the tooltip if(this._onDeck && this._onDeck[1] == aroundNode){ // this hide request is for a show() that hasn't even started yet; // just cancel the pending show() this._onDeck=null; }else if(this.aroundNode === aroundNode){ // this hide request is for the currently displayed tooltip this.fadeIn.stop(); this.isShowingNow = false; this.aroundNode = null; this.fadeOut.play(); }else{ // just ignore the call, it's for a tooltip that has already been erased } }, _onHide: function(){ // summary: // Called at end of fade-out operation // tags: // protected this.domNode.style.cssText=""; // to position offscreen again if(this._onDeck){ // a show request has been queued up; do it now this.show.apply(this, this._onDeck); this._onDeck=null; } } } ); dijit.showTooltip = function(/*String*/ innerHTML, /*DomNode*/ aroundNode, /*String[]?*/ position){ // summary: // Display tooltip w/specified contents in specified position. // See description of dijit.Tooltip.defaultPosition for details on position parameter. // If position is not specified then dijit.Tooltip.defaultPosition is used. if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); } return dijit._masterTT.show(innerHTML, aroundNode, position); }; dijit.hideTooltip = function(aroundNode){ // summary: // Hide the tooltip if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); } return dijit._masterTT.hide(aroundNode); }; dojo.declare( "dijit.Tooltip", dijit._Widget, { // summary // Pops up a tooltip (a help message) when you hover over a node. // label: String // Text to display in the tooltip. // Specified as innerHTML when creating the widget from markup. label: "", // showDelay: Integer // Number of milliseconds to wait after hovering over/focusing on the object, before // the tooltip is displayed. showDelay: 400, // connectId: [const] String[] // Id's of domNodes to attach the tooltip to. // When user hovers over any of the specified dom nodes, the tooltip will appear. // // Note: Currently connectId can only be specified on initialization, it cannot // be changed via attr('connectId', ...) // // Note: in 2.0 this will be renamed to connectIds for less confusion. connectId: [], // position: String[] // See description of `dijit.Tooltip.defaultPosition` for details on position parameter. position: [], _setConnectIdAttr: function(ids){ // TODO: erase old conections this._connectNodes = []; // TODO: rename connectId to connectIds for 2.0, and remove this code converting from string to array this.connectId = dojo.isArrayLike(ids) ? ids : [ids]; dojo.forEach(this.connectId, function(id) { var node = dojo.byId(id); if (node) { this._connectNodes.push(node); dojo.forEach(["onMouseEnter", "onMouseLeave", "onFocus", "onBlur"], function(event){ this.connect(node, event.toLowerCase(), "_"+event); }, this); if(dojo.isIE){ // BiDi workaround node.style.zoom = 1; } } }, this); }, postCreate: function(){ dojo.addClass(this.domNode,"dijitTooltipData"); }, _onMouseEnter: function(/*Event*/ e){ // summary: // Handler for mouseenter event on the target node // tags: // private this._onHover(e); }, _onMouseLeave: function(/*Event*/ e){ // summary: // Handler for mouseleave event on the target node // tags: // private this._onUnHover(e); }, _onFocus: function(/*Event*/ e){ // summary: // Handler for focus event on the target node // tags: // private // TODO: this is dangerously named, as the dijit focus manager calls // _onFocus() on any widget that gets focus (whereas in this class we // are connecting onfocus on the *target* DOM node to this method this._focus = true; this._onHover(e); this.inherited(arguments);";s:7:"summary";s:42:"Handler for focus event on the target node";s:7:"private";b:1;}s:21:"dijit.Tooltip._onBlur";a:6:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:5:"Event";}}s:6:"source";s:8120:"dojo.provide("dijit.Tooltip"); dojo.require("dijit._Widget"); dojo.require("dijit._Templated"); dojo.declare( "dijit._MasterTooltip", [dijit._Widget, dijit._Templated], { // summary: // Internal widget that holds the actual tooltip markup, // which occurs once per page. // Called by Tooltip widgets which are just containers to hold // the markup // tags: // protected // duration: Integer // Milliseconds to fade in/fade out duration: dijit.defaultDuration, templatePath: dojo.moduleUrl("dijit", "templates/Tooltip.html"), postCreate: function(){ dojo.body().appendChild(this.domNode); this.bgIframe = new dijit.BackgroundIframe(this.domNode); // Setup fade-in and fade-out functions. 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(/*String*/ innerHTML, /*DomNode*/ aroundNode, /*String[]?*/ position){ // summary: // Display tooltip w/specified contents to right of specified node // (To left if there's no space on the right, or if LTR==right) if(this.aroundNode && this.aroundNode === aroundNode){ return; } if(this.fadeOut.status() == "playing"){ // previous tooltip is being hidden; wait until the hide completes then show new one this._onDeck=arguments; return; } this.containerNode.innerHTML=innerHTML; // Firefox bug. when innerHTML changes to be shorter than previous // one, the node size will not be updated until it moves. this.domNode.style.top = (this.domNode.offsetTop + 1) + "px"; // position the element and change CSS according to position[] (a list of positions to try) 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": // first try to align left borders, next try to align right borders (or reverse for RTL mode) align[ltr ? "BL" : "BR"] = ltr ? "TL" : "TR"; align[ltr ? "BR" : "BL"] = ltr ? "TR" : "TL"; break; case "above": default: // first try to align left borders, next try to align right borders (or reverse for RTL mode) 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")); // show it dojo.style(this.domNode, "opacity", 0); this.fadeIn.play(); this.isShowingNow = true; this.aroundNode = aroundNode; }, orient: function(/* DomNode */ node, /* String */ aroundCorner, /* String */ tooltipCorner){ // summary: // Private function to set CSS for tooltip node based on which position it's in. // This is called by the dijit popup code. // tags: // protected 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(){ // summary: // Called at end of fade-in operation // tags: // protected if(dojo.isIE){ // the arrow won't show up on a node w/an opacity filter this.domNode.style.filter=""; } }, hide: function(aroundNode){ // summary: // Hide the tooltip if(this._onDeck && this._onDeck[1] == aroundNode){ // this hide request is for a show() that hasn't even started yet; // just cancel the pending show() this._onDeck=null; }else if(this.aroundNode === aroundNode){ // this hide request is for the currently displayed tooltip this.fadeIn.stop(); this.isShowingNow = false; this.aroundNode = null; this.fadeOut.play(); }else{ // just ignore the call, it's for a tooltip that has already been erased } }, _onHide: function(){ // summary: // Called at end of fade-out operation // tags: // protected this.domNode.style.cssText=""; // to position offscreen again if(this._onDeck){ // a show request has been queued up; do it now this.show.apply(this, this._onDeck); this._onDeck=null; } } } ); dijit.showTooltip = function(/*String*/ innerHTML, /*DomNode*/ aroundNode, /*String[]?*/ position){ // summary: // Display tooltip w/specified contents in specified position. // See description of dijit.Tooltip.defaultPosition for details on position parameter. // If position is not specified then dijit.Tooltip.defaultPosition is used. if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); } return dijit._masterTT.show(innerHTML, aroundNode, position); }; dijit.hideTooltip = function(aroundNode){ // summary: // Hide the tooltip if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); } return dijit._masterTT.hide(aroundNode); }; dojo.declare( "dijit.Tooltip", dijit._Widget, { // summary // Pops up a tooltip (a help message) when you hover over a node. // label: String // Text to display in the tooltip. // Specified as innerHTML when creating the widget from markup. label: "", // showDelay: Integer // Number of milliseconds to wait after hovering over/focusing on the object, before // the tooltip is displayed. showDelay: 400, // connectId: [const] String[] // Id's of domNodes to attach the tooltip to. // When user hovers over any of the specified dom nodes, the tooltip will appear. // // Note: Currently connectId can only be specified on initialization, it cannot // be changed via attr('connectId', ...) // // Note: in 2.0 this will be renamed to connectIds for less confusion. connectId: [], // position: String[] // See description of `dijit.Tooltip.defaultPosition` for details on position parameter. position: [], _setConnectIdAttr: function(ids){ // TODO: erase old conections this._connectNodes = []; // TODO: rename connectId to connectIds for 2.0, and remove this code converting from string to array this.connectId = dojo.isArrayLike(ids) ? ids : [ids]; dojo.forEach(this.connectId, function(id) { var node = dojo.byId(id); if (node) { this._connectNodes.push(node); dojo.forEach(["onMouseEnter", "onMouseLeave", "onFocus", "onBlur"], function(event){ this.connect(node, event.toLowerCase(), "_"+event); }, this); if(dojo.isIE){ // BiDi workaround node.style.zoom = 1; } } }, this); }, postCreate: function(){ dojo.addClass(this.domNode,"dijitTooltipData"); }, _onMouseEnter: function(/*Event*/ e){ // summary: // Handler for mouseenter event on the target node // tags: // private this._onHover(e); }, _onMouseLeave: function(/*Event*/ e){ // summary: // Handler for mouseleave event on the target node // tags: // private this._onUnHover(e); }, _onFocus: function(/*Event*/ e){ // summary: // Handler for focus event on the target node // tags: // private // TODO: this is dangerously named, as the dijit focus manager calls // _onFocus() on any widget that gets focus (whereas in this class we // are connecting onfocus on the *target* DOM node to this method this._focus = true; this._onHover(e); this.inherited(arguments); }, _onBlur: function(/*Event*/ e){ // summary: // Handler for blur event on the target node // tags: // private // TODO: rename; see above comment this._focus = false; this._onUnHover(e); this.inherited(arguments);";s:7:"summary";s:41:"Handler for blur event on the target node";s:7:"private";b:1;}s:22:"dijit.Tooltip._onHover";a:7:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:5:"Event";}}s:6:"source";s:155:" if(!this._showTimer){ var target = e.target; this._showTimer = setTimeout(dojo.hitch(this, function(){this.open(target)}), this.showDelay); }";s:7:"summary";s:137:"Despite the name of this method, it actually handles both hover and focus events on the target node, setting a timer to show the tooltip.";s:4:"tags";s:7:"private";s:7:"private";b:1;}s:24:"dijit.Tooltip._onUnHover";a:6:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:5:"Event";}}s:6:"source";s:8989:"dojo.provide("dijit.Tooltip"); dojo.require("dijit._Widget"); dojo.require("dijit._Templated"); dojo.declare( "dijit._MasterTooltip", [dijit._Widget, dijit._Templated], { // summary: // Internal widget that holds the actual tooltip markup, // which occurs once per page. // Called by Tooltip widgets which are just containers to hold // the markup // tags: // protected // duration: Integer // Milliseconds to fade in/fade out duration: dijit.defaultDuration, templatePath: dojo.moduleUrl("dijit", "templates/Tooltip.html"), postCreate: function(){ dojo.body().appendChild(this.domNode); this.bgIframe = new dijit.BackgroundIframe(this.domNode); // Setup fade-in and fade-out functions. 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(/*String*/ innerHTML, /*DomNode*/ aroundNode, /*String[]?*/ position){ // summary: // Display tooltip w/specified contents to right of specified node // (To left if there's no space on the right, or if LTR==right) if(this.aroundNode && this.aroundNode === aroundNode){ return; } if(this.fadeOut.status() == "playing"){ // previous tooltip is being hidden; wait until the hide completes then show new one this._onDeck=arguments; return; } this.containerNode.innerHTML=innerHTML; // Firefox bug. when innerHTML changes to be shorter than previous // one, the node size will not be updated until it moves. this.domNode.style.top = (this.domNode.offsetTop + 1) + "px"; // position the element and change CSS according to position[] (a list of positions to try) 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": // first try to align left borders, next try to align right borders (or reverse for RTL mode) align[ltr ? "BL" : "BR"] = ltr ? "TL" : "TR"; align[ltr ? "BR" : "BL"] = ltr ? "TR" : "TL"; break; case "above": default: // first try to align left borders, next try to align right borders (or reverse for RTL mode) 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")); // show it dojo.style(this.domNode, "opacity", 0); this.fadeIn.play(); this.isShowingNow = true; this.aroundNode = aroundNode; }, orient: function(/* DomNode */ node, /* String */ aroundCorner, /* String */ tooltipCorner){ // summary: // Private function to set CSS for tooltip node based on which position it's in. // This is called by the dijit popup code. // tags: // protected 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(){ // summary: // Called at end of fade-in operation // tags: // protected if(dojo.isIE){ // the arrow won't show up on a node w/an opacity filter this.domNode.style.filter=""; } }, hide: function(aroundNode){ // summary: // Hide the tooltip if(this._onDeck && this._onDeck[1] == aroundNode){ // this hide request is for a show() that hasn't even started yet; // just cancel the pending show() this._onDeck=null; }else if(this.aroundNode === aroundNode){ // this hide request is for the currently displayed tooltip this.fadeIn.stop(); this.isShowingNow = false; this.aroundNode = null; this.fadeOut.play(); }else{ // just ignore the call, it's for a tooltip that has already been erased } }, _onHide: function(){ // summary: // Called at end of fade-out operation // tags: // protected this.domNode.style.cssText=""; // to position offscreen again if(this._onDeck){ // a show request has been queued up; do it now this.show.apply(this, this._onDeck); this._onDeck=null; } } } ); dijit.showTooltip = function(/*String*/ innerHTML, /*DomNode*/ aroundNode, /*String[]?*/ position){ // summary: // Display tooltip w/specified contents in specified position. // See description of dijit.Tooltip.defaultPosition for details on position parameter. // If position is not specified then dijit.Tooltip.defaultPosition is used. if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); } return dijit._masterTT.show(innerHTML, aroundNode, position); }; dijit.hideTooltip = function(aroundNode){ // summary: // Hide the tooltip if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); } return dijit._masterTT.hide(aroundNode); }; dojo.declare( "dijit.Tooltip", dijit._Widget, { // summary // Pops up a tooltip (a help message) when you hover over a node. // label: String // Text to display in the tooltip. // Specified as innerHTML when creating the widget from markup. label: "", // showDelay: Integer // Number of milliseconds to wait after hovering over/focusing on the object, before // the tooltip is displayed. showDelay: 400, // connectId: [const] String[] // Id's of domNodes to attach the tooltip to. // When user hovers over any of the specified dom nodes, the tooltip will appear. // // Note: Currently connectId can only be specified on initialization, it cannot // be changed via attr('connectId', ...) // // Note: in 2.0 this will be renamed to connectIds for less confusion. connectId: [], // position: String[] // See description of `dijit.Tooltip.defaultPosition` for details on position parameter. position: [], _setConnectIdAttr: function(ids){ // TODO: erase old conections this._connectNodes = []; // TODO: rename connectId to connectIds for 2.0, and remove this code converting from string to array this.connectId = dojo.isArrayLike(ids) ? ids : [ids]; dojo.forEach(this.connectId, function(id) { var node = dojo.byId(id); if (node) { this._connectNodes.push(node); dojo.forEach(["onMouseEnter", "onMouseLeave", "onFocus", "onBlur"], function(event){ this.connect(node, event.toLowerCase(), "_"+event); }, this); if(dojo.isIE){ // BiDi workaround node.style.zoom = 1; } } }, this); }, postCreate: function(){ dojo.addClass(this.domNode,"dijitTooltipData"); }, _onMouseEnter: function(/*Event*/ e){ // summary: // Handler for mouseenter event on the target node // tags: // private this._onHover(e); }, _onMouseLeave: function(/*Event*/ e){ // summary: // Handler for mouseleave event on the target node // tags: // private this._onUnHover(e); }, _onFocus: function(/*Event*/ e){ // summary: // Handler for focus event on the target node // tags: // private // TODO: this is dangerously named, as the dijit focus manager calls // _onFocus() on any widget that gets focus (whereas in this class we // are connecting onfocus on the *target* DOM node to this method this._focus = true; this._onHover(e); this.inherited(arguments); }, _onBlur: function(/*Event*/ e){ // summary: // Handler for blur event on the target node // tags: // private // TODO: rename; see above comment this._focus = false; this._onUnHover(e); this.inherited(arguments); }, _onHover: function(/*Event*/ e){ // summary: // Despite the name of this method, it actually handles both hover and focus // events on the target node, setting a timer to show the tooltip. // tags: // private if(!this._showTimer){ var target = e.target; this._showTimer = setTimeout(dojo.hitch(this, function(){this.open(target)}), this.showDelay); } }, _onUnHover: function(/*Event*/ e){ // summary: // Despite the name of this method, it actually handles both mouseleave and blur // events on the target node, hiding the tooltip. // tags: // private // keep a tooltip open if the associated element still has focus (even though the // mouse moved away) if(this._focus){ return; } if(this._showTimer){ clearTimeout(this._showTimer); delete this._showTimer; } this.close();";s:7:"summary";s:124:"Despite the name of this method, it actually handles both mouseleave and blur events on the target node, hiding the tooltip.";s:7:"private";b:1;}s:18:"dijit.Tooltip.open";a:6:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:6:"target";a:1:{s:4:"type";s:7:"DomNode";}}s:6:"source";s:283:" 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;";s:7:"summary";s:49:"Display the tooltip; usually not called directly.";s:4:"tags";s:7:"private";}s:19:"dijit.Tooltip.close";a:5:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:8:"Function";s:6:"source";s:296:" if(this._connectNode){ // if tooltip is currently shown dijit.hideTooltip(this._connectNode); delete this._connectNode; } if(this._showTimer){ // if tooltip is scheduled to be shown (after a brief delay) clearTimeout(this._showTimer); delete this._showTimer; }";s:7:"summary";s:52:"Hide the tooltip or cancel timer for show of tooltip";s:4:"tags";s:7:"private";}s:26:"dijit.Tooltip.uninitialize";a:4:{s:9:"prototype";s:13:"dijit.Tooltip";s:4:"type";s:8:"Function";s:6:"source";s:16:" this.close();";s:7:"summary";s:0:"";}s:27:"dijit.Tooltip._connectNodes";a:3:{s:8:"instance";s:13:"dijit.Tooltip";s:7:"private";b:1;s:7:"summary";s:0:"";}s:20:"dijit.Tooltip._focus";a:3:{s:8:"instance";s:13:"dijit.Tooltip";s:7:"private";b:1;s:7:"summary";s:0:"";}s:24:"dijit.Tooltip._showTimer";a:3:{s:8:"instance";s:13:"dijit.Tooltip";s:7:"private";b:1;s:7:"summary";s:0:"";}s:26:"dijit.Tooltip._connectNode";a:3:{s:8:"instance";s:13:"dijit.Tooltip";s:7:"private";b:1;s:7:"summary";s:0:"";}s:17:"dijit.showTooltip";a:4:{s:4:"type";s:8:"Function";s:10:"parameters";a:3:{s:9:"innerHTML";a:1:{s:4:"type";s:6:"String";}s:10:"aroundNode";a:1:{s:4:"type";s:7:"DomNode";}s:8:"position";a:2:{s:8:"optional";b:1;s:4:"type";s:8:"String[]";}}s:6:"source";s:133:" if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); } return dijit._masterTT.show(innerHTML, aroundNode, position);";s:7:"summary";s:216:"Display tooltip w/specified contents in specified position. See description of dijit.Tooltip.defaultPosition for details on position parameter. If position is not specified then dijit.Tooltip.defaultPosition is used.";}s:17:"dijit.hideTooltip";a:4:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:10:"aroundNode";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:112:" if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); } return dijit._masterTT.hide(aroundNode);";s:7:"summary";s:16:"Hide the tooltip";}s:29:"dijit.Tooltip.defaultPosition";a:1:{s:7:"summary";s:0:"";}s:5:"dijit";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}}