// Infobox an aktueller Mauszeiger erstellen - 26.03.2011
var on = false;

function startinfo(e,db_id){

    if(on)   {
         window.document.onmousemove = null;
         //window.document.onmouseover = null;
    }
    else  {
         get_db_info(db_id);
         window.document.onmousemove = infobox_pos;
         //window.document.onmouseover = infobox_pos;
    }
    on = !on;
    document.getElementById("info").style.visibility = 'hidden';

	// Debug-Ausgabe
    //document.getElementById("debug").innerHTML = on;
}


function infobox_pos(e){
    var p = mouse_pos(e);

	// Position des Mauszeigers
	var postop = p['top'];
	var posleft = p['left'];

	// verfügbare Bildschirmgröße (Framegröße)
	var winbreite = 0;
    var winhoehe = 0;

    // Offset der verfügbaren Bildschirmhöhe errechnen
    if (navigator.appName == 'Opera') {
    	// verfügbare Bildschirmgröße (Framegröße)
    	winbreite = window.innerWidth;
    	winhoehe = window.innerHeight;
    }
    else if (navigator.appName == 'Netscape') {
    	// verfügbare Bildschirmgröße (Framegröße)
    	winbreite = window.innerWidth;
    	winhoehe = window.innerHeight;
    }
    else if (navigator.appName == 'Microsoft Internet Explorer') {
    	// verfügbare Bildschirmgröße (Framegröße)
    	winbreite = document.body.clientWidth;
    	winhoehe = document.body.clientHeight;
    }
    else {
    	// verfügbare Bildschirmgröße
    	winbreite = screen.availWidth;
		winhoehe = screen.availHeight;
    }

    // Infobox anzeigen
	document.getElementById("info").style.visibility = 'visible';

 	// Infoboxgröße ermitteln
// 	var infobox_h = 160;
 	var infobox_h = document.getElementById("info").offsetHeight;
// 	var infobox_b = 250;
	var infobox_b = document.getElementById("info").offsetWidth;

	// neue Fensterposition initialisieren
	var new_pos_top = 0;
	var new_pos_left = 0;

	// Infobox nicht direkt an Mauszeiger heften --> Offset
	var offset_top = 10;
	var offset_left = 10;

// Positionierung vertikal
 	// Infobox in Abhängigkeit der Mausposition verschieben
 	// Infobox über den Mauszeiger setzen wenn Box größer als Anzeigehöhe
 	if ( ((postop + offset_top) > (winhoehe - infobox_h)) && (winhoehe > postop + infobox_h) ) {
 		new_pos_top = postop - infobox_h - offset_top;
 		document.getElementById("info").style.top = new_pos_top+ "px";
 	}
 	// Infobox auf Seitenhöhe einpassen, beginnt dann soweit oben wie möglich
 	else if ( winhoehe < (infobox_h + postop) ) {
 		new_pos_top = 0;
 		document.getElementById("info").style.top = new_pos_top+ "px";
 	}
	// Infobox unter den Mauszeiger setzen
 	else {
 		new_pos_top = postop + offset_top;
 		document.getElementById("info").style.top = new_pos_top+ "px";
 	}

// Positionierung horizontal
 	// Infobox links neben den Mauszeiger setzen wenn Box größer als Anzeigebreite
 	if ( (posleft + offset_left) > (winbreite - infobox_b)) {
 		var new_pos_left = posleft - infobox_b - offset_left;
 		document.getElementById("info").style.left = new_pos_left+ "px";
 	}
 	// Infobox rechts neben den Mauszeiger setzen
 	else {
 		new_pos_left = posleft + offset_left;
 		document.getElementById("info").style.left = new_pos_left+ "px";
 	}

    // Debug-Info in Box anzeigen: Windowsgröße + Browser + Mausposition
	//document.getElementById("debug").innerHTML = "Fenster-Höhe: " + winhoehe + " Fenster-Breite: " + winbreite + "<br>Browser: " + navigator.appName + "<br>neue Position X-Y: " + new_pos_left + " - " + new_pos_top + "<br>aktuelle Position (X-Y): " + posleft + " - " + postop + "<br>wo bin ich: " + wo_bin_ich + "<br>Infobox_h: " + infobox_h;

    // Debug-Info in Info-Box anzeigen: Windowsgröße + Browser + Mausposition
    //document.getElementById("info").innerHTML = "Fenster-Höhe: " + winhoehe + " Fenster-Breite: " + winbreite + "<br>Browser: " + navigator.appName + "<br>neue Position X-Y: " + new_pos_top + " - " + new_pos_left + "<br>aktuelle Position (X-Y): " + posleft + " - " + postop + "<br>wo bin ich: " + wo_bin_ich + "<br>Infobox_h: " + infobox_h;

}


function mouse_pos(e) {
	if(!e) e = window.event;
	var body = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ?
	window.document.documentElement : window.document.body;
	return {
	// Position im Dokument
	top: e.pageY ? e.pageY : e.clientY + body.scrollTop - body.clientTop,
	left: e.pageX ? e.pageX : e.clientX + body.scrollLeft  - body.clientLeft

	};
}


function get_db_info(db_id) {
	// ab hier AJAX
	xmlHttp=GetXmlHttpObject()

	if (xmlHttp==null) {
		alert ("Your browser does not support AJAX!");
		return;
	}

	// an welche URL wird die Anfrage gesendet
	var url="getinfobox.php";

	xmlHttp.onreadystatechange=stateChanged;

	// Variablenübergabe via POST oder GET
	xmlHttp.open("POST",url,true);

	xmlHttp.setRequestHeader("Pragma", "no-cache");
	xmlHttp.setRequestHeader("Cache-Control", "must-revalidate");
	xmlHttp.setRequestHeader("If-Modified-Since", document.lastModified);
	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");

	// Variablenübergabe via POST
	xmlHttp.send('index_id=' + db_id);
}


function stateChanged() {
	if (xmlHttp.readyState==4) {
		// Debug-Ausgabe
		//document.getElementById("debug").innerHTML = "Index-ID: " + db_id;

		// Info-Box Inhalt
		document.getElementById("info").innerHTML = xmlHttp.responseText;
    }
}


function GetXmlHttpObject() {
	var xmlHttp=null;

	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}

	catch (e) {
		// Internet Explorer
		try {
    		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    	}
  		catch (e) {
    		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    	}
  	}

return xmlHttp;
}


function getwidth(breite) {
	var endbreite = new Object();
	endbreite = breite + 5;
	document.getElementById("info").style.width = endbreite + "px";
}
