// How many pixels to the right/left of the cursor to show the popup
// Values between 3 and 12 are best
if (typeof offsetx == 'undefined') { var offsetx = 3;}

// How many pixels to the below the cursor to show the popup
// Values between 3 and 12 are best
if (typeof offsety == 'undefined') { var offsety = 12;}

if (typeof offsetxS == 'undefined') { var offsetxS = 1;}
if (typeof offsetyS == 'undefined') { var offsetyS = 1;}

ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false

// Microsoft Stupidity Check
if (ie4) {
  if (navigator.userAgent.indexOf('MSIE 5') > 0) {
    ie5 = true;
  } else {
    ie5 = false;
  }
} else {
  ie5 = false;
}

var x = 0;
var y = 0;
var snow = 0;
var snowStatic = 0;
var sw = 0;
var cnt = 0;
var dir = 1;
var widthInt = 0;

// Public functions to be used on pages.

// Caption popup
function showPopupDiv(d, width, text) {
  widthInt = width;
  txt = "<table width="+width+" border=0 cellpadding=2 cellspacing=1 bgcolor=\"#f0f0f0\" class=\"table_bord\"><tr><td class=\"PopupBlock\">"+text+"</td></tr></table>";
  if ((ns4) || (ie4)) {
  /*if (ns4) over = document.overDiv;
  if (ie4) over = overDiv.style;*/
  document.onmousemove = mouseMove;
  if (ns4) document.captureEvents(Event.MOUSEMOVE);
  }
  layerWrite(txt);
  dir = d;
  disp();
}

function showStaticPopupDiv(obj, d, width, bgcolor, text) {
  //bgcolor=f0f0f0
  txt = "<table width="+width+" border=0 cellpadding=2 cellspacing=1 bgcolor=\"" + bgcolor + "\" class=\"table_bordBlack\"><tr><td ><font color=\"000000\">"+text+"</font></td></tr></table>";
  layerWrite(txt);
  dir = d;
  document.onmousemove = null;  
  //document.getElementById( 'overDiv' ).ondblclick = mouseClickOnDiv;
  widthInt = width;
  dispStaticDiv(obj);
}


// Clears popups if appropriate
function hidePopupDiv() {
  
  if (cnt >= 1) { sw = 0 };
  if ((ns4) || (ie4)) {
    if (sw == 0) {
      snow = 0;
      hideObject(document.getElementById( 'overDiv').style, 0);
      hideObject(document.getElementById( 'HelpShim' ).style, 1);
    } else {
      cnt++;
    }
  }
  
}

function hideStaticPopupDiv() {
  
  if (cnt >= 1) { sw = 0 };
  if ((ns4) || (ie4)) {
    if (sw == 0) {
        snowStatic = 0;
      hideObject(document.getElementById( 'overDiv').style, 0);
      hideObject(document.getElementById( 'HelpShim' ).style, 1);
    } else {
      cnt++;
    }
  }
  
}

// Non public functions. These are called by other functions etc.

function dispStaticDiv(obj) {
  x=getposOffsetDiv(obj, "left")
  y=getposOffsetDiv(obj, "top")
   
  if ((ns4) || (ie4)) {
      var yPoint = y+offsetyS;
      
      if( yPoint + 150 > document.body.clientHeight)
      {
         yPoint = yPoint + 150;
      }  
      
      if (dir == 2) 
      { // Center
        moveTo(document.getElementById( 'overDiv' ).style, x+offsetxS-(widthInt/2), yPoint);
      }
      if (dir == 1) { // Right
        moveTo(document.getElementById( 'overDiv' ).style, x+offsetxS, yPoint);
      }
      if (dir == 0) { // Left
        moveTo(document.getElementById( 'overDiv' ).style, x-offsetxS-widthInt, yPoint);
      }
      if (snowStatic == 0)
      {
        showObject(document.getElementById( 'overDiv' ).style);
        snowStatic = 1;
      }
      else
      {
        hideObject(document.getElementById( 'overDiv').style, 0 );
        hideObject(document.getElementById( 'HelpShim' ).style, 1);
        snowStatic = 0;
      }
  }
// Here you can make the text goto the statusbar.
}

