[ Index ]
 

Code source de Horde 3.1.3

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/js/ -> horde.js (source)

   1  /**
   2   * General Horde UI effects javascript.
   3   *
   4   * $Horde: horde/js/horde.js,v 1.14.2.5 2006/05/25 18:07:26 slusarz Exp $
   5   *
   6   * See the enclosed file COPYING for license information (LGPL). If you did not
   7   * receive this file, see http://www.fsf.org/copyleft/lgpl.html.
   8   */
   9  
  10  var ToolTips = {
  11      CURRENT: null,
  12      TIMEOUT: null,
  13      LINK: null,
  14  
  15      attachBehavior: function()
  16      {
  17          links = document.getElementsByTagName('a');
  18          for (i = 0; i < links.length; i++) {
  19              if (links[i].title) {
  20                  links[i].setAttribute('nicetitle', links[i].title);
  21                  links[i].removeAttribute('title');
  22  
  23                  addEvent(links[i], 'mouseover', ToolTips.over);
  24                  addEvent(links[i], 'mouseout', ToolTips.out);
  25                  addEvent(links[i], 'focus', ToolTips.over);
  26                  addEvent(links[i], 'blur', ToolTips.out);
  27              }
  28          }
  29      },
  30  
  31      over: function(e)
  32      {
  33          if (typeof ToolTips == 'undefined') {
  34              return;
  35          }
  36  
  37          if (ToolTips.TIMEOUT) {
  38              window.clearTimeout(ToolTips.TIMEOUT);
  39          }
  40  
  41          if (window.event && window.event.srcElement) {
  42              ToolTips.LINK = window.event.srcElement;
  43          } else if (e && e.target) {
  44              ToolTips.LINK = e.target;
  45          }
  46  
  47          ToolTips.TIMEOUT = window.setTimeout('ToolTips.show()', 300)
  48      },
  49  
  50      out: function()
  51      {
  52          if (typeof ToolTips == 'undefined') {
  53              return;
  54          }
  55  
  56          if (ToolTips.TIMEOUT) {
  57              window.clearTimeout(ToolTips.TIMEOUT);
  58          }
  59  
  60          if (ToolTips.CURRENT) {
  61              document.getElementsByTagName('body')[0].removeChild(ToolTips.CURRENT);
  62              ToolTips.CURRENT = null;
  63  
  64              var iframe = document.getElementById('iframe_tt');
  65              if (iframe != null) {
  66                  iframe.style.display = 'none';
  67              }
  68          }
  69      },
  70  
  71      show: function()
  72      {
  73          if (typeof ToolTips == 'undefined' || !ToolTips.LINK) {
  74              return;
  75          }
  76  
  77          if (ToolTips.CURRENT) {
  78              ToolTips.out();
  79          }
  80  
  81          link = ToolTips.LINK;
  82          while (!link.getAttribute('nicetitle') && link.nodeName.toLowerCase() != 'body') {
  83              link = link.parentNode;
  84          }
  85          nicetitle = link.getAttribute('nicetitle');
  86          if (!nicetitle) {
  87              return;
  88          }
  89  
  90          d = document.createElement('div');
  91          d.className = 'nicetitle';
  92          d.innerHTML = nicetitle;
  93  
  94          STD_WIDTH = 100;
  95          MAX_WIDTH = 600;
  96          if (window.innerWidth) {
  97              MAX_WIDTH = Math.min(MAX_WIDTH, window.innerWidth - 20);
  98          }
  99          if (document.body && document.body.scrollWidth) {
 100              MAX_WIDTH = Math.min(MAX_WIDTH, document.body.scrollWidth - 20);
 101          }
 102  
 103          nicetitle_length = 0;
 104          lines = nicetitle.replace(/<br ?\/>/g, "\n").split("\n");
 105          for (i = 0; i < lines.length; i++) {
 106              nicetitle_length = Math.max(nicetitle_length, lines[i].length);
 107          }
 108  
 109          h_pixels = nicetitle_length * 7;
 110          t_pixels = nicetitle_length * 10;
 111  
 112          if (h_pixels > STD_WIDTH) {
 113              w = h_pixels;
 114          } else if (STD_WIDTH > t_pixels) {
 115              w = t_pixels;
 116          } else {
 117              w = STD_WIDTH;
 118          }
 119  
 120          mpos = findPos(link);
 121          mx = mpos[0];
 122          my = mpos[1];
 123  
 124          left = mx + 20;
 125          if (window.innerWidth && ((left + w) > window.innerWidth)) {
 126              left = window.innerWidth - w - 40;
 127          }
 128          if (document.body && document.body.scrollWidth && ((left + w) > document.body.scrollWidth)) {
 129              left = document.body.scrollWidth - w - 25;
 130          }
 131  
 132          d.id = 'toolTip';
 133          d.style.left = Math.max(left, 5) + 'px';
 134          d.style.width = Math.min(w, MAX_WIDTH) + 'px';
 135          d.style.top = (my + 20) + 'px';
 136          d.style.display = "block";
 137  
 138          try {
 139              document.getElementsByTagName('body')[0].appendChild(d);
 140              ToolTips.CURRENT = d;
 141  
 142              if (typeof ToolTips_Option_Windowed_Controls != 'undefined') {
 143                  var iframe = document.getElementById('iframe_tt');
 144                  if (iframe == null) {
 145                      iframe = document.createElement("<iframe src='javascript:false;' name='iframe_tt' id='iframe_tt' scrolling='no' frameborder='0' style='position:absolute; top:0px; left:0px; display:none;'></iframe>");
 146                      document.getElementsByTagName('body')[0].appendChild(iframe);
 147                  }
 148                  iframe.style.width = d.offsetWidth;
 149                  iframe.style.height = d.offsetHeight;
 150                  iframe.style.top = d.style.top;
 151                  iframe.style.left = d.style.left;
 152                  iframe.style.position = "absolute";
 153                  iframe.style.display = "block";
 154                  d.style.zIndex = 100;
 155                  iframe.style.zIndex = 99;
 156              }
 157          } catch (e) {
 158          }
 159      }
 160  
 161  };
 162  
 163  /**
 164   * Return the [x,y] position of an object.
 165   */
 166  function findPos(obj)
 167  {
 168      if (obj.offsetParent) {
 169          for (posX = 0, posY = 0; obj.offsetParent; obj = obj.offsetParent) {
 170              posX += obj.offsetLeft;
 171              posY += obj.offsetTop;
 172          }
 173          return [posX, posY];
 174      } else {
 175          return [obj.x, obj.y];
 176      }
 177  }
 178  
 179  /**
 180   * Add an event listener as long as the browser supports it. Different
 181   * browsers still handle these events slightly differently; in
 182   * particular avoid using "this" in event functions.
 183   *
 184   * @author Scott Andrew
 185   * @author Chuck Hagenbuch <chuck@horde.org>
 186   */
 187  function addEvent(obj, evType, fn)
 188  {
 189      if (obj.addEventListener) {
 190          obj.addEventListener(evType, fn, true);
 191          return true;
 192      } else if (obj.attachEvent) {
 193          var r = obj.attachEvent('on' + evType, fn);
 194          EventCache.add(obj, evType, fn);
 195          return r;
 196      } else {
 197          return false;
 198      }
 199  }
 200  
 201  var EventCache = function()
 202  {
 203      var listEvents = [];
 204  
 205      return {
 206          listEvents: listEvents,
 207  
 208          add: function(node, sEventName, fHandler, bCapture)
 209          {
 210              listEvents.push(arguments);
 211          },
 212  
 213          flush: function()
 214          {
 215              var i, item;
 216              for (i = listEvents.length - 1; i >= 0; i = i - 1) {
 217                  item = listEvents[i];
 218  
 219                  if (item[0].removeEventListener) {
 220                      item[0].removeEventListener(item[1], item[2], item[3]);
 221                  };
 222  
 223                  /* From this point on we need the event names to be
 224                   * prefixed with 'on'. */
 225                  if (item[1].substring(0, 2) != 'on') {
 226                      item[1] = 'on' + item[1];
 227                  }
 228  
 229                  if (item[0].detachEvent) {
 230                      item[0].detachEvent(item[1], item[2]);
 231                  }
 232  
 233                  item[0][item[1]] = null;
 234              }
 235          }
 236      };
 237  }();
 238  
 239  if (document.createElement && document.getElementsByTagName) {
 240      addEvent(window, 'load', ToolTips.attachBehavior);
 241      addEvent(window, 'unload', ToolTips.out);
 242      addEvent(window, 'unload', EventCache.flush);
 243  }


Généré le : Sun Feb 25 18:01:28 2007 par Balluche grâce à PHPXref 0.7