//
// Bubblehelp infoboxes, (C) 2002 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,IHEIGHT;  // Tip box width / height

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

var frame_aktiv = 0;
var layerarr = new Array();

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.forms['layerform'].elements['layerchecker'].onchange = dochange; ?????
 //if(ns4&&document.captureEvents) document.forms['layerform'].elements['layerchecker'].captureEvents(Event.CHANGE);
 
 document.onmousemove = mousemove;
 if(ns4&&document.captureEvents) document.captureEvents(Event.MOUSEMOVE);
 
 galerie.document.onmousemove = mousemoveG;
 if(ns4&&galerie.document.captureEvents) galerie.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
function maketip(name,code,lwidth,lheight){
layerarr[layerarr.length] = new Array(name,lwidth,lheight);
 if(hascss()) document.write('<div id="'+name+'" name="'+name+'" style="position:absolute; visibility:hidden; z-index:20; top:0'+px+'; left:0'+px+';">'+code+'</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;
  
  
  	for(i=0;i<layerarr.length;i++)
	{
		if(layerarr[i][0] == name)
		{
		IWIDTH = layerarr[i][1];
		IHEIGHT = layerarr[i][2];
		}
	}
  

   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();
  
  //document.forms[0].elements[5].value = winW+"; "+winH;
  
  }
 }
}

function showtip(){
//alert("idwidth: "+IWIDTH+"; iheight: "+IHEIGHT);
  idiv.left=(((x+IWIDTH+10)<winW)?x+12:x-IWIDTH-5)+px; idiv.top=(((y+IHEIGHT)<winH)?y+12:y-IHEIGHT)+px; // Werte anpassen!! 260 stimmt nicht mehr für die breite des Layer!!
  idiv.visibility=ns4?"show":"visible";
//  window.status="idiv="+idiv+"X:"+(idiv.left?idiv.left:"NAN")+", Y:"+(idiv.top?idiv.top:"NAN")+", x:"+x+", y:"+y;
}

/* alte funktion ohne individuelle breite/höhe für jeden layer!
function showtip(){
  idiv.left=(((x+260)<winW)?x+12:x-255)+px; idiv.top=(((y+90)<winH)?y+12:y-90)+px; // Werte anpassen!! 260 stimmt nicht mehr für die breite des Layer!!
  idiv.visibility=ns4?"show":"visible";
//  window.status="idiv="+idiv+"X:"+(idiv.left?idiv.left:"NAN")+", Y:"+(idiv.top?idiv.top:"NAN")+", x:"+x+", y:"+y;
}
*/


// Normale Funktion zum Ermitteln der Cursorposition
function mousemove(e){
frame_aktiv = 0;
 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();
 //document.forms[0].elements[1].value = x;
 //document.forms[0].elements[2].value = y;
}


// für folgende funktion UNBEDINGT die kompatibilität zu IE etc. prüfen!!
// ZIEL: Ermitteln der Cursorposition (gemessen an der oberen linken Ecke) trotz Frame!
function mousemoveG(e){ 
frame_aktiv = 1;
// Cursorposition von der linken sichtbaren Ecke des Framefensters ermitteln

 if(e)   {x=e.pageX?e.pageX:e.clientX?e.clientX:0; y=e.pageY?e.pageY:e.clientY?e.clientY:0;}
 else if(galerie.event) {x=galerie.event.clientX; y=galerie.event.clientY;} // "galerie." nötig?? wozu??
 else {x=0; y=0;}
 if((ie4||ie5) && galerie.document.documentElement) // Workaround for scroll offset of IE // PRÜFEN!!!
  {
   x-=galerie.document.documentElement.scrollLeft;
   y-=galerie.document.documentElement.scrollTop;
  }
  else // <-- Differenzierung präziser machen!!
  {
  x-=galerie.pageXOffset;
  y-=galerie.pageYOffset;
  }

  //

  
  
  // Abstand des Frames von der linken und oberen Seite addieren
  x+=152;
  y+=10;
  
 if(idiv) showtip();
 //document.forms[0].elements[3].value = x;
 //document.forms[0].elements[4].value = y;
}

// Initialize after loading the page
//window.onload=infoinit();
// EOF infobox.js