/* Copyright 2004 by Alexander von Weiss, www.vonweiss.de. Diese Datei ist auf Dateigröße optimiert ;-) */
// tt(this,event,'ttid')
// ttAdv(this,event,'ttid',0,6,6,0,0)
/* this, event, ToolTip DIV id, tt Links (1) oder nach rechts (0) zeigend, Offset X, Offset Y, static? (tt klebt nicht an der Maus), sticky? (bleibt stehen) */
var cfgClass="ToolTip";
var cfgClassText="ToolTipText";
var cfgClassTitle="ToolTipTitle";
var cfgDelay=10; //in ms
var cfgttDirection=0; // 0 = nach rechts, 1 = nach links
var cfgStatic=0;
var cfgOffsetX=6;
var cfgOffsetY=6;

var Sobj,SobjW=0,SobjH=0,SobjX=0,SobjY=0,SoffX=0,SoffY=0,xlim=0,ylim=0;
var Sstatic=false,Ssticky=false,Swait=false,Svis=false,Sdwn=false;
var Su='undefined';
var Sinputs=new Array();

var ISdb=(document.compatMode&&document.compatMode!='BackCompat')? document.documentElement : document.body? document.body : null;
var ISopera=!!(window.opera&&document.getElementById);
var ISopera6=ISopera&&!document.defaultView;
var ISmsie=navigator.userAgent.toLowerCase().indexOf('msie')!=-1&&document.all&&ISdb&&!ISopera;
var ISnetscape=(!ISopera&&document.defaultView&&typeof document.defaultView.getComputedStyle!="undefined");
var ISwccc=!ISmsie&&!ISnetscape&&!ISopera&&document.getElementById;

function ReplaceThat(x,y){
	var string=this;
	var ret='',stringXi;
	while((stringXi=string.indexOf(x))!=-1){
		ret+=string.substring(0,stringXi)+y;
		string=string.substring(stringXi+x.length);
	}
	return ret+string;
}
String.prototype.ReplaceThat=ReplaceThat;

function SInt(retX){
	var retY="";
	return isNaN(retY=parseInt(retX))? 0 : retY;
}

function SGetSelects(){
	if(!ISopera6&&!ISmsie) return;
	var Vs=ISopera6? 'input' : 'select';
	if(document.all){
		var Vi=document.all.tags(Vs).length; while(Vi--)
			Sinputs[Vi]=document.all.tags(Vs)[Vi];
	}
	else if(document.getElementsByTagName){
		var Vi=document.getElementsByTagName(Vs).length; while(Vi--)
			Sinputs[Vi]=document.getElementsByTagName(Vs)[Vi];
	}
	var Vi=Sinputs.length; while(Vi--){
		Sinputs[Vi].x=0;
		Sinputs[Vi].y=0;
		var Vo=Sinputs[Vi];
		while(Vo){
			Sinputs[Vi].x+=Vo.offsetLeft||0;
			Sinputs[Vi].y+=Vo.offsetTop||0;
			Vo=Vo.offsetParent;
		}
	}
}

function SEvY(Ve){
	var ret=SInt(Ve.pageY||Ve.clientY||0)+SInt(ISmsie? ISdb.scrollTop : 0);
	if(ret > ylim||!Sdwn&&ret > ylim-24){
		ret-=(SobjH+5);
		Sdwn=false;
	} else {
		ret+=SoffY;
		Sdwn=true;
	}
	return ret;
}

function SEvX(Ve){
	var ret=SInt(Ve.pageX||Ve.clientX||0)+SInt(ISmsie? ISdb.scrollLeft : 0)+SoffX;
	if(ret > xlim)
		ret=xlim;
	var Vscr=SInt(window.pageXOffset||(ISdb? ISdb.scrollLeft : 0)||0);
	if(ret < Vscr)
		ret=Vscr;
	return ret;
}

function SHideInput(){
	if(!(ISmsie||ISopera6)||!Sinputs) return;
	var Vo;
	var Vi=Sinputs.length; while(Vi--){
		Vo=Sinputs[Vi];
		if(Svis&&SobjX+SobjW > Vo.x&&SobjX < Vo.x+Vo.offsetWidth&&SobjY+SobjH > Vo.y&&SobjY < Vo.y+Vo.offsetHeight)
			Vo.style.visibility='hidden';
		else Vo.style.visibility='visible';
	}
}

function SReleasMov(){
	if(document.onmousemove==SMove){
		if(document.releaseEvents) document.releaseEvents(Event.MOUSEMOVE);
		document.onmousemove=null;
	}
}

