var req = null;
var ausg = null;
var mausx = null;
var mausy = null;

//MAUSPOSITION ERMITTELN
document.onmousemove = maus_pos;
//document.onclick = tmp;

function maus_pos(event){
    mausy = (document.all) ? window.event.clientY : event.pageY ;
    mausx = (document.all) ? window.event.clientX : event.pageX ;
}

function tmp(){
    alert("von oben = " + mausy);
}

//Browser abfragen
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

//Hintergrund-Layer erstellen
function bglayer(){
  //Objekt ID
  objID = "bglayer";
  //transparenz
  var opacity = 75;
   //wenn Element vorhanden erst loeschen
  if(document.getElementById(objID)){
      //loeschen von Kindelement (id)
      document.body.removeChild(document.getElementById(objID));
  }

  //Objekt erstellen (div)
  myBG = document.createElement("div");
  //Objekt-Text
  myText = document.createTextNode("");
  //Attribut ID erstellen
  myBG.setAttribute("id",objID);
  myBG.setAttribute("style",null);
  myBG.setAttribute("class",null);
  // Text einfuegen
  myBG.appendChild(myText);
  //Objekt in das Dokument einfuegen
  document.body.appendChild(myBG);

  //Zugriff auf erstelltest Objekt
  myBG = document.getElementById(objID);

  //Style zuweisen
  myBG.style.zIndex = "100";
  myBG.style.position = "absolute";
  myBG.style.backgroundColor = "#104E8B";
  myBG.style.top = "0px";
  myBG.style.left = "0px";
  myBG.style.width = "4000px";
  myBG.style.height = "4000px";

  //Browserweichen
  if(BrowserDetect.browser=="Explorer"){
    if(parseInt(BrowserDetect.version)<7){
      // myBG.style.backgroundColor = "green";
    }
    //Filter MSI (Durchsichtigkeit des Layers)
    myBG.style.filter = "alpha(opacity="+opacity+")";
  }
  else{
    //Filter Moziella (Durchsichtigkeit des Layers)
    myBG.style.opacity = opacity/100;
  }
}


//BILDERRAHMEN
function bilderrahmen(bild,breite,hoehe,bname,parentid){
	/**
	* bild      = bildname plus pfad
	* breite    = bildbreite (px)
	* hoehe     = bildhoehe (px)
	* bname     = bildname
	* parentid  = element-id, indem das event ausgelöst wurde
	**/
	breite = parseInt(breite);
	//Hintergrund aufrufen
	bglayer();
	//div id benennen
    var impid = "bild_big";
    var inhalt = null;
 	var kopfbreite = breite-20;
 	var posoben = null;
 	var poslinks = null;
    //Elternelement
    var parentobject = document.getElementById(parentid);

 	var fenster_breite = window.innerWidth || document.documentElement.clientWidth;
    //var fenster_hoehe = window.innerHeight || document.documentElement.clientHeight;

    //Ausrichtung Links festlegen
    var tmp = parseInt((fenster_breite/2)-(breite/2));
    var poslinks = (tmp <= 0) ? "80px" : tmp+"px" ;

    //löschen von Kindelement (id)
    if(document.getElementById(impid)){
 		document.body.removeChild(document.getElementById(impid));
 	}
 	//Element erzeugen
 	var impdiv = document.createElement("div");
 	//ID-Attribut anfuegen
 	impdiv.setAttribute("id",impid);
 	//Hilfstext
 	var testtext = document.createTextNode("Hallo bild");
 	//Element in Body einfuegen
 	document.body.appendChild(impdiv);
 	//Element speichern
 	impdiv = document.getElementById(impid);

 	//Position Oben festlegen
	tmp = parseInt(parentobject.offsetTop -(hoehe/2))
	posoben = (tmp<=30) ? parseInt(parentobject.offsetTop + (hoehe/2))+"px" : parseInt(parentobject.offsetTop -(hoehe/2))+"px";

	//CSS Klasse zuweisen
 	impdiv.className = "bilderrahmen";
    //CSS-Style zuweisen
 	impdiv.style.width = breite+"px";
 	impdiv.style.left = poslinks;
 	impdiv.style.top = posoben;
 	impdiv.style.zIndex = "105";

 	//Inhalte ausgeben
 	inhalt = "<div class=\"bilderrahmen_kopf\" style=\"width:"+kopfbreite+"px;cursor:pointer;\" ondblclick=\"loeschelement('bild_big');\">"+bname+"</div>";
 	inhalt = inhalt +"<div class=\"bilderrahmen_close\" onclick=\"loeschelement('bild_big');\" title=\"schliessen\">X</div>";
 	inhalt = inhalt +"<div><img src=\""+bild+"\" alt=\" "+bname+" \"/>" +"</div>";
	impdiv.innerHTML = inhalt;
}


//NEUES INFO-ELEMENT ERSTELLEN
function infofenster(id,pos_links,pos_oben,css_class){
    var divid = (id != '') ? id : 'info01';
    var css = (css_class != '') ? css_class : null;

    var ablinks = (pos_links != '') ? pos_links+"px" : (mausx-280) +"px";
    var aboben = (pos_oben != '') ? pos_oben+"px" : mausy+"px";

    //wenn Element vorhanden erst löschen
    if(document.getElementById(divid)){
 		//löschen von Kindelement (id)
 		document.body.removeChild(document.getElementById(divid));
 	}

 	//Element erzeugen
 	var element_neu = document.createElement("div");
 	//ID-Attribut anfuegen
 	element_neu.setAttribute("id",divid);
 	//Element in Body einfuegen
 	document.body.appendChild(element_neu);
 	//Element speichern
 	element_neu = document.getElementById(divid);
 	//Styleklasse zuweisen
 	if(css){
 	    element_neu.className = css;
 	 }
 	 else{
 	    //Style zuweisen
 	    element_neu.style.position = 'absolute';
 	 }
 	 element_neu.style.top = aboben;
 	 element_neu.style.left = ablinks;
 	 element_neu.style.zIndex = '1000';
}