// Common calls
function disp() {
  if (ns4) { x = window.e.pageX; y = window.e.pageY; }
  if (ie4) { x = event.x; y = event.y; }
  if (ie5) { x = event.x + document.body.scrollLeft; y = event.y + document.body.scrollTop; }
  if ((ns4) || (ie4)) {
    if (snow == 0)  {
      var yPoint = y+offsety;
      if( yPoint + 175 > document.body.clientHeight)
      {
         yPoint = yPoint - 195
      }  
      
      var xPoint = x;      
      if( xPoint + widthInt + offsetx > document.body.clientWidth)
      {
         xPoint = xPoint - widthInt - 2*offsetx;
      }     
         
       
      if (dir == 2) { // Center
        moveTo(document.getElementById( 'overDiv' ).style, xPoint+offsetx-(widthInt/2), yPoint);
      }
      if (dir == 1) { // Right
        moveTo(document.getElementById( 'overDiv' ).style, xPoint+offsetx, yPoint);
      }
      if (dir == 0) { // Left
        moveTo(document.getElementById( 'overDiv' ).style, xPoint-offsetx-widthInt, yPoint);
      }
      showObject(document.getElementById( 'overDiv' ).style);
      snow = 1;
    }
   }
// Here you can make the text goto the statusbar.
}

// Moves the layer

function mouseClickOnDiv(e) {
    hideObject(document.getElementById( 'overDiv' ).style, 0);
    hideObject(document.getElementById( 'overDiv' ).style, 1);
}

function mouseMove(e) {
  if (ns4) { x = e.pageX; y = e.pageY; }
  if (ie4) { x = event.x; y = event.y; }
  if (ie5) { x = event.x + document.body.scrollLeft; y = event.y + document.body.scrollTop; }
  if (snow) {
    var yPoint = y+offsety;
    if( yPoint + 175 > document.body.clientHeight)
    {
        yPoint = yPoint - 195
    }
    
    var xPoint = x;
    
    if( xPoint + widthInt + offsetx > document.body.clientWidth)
      {
         xPoint = xPoint - widthInt - 2*offsetx;
      }  
    
    if (dir == 2) { // Center
      moveTo(document.getElementById( 'overDiv' ).style, xPoint+offsetx-(widthInt/2), yPoint);
    }
    if (dir == 1) { // Right
      moveTo(document.getElementById( 'overDiv' ).style, xPoint+offsetx, yPoint);
    }
    if (dir == 0) { // Left
      moveTo(document.getElementById( 'overDiv' ).style, xPoint-offsetx-widthInt, yPoint);
    }    
  }
}

// Writes to a layer
function layerWrite(txt) {
  if (ns4) {
    var lyr = document.overDiv.document;
    lyr.write(txt);
    lyr.close();
  } else if (ie4) {
    document.getElementById( 'overDiv' ).innerHTML = txt;
  }
}

// Make an object visible
function showObject(obj) {
  
  if (ns4) {
    obj.visibility = "show";
  }
  else if (ie4) {
    obj.visibility = "visible";
  }
  
  var IfrRef = document.getElementById('HelpShim'); 
  IfrRef.style.display = "block";
}

// Hides an object
function hideObject(obj, div) {
  if (div == 0)
  {
    if (ns4) obj.visibility = "hide";
    else if (ie4) obj.visibility = "hidden";
  }
  else
  {
    var IfrRef = document.getElementById('HelpShim'); 
    IfrRef.style.display = "none";
  }
}

// Move a layer
function moveTo(obj, xL, yL) {
  obj.left = xL + document.body.scrollLeft;
  obj.top = yL + document.body.scrollTop;
  var IfrRef = document.getElementById('HelpShim');   
  var DivRef = document.getElementById('overDiv');
  IfrRef.style.left = DivRef.style.left;
  IfrRef.style.top = DivRef.style.top;
  IfrRef.style.width = DivRef.offsetWidth;
  IfrRef.style.height = DivRef.offsetHeight;
  IfrRef.style.zIndex = DivRef.style.zIndex - 1;
  IfrRef.style.backgroundColor = "black";    
}

function getposOffsetDiv(what, offsettype){
var totaloffset=(offsettype=="left")? (what.offsetLeft + what.offsetWidth) : (what.offsetTop + what.offsetHeight);
var parentEl=what.offsetParent;
while (parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
}

