[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/adm/style/ -> tooltip.js (source)

   1  /*
   2  javascript for Bubble Tooltips by Alessandro Fulciniti
   3  - http://pro.html.it - http://web-graphics.com 
   4  obtained from: http://web-graphics.com/mtarchive/001717.php
   5  
   6  phpBB Development Team:
   7      - modified to adhere to our coding guidelines
   8      - integration into our design
   9      - added ability to perform tooltips on select elements
  10      - further adjustements
  11  */
  12  
  13  var head_text, tooltip_mode;
  14  
  15  /**
  16  * Enable tooltip replacements for links
  17  */
  18  function enable_tooltips_link(id, headline, sub_id)
  19  {
  20      var links, i, hold;
  21      
  22      head_text = headline;
  23  
  24      if (!document.getElementById || !document.getElementsByTagName)
  25      {
  26          return;
  27      }
  28  
  29      hold = document.createElement('span');
  30      hold.id = '_tooltip_container';
  31      hold.setAttribute('id', '_tooltip_container');
  32      hold.style.position = 'absolute';
  33  
  34      document.getElementsByTagName('body')[0].appendChild(hold);
  35  
  36      if (id == null)
  37      {
  38          links = document.getElementsByTagName('a');
  39      }
  40      else
  41      {
  42          links = document.getElementById(id).getElementsByTagName('a');
  43      }
  44  
  45      for (i = 0; i < links.length; i++)
  46      {
  47          if (sub_id)
  48          {
  49              if (links[i].id.substr(0, sub_id.length) == sub_id)
  50              {
  51                  prepare(links[i]);
  52              }
  53          }
  54          else
  55          {
  56              prepare(links[i]);
  57          }
  58      }
  59  
  60      tooltip_mode = 'link';
  61  }
  62  
  63  /**
  64  * Enable tooltip replacements for selects
  65  */
  66  function enable_tooltips_select(id, headline, sub_id)
  67  {
  68      var links, i, hold;
  69      
  70      head_text = headline;
  71  
  72      if (!document.getElementById || !document.getElementsByTagName)
  73      {
  74          return;
  75      }
  76  
  77      hold = document.createElement('span');
  78      hold.id = '_tooltip_container';
  79      hold.setAttribute('id', '_tooltip_container');
  80      hold.style.position = 'absolute';
  81  
  82      document.getElementsByTagName('body')[0].appendChild(hold);
  83  
  84      if (id == null)
  85      {
  86          links = document.getElementsByTagName('option');
  87      }
  88      else
  89      {
  90          links = document.getElementById(id).getElementsByTagName('option');
  91      }
  92  
  93      for (i = 0; i < links.length; i++)
  94      {
  95          if (sub_id)
  96          {
  97              if (links[i].parentNode.id.substr(0, sub_id.length) == sub_id)
  98              {
  99                  prepare(links[i]);
 100              }
 101          }
 102          else
 103          {
 104              prepare(links[i]);
 105          }
 106      }
 107  
 108      tooltip_mode = 'select';
 109  }
 110  
 111  /**
 112  * Prepare elements to replace
 113  */
 114  function prepare(element)
 115  {
 116      var tooltip, text, desc, title;
 117  
 118      text = element.getAttribute('title');
 119  
 120      if (text == null || text.length == 0)
 121      {
 122          return;
 123      }
 124  
 125      element.removeAttribute('title');
 126      tooltip = create_element('span', 'tooltip');
 127  
 128      title = create_element('span', 'top');
 129      title.appendChild(document.createTextNode(head_text));
 130      tooltip.appendChild(title);
 131  
 132      desc = create_element('span', 'bottom');
 133      desc.innerHTML = text;
 134      tooltip.appendChild(desc);
 135  
 136      set_opacity(tooltip);
 137  
 138      element.tooltip = tooltip;
 139      element.onmouseover = show_tooltip;
 140      element.onmouseout = hide_tooltip;
 141  
 142      if (tooltip_mode == 'link')
 143      {
 144          element.onmousemove = locate;
 145      }
 146  }
 147  
 148  /**
 149  * Show tooltip
 150  */
 151  function show_tooltip(e)
 152  {
 153      document.getElementById('_tooltip_container').appendChild(this.tooltip);
 154      locate(this);
 155  }
 156  
 157  /**
 158  * Hide tooltip
 159  */
 160  function hide_tooltip(e)
 161  {
 162      var d = document.getElementById('_tooltip_container');
 163      if (d.childNodes.length > 0)
 164      {
 165          d.removeChild(d.firstChild);
 166      }
 167  }
 168  
 169  /**
 170  * Set opacity on tooltip element
 171  */
 172  function set_opacity(element)
 173  {
 174      element.style.filter = 'alpha(opacity:95)';
 175      element.style.KHTMLOpacity = '0.95';
 176      element.style.MozOpacity = '0.95';
 177      element.style.opacity = '0.95';
 178  }
 179  
 180  /**
 181  * Create new element
 182  */
 183  function create_element(tag, c)
 184  {
 185      var x = document.createElement(tag);
 186      x.className = c;
 187      x.style.display = 'block';
 188      return x;
 189  }
 190  
 191  /**
 192  * Correct positioning of tooltip container
 193  */
 194  function locate(e)
 195  {
 196      var posx = 0;
 197      var posy = 0;
 198  
 199      e = e.parentNode;
 200  
 201      if (e.offsetParent)
 202      {
 203          for (var posx = 0, posy = 0; e.offsetParent; e = e.offsetParent)
 204          {
 205              posx += e.offsetLeft;
 206              posy += e.offsetTop;
 207          }
 208      }
 209      else
 210      {
 211          posx = e.offsetLeft;
 212          posy = e.offsetTop;
 213      }
 214  
 215      if (tooltip_mode == 'link')
 216      {
 217          document.getElementById('_tooltip_container').style.top=(posy+20) + 'px';
 218          document.getElementById('_tooltip_container').style.left=(posx-20) + 'px';
 219      }
 220      else
 221      {
 222          document.getElementById('_tooltip_container').style.top=(posy+30) + 'px';
 223          document.getElementById('_tooltip_container').style.left=(posx-205) + 'px';
 224      }
 225  
 226  /*
 227      if (e == null)
 228      {
 229          e = window.event;
 230      }
 231  
 232      if (e.pageX || e.pageY)
 233      {
 234          posx = e.pageX;
 235          posy = e.pageY;
 236      }
 237      else if (e.clientX || e.clientY)
 238      {
 239          if (document.documentElement.scrollTop)
 240          {
 241              posx = e.clientX+document.documentElement.scrollLeft;
 242              posy = e.clientY+document.documentElement.scrollTop;
 243          }
 244          else
 245          {
 246              posx = e.clientX+document.body.scrollLeft;
 247              posy = e.clientY+document.body.scrollTop;
 248          }
 249      }
 250  */
 251  }


Generated: Wed Oct 2 15:03:47 2013 Cross-referenced by PHPXref 0.7.1