//IMPRESSUM
function impressum(){
    bglayer();
    //div id benennen
    var impid = "imp01";
    //Inhalt, der geladen werden soll
    var impseite = "inc/impressum.php";
    //wenn Element vorhanden erst löschen
    if(document.getElementById(impid)){
 		//löschen von Kindelement (id)
 		document.body.removeChild(document.getElementById(impid));
 	}
 	//Element erzeugen
 	var impdiv = document.createElement("div");
 	//ID-Attribut anfuegen
 	impdiv.setAttribute("id",impid);
 	//Hilfstext
 	var testtext = document.createTextNode("Hallo Impressum");
 	//Element in Body einfuegen
 	document.body.appendChild(impdiv);
 	//Element speichern
 	impdiv = document.getElementById(impid);
 	//CSS Klasse zuweisen
 	impdiv.className = "impressum";
 	//Hilfstext ausgeben
 	//impdiv.appendChild(testtext);

 	//Ausgabe-Element festlegen
 	ausg = impdiv;

 	//XMLHTTP-Request erstellen
    req = XmlHttpRequest();
    //Daten aufrufen
    process(impseite);
}

//NEUE TABELLENZEILE EINFUEGEN
//TabellenbodyID, ZEILENID
 function Neue_Zeile(tbID,rID,span,talign){
	//neue (n) tr id erstelln
	var trID = "n"+rID.slice(1);
	//neu td id erstellen
	var tdID = "t"+rID.slice(1);
	//tbody objekt erstellen
	var tbody  = document.getElementById(tbID);
	//prüfen ob knoten schon besteht und evtl löschen
	if(document.getElementById(trID)){
		tbody.removeChild(document.getElementById(trID));
		return null;
	}
	//neue zeile erstellen
	var mytr = document.createElement("tr");
	mytr.setAttribute("id",trID);
	//neue zelle erstellen
	var mytd = document.createElement("td");
	//Text erstellen
	 myText = document.createTextNode("hallo_text");
	//Attribute für td erstellen
	mytd.setAttribute("id",tdID);
	mytd.setAttribute("colSpan",span);

	//Zeile in Spalte ausgeben
	mytr.appendChild(mytd);
	mytd.setAttribute("align",talign);
	//einfügen einer neuen zeile nach der aktuellen id (nächster geschwisterknoten von tbody->übergebener id)
	tbody.insertBefore(mytr,document.getElementById(rID).nextSibling);

	//text ausgeben
	//mytd.appendChild(myText);
}

function loeschelement(element){
    if(document.getElementById(element)){
	    //löschen von Kindelement (id)
	    document.body.removeChild(document.getElementById(element));
	    document.body.removeChild(document.getElementById("bglayer"));
    }
}


function load_popup(url,x,y){

fenster = window.open(url, "fenster1", "width=" +x +",height=" +y +",status=yes,scrollbars=yes,resizable=yes");
fenster.focus();

}

//AJAX

//XMLHTTP-REQUEST erstellen
function XmlHttpRequest(){
    var xmlHttp;
    //Browser abfragen
    try
	{
		// versuch XMLHttpRequest objekt zu erstellen
		xmlHttp = new XMLHttpRequest();
	}
	catch(e)
	{
		// IE6 oder aelter
		var XmlHttpVersions = new Array( 'MSXML2.XMLHTTP.6.0',
										'MSXML2.XMLHTTP.5.0',
										'MSXML2.XMLHTTP.4.0',
										'MSXML2.XMLHTTP.3.0',
										'MSXML2.XMLHTTP',
										'Microsoft.XMLHTTP');
		// alle ID duchlaufen
		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
		{
			try
			{
				// erstelle XMLHttpRequest objekt
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			}
			catch (e) {} // ignoriere fehler
		}
	}
	// liefert Instanz oder Fehler
	if (!xmlHttp){
		alert("Error creating the XMLHttpRequest object.");
	}
	else{
		return xmlHttp;
	}
}

//Server kontaktieren - URL uebergeben
 function process(url){
    if(req){
        // versuch den server zu kontaktieren
		try{
		    display("versuch den server zu kontaktieren " + url);
		    req.open("GET", url, true);
			req.onreadystatechange = handleData;
			req.send(null)
		}
		catch(e){
		    display(e.toString());
		}
    }
 }

 function handleData(){
    var ladeimg = "<img src=\"image/site/ajax-loader02.gif\" style=\"height:10px;width:10px;\" />";
    //Methode aufgerufen
	if (req.readyState == 1){
		display("lade Daten " + ladeimg);
	}
	/*
	else if (req.readyState == 2){
	    displayHelp("Anfrage gesendet");
	}
	else if (req.readyState == 3){
	    displayHelp("Teil der Antwort erhalten");
	}
	*/
	else if (req.readyState == 4){
	    //Antwort erhalten
	    if (req.status == 200){
	        try{
				// uebergeben der daten
				display(req.responseText);
				}
			catch(e){
			    // anzeigen fehler
			    display("Es ist ein Fehler aufgetreten: " + e.toString());
			}
	    }
	    else if(req.status == 404){
	        display("angeforderte Datei nicht gefunden!");
	    }
	    else if(req.status == 500){
	         display("auf dem Server ist ein\nFehler aufgetreten\n"+req.statusText);
	    }
	    else{
	        display(req.statusText);
	    }
	}
}

//Ausgabe der Seite oder Fehler
 function display(nachricht){
    ausg.innerHTML = nachricht;
 }

