]> git.donarmstrong.com Git - roundcube.git/blobdiff - program/js/tiny_mce/utils/mclayer.js
Imported Upstream version 0.1
[roundcube.git] / program / js / tiny_mce / utils / mclayer.js
index 1b347f75ca1fa18ac80f7c4ceb6ec47e04c082ef..23982db19728b9b7188331803e1e755fe706abb8 100644 (file)
-/**\r
- * $Id: mclayer.js 162 2007-01-03 16:16:52Z spocke $\r
- *\r
- * Moxiecode floating layer script.\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-function MCLayer(id) {\r
-       this.id = id;\r
-       this.settings = new Array();\r
-       this.blockerElement = null;\r
-       this.isMSIE = navigator.appName == "Microsoft Internet Explorer";\r
-       this.events = false;\r
-       this.autoHideCallback = null;\r
-}\r
-\r
-MCLayer.prototype = {\r
-       moveRelativeTo : function(re, p, a) {\r
-               var rep = this.getAbsPosition(re);\r
-               var w = parseInt(re.offsetWidth);\r
-               var h = parseInt(re.offsetHeight);\r
-               var x, y;\r
-\r
-               switch (p) {\r
-                       case "tl":\r
-                               break;\r
-\r
-                       case "tr":\r
-                               x = rep.absLeft + w;\r
-                               y = rep.absTop;\r
-                               break;\r
-\r
-                       case "bl":\r
-                               break;\r
-\r
-                       case "br":\r
-                               break;\r
-               }\r
-\r
-               this.moveTo(x, y);\r
-       },\r
-\r
-       moveBy : function(dx, dy) {\r
-               var e = this.getElement();\r
-               var x = parseInt(e.style.left);\r
-               var y = parseInt(e.style.top);\r
-\r
-               e.style.left = (x + dx) + "px";\r
-               e.style.top = (y + dy) + "px";\r
-\r
-               this.updateBlocker();\r
-       },\r
-\r
-       moveTo : function(x, y) {\r
-               var e = this.getElement();\r
-\r
-               e.style.left = x + "px";\r
-               e.style.top = y + "px";\r
-\r
-               this.updateBlocker();\r
-       },\r
-\r
-       show : function() {\r
-               MCLayer.visibleLayer = this;\r
-\r
-               this.getElement().style.display = 'block';\r
-               this.updateBlocker();\r
-       },\r
-\r
-       hide : function() {\r
-               this.getElement().style.display = 'none';\r
-               this.updateBlocker();\r
-       },\r
-\r
-       setAutoHide : function(s, cb) {\r
-               this.autoHideCallback = cb;\r
-               this.registerEventHandlers();\r
-       },\r
-\r
-       getElement : function() {\r
-               return document.getElementById(this.id);\r
-       },\r
-\r
-       updateBlocker : function() {\r
-               if (!this.isMSIE)\r
-                       return;\r
-\r
-               var e = this.getElement();\r
-               var b = this.getBlocker();\r
-               var x = this.parseInt(e.style.left);\r
-               var y = this.parseInt(e.style.top);\r
-               var w = this.parseInt(e.offsetWidth);\r
-               var h = this.parseInt(e.offsetHeight);\r
-\r
-               b.style.left = x + 'px';\r
-               b.style.top = y + 'px';\r
-               b.style.width = w + 'px';\r
-               b.style.height = h + 'px';\r
-               b.style.display = e.style.display;\r
-       },\r
-\r
-       getBlocker : function() {\r
-               if (!this.blockerElement) {\r
-                       var d = document, b = d.createElement("iframe");\r
-\r
-                       b.style.cssText = 'display: none; left: 0px; position: absolute; top: 0';\r
-                       b.src = 'javascript:false;';\r
-                       b.frameBorder = '0';\r
-                       b.scrolling = 'no';\r
-\r
-                       d.body.appendChild(b);\r
-                       this.blockerElement = b;\r
-               }\r
-\r
-               return this.blockerElement;\r
-       },\r
-\r
-       getAbsPosition : function(n) {\r
-               var p = {absLeft : 0, absTop : 0};\r
-\r
-               while (n) {\r
-                       p.absLeft += n.offsetLeft;\r
-                       p.absTop += n.offsetTop;\r
-                       n = n.offsetParent;\r
-               }\r
-\r
-               return p;\r
-       },\r
-\r
-       registerEventHandlers : function() {\r
-               if (!this.events) {\r
-                       var d = document;\r
-\r
-                       this.addEvent(d, 'mousedown', MCLayer.prototype.onMouseDown);\r
-\r
-                       this.events = true;\r
-               }\r
-       },\r
-\r
-       addEvent : function(o, n, h) {\r
-               if (o.attachEvent)\r
-                       o.attachEvent("on" + n, h);\r
-               else\r
-                       o.addEventListener(n, h, false);\r
-       },\r
-\r
-       onMouseDown : function(e) {\r
-               e = typeof(e) == "undefined" ? window.event : e;\r
-               var b = document.body;\r
-               var l = MCLayer.visibleLayer;\r
-\r
-               if (l) {\r
-                       var mx = l.isMSIE ? e.clientX + b.scrollLeft : e.pageX;\r
-                       var my = l.isMSIE ? e.clientY + b.scrollTop : e.pageY;\r
-                       var el = l.getElement();\r
-                       var x = parseInt(el.style.left);\r
-                       var y = parseInt(el.style.top);\r
-                       var w = parseInt(el.offsetWidth);\r
-                       var h = parseInt(el.offsetHeight);\r
-\r
-                       if (!(mx > x && mx < x + w && my > y && my < y + h)) {\r
-                               MCLayer.visibleLayer = null;\r
-\r
-                               if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my))\r
-                                       return true;\r
-\r
-                               l.hide();\r
-                       }\r
-               }\r
-       },\r
-\r
-       addCSSClass : function(e, c) {\r
-               this.removeCSSClass(e, c);\r
-               var a = this.explode(' ', e.className);\r
-               a[a.length] = c;\r
-               e.className = a.join(' ');\r
-       },\r
-\r
-       removeCSSClass : function(e, c) {\r
-               var a = this.explode(' ', e.className), i;\r
-\r
-               for (i=0; i<a.length; i++) {\r
-                       if (a[i] == c)\r
-                               a[i] = '';\r
-               }\r
-\r
-               e.className = a.join(' ');\r
-       },\r
-\r
-       explode : function(d, s) {\r
-               var ar = s.split(d);\r
-               var oar = new Array();\r
-\r
-               for (var i = 0; i<ar.length; i++) {\r
-                       if (ar[i] != "")\r
-                               oar[oar.length] = ar[i];\r
-               }\r
-\r
-               return oar;\r
-       },\r
-\r
-       parseInt : function(s) {\r
-               if (s == null || s == '')\r
-                       return 0;\r
-\r
-               return parseInt(s);\r
-       }\r
-}\r
+/**
+ * $Id: mclayer.js 162 2007-01-03 16:16:52Z spocke $
+ *
+ * Moxiecode floating layer script.
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
+ */
+
+function MCLayer(id) {
+       this.id = id;
+       this.settings = new Array();
+       this.blockerElement = null;
+       this.isMSIE = navigator.appName == "Microsoft Internet Explorer";
+       this.events = false;
+       this.autoHideCallback = null;
+}
+
+MCLayer.prototype = {
+       moveRelativeTo : function(re, p, a) {
+               var rep = this.getAbsPosition(re);
+               var w = parseInt(re.offsetWidth);
+               var h = parseInt(re.offsetHeight);
+               var x, y;
+
+               switch (p) {
+                       case "tl":
+                               break;
+
+                       case "tr":
+                               x = rep.absLeft + w;
+                               y = rep.absTop;
+                               break;
+
+                       case "bl":
+                               break;
+
+                       case "br":
+                               break;
+               }
+
+               this.moveTo(x, y);
+       },
+
+       moveBy : function(dx, dy) {
+               var e = this.getElement();
+               var x = parseInt(e.style.left);
+               var y = parseInt(e.style.top);
+
+               e.style.left = (x + dx) + "px";
+               e.style.top = (y + dy) + "px";
+
+               this.updateBlocker();
+       },
+
+       moveTo : function(x, y) {
+               var e = this.getElement();
+
+               e.style.left = x + "px";
+               e.style.top = y + "px";
+
+               this.updateBlocker();
+       },
+
+       show : function() {
+               MCLayer.visibleLayer = this;
+
+               this.getElement().style.display = 'block';
+               this.updateBlocker();
+       },
+
+       hide : function() {
+               this.getElement().style.display = 'none';
+               this.updateBlocker();
+       },
+
+       setAutoHide : function(s, cb) {
+               this.autoHideCallback = cb;
+               this.registerEventHandlers();
+       },
+
+       getElement : function() {
+               return document.getElementById(this.id);
+       },
+
+       updateBlocker : function() {
+               if (!this.isMSIE)
+                       return;
+
+               var e = this.getElement();
+               var b = this.getBlocker();
+               var x = this.parseInt(e.style.left);
+               var y = this.parseInt(e.style.top);
+               var w = this.parseInt(e.offsetWidth);
+               var h = this.parseInt(e.offsetHeight);
+
+               b.style.left = x + 'px';
+               b.style.top = y + 'px';
+               b.style.width = w + 'px';
+               b.style.height = h + 'px';
+               b.style.display = e.style.display;
+       },
+
+       getBlocker : function() {
+               if (!this.blockerElement) {
+                       var d = document, b = d.createElement("iframe");
+
+                       b.style.cssText = 'display: none; left: 0px; position: absolute; top: 0';
+                       b.src = 'javascript:false;';
+                       b.frameBorder = '0';
+                       b.scrolling = 'no';
+
+                       d.body.appendChild(b);
+                       this.blockerElement = b;
+               }
+
+               return this.blockerElement;
+       },
+
+       getAbsPosition : function(n) {
+               var p = {absLeft : 0, absTop : 0};
+
+               while (n) {
+                       p.absLeft += n.offsetLeft;
+                       p.absTop += n.offsetTop;
+                       n = n.offsetParent;
+               }
+
+               return p;
+       },
+
+       registerEventHandlers : function() {
+               if (!this.events) {
+                       var d = document;
+
+                       this.addEvent(d, 'mousedown', MCLayer.prototype.onMouseDown);
+
+                       this.events = true;
+               }
+       },
+
+       addEvent : function(o, n, h) {
+               if (o.attachEvent)
+                       o.attachEvent("on" + n, h);
+               else
+                       o.addEventListener(n, h, false);
+       },
+
+       onMouseDown : function(e) {
+               e = typeof(e) == "undefined" ? window.event : e;
+               var b = document.body;
+               var l = MCLayer.visibleLayer;
+
+               if (l) {
+                       var mx = l.isMSIE ? e.clientX + b.scrollLeft : e.pageX;
+                       var my = l.isMSIE ? e.clientY + b.scrollTop : e.pageY;
+                       var el = l.getElement();
+                       var x = parseInt(el.style.left);
+                       var y = parseInt(el.style.top);
+                       var w = parseInt(el.offsetWidth);
+                       var h = parseInt(el.offsetHeight);
+
+                       if (!(mx > x && mx < x + w && my > y && my < y + h)) {
+                               MCLayer.visibleLayer = null;
+
+                               if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my))
+                                       return true;
+
+                               l.hide();
+                       }
+               }
+       },
+
+       addCSSClass : function(e, c) {
+               this.removeCSSClass(e, c);
+               var a = this.explode(' ', e.className);
+               a[a.length] = c;
+               e.className = a.join(' ');
+       },
+
+       removeCSSClass : function(e, c) {
+               var a = this.explode(' ', e.className), i;
+
+               for (i=0; i<a.length; i++) {
+                       if (a[i] == c)
+                               a[i] = '';
+               }
+
+               e.className = a.join(' ');
+       },
+
+       explode : function(d, s) {
+               var ar = s.split(d);
+               var oar = new Array();
+
+               for (var i = 0; i<ar.length; i++) {
+                       if (ar[i] != "")
+                               oar[oar.length] = ar[i];
+               }
+
+               return oar;
+       },
+
+       parseInt : function(s) {
+               if (s == null || s == '')
+                       return 0;
+
+               return parseInt(s);
+       }
+}