function SSetDivPos(retX,retY){
	var Vi=Sobj.style||Sobj;
	var Vpx=(ISopera6)? '' : 'px';
	Vi.left=(SobjX=retX)+Vpx;
	Vi.top=(SobjY=retY)+Vpx;
	SHideInput();
}

function SGetDiv(Vid){
	return (ISmsie? (document.all[Vid]||null) : (document.getElementById(Vid)||null));
}

function tt(Vthis,Ve,Vid){
	ttAdv(Vthis,Ve,Vid,cfgttDirection,cfgOffsetX,cfgOffsetY,cfgStatic,0)
}

function ttAdv(Vthis,Ve,Vid,Vleft,Voffx,Voffy,Vstatic,Vsticky){
	if(!Vthis.onmouseout) Vthis.onmouseout=SHide;
	if(Sobj) SHide();
	var Vmf=document.onmousemove||null;
	if(window.dd&&(window.DRAG&&Vmf==DRAG||window.RESIZE&&Vmf==RESIZE)) return;
	var Vuf=document.onmouseup||null;
	if(Vmf&&Vuf) Vuf(Ve);

	Sobj=SGetDiv(Vid);
	if(Sobj){
		Sstatic=Vstatic;
		Ssticky=Vsticky;
		SobjW=(Sobj.style.pixelWidth? Sobj.style.pixelWidth	: Sobj.offsetWidth);
		SobjH=(Sobj.style.pixelHeight? Sobj.style.pixelHeight : Sobj.offsetHeight);
		SoffX=Vleft? -(SobjW+Voffx) : Voffx;
		SoffY=Voffy;
		if(ISopera) SoffY+=21;
		var Vsh=SGetDiv(Vid+'R');
		if(Vsh){
			var Vh=SobjH - SInt(Vsh.style.pixelTop||Vsh.style.top||0);
			if(typeof Vsh.style.pixelHeight!=Su) Vsh.style.pixelHeight=Vh;
			else Vsh.style.height=Vh+'px';
		}

		SGetSelects();

		xlim=SInt((ISdb&&ISdb.clientWidth)? ISdb.clientWidth : window.innerWidth) +
			SInt(window.pageXOffset||(ISdb? ISdb.scrollLeft : 0)||0) - SobjW;
		ylim=SInt(window.innerHeight||ISdb.clientHeight) +
			SInt(window.pageYOffset||(ISdb? ISdb.scrollTop : 0)||0) -
			SobjH - SoffY;

		var Vi=Sobj.style||Sobj;
		if(window.dd&&dd.z)
			Vi.zIndex=Math.max(dd.z+1,Vi.zIndex);
		Ve=Ve||window.event;

		SSetDivPos(SEvX(Ve),SEvY(Ve));

		window.Srdl=window.setTimeout(
			'if(Ssticky){'+
				'SReleasMov();'+
				'window.SupFunc=document.onmouseup||null;'+
				'if(document.captureEvents) document.captureEvents(Event.MOUSEUP);'+
				'document.onmouseup=new Function("window.setTimeout(\'SHide();\',10);");'+
			'} else if(Sstatic) SReleasMov();'+
			'SShowDiv(\'true\');', cfgDelay
		);

		if(document.captureEvents) 
			document.captureEvents(Event.MOUSEMOVE);
		document.onmousemove=SMove;
	}
}

function SShowDiv(retX){
	Sobj.style.visibility=retX? 'visible' : 'hidden';
	Svis=retX;
	SHideInput();
}

var Sarea=false;
function SMove(Vev){
	if(!Sobj) return;
	if(ISnetscape||ISwccc){
		if(Swait) return;
		Swait=true;
		setTimeout('Swait=false;',5);
	}
	var Ve=Vev||window.event;
	SSetDivPos(SEvX(Ve),SEvY(Ve));
	if(ISopera6){
		if(Sarea&&Ve.target.tagName!='AREA') SHide();
		else if(Ve.target.tagName=='AREA') Sarea=true;
	}
}

function SHide(){
	if(window.Sobj){
		if(window.Srdl) window.clearTimeout(Srdl);
		if(!Ssticky||Ssticky&&!Svis){
			SShowDiv(false);
			SSetDivPos(-SobjW,-SobjH);
			Sobj=null;
			if(typeof window.SupFunc!=Su)
				document.onmouseup=window.SupFunc;
		}
		Ssticky=false;
		if(ISopera6&&Sarea)
			Sarea=false;
		SReleasMov();
		SHideInput();
	}
}

