if (typeof document.attachEvent != 'undefined') {
   window.attachEvent('onload', initboxOver);
   document.attachEvent('onmousemove', moveMouse);
   document.attachEvent('onclick', checkMove);
   }
else {
   window.addEventListener('load', initboxOver, false);
   document.addEventListener('mousemove', moveMouse, false);
   document.addEventListener('click', checkMove, false);
   }
var oDv = document.createElement("div");
var dvHdr = document.createElement("div");
var dvBdy = document.createElement("div");
var windowlock, boxMove, fixposx, fixposy, lockX, lockY, fixx, fixy, ox, oy, boxLeft, boxRight, boxTop, boxBottom, evt, mouseX, mouseY, boxOpen, totalScrollTop, totalScrollLeft;
boxOpen = false;
ox = 10;
oy = 10;
lockX = 0;
lockY = 0;
function initboxOver() {
   oDv.appendChild(dvHdr);
   oDv.style.position = "absolute";
   oDv.style.visibility = 'hidden';
   document.body.appendChild(oDv);
   }
function defHdrStyle() {
   dvHdr.style.maxWidth = '260px';
   dvHdr.style.width = '260px';
   dvHdr.style.fontFamily = 'Verdana';
   dvHdr.style.fontSize = '11px';
   dvHdr.style.border = '1px solid #F7EBAD';
   dvHdr.style.padding = '5px';
   dvHdr.style.color = '#FFFFFF';
   dvHdr.style.background = '#FFB642';
   dvHdr.style.filter = 'alpha(opacity=80)';
   dvHdr.style.opacity = '0.80';
   }
function defBdyStyle() {
   dvBdy.style.borderBottom = '1px solid #FFB642';
   dvBdy.style.borderLeft = '1px solid #FFB642';
   dvBdy.style.borderRight = '1px solid #FFB642';
   dvBdy.style.width = '250px';
   dvBdy.style.height = '50%';
   dvBdy.style.padding = '10px';
   dvBdy.style.margin = '0';
   dvBdy.style.color = '#FFFFFF';
   dvBdy.style.background = '#F4F7F5';
   dvBdy.style.filter = 'alpha(opacity=80)';
   dvBdy.style.opacity = '0.80';
   }
function checkElemBO(txt) {
   if (!txt || typeof(txt) != 'string') return false;
   if ((txt.indexOf('header') >- 1) && (txt.indexOf('body') >- 1) && (txt.indexOf('[') >- 1) && (txt.indexOf('[') >- 1)) return true;
   else return false;
   }
function scanBO(curNode) {
   if (checkElemBO(curNode.title)) {
      curNode.boHDR = getParam('header', curNode.title);
      curNode.boBDY = getParam('body', curNode.title);
      curNode.boCSSBDY = getParam('cssbody', curNode.title);
      curNode.boCSSHDR = getParam('cssheader', curNode.title);
      curNode.IEbugfix = (getParam('hideselects', curNode.title) == 'on') ? true : false;
      curNode.fixX = parseInt(getParam('fixedrelx', curNode.title));
      curNode.fixY = parseInt(getParam('fixedrely', curNode.title));
      curNode.absX = parseInt(getParam('fixedabsx', curNode.title));
      curNode.absY = parseInt(getParam('fixedabsy', curNode.title));
      curNode.offY = (getParam('offsety', curNode.title) != '') ? parseInt(getParam('offsety', curNode.title)) : 10;
      curNode.offX = (getParam('offsetx', curNode.title) != '') ? parseInt(getParam('offsetx', curNode.title)) : 10;
      curNode.fade = (getParam('fade', curNode.title) == 'on') ? true : false;
      curNode.fadespeed = (getParam('fadespeed', curNode.title) != '') ? getParam('fadespeed', curNode.title) : 0.04;
      curNode.delay = (getParam('delay', curNode.title) != '') ? parseInt(getParam('delay', curNode.title)) : 0;
      if (getParam('requireclick', curNode.title) == 'on') {
         curNode.requireclick = true;
         document.all ? curNode.attachEvent('onclick', showHideBox) : curNode.addEventListener('click', showHideBox, false);
         document.all ? curNode.attachEvent('onmouseover', hideBox) : curNode.addEventListener('mouseover', hideBox, false);
         }
      else {
         // Note : if requireclick is on the stop clicks are ignored
         if (getParam('doubleclickstop', curNode.title) != 'off') {
            document.all ? curNode.attachEvent('ondblclick', pauseBox) : curNode.addEventListener('dblclick', pauseBox, false);
            }
         if (getParam('singleclickstop', curNode.title) == 'on') {
            document.all ? curNode.attachEvent('onclick', pauseBox) : curNode.addEventListener('click', pauseBox, false);
            }
         }
      curNode.windowLock = getParam('windowlock', curNode.title).toLowerCase() == 'off' ? false : true;
      curNode.title = '';
      curNode.hasbox = 1;
      }
   else curNode.hasbox = 2;
   }
