/* Tooltips anzeigen und positionieren */
/* rb: 16.08.11 Tooltips auf Bild -> groses Bild integriert */
/*		set_HDir() set_VDir() überarbeitet */

var e_Breite = 300;         	// Vorgabewert für Elementbreite (Layer und Tooltip)
var t_Breite2 = 0;				// Externer Vorgabewert Tooltipbreite (PHP)
var l_Breite2 = 0;				// Externer Vorgabewert Layerbreite (PHP)
var hDir = 0;         			// Vorgabe Ausrichtung; 0=rechts 1=links
var vDir = 0;        			// Vorgabe Ausrichtung; 0=unten 1=oberhalb
var e_ChangeVDir = 10;    		// Schwellwert für Wechsel der V-Ausrichtung am unteren Rand
var t_Space = 10;        		// Tooltip: Abstand vom Cursor
var l_Space = 50;				// Abstand Layer von der Maus
var t_show = false; 			// Tooltip: Anzeige aktiv/inaktiv
var l_show = false; 			// Layer: Anzeige aktiv/inaktiv
var Tooltip = null;        		// Tooltip DIV-Objekt
var Layer = null;				// Layer DIV-Objekt
var e_hDir, e_vDir, e_height, e_Space;	// Datenspeicher des aktuellen Elements

document.onmousemove = cursorMove;

// Layer kreieren und anzeigen
function showLayer(id, breite) {
	if (l_show) {
		hideLayer();	
	}
	Layer = crossGetObject(id);
	if (Layer == null) return;
	if (l_Breite2 && l_Breite2>20) {
		e_Breite = l_Breite2;
	}
	if (breite && breite>20) {
		e_Breite = breite;
	}
	e_Space = l_Space;
	show_element(Layer);
	l_show = true;
	pos_element(Layer)
}
function hideLayer() {
	if (Layer == null) return;
	crossHideObject(Layer);
	l_show=false;
	crossMoveTo(Layer, -200, 0);	
}


// Tooltip kreieren und anzeigen
function showTooltip(id, breite) {
	Tooltip = crossGetObject(id);
	if (Tooltip == null) return;
	if (t_Breite2 && t_Breite2>20) {
		e_Breite = t_Breite2;
	}
	if (breite && breite>20) {
		e_Breite = breite;
	}
	e_Space = t_Space;
	show_element(Tooltip);
	t_show = true;
}

// Tooltip mit Bild kreieren und anzeigen
// id des Div-Layers, id des Bildes, url des neuen Bildes
function showTooltipImg(idDiv, idImg, img) {
	Tooltip = crossGetObject(idDiv); 			// hole Object des Tooltip-Layers
	Bild = crossGetObject(idImg);				// hole object des Bildes
	if (Tooltip == null) 	return;
	if (Bild == null) 	return;
	Bild.src=img; 								// Wechsele Bild im Layer */
	e_Space = t_Space;							// Abstand zur Mouse
	show_element(Tooltip);						// anzeigen
	t_show = true;
	e_Breite = Tooltip.offsetWidth;				
	pos_element(Tooltip);
}
function show_element(e) {
	e_height = e.offsetHeight;
	e.style.width=e_Breite+'px';
	set_HDir();
	set_VDir();
	crossShowObject(e);
	e_height = e.offsetHeight;
	// set_VDir();
}

function hideTooltip() {
	if (Tooltip == null) return;
	crossHideObject(Tooltip);
	t_show=false;
	crossMoveTo(Tooltip, -200, 0);
}

// der Maus folgen
function cursorMove(e) {
	var posX, posY;
	crossMousePosition(e);
	if (t_show) {
		pos_element(Tooltip);
	}
}

function pos_element(e)  {
	/* Horizontal rechts */
		posX=1;
		posY=1;
		// horizontale Ausrichtung
		if (e_hDir==0) { 		// rechts
			posX = crossMouseX + e_Space; 
		} 
		if (e_hDir==1) {		// links
 			posX = crossMouseX-e_Breite-e_Space;
		}
		if (e_hDir==2) {		// zentriere
			posX = crossMouseX - (e_Breite/2);
		}
		// vertikale Ausrichtung
		if (e_vDir==0) { 							/* unten */ 
			posY = crossMouseY + e_Space;
		} else {									/* oben */
			posY = crossMouseY - e_height - e_Space;
		}
		crossMoveTo(e, posX, posY);
}

function set_HDir() {
	e_hDir = hDir; 
	// Ermittle Platz zwischen Maus und Fensterrand, rechts + links
	rechts = crossMouseSpaceRight();
	links = crossMouseSpaceLeft()
	// passt rechts, dann immer dahin
	if (e_Breite + e_Space < rechts) {
		e_hDir = 0;
		return;
	}
	// passt links, dann dahin
	if (e_Breite + e_Space < links) {
		e_hDir = 1;
		return;	
	}
	// passt niergens, dann mittig an Maus zentrieren
	e_hDir = 2;
}

function set_VDir() {
	e_vDir = vDir;
	// Ermittle Platz zwischen Maus und Fensterrand, oben + unten
	oben = crossMouseSpaceTop();
	unten = crossMouseSpaceBottom()
	// alert('Fensterhöhe: '+ crossInnerWindowHeight() + ' Mouse oben/unten: ' + oben + ' / ' + unten + ' ElementHoch: '+e_height);
	// passt unten, dann immer dahin
	if (e_height + e_Space + e_ChangeVDir < unten) {
		e_vDir = 0;
		return;
	}
	// passt oben, dann dahin
	if (e_height + e_Space + e_ChangeVDir < oben) {
		e_vDir = 1;
		return;
	}
	// passt niergens, dann dorthin wo mehr Platz ist
	e_vDir = 0;
	if (oben > unten) {
		e_vDir = 1
	}
}

