-/**\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);
+ }
+}