function getParam(param, list) {
   var reg = new RegExp('([^a-zA-Z]' + param + '|^' + param + ')\\s*=\\s*\\[\\s*(((\\[\\[)|(\\]\\])|([^\\]\\[]))*)\\s*\\]');
   var res = reg.exec(list);
   var returnvar;
   if(res) return res[2].replace('[[', '[').replace(']]', ']');
   else return '';
   }
function Left(elem) {
   var x = 0;
   if (elem.calcLeft) return elem.calcLeft;
   var oElem = elem;
   while(elem) {
      if ((elem.currentStyle) && (!isNaN(parseInt(elem.currentStyle.borderLeftWidth))) && (x != 0)) x += parseInt(elem.currentStyle.borderLeftWidth);
      x += elem.offsetLeft;
      elem = elem.offsetParent;
      }
   oElem.calcLeft = x;
   return x;
   }
function Top(elem) {
   var x = 0;
   if (elem.calcTop) return elem.calcTop;
   var oElem = elem;
   while(elem) {
      if ((elem.currentStyle) && (!isNaN(parseInt(elem.currentStyle.borderTopWidth))) && (x != 0)) x += parseInt(elem.currentStyle.borderTopWidth);
      x += elem.offsetTop;
      elem = elem.offsetParent;
      }
   oElem.calcTop = x;
   return x;
   }
var ah, ab;
function applyStyles() {
   if(ab) oDv.removeChild(dvBdy);
   if (ah) oDv.removeChild(dvHdr);
   dvHdr = document.createElement("div");
   dvBdy = document.createElement("div");
   CBE.boCSSBDY ? dvBdy.className = CBE.boCSSBDY : defBdyStyle();
   CBE.boCSSHDR ? dvHdr.className = CBE.boCSSHDR : defHdrStyle();
   dvHdr.innerHTML = CBE.boHDR;
   dvBdy.innerHTML = CBE.boBDY;
   ah = false;
   ab = false;
   if (CBE.boHDR != '') {
      oDv.appendChild(dvHdr);
      ah = true;
      }
   if (CBE.boBDY != '') {
      oDv.appendChild(dvBdy);
      ab = true;
      }
   }
var CSE, iterElem, LSE, CBE, LBE, totalScrollLeft, totalScrollTop, width, height ;
var ini = false;
function SHW() {
   if (document.body && (document.body.clientWidth != 0)) {
      width = document.body.clientWidth;
      height = document.body.clientHeight;
      }
   if (document.documentElement && (document.documentElement.clientWidth != 0) && (document.body.clientWidth + 20 >= document.documentElement.clientWidth)) {
      width = document.documentElement.clientWidth;
      height = document.documentElement.clientHeight;
      }
   return [width, height];
   }
