/* tooltips */

___tooltip1='tipLittle';
___tooltip2='tipBig';
___tooltip3='tip';

___defaultStyle='background-color:#FFFFE1;	border: 1px solid #999999;	font-size:12px; font-family: Arial, Helvetica, sans-serif;	padding:2px;';
// this style resembles the small yellow bubbles, but is a bit bigger
___baseStyle='position:absolute;left:0px;top:0px;visibility:hidden;text-align:left;z-index:999;';
___xMousePos = 0; // Horizontal position of the mouse on the screen
___yMousePos = 0; // Vertical position of the mouse on the screen
___xMousePosMax = 0; // Width of the page
___yMousePosMax = 0; // Height of the page
___xFromMouse=0; // x-distance of the tooltip from the mousepointer, browser-specific
___yFromMouse=0; // y-distance 
___yUpFromMouse=10;
___nav={}; // if browser is ie / ns / op (eg: ___nav.ie=true )
___myTooltips=[]; // array with different tooltip-objects

___setupMousePositionCapturer();
___begin();

function ___isString( str ){
	return ( str!=null && str.length>0 );
}
function ___isObject( obj ){
	return ( obj!=null && obj.toString!=null );
}
function ___begin(){	
	if( window.tooltip!=null ){
		if( ___isString( window.tooltip )){
			___myTooltips.push( { name:window.tooltip } );
		} else {
			___myTooltips.push( window.tooltip );
		}
	} else if ( window.___tooltip1==null ){
		var tt={};
		tt.name='info';
		___myTooltips.push( tt );
	}
	for( var i=1; window['___tooltip'+i]!=null; i++ ){ 
		var wt=window['___tooltip'+i];
		if( ___isString( wt )){
			___myTooltips.push( { name:wt } );
		} else {
			___myTooltips.push( wt );
		}
	}
	for ( var k=0; k< ___myTooltips.length; k++ ){		
		___writeDivTag(___myTooltips[k]);
		___installTagListeners( k );		
	}
}
function ___setupMousePositionCapturer(){	
	___captureFunction= function(){};	
	if (document.getElementById && window.innerWidth ) {
		// Netcsape 6 + Mozilla + Opera
		___yFromMouse=21;
		___xFromMouse=4;
		___captureFunction = ___captureMouse_NS;
		if (navigator.userAgent.indexOf("Opera")>-1){
			___nav.op= true;
			___yFromMouse= 21+17;				
		} else {
			___nav.nn= true;	
		}		
	} else if (document.all) {
		// Internet Explorer
		___nav.ie= true;
		___yFromMouse=17;
		___xFromMouse=2;
		___captureFunction = ___captureMouse_IE_body;
		if ( document.documentElement&& document.documentElement.clientWidth>0 ){
			___captureFunction = ___captureMouse_IE_documentElement;
		}			    	
	}  
	oldOnMouseMove= document.onmousemove;
	document.onmousemove=function(e){
		if( oldOnMouseMove!=null ){		
			oldOnMouseMove(e);
		}
		___captureFunction(e);
		//___out('y'+___yMousePos+'ym'+___yMousePosMax+' ');
		___moveInfoElement( window.activeInfoDiv );
	}	
}
function ___captureMouse_IE_documentElement(){	//___out('doucument');		
	___xMousePos = window.event.x+ document.documentElement.scrollLeft; 
        ___yMousePos = window.event.y+document.documentElement.scrollTop;
        ___xMousePosMax = document.documentElement.clientWidth+document.documentElement.scrollLeft;
        ___yMousePosMax = document.documentElement.clientHeight+document.documentElement.scrollTop-12;   	
}
function ___captureMouse_IE_body(){ //___out('body');
	___xMousePos = window.event.x+document.body.scrollLeft;
        ___yMousePos = window.event.y+document.body.scrollTop;
        ___xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
        ___yMousePosMax = document.body.clientHeight+document.body.scrollTop;
}
function ___captureMouse_NS(e){
	___xMousePos = e.pageX;
        ___yMousePos = e.pageY;
        ___xMousePosMax = window.innerWidth+window.pageXOffset;
        ___yMousePosMax = window.innerHeight+window.pageYOffset;
}
function ___out( string ){
	var outDiv=document.getElementById('___out')
	if(outDiv!=null) outDiv.firstChild.nodeValue+=string+"\n";
}
function ___writeDivTag( obj ){	
	if(obj.id!=null &&obj.id.length>0){
		document.writeln('<style type="text/css">#'+obj.id+'{'+___baseStyle+'}</style>');
	} else {
		obj.id= obj.name;
		if( obj.Class == null ){
			obj.Class= obj.name;
		}
		document.writeln('<div style="' + ___baseStyle + '" class="' + obj.Class + '" id="'+obj.id+'">&nbsp;</div>');
	}	
}
function ___installTagListeners( tooltip_nr, delayTime ){	
	// wait for info Div to load
	var obj= ___myTooltips[ tooltip_nr ];
	var divNode= document.getElementById( obj.id );
	if( ___isObject(divNode) ){		
		if( obj.tags==null ){
			obj.tags= [];
			if( obj.tag==null ){
				obj.tags.push('a');
				obj.tags.push('span');
				obj.tags.push('div');
				obj.tags.push('input');
				obj.tags.push('img');
				obj.tags.push('td');
				obj.tags.push('area');
			} else {
				obj.tags.push( obj.tag );
			}
		}		
		for( var k=0; k<obj.tags.length; k++){		
			var myNodes =document.getElementsByTagName(  obj.tags[k].toUpperCase() );
			for(var i=0; myNodes!=null&&i<myNodes.length; i++){				
				var node= myNodes[i];
				var infoText=node.getAttribute( obj.name ); 
				if( ___isString(infoText)&& node.infoDivNode_==null ){
						node.infoText_= infoText;
						node.infoDivNode_ = divNode;						
						// the _ is used to avoid name conflicts with the attributes of the user
						node.style.cursor='pointer';
						if( node.onmouseover==null ){
							node.onmouseover= ___showInfo;					
						} else {
							node.oldOnmouseover= node.onmouseover;
							node.newOnmouseover= ___showInfo;
							node.onmouseover= function(){
								this.newOnmouseover();
								this.oldOnmouseover();
							}
						}
						if( node.onmouseout==null ){
							node.onmouseout= ___hideInfo;					
						} else {
							node.oldOnmouseout= node.onmouseout;
							node.newOnmouseout= ___hideInfo;
							node.onmouseout= function(){
								this.newOnmouseout();
								this.oldOnmouseout();
							}
					   }
				}
			}
		}
	}	
	if( delayTime==null)
		delayTime=0;
	if( delayTime < 2 ){
		delayTime+=0.2;
	}	
	setTimeout('___installTagListeners('+tooltip_nr+','+delayTime+');',delayTime*1000); 
}
function ___moveInfoElement( infoElement, setTurnOver ){	
	// setTurnOver: decide only once if position should be above or beneath mouse to prevent jerking	
	if( infoElement ==null ){
		//___out('infoElement=null ');
		//alert('infoElement=null');
		//infoElement=1;
	} else if( infoElement.style.visibility != 'hidden'){		
		var x,y;
		x=___xFromMouse+___xMousePos;
		//if(infoElement.centered==true){
			x-=0.5*infoElement.offsetWidth;			
		//}		
		if( ___xMousePosMax>0 && x+ infoElement.offsetWidth> ___xMousePosMax-20 ){
			x= ___xMousePosMax-20- infoElement.offsetWidth;			
		}
		if( x<5 ){
			x=5;
		}		
		if( ___nav.op==true ){
			y= ___yMousePos - ___yUpFromMouse - infoElement.offsetHeight;	
			if( setTurnOver==true ){
				infoElement.turnOver= ( y < 5 );
			}
			if( infoElement.turnOver==true ){
				y= ___yFromMouse+___yMousePos;	
			}
		} else {
			y= ___yFromMouse+___yMousePos;		
			if( setTurnOver==true ){
				infoElement.turnOver= (___yMousePosMax>0 && y+ infoElement.offsetHeight> ___yMousePosMax);
			}
			if( infoElement.turnOver==true ){
				y= ___yMousePos - ___yUpFromMouse - infoElement.offsetHeight;	
			}
		}		
		infoElement.style.left=x+'px'; 
		infoElement.style.top=y+'px';		
	} 
}
function ___showInfo(){
	var infoDiv= this.infoDivNode_;
	if( infoDiv==null ) {} else {		
		___unsetInfoText( infoDiv );
		infoDiv.left='0px';
		infoDiv.top='0px';
		window.activeInfoDiv= infoDiv;
		___setInfoText( infoDiv, this.infoText_ );		
		infoDiv.style.visibility='visible';
		___moveInfoElement( infoDiv, true );
	}				
}
function ___hideInfo(){		
	var infoDiv= this.infoDivNode_;
	if( infoDiv==null ) {} else {		
		infoDiv.style.visibility='hidden';
		___unsetInfoText(infoDiv);
	}
}
function ___setInfoText( infoElement,text ){			
	var subtext='';
	for(var i=0;i<text.length;++i){		
		if(text.substr(i,4)=='<br>'){			
			infoElement.appendChild(document.createTextNode(subtext));
			infoElement.appendChild(document.createElement('br'));
			subtext='';
			i+=3;
		} else {
						
			subtext=subtext+text.charAt(i)
		}
	}
//	infoElement.appendChild( document.createTextNode(subtext));		
	infoElement.innerHTML = text;		
}
function ___unsetInfoText(infoElement){
	while(infoElement.hasChildNodes()){
		infoElement.removeChild(infoElement.lastChild);
	}	
}

/* end tooltips */