
  function popup(sUrl, sName, iWidth, iHeight){

    var iLeft       = (screen.availWidth - iWidth) / 2;
    var iTop        = (screen.availHeight - iHeight) / 2;
    var sProperties = 'height=' + iHeight + ',width=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes';
    oWin            = window.open(sUrl, sName, sProperties);
    oWin.focus();

  }

  function rotate(a,s,b){
    oImg = document.getElementById(s);
    // Change the image
    for(i=0;i<a.length;i++){
      if(a[i][0]==oImg.src){
        j = b ? ((i+1)<a.length?i+1:0) : ((i-1)<0?a.length-1:i-1);
        if(a[j][0]!=''){
          oImg.src = a[j][0];
          // Change the toolbar-items. That is if there are any!
          for(k=0;k<aActions.length;k++){
            // Fill the container with something else if the container exsists
            o = document.getElementById(aActions[k]+s);
            if(o) o.innerHTML = a['actions'][j][k];
          }
        }
        break;
      }
    }
  }

  function erase(node){
    if(node.type=='text') node.value='';
  }

  function traverse(node,action){
    //document.documentElement is the root of a HTML-document
    if(node){
      eval(action);
      if (node.childNodes != null) {
        for (var i=0; i < node.childNodes.length; i++) {
          traverse(node.childNodes.item(i),action);
        }
      }
    }
  }

  function getScreenWidth(){
    var oRoot = document.documentElement;
    var oBody = document.body;
    return window.innerWidth?(window.innerWidth-18):((oRoot&&oRoot.clientWidth)?oRoot.clientWidth:((oBody&&oBody.clientWidth)?oBody.clientWidth:0));
  }

  function getScreenHeight(){
    var oRoot = document.documentElement;
    var oBody = document.body;
    return window.innerHeight?(window.innerHeight-0):((oRoot&&oRoot.clientHeight)?oRoot.clientHeight:((oBody&&oBody.clientHeight)?oBody.clientHeight:0));
  }

  function getScrollX(){
    var oRoot = document.documentElement;
    var oBody = document.body;
    return (typeof(window.pageXOffset)=='number')?window.pageXOffset:((oRoot&&oRoot.scrollLeft)?oRoot.scrollLeft:((oBody&&oBody.scrollLeft)?oBody.scrollLeft:(window.scrollX?window.scrollX:0)));
  }

  function getScrollY(){
    var oRoot = document.documentElement;
    var oBody = document.body;
    return (typeof(window.pageYOffset)=='number')?window.pageYOffset:((oRoot&&oRoot.scrollTop)?oRoot.scrollTop:((oBody&&oBody.scrollTop)?oBody.scrollTop:(window.scrollY?window.scrollY:0)));
  }

  function addEventListener(o,sType,sFunction,bCapture){
    if(o.addEventListener)o.addEventListener(sType,sFunction,bCapture);
    else if(o.attachEvent)o.attachEvent('on'+sType,sFunction);
  }

  function removeEventListener(o,sType,sFunction,bCapture){
    if(o.removeEventListener)o.removeEventListener(sType,sFunction,bCapture);
    else if(o.detachEvent)o.detachEvent('on'+sType,sFunction);
  }

  function setTooltipPos(e){

    o = document.getElementById('tt');

    var iWidth   = getScreenWidth();
    var iHeight  = getScreenHeight();
    var iScrollX = getScrollX();
    var iScrollY = getScrollY();
    var iOffsetX = 20;
    var iOffsetY = 20;

    if(arguments.length==1){
      e = e ? e: window.event;
      if (!e.preventDefault) e.preventDefault = function () { return false; }
      if (!e.stopPropagation) e.stopPropagation = function () { if (window.event) window.event.cancelBubble = true; }
    }

    var x=e.pageX?e.pageX:e.clientX+iScrollX;
    var y=e.pageY?e.pageY:e.clientY+iScrollY;

    if((x+o.offsetWidth+iOffsetX>iWidth+iScrollX)&&(y+o.offsetHeight+iOffsetY>iHeight+iScrollY)){
      x=(iWidth+iScrollX)-o.offsetWidth;
      if(x<0)x=0;
      y=y-o.offsetHeight-iOffsetY;
      if(y<iScrollY)y=iHeight+iScrollY-o.offsetHeight;
    } else {
      if(x+o.offsetWidth+iOffsetX>iWidth+iScrollX){
        x=(iWidth+iScrollX)-o.offsetWidth;
        if(x<0)x=0;
      }else x=x+iOffsetX;
      if(y+o.offsetHeight+iOffsetY>iHeight+iScrollY){
        y=(iHeight+iScrollY)-o.offsetHeight;
      }else y=y+iOffsetY;
    }

    o.style.left = x + 'px';
    o.style.top  = y + 'px';
  }

  function hideTooltip(e){
    if(window.setTooltipPos){
      removeEventListener(document,'mousemove',setTooltipPos,true);
      //removeEventListener(document,'click',setTooltipPos,true);
    }
    oDiv = document.getElementById('tt');
    if(oDiv){
      oDiv.style.top     = '-999px';
      oDiv.style.left    = '-999px';
      oDiv.style.display = 'none';
    }
  }

  function showTooltip(o,s){
   if(document.getElementById(s)){
   //set the onmouseout action for object o
    o.onmouseout = hideTooltip;
    //create the tooltip-div if it is not already there
    if(!document.getElementById('tt')&&document.createElement&&document.body&&typeof(document.body.appendChild)!='undefined'){
      var el=document.createElement('DIV');
      el.id             = 'tt';
      el.className      = 'tooltip';
      el.style.position = 'absolute';
      el.style.zIndex   = '999';
      el.style.display  = 'none';
      el.style.top      = '-999px';
      el.style.left     = '-999px';
      document.body.appendChild(el);
    }else if(!document.getElementById('tt'))return;

    //set an eventlisteners to listen for mousemoves or a click
    //addEventListener(document,'mousemove',setTooltipPos,true);
    addEventListener(document,'click',setTooltipPos,true);

    //copy html to tooltip div
    document.getElementById('tt').innerHTML = document.getElementById(s).innerHTML;
    document.getElementById('tt').style.display='';

    //if(oTimer){clearTimeout(oTimer);oTimer=0;}
    //oTimer=setTimeout('bShow=true;',2000);
    }
  }
