//
// 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.
//
//
// Changes by Knito:
// 2005-10-15: Changed: maketip()
// New: getScrollXY(), setCookie()
//
var IWIDTH=250 // Tip box width
var ns6 // Arw we using Netscape6? // Knito
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 opera // Are we using Opera?
var x,y,winW,winH // Current help position and main window size
var idiv=null // Pointer to infodiv container
var idiv1=null // helper for iframe-hack
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(){
ns6=(document.getElementById && !document.all)?true:false;
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;
opera = (navigator.userAgent.indexOf("Opera") != -1) ? 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||opera){ nsfix() }
if(ns4) { px=""; }
}
function untip(){
if(idiv) idiv.visibility=ns4?"hide":"hidden";
idiv=null;
// also hide the iframe underneath the <div>
//
idivif=document.getElementById('infodivif');
if (idivif) {
idivif.style.visibility = "hidden";
}
}
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,title,text)
{
// this function replaces the original infobox.js::maketip()
if(hascss()) document.write('<div id=\"'+name+'\" class=\"infobox\" name=\"'+name+'\" style=\"width:'+IWIDTH+px+'!important;\"><div class=\"infoboxcaption\">'+title+'<\/div><div class=\"infoboxbody\">'+text+'<\/div><\/div>');
}
function showtip(){
// this function replaces the original infobox.js::showtip() which was loaded before
// using getScrollXY() it is capable of respecting scrolled positions
// knito - at - knito - dot - de 2005-03-03 http://www.ingoknito.de
var xy;
xy = getScrollXY();
idiv.left=(((x+IWIDTH+20)<winW)?x+12:x-IWIDTH-5)+xy[0]+px;
idiv.top=(((y+90)<winH)?y+12: y-90)+xy[1]+px;
idiv.visibility=ns4?"show":"visible";
}
function tip(name){
if(hascss()){
if(idiv) untip();
idiv=gettip(name);
if(ie4 || ie5)
{
idiv1=document.getElementById(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;
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();
}
}
}
// getScrollXY()
// found at http://www.howtocreate.co.uk/tutorials/index.php?tut=0&part=16 on 2005-03-02
// JavaScript tutorial
// Part 16 of 29; Obtaining the browser window size
function getScrollXY() {
var scrOfX = 0, scrOfY = 0;
if( opera || typeof( window.pageYOffset ) == 'number' ) {
//Netscape compliant
scrOfY = 0; // window.pageYOffset;
scrOfX = 0; // window.pageXOffset;
} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
//DOM compliant
scrOfY = document.body.scrollTop;
scrOfX = document.body.scrollLeft;
} else if( document.documentElement &&
( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
//IE6 standards compliant mode
scrOfY = document.documentElement.scrollTop;
scrOfX = document.documentElement.scrollLeft;
}
return [ scrOfX, scrOfY ];
}
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();
}
/**
* Sets a Cookie with the given name and value.
* found on 2005-03-11 at http://www.netspade.com/articles/javascript/cookies.xml
* Cookies in JavaScript / JavaScript Cookie Functions
*
* name Name of the cookie
* value Value of the cookie
* [expires] Expiration date of the cookie (default: end of current session)
* [path] Path where the cookie is valid (default: path of calling document)
* [domain] Domain where the cookie is valid
* (default: domain of calling document)
* [secure] Boolean value indicating if the cookie transmission requires a
* secure transmission
*/
function setCookie(name, value, expires, path, domain, secure)
{
document.cookie= name + "=" + escape(value) +
((expires) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
// Initialize after loading the page
window.onload=infoinit;
// EOF infobox.js
|