var ie4 = (document.all) ? true : false;
var ns4 = (document.layers) ? true : false;
var ns6 = (document.getElementById && !document.all) ? true : false;

function getObj(name)
  {
  if (document.getElementById)
    {
    this.obj = document.getElementById(name);
    this.style = document.getElementById(name).style;
    }
  else if (document.all)
    {
    this.obj = document.all[name];
    this.style = document.all[name].style;
    }
  else if (document.layers)
    {
    this.obj = document.layers[name];
   	this.style = document.layers[name];
    }    
  }

function writeToLayer(layerName, text)
  {
  if (ie4)
    { 
    document.all(layerName).innerHTML = text;
    }
  else if (ns4) 
    {
    document[layerName].document.write(text);
    document[layerName].document.close(text);
    }
  else if (ns6)
    {
    layerRef = document.getElementById([layerName]);
    range = document.createRange();
    range.setStartBefore(layerRef);
    domFrag = range.createContextualFragment(text);
    while (layerRef.hasChildNodes()) 
      {
      layerRef.removeChild(layerRef.lastChild);
      }
    layerRef.appendChild(domFrag);
    }
  }


function setlayerVisibility(layerName,visiblity)
  {
  if (ie4)
    document.all(layerName).style.visibility = visiblity;
  else if (ns4) 
    document[layerName].visibility = visiblity;
  else if (ns6)
    document.getElementById([layerName]).style.visibility = visiblity;
  }

function showLayer(layerName)
  {
  setlayerVisibility(layerName,"visible");
  }
  
function hideLayer(layerName)
  {
  setlayerVisibility(layerName,"hidden");
  } 

function moveLayer(layerName,x,y)
  {
  if (ie4)
    {
    document.all(layerName).style.left = x;
    document.all(layerName).style.top = y;
    }
  else if (ns4) 
    {
    }
  else if (ns6)
    {
    document.getElementById([layerName]).style.left = x;
    document.getElementById([layerName]).style.top = y;
    }  
  }

function getLayerWidth(layerName)
  {
  if (ie4)
    {
    return document.all(layerName).offsetWidth;
    }
  else if (ns4) 
    {
    }
  else if (ns6)
    {
	return document.getElementById([layerName]).offsetWidth;
    }  
  }  

function getLayerHeight(layerName)
  {
  if (ie4)
    {
    return document.all(layerName).offsetHeight;
    }
  else if (ns4) 
    {
    }
  else if (ns6)
    {
	return document.getElementById([layerName]).offsetHeight;
    }  
  }  

function popUp()
  {
  this.layerName = "";
  this.currLayerName = "";
  this.offsetY = 10;
  this.offsetX = -10;
  this.left = 0;
  this.top = 0;
  this.height = 0;
  this.width = 0;
  }
  
function showPopup(e,layerName,x,y)
  {  
  var myMouse = new mouseInfo(e);
  var y;
  if (this.currLayerName == "" || !this.isOverPopup(e))    
    {
    this.layerName = layerName;
    if (this.layerName != this.currLayerName)
      { 
      if (this.currLayerName != "") this.hide(e,this.currLayerName);
      this.currLayerName = this.layerName;
	  
      this.left = myMouse.posX-this.offsetX+x;
      this.top = myMouse.posY-this.offsetY+y;
	  this.width = getLayerWidth(this.layerName);
	  this.height = getLayerHeight(this.layerName);

	  y = this.top+this.height;
	  
	  var browserHeight;
	  
	  if(ns6) browserHeight = window.innerHeight+window.pageYOffset;
      else browserHeight = document.body.clientHeight+document.body.scrollTop;
	  
      if (browserHeight < y)
	    {
		y = browserHeight - y;
		this.top = this.top + y;
		} 
	  
      moveLayer(this.layerName,this.left,this.top);
      showLayer(this.layerName);
      }  
    }
	
  // alert(window.innerHeight + " " + y);	
  }

popUp.prototype.show = showPopup;  

function isOverPopup(e)
  {
  var myMouse = new mouseInfo(e);
  return !(1*myMouse.posX<=1*this.left || myMouse.posX>=(1*this.width+1*this.left) || 
      myMouse.posY<=this.top  || myMouse.posY>=(1*this.height+1*this.top));
  }

popUp.prototype.isOverPopup = isOverPopup;  


function hidePopup(e,layerName)
  {
  if (!(this.isOverPopup(e)))
    {
	hideLayer(layerName);
    this.currLayerName = "";
    }
  }

popUp.prototype.hide = hidePopup;  

var myPopup = new popUp;

function cancelEvent(e)
  {
  e.cancelBubble = true;
  }