/*********************************************************************
 * Selbstdarstellung: Tooltip Popup JavaScript
 * $Id$
 *********************************************************************
 * Based upon:
 *   PopupDescriptions
 *   Copyright (C) 2001 Thomas Brattli
 *   This script was released at DHTMLCentral.com
 *   Visit for more great scripts!
 *   This may be used and changed freely as long as this msg is intact!
 *   We will also appreciate any links you could give us.
 *
 *   Made by Thomas Brattli
 *********************************************************************/

/*********************************************************************
 * Browser detection
 *********************************************************************/
function lib_bwcheck() {
	this.ver    = navigator.appVersion;
	this.agent  = navigator.userAgent;
	this.dom    = document.getElementById ? 1 : 0;
	this.opera5 = (navigator.userAgent.indexOf("Opera") > -1 && document.getElementById) ? 1 : 0;
	this.ie5    = (this.ver.indexOf("MSIE 5") > -1 && this.dom && !this.opera5) ? 1 : 0;
	this.ie6    = ((this.ver.indexOf("MSIE 6") > -1 || this.ver.indexOf("MSIE 7") > -1) && this.dom && !this.opera5) ? 1 : 0;
	this.ie4    = (document.all && !this.dom && !this.opera5) ? 1 : 0;
	this.ie     = this.ie4 || this.ie5 || this.ie6;
	this.mac    = this.agent.indexOf("Mac") > -1;
	this.ns6    = (this.dom && parseInt(this.ver) >= 5) ? 1 : 0;
	this.ns4    = (document.layers && !this.dom) ? 1 : 0;
	this.bw     = (this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5);

	return this;
}

var bw = lib_bwcheck();

/*********************************************************************
 * Popup offset
 *********************************************************************/
var fromX = 50;
var fromY = -20;

/*********************************************************************
 * Variables
 *********************************************************************/
var px     = (bw.ns4 || window.opera) ? "" : "px";
var mouseX = 0;
var mouseY = 0;
var oDesc;

/*********************************************************************
 * Browser-indepently creates a new object
 *********************************************************************/
function makeObj(obj) {
   	this.evnt = bw.dom ? document.getElementById(obj) : bw.ie4 ? document.all[obj] : bw.ns4 ? document.layers[obj] : 0;

	if (!this.evnt)
        return false

	this.css     = bw.dom || bw.ie4 ? this.evnt.style : bw.ns4 ? this.evnt : 0;
   	this.wref    = bw.dom || bw.ie4 ? this.evnt : bw.ns4 ? this.css.document : 0;
	this.writeIt = b_writeIt;

	return this;
}

/*********************************************************************
 * Changes the inner text of an element
 *********************************************************************/
function b_writeIt(text) {
    if (bw.ns4) {
        this.wref.write(text);
        this.wref.close();
    } else
        this.wref.innerHTML = text;
}

/*********************************************************************
 * Handles onMouseMove events
 *********************************************************************/
function newPos(e) {
    if (!e)
	e = window.event; 

    mouseX = (bw.ns4) ? e.pageX :
             (bw.ie6) ? event.clientX +
                        document.documentElement.scrollLeft +
                        document.body.scrollLeft :
             (bw.ie)  ? event.x : /* event.clientX + window.scrollX : */
                        e.clientX + window.pageXOffset;
    mouseY = (bw.ns4) ? e.pageY :
             (bw.ie6) ? event.clientY +
                        document.documentElement.scrollTop +
                        document.body.scrollTop :
             (bw.ie)  ? event.y : /* event.clientY + window.scrollY : */
                        e.clientY + window.pageYOffset;
}

function popmousemove(e) {
    descx = bw.ns4 || bw.ns6 ? e.pageX : event.x;
    descy = bw.ns4 || bw.ns6 ? e.pageY : event.y;
}

/*********************************************************************
 * Displays the popup
 *********************************************************************/
function popup(num) {
    if (oDesc) {
		oDesc.writeIt('<div class="clDescription">'+messages[num]+'</div>');
		oDesc.css.left       = (mouseX + fromX) + px;
		oDesc.css.top        = (mouseY + fromY) + px;
		oDesc.css.visibility = "visible";
    }
}

/*********************************************************************
 * Removes the popup from the screen
 *********************************************************************/
function popout() {
    if (oDesc)
        oDesc.css.visibility = "hidden";
}

/*********************************************************************
 * Sets the popup handler
 *********************************************************************/
function setPopup() {
   	if (bw.ns4)
        document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove = newPos;
	oDesc = new makeObj('divDescription');
}

/*********************************************************************
 * Changes the HTML document to enable popup display
 *********************************************************************/
function changeTerms() {
    if (bw.dom) {
        var terms, i;

        terms = document.getElementsByTagName('span');

        for (i = 0; i < terms.length; i++) {
            if (terms[i].getAttribute('id') == 'term') {
                if (terms[i].attachEvent) {
                    terms[i].className = "term";
                    terms[i].attachEvent("onmouseover", function(ev){return(popup(ev.srcElement.getAttribute('popup')));});
                    terms[i].attachEvent("onmouseout", popout);
                } else if (terms[i].addEventListener) {
                    terms[i].setAttribute("class", "term");
                    terms[i].addEventListener("mouseover", function(){return(popup(this.getAttribute('popup')));}, true);
                    terms[i].addEventListener("mouseout", popout, true);
                }
            }
        }
    } /* else {
        alert("DOM unsupported!");
    } */
}

/*********************************************************************
 * Enables the popup functionality
 *********************************************************************/
function enablePopups() {
    setPopup();
    changeTerms();
}
