[ Index ]
 

Code source de Seagull 0.6.1

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

title

Body

[fermer]

/tinyfck/utils/ -> mclayer.js (source)

   1  /**

   2   * $RCSfile: mclayer.js,v $

   3   * $Revision: 1.2 $

   4   * $Date: 2006/02/06 20:11:09 $

   5   *

   6   * Moxiecode floating layer script.

   7   *

   8   * @author Moxiecode

   9   * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.

  10   */
  11  
  12  function MCLayer(id) {
  13      this.id = id;
  14      this.settings = new Array();
  15      this.blockerElement = null;
  16      this.isMSIE = navigator.appName == "Microsoft Internet Explorer";
  17      this.events = false;
  18      this.autoHideCallback = null;
  19  }
  20  
  21  MCLayer.prototype = {
  22      moveRelativeTo : function(re, p, a) {
  23          var rep = this.getAbsPosition(re);
  24          var w = parseInt(re.offsetWidth);
  25          var h = parseInt(re.offsetHeight);
  26          var x, y;
  27  
  28          switch (p) {
  29              case "tl":
  30                  break;
  31  
  32              case "tr":
  33                  x = rep.absLeft + w;
  34                  y = rep.absTop;
  35                  break;
  36  
  37              case "bl":
  38                  break;
  39  
  40              case "br":
  41                  break;
  42          }
  43  
  44          this.moveTo(x, y);
  45      },
  46  
  47      moveBy : function(dx, dy) {
  48          var e = this.getElement();
  49          var x = parseInt(e.style.left);
  50          var y = parseInt(e.style.top);
  51  
  52          e.style.left = (x + dx) + "px";
  53          e.style.top = (y + dy) + "px";
  54  
  55          this.updateBlocker();
  56      },
  57  
  58      moveTo : function(x, y) {
  59          var e = this.getElement();
  60  
  61          e.style.left = x + "px";
  62          e.style.top = y + "px";
  63  
  64          this.updateBlocker();
  65      },
  66  
  67      show : function() {
  68          MCLayer.visibleLayer = this;
  69  
  70          this.getElement().style.display = 'block';
  71          this.updateBlocker();
  72      },
  73  
  74      hide : function() {
  75          this.getElement().style.display = 'none';
  76          this.updateBlocker();
  77      },
  78  
  79      setAutoHide : function(s, cb) {
  80          this.autoHideCallback = cb;
  81          this.registerEventHandlers();
  82      },
  83  
  84      getElement : function() {
  85          return document.getElementById(this.id);
  86      },
  87  
  88      updateBlocker : function() {
  89          if (!this.isMSIE)
  90              return;
  91  
  92          var e = this.getElement();
  93          var b = this.getBlocker();
  94          var x = this.parseInt(e.style.left);
  95          var y = this.parseInt(e.style.top);
  96          var w = this.parseInt(e.offsetWidth);
  97          var h = this.parseInt(e.offsetHeight);
  98  
  99          b.style.left = x + 'px';
 100          b.style.top = y + 'px';
 101          b.style.width = w + 'px';
 102          b.style.height = h + 'px';
 103          b.style.display = e.style.display;
 104      },
 105  
 106      getBlocker : function() {
 107          if (!this.blockerElement) {
 108              var d = document, b = d.createElement("iframe");
 109  
 110              b.style.cssText = 'display: none; left: 0px; position: absolute; top: 0';
 111              b.src = 'javascript:false;';
 112              b.frameBorder = '0';
 113              b.scrolling = 'no';
 114  
 115              d.body.appendChild(b);
 116              this.blockerElement = b;
 117          }
 118  
 119          return this.blockerElement;
 120      },
 121  
 122      getAbsPosition : function(n) {
 123          var p = {absLeft : 0, absTop : 0};
 124  
 125          while (n) {
 126              p.absLeft += n.offsetLeft;
 127              p.absTop += n.offsetTop;
 128              n = n.offsetParent;
 129          }
 130  
 131          return p;
 132      },
 133  
 134      registerEventHandlers : function() {
 135          if (!this.events) {
 136              var d = document;
 137  
 138              this.addEvent(d, 'mousedown', MCLayer.prototype.onMouseDown);
 139  
 140              this.events = true;
 141          }
 142      },
 143  
 144      addEvent : function(o, n, h) {
 145          if (o.attachEvent)
 146              o.attachEvent("on" + n, h);
 147          else
 148              o.addEventListener(n, h, false);
 149      },
 150  
 151      onMouseDown : function(e) {
 152          e = typeof(e) == "undefined" ? window.event : e;
 153          var b = document.body;
 154          var l = MCLayer.visibleLayer;
 155  
 156          if (l) {
 157              var mx = l.isMSIE ? e.clientX + b.scrollLeft : e.pageX;
 158              var my = l.isMSIE ? e.clientY + b.scrollTop : e.pageY;
 159              var el = l.getElement();
 160              var x = parseInt(el.style.left);
 161              var y = parseInt(el.style.top);
 162              var w = parseInt(el.offsetWidth);
 163              var h = parseInt(el.offsetHeight);
 164  
 165              if (!(mx > x && mx < x + w && my > y && my < y + h)) {
 166                  MCLayer.visibleLayer = null;
 167  
 168                  if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my))
 169                      return true;
 170  
 171                  l.hide();
 172              }
 173          }
 174      },
 175  
 176      addCSSClass : function(e, c) {
 177          this.removeCSSClass(e, c);
 178          var a = this.explode(' ', e.className);
 179          a[a.length] = c;
 180          e.className = a.join(' ');
 181      },
 182  
 183      removeCSSClass : function(e, c) {
 184          var a = this.explode(' ', e.className), i;
 185  
 186          for (i=0; i<a.length; i++) {
 187              if (a[i] == c)
 188                  a[i] = '';
 189          }
 190  
 191          e.className = a.join(' ');
 192      },
 193  
 194      explode : function(d, s) {
 195          var ar = s.split(d);
 196          var oar = new Array();
 197  
 198          for (var i = 0; i<ar.length; i++) {
 199              if (ar[i] != "")
 200                  oar[oar.length] = ar[i];
 201          }
 202  
 203          return oar;
 204      },
 205  
 206      parseInt : function(s) {
 207          if (s == null || s == '')
 208              return 0;
 209  
 210          return parseInt(s);
 211      }
 212  }


Généré le : Fri Mar 30 01:27:52 2007 par Balluche grâce à PHPXref 0.7