//
// Bubblehelp infoboxes, (C) 2007 Klaus Knopper <infobox@knopper.net>
// You can copy/modify and distribute this code under the conditions
// of the GNU GENERAL PUBLIC LICENSE Version 2. 
//
var IWIDTH=250  // Tip box width
var ns4         // Are we using Netscape4?
var ie4         // Are we using Internet Explorer Version 4?
var ie5         // Are we using Internet Explorer Version 5 and up?
var kon         // Are we using KDE Konqueror?
var x,y,winW,winH  // Current help position and main window size
var idiv=null   // Pointer to infodiv container
var px="px"     // position suffix with "px" in some cases

function nsfix(){setTimeout("window.onresize = rebrowse", 2000);}

function rebrowse(){window.location.reload();}

function hascss(){ return gettip('infodiv')?true:false }

function infoinit(){
 ns4=(document.layers)?true:false, ie4=(document.all)?true:false;
 ie5=((ie4)&&((navigator.userAgent.indexOf('MSIE 5')>0)||(navigator.userAgent.indexOf('MSIE 6')>0)))?true:false;
 kon=(navigator.userAgent.indexOf('konqueror')>0)?true:false;
 x=0;y=0;winW=800;winH=600;
 idiv=null;
 document.onmousemove = mousemove;
 if(ns4&&document.captureEvents) document.captureEvents(Event.MOUSEMOVE);
 // Workaround for just another netscape bug: Fix browser confusion on resize
 // obviously conqueror has a similar problem :-(
 if(ns4||kon){ nsfix() }
 if(ns4) { px=""; }
}

function untip(){
 if(idiv) idiv.visibility=ns4?"hide":"hidden";
 idiv=null;
}

function gettip(name){
return (document.layers&&document.layers[name])?document.layers[name]:(document.all&&document.all[name]&&document.all[name].style)?document.all[name].style:document[name]?document[name]:(document.getElementById(name)?document.getElementById(name).style:0);
}

// Prepare tip boxes, but don't show them yet
// style="position:absolute; visibility:hidden; z-index:200; top:0'+px+'; left:0'+px+';"
// table style=cellpadding=2 cellspacing=0 bgcolor="#666666" style="border:1px #F07B2E;color:#F07B2E;"
//  cellpadding=2 cellspacing=0 bgcolor="#FFFFFF" style="border:1px #F07B2E;"
// <table width='+IWIDTH+'><tr><td><table width="100%" cellpadding=0 cellspacing=0><tr><th>
// </th></tr></table><table width="100%"><tr><td>
// </td></tr></table></td></tr></table>
function maketip(name,title,text){
 if(hascss()) document.write('<div id="'+name+'" name="'+name+'" style="position:absolute; visibility:hidden; z-index:200; top:0'+px+'; left:0'+px+';width: 250px;"><div id="tip"><h5>'+title+'</h5><ul><li>'+text+'</li></ul><div><img src="../images/spacer.gif" width="250px" height="18px" border="0"></div></div></div>'+"\n");
 
 //<div><table width='+IWIDTH+' class="tiptable"><tr><td width='+IWIDTH+'>'+text+'</td></tr></table>&nbsp;<br><div>&nbsp;</div></div></div></div>'+"\n"); 
}

function tip(name){
 if(hascss()){
  if(idiv) untip();
  idiv=gettip(name);
  if(idiv){
   // winW=(window.innerWidth)? window.innerWidth+window.pageXOffset-16:document.body.offsetWidth-20;
   // winH=(window.innerHeight)?window.innerHeight+window.pageYOffset  :document.body.offsetHeight;
   // IE standards compliant mode compatibility partly contributed by Stefan Neufeind
   winW=(window.innerWidth)? window.innerWidth+window.pageXOffset-16:(document.documentElement&&document.documentElement.clientWidth)?document.documentElement.clientWidth-20:document.body.offsetWidth-20;
   winH=(window.innerHeight)?window.innerHeight+window.pageYOffset  :(document.documentElement&&document.documentElement.clientHeight)?document.documentElement.clientHeight:document.body.offsetHeight;
   if(x<=0||y<=0){ // konqueror can't get mouse position
    x=(winW-IWIDTH)/2+(window.pageXOffset?window.pageXOffset:0); y=(winH-50)/2+(window.pageYOffset?window.pageYOffset:0); // middle of window
   }
   showtip();
  }
 }
}

function showtip(){
/*  idiv2 = document.getElementById("infodiv"); //.style.left=pos+'px';
  if((x+260)<winW)
    idiv2.style.left=x+12+px;
  else
    idiv2.style.left=x-255+px; //+px;
*/
  if (x-255 > 0) idiv.left=(((x+260)<winW)?x+12:x-255)+px;
  else idiv.left=(((x+260)<winW)?x+12:0)+px;
  if (y-90 > 0) idiv.top=(((y+90)<winH)?y+12:y-90)+px;
  else idiv.top=(((y+90)<winH)?y+12:0)+px;
  idiv.visibility=ns4?"show":"visible";
}

function mousemove(e){
 if(e)   {x=e.pageX?e.pageX:e.clientX?e.clientX:0; y=e.pageY?e.pageY:e.clientY?e.clientY:0;}
 else if(event) {x=event.clientX; y=event.clientY;}
 else {x=0; y=0;}
 if((ie4||ie5) && document.documentElement) // Workaround for scroll offset of IE
  {
    x+=document.documentElement.scrollLeft;
    y+=document.documentElement.scrollTop;
  }
 if(idiv) showtip();
}

function addLoadEventTip(func)
{	
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
		oldonload();
		func();
		}
	}
}

// Initialize after loading the page
addLoadEventTip(infoinit);

// EOF infobox.js
