| 250 | kaklik | 1 | /* $Id: tooltip.js,v 1.1 2005/11/23 19:10:30 nijel Exp $ */ | 
      
        |  |  | 2 |  | 
      
        |  |  | 3 |  | 
      
        |  |  | 4 | /** | 
      
        |  |  | 5 |  * Displays the Tooltips (hints), if we have some | 
      
        |  |  | 6 |  * 2005-01-20 added by Michael Keck (mkkeck) | 
      
        |  |  | 7 |  */ | 
      
        |  |  | 8 |  | 
      
        |  |  | 9 | var ttXpos = 0, ttYpos = 0; | 
      
        |  |  | 10 | var ttXadd = 10, ttYadd = -10; | 
      
        |  |  | 11 | var ttDisplay = 0, ttHoldIt = 0; | 
      
        |  |  | 12 | // Check if browser does support dynamic content and dhtml | 
      
        |  |  | 13 | var ttNS4 = (document.layers) ? 1 : 0;           // the old Netscape 4 | 
      
        |  |  | 14 | var ttIE4 = (document.all) ? 1 : 0;              // browser wich uses document.all | 
      
        |  |  | 15 | var ttDOM = (document.getElementById) ? 1 : 0;   // DOM-compatible browsers | 
      
        |  |  | 16 | if (ttDOM) { // if DOM-compatible, set the others to false | 
      
        |  |  | 17 |     ttNS4 = 0; | 
      
        |  |  | 18 |     ttIE4 = 0; | 
      
        |  |  | 19 | } | 
      
        |  |  | 20 |  | 
      
        |  |  | 21 | var myTooltipContainer = null; | 
      
        |  |  | 22 |  | 
      
        |  |  | 23 | if ( (ttDOM) || (ttIE4) || (ttNS4) ) { | 
      
        |  |  | 24 |     // mouse-event | 
      
        |  |  | 25 |     if ( ttNS4 ) { | 
      
        |  |  | 26 |         document.captureEvents(Event.MOUSEMOVE); | 
      
        |  |  | 27 |     } else { | 
      
        |  |  | 28 |         document.onmousemove = mouseMove; | 
      
        |  |  | 29 |     } | 
      
        |  |  | 30 | } | 
      
        |  |  | 31 |  | 
      
        |  |  | 32 | /** | 
      
        |  |  | 33 |  * init the tooltip and write the text into it | 
      
        |  |  | 34 |  * | 
      
        |  |  | 35 |  * @param string theText tooltip content | 
      
        |  |  | 36 |  */ | 
      
        |  |  | 37 | function textTooltip(theText) { | 
      
        |  |  | 38 |     if	(ttDOM || ttIE4) {                   // document.getEelementById || document.all | 
      
        |  |  | 39 |         myTooltipContainer.innerHTML = "";  // we should empty it first | 
      
        |  |  | 40 |         myTooltipContainer.innerHTML = theText; | 
      
        |  |  | 41 |     } else if (ttNS4) {                     // document.layers | 
      
        |  |  | 42 |         var layerNS4 = myTooltipContainer.document; | 
      
        |  |  | 43 |         layerNS4.write(theText); | 
      
        |  |  | 44 |         layerNS4.close(); | 
      
        |  |  | 45 |     } | 
      
        |  |  | 46 | } | 
      
        |  |  | 47 |  | 
      
        |  |  | 48 | /** | 
      
        |  |  | 49 |  * @var integer | 
      
        |  |  | 50 |  */ | 
      
        |  |  | 51 | var ttTimerID = 0; | 
      
        |  |  | 52 |  | 
      
        |  |  | 53 | /** | 
      
        |  |  | 54 |  * swap the Tooltip // show and hide | 
      
        |  |  | 55 |  * | 
      
        |  |  | 56 |  * @param boolean stat view status | 
      
        |  |  | 57 |  */ | 
      
        |  |  | 58 | function swapTooltip(stat) { | 
      
        |  |  | 59 |     if (ttHoldIt!=1) { | 
      
        |  |  | 60 |         if (stat!='default') { | 
      
        |  |  | 61 |             if (stat=='true') | 
      
        |  |  | 62 |                 showTooltip(true); | 
      
        |  |  | 63 |             else if (stat=='false') | 
      
        |  |  | 64 |                 showTooltip(false); | 
      
        |  |  | 65 |         } else { | 
      
        |  |  | 66 |             if (ttDisplay) | 
      
        |  |  | 67 |                 ttTimerID = setTimeout("showTooltip(false);",500); | 
      
        |  |  | 68 |             else | 
      
        |  |  | 69 |                 showTooltip(true); | 
      
        |  |  | 70 |         } | 
      
        |  |  | 71 |     } else { | 
      
        |  |  | 72 |         if (ttTimerID) { | 
      
        |  |  | 73 |            clearTimeout(ttTimerID); | 
      
        |  |  | 74 |            ttTimerID = 0; | 
      
        |  |  | 75 |         } | 
      
        |  |  | 76 |         showTooltip(true); | 
      
        |  |  | 77 |     } | 
      
        |  |  | 78 | } | 
      
        |  |  | 79 |  | 
      
        |  |  | 80 | /** | 
      
        |  |  | 81 |  * show / hide the Tooltip | 
      
        |  |  | 82 |  * | 
      
        |  |  | 83 |  * @param boolean stat view status | 
      
        |  |  | 84 |  */ | 
      
        |  |  | 85 | function showTooltip(stat) { | 
      
        |  |  | 86 |     if (stat==false) { | 
      
        |  |  | 87 |         if (ttNS4) | 
      
        |  |  | 88 |             myTooltipContainer.visibility = "hide"; | 
      
        |  |  | 89 |         else | 
      
        |  |  | 90 |             myTooltipContainer.style.visibility = "hidden"; | 
      
        |  |  | 91 |         ttDisplay = 0; | 
      
        |  |  | 92 |     } else { | 
      
        |  |  | 93 |         if (ttNS4) | 
      
        |  |  | 94 |             myTooltipContainer.visibility = "show"; | 
      
        |  |  | 95 |         else | 
      
        |  |  | 96 |             myTooltipContainer.style.visibility = "visible"; | 
      
        |  |  | 97 |         ttDisplay = 1; | 
      
        |  |  | 98 |     } | 
      
        |  |  | 99 | } | 
      
        |  |  | 100 | /** | 
      
        |  |  | 101 |  * hold it, if we create or move the mouse over the tooltip | 
      
        |  |  | 102 |  */ | 
      
        |  |  | 103 | function holdTooltip() { | 
      
        |  |  | 104 |     ttHoldIt = 1; | 
      
        |  |  | 105 |     swapTooltip('true'); | 
      
        |  |  | 106 |     ttHoldIt = 0; | 
      
        |  |  | 107 | } | 
      
        |  |  | 108 |  | 
      
        |  |  | 109 | /** | 
      
        |  |  | 110 |  * move the tooltip to mouse position | 
      
        |  |  | 111 |  * | 
      
        |  |  | 112 |  * @param integer posX    horiz. position | 
      
        |  |  | 113 |  * @param integer posY    vert. position | 
      
        |  |  | 114 |  */ | 
      
        |  |  | 115 | function moveTooltip(posX, posY) { | 
      
        |  |  | 116 |     if (ttDOM || ttIE4) { | 
      
        |  |  | 117 |         myTooltipContainer.style.left	=	posX + "px"; | 
      
        |  |  | 118 |         myTooltipContainer.style.top  =	posY + "px"; | 
      
        |  |  | 119 |     } else if (ttNS4) { | 
      
        |  |  | 120 |         myTooltipContainer.left = posX; | 
      
        |  |  | 121 |         myTooltipContainer.top  = posY; | 
      
        |  |  | 122 |     } | 
      
        |  |  | 123 | } | 
      
        |  |  | 124 |  | 
      
        |  |  | 125 | /** | 
      
        |  |  | 126 |  * build the tooltip | 
      
        |  |  | 127 |  * | 
      
        |  |  | 128 |  * @param    string    theText    tooltip content | 
      
        |  |  | 129 |  */ | 
      
        |  |  | 130 | function pmaTooltip( theText ) { | 
      
        |  |  | 131 |     // reference to TooltipContainer | 
      
        |  |  | 132 |     if ( null == myTooltipContainer ) { | 
      
        |  |  | 133 |         if (ttNS4) { | 
      
        |  |  | 134 |             myTooltipContainer = document.TooltipContainer; | 
      
        |  |  | 135 |         } else if (ttIE4) { | 
      
        |  |  | 136 |             myTooltipContainer = document.all('TooltipContainer'); | 
      
        |  |  | 137 |         } else if (ttDOM) { | 
      
        |  |  | 138 |             myTooltipContainer = document.getElementById('TooltipContainer'); | 
      
        |  |  | 139 |         } else { | 
      
        |  |  | 140 |             return; | 
      
        |  |  | 141 |         } | 
      
        |  |  | 142 |  | 
      
        |  |  | 143 |         if ( typeof( myTooltipContainer ) == 'undefined' ) { | 
      
        |  |  | 144 |             return; | 
      
        |  |  | 145 |         } | 
      
        |  |  | 146 |     } | 
      
        |  |  | 147 |  | 
      
        |  |  | 148 |     var plusX=0, plusY=0, docX=0, docY=0; | 
      
        |  |  | 149 |     var divHeight = myTooltipContainer.clientHeight; | 
      
        |  |  | 150 |     var divWidth  = myTooltipContainer.clientWidth; | 
      
        |  |  | 151 |     if (navigator.appName.indexOf("Explorer")!=-1) { | 
      
        |  |  | 152 |         if (document.documentElement && document.documentElement.scrollTop) { | 
      
        |  |  | 153 |             plusX = document.documentElement.scrollLeft; | 
      
        |  |  | 154 |             plusY = document.documentElement.scrollTop; | 
      
        |  |  | 155 |             docX = document.documentElement.offsetWidth + plusX; | 
      
        |  |  | 156 |             docY = document.documentElement.offsetHeight + plusY; | 
      
        |  |  | 157 |         } else { | 
      
        |  |  | 158 |             plusX = document.body.scrollLeft; | 
      
        |  |  | 159 |             plusY = document.body.scrollTop; | 
      
        |  |  | 160 |             docX = document.body.offsetWidth + plusX; | 
      
        |  |  | 161 |             docY = document.body.offsetHeight + plusY; | 
      
        |  |  | 162 |         } | 
      
        |  |  | 163 |     } else { | 
      
        |  |  | 164 |         docX = document.body.clientWidth; | 
      
        |  |  | 165 |         docY = document.body.clientHeight; | 
      
        |  |  | 166 |     } | 
      
        |  |  | 167 |  | 
      
        |  |  | 168 |     ttXpos = ttXpos + plusX; | 
      
        |  |  | 169 |     ttYpos = ttYpos + plusY; | 
      
        |  |  | 170 |  | 
      
        |  |  | 171 |     if ((ttXpos + divWidth) > docX) | 
      
        |  |  | 172 |         ttXpos = ttXpos - (divWidth + (ttXadd * 2)); | 
      
        |  |  | 173 |     if ((ttYpos + divHeight) > docY) | 
      
        |  |  | 174 |         ttYpos = ttYpos - (divHeight + (ttYadd * 2)); | 
      
        |  |  | 175 |  | 
      
        |  |  | 176 |     textTooltip(theText); | 
      
        |  |  | 177 |     moveTooltip((ttXpos + ttXadd), (ttYpos + ttYadd)); | 
      
        |  |  | 178 |     holdTooltip(); | 
      
        |  |  | 179 | } | 
      
        |  |  | 180 |  | 
      
        |  |  | 181 | /** | 
      
        |  |  | 182 |  * register mouse moves | 
      
        |  |  | 183 |  * | 
      
        |  |  | 184 |  * @param    event    e | 
      
        |  |  | 185 |  */ | 
      
        |  |  | 186 | function mouseMove(e) { | 
      
        |  |  | 187 |     if ( typeof( event ) != 'undefined' ) { | 
      
        |  |  | 188 |         ttXpos = event.x; | 
      
        |  |  | 189 |         ttYpos = event.y; | 
      
        |  |  | 190 |     } else { | 
      
        |  |  | 191 |         ttXpos = e.pageX; | 
      
        |  |  | 192 |         ttYpos = e.pageY; | 
      
        |  |  | 193 |     } | 
      
        |  |  | 194 | } |