var ID = null;
function moveMouse(e) {
   e ? evt = e : evt = event;
   CSE = evt.target ? evt.target : evt.srcElement;
   if (!CSE.hasbox) {
      iElem = CSE;
      while ((iElem.parentNode) && (!iElem.hasbox)) {
         scanBO(iElem);
         iElem = iElem.parentNode;
         }
      }
   if ((CSE != LSE) && (!isChild(CSE, dvHdr)) && (!isChild(CSE, dvBdy))) {
      if (!CSE.boxItem) {
         iterElem = CSE;
         while ((iterElem.hasbox == 2) && (iterElem.parentNode)) iterElem = iterElem.parentNode;
         CSE.boxItem = iterElem;
         }
      iterElem = CSE.boxItem;
      if (CSE.boxItem && (CSE.boxItem.hasbox == 1)) {
         LBE = CBE;
         CBE = iterElem;
         if (CBE != LBE) {
            applyStyles();
            if (!CBE.requireclick) if (CBE.fade) {
               if (ID != null) clearTimeout(ID);
               ID = setTimeout("fadeIn(" + CBE.fadespeed + ")", CBE.delay);
               }
            else {
               if (ID != null) clearTimeout(ID);
               COL = 1;
               ID = setTimeout("oDv.style.visibility='visible';ID=null;", CBE.delay);
               }
            if (CBE.IEbugfix) {
               hideSelects();
               }
            fixposx =!isNaN(CBE.fixX) ? Left(CBE) + CBE.fixX : CBE.absX;
            fixposy =!isNaN(CBE.fixY) ? Top(CBE) + CBE.fixY : CBE.absY;
            lockX = 0;
            lockY = 0;
            boxMove = true;
            ox = CBE.offX ? CBE.offX : 10;
            oy = CBE.offY ? CBE.offY : 10;
            }
         }
      else if (!isChild(CSE, dvHdr) && !isChild(CSE, dvBdy) && (boxMove)) {
         if ((!isChild(CBE, CSE)) || (CSE.tagName != 'TABLE')) {
            CBE = null;
            if (ID != null) clearTimeout(ID);
            fadeOut();
            showSelects();
            }
         }
      LSE = CSE;
      }
   else if (((isChild(CSE, dvHdr) || isChild(CSE, dvBdy)) && (boxMove))) {
      totalScrollLeft = 0;
      totalScrollTop = 0;
      iterElem = CSE;
      while(iterElem) {
         if(!isNaN(parseInt(iterElem.scrollTop))) totalScrollTop += parseInt(iterElem.scrollTop);
         if(!isNaN(parseInt(iterElem.scrollLeft))) totalScrollLeft += parseInt(iterElem.scrollLeft);
         iterElem = iterElem.parentNode;
         }
      if (CBE != null) {
         boxLeft = Left(CBE) - totalScrollLeft;
         boxRight = parseInt(Left(CBE) + CBE.offsetWidth) - totalScrollLeft;
         boxTop = Top(CBE) - totalScrollTop;
         boxBottom = parseInt(Top(CBE) + CBE.offsetHeight) - totalScrollTop;
         doCheck();
         }
      }
   if (boxMove && CBE) {
      bodyScrollTop = document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
      bodyScrollLet = document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft;
      mouseX = evt.pageX ? evt.pageX - bodyScrollLet : evt.clientX - document.body.clientLeft;
      mouseY = evt.pageY ? evt.pageY - bodyScrollTop : evt.clientY - document.body.clientTop;
      if ((CBE) && (CBE.windowLock)) {
         mouseY < - oy ? lockY =- mouseY - oy : lockY = 0;
         mouseX < - ox ? lockX =- mouseX - ox : lockX = 0;
         mouseY > (SHW()[1] - oDv.offsetHeight - oy) ? lockY =- mouseY + SHW()[1] - oDv.offsetHeight - oy : lockY = lockY;
         mouseX > (SHW()[0] - dvBdy.offsetWidth - ox) ? lockX =- mouseX - ox + SHW()[0] - dvBdy.offsetWidth : lockX = lockX;
         }
      oDv.style.left = ((fixposx) || (fixposx == 0)) ? fixposx : bodyScrollLet + mouseX + ox + lockX + "px";
      oDv.style.top = ((fixposy) || (fixposy == 0)) ? fixposy : bodyScrollTop + mouseY + oy + lockY + "px";
      }
   }
function doCheck() {
   if ( (mouseX < boxLeft) || (mouseX > boxRight) || (mouseY < boxTop) || (mouseY > boxBottom)) {
      if (!CBE.requireclick) fadeOut();
      if (CBE.IEbugfix) {
         showSelects();
         }
      CBE = null;
      }
   }
function pauseBox(e) {
   e ? evt = e : evt = event;
   boxMove = false;
   evt.cancelBubble = true;
   }
function showHideBox(e) {
   oDv.style.visibility = (oDv.style.visibility != 'visible') ? 'visible':'hidden';
   }
function hideBox(e) {
   oDv.style.visibility = 'hidden';
   }
var COL = 0;
var stopfade = false;
function fadeIn(fs) {
   ID = null;
   COL = 0;
   oDv.style.visibility = 'visible';
   fadeIn2(fs);
   }
function fadeIn2(fs) {
   COL = COL + fs;
   COL = (COL > 1) ? 1 : COL;
   oDv.style.filter = 'alpha(opacity=' + parseInt(100 * COL) + ')';
   oDv.style.opacity = COL;
   if (COL < 1) setTimeout("fadeIn2(" + fs + ")", 35);
   }
function fadeOut() {
   oDv.style.visibility = 'hidden';
   }
function isChild(s, d) {
   while(s) {
      if (s == d) return true;
      s = s.parentNode;
      }
   return false;
   }
var cSrc;
function checkMove(e) {
   e ? evt = e : evt = event;
   cSrc = evt.target ? evt.target : evt.srcElement;
   if ((!boxMove) && (!isChild(cSrc, oDv))) {
      fadeOut();
      if (CBE && CBE.IEbugfix) {
         showSelects();
         }
      boxMove = true;
      CBE = null;
      }
   }
function showSelects() {
   var elements = document.getElementsByTagName("select");
   for (i = 0; i < elements.length; i++) {
      elements[i].style.visibility = 'visible';
      }
   }
function hideSelects() {
   var elements = document.getElementsByTagName("select");
   for (i = 0; i < elements.length; i++) {
      elements[i].style.visibility = 'hidden';
      }
   }