// JavaScript Document

<!--
function over(fieldName){
	document.getElementById(fieldName).style.backgroundColor = "#FFFFFF";
}
function out(fieldName){
	document.getElementById(fieldName).style.backgroundColor = "#DDD";
}

function focusField(fieldName){
	document.getElementById(fieldName).style.borderColor = "#F30";
	document.getElementById(fieldName).style.backgroundColor = "#EEE";
}

function blurField(fieldName){
	document.getElementById(fieldName).style.borderColor = "#000";
	document.getElementById(fieldName).style.backgroundColor = "#FFF";
}

function focusLogin(){
	document.getElementById("username").focus();
}

function checkStayLoggedIn(){
	if(document.getElementById("stayLoggedIn").checked == true){
		document.getElementById("stayLoggedIn").checked = false;
	}else{
		document.getElementById("stayLoggedIn").checked = true;
	}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->


// Funktion für das Updaten der Online Zeiten der User, die den Browser offen haben
function updateOnlineStatus(){

	// XMLHttpRequest Objekt je nach Browser erzeugen
	var req = (window.XMLHttpRequest) ? new XMLHttpRequest() : ((window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : false);
	
	// User-ID aus einem Hidden Form Field holen
	var userid = document.getElementById("idonline").value;
	var randomInt = Math.random()*99999999;
	
	// Verbindung angeben / GET / path / sync oder ansync --> true = async
	req.open("GET", "./users/update_online_status.php?usr=" + userid + "&random=" + randomInt, true);
	req.setRequestHeader("Cache-control", "must-revalidate");

	
	// Abfrage des Verbindnungs-Status
	req.onreadystatechange = function(){
		// Request vollständig
		if(req.readyState == 4){
			//alert("Zeit des letzten Online-Seins aktualisiert! [User: " + userid + " ]\nMeldung vom Server: " + req.responseText);
		}
	}
	
	// Request senden
	req.send(null);

}


// Funktion für das Updaten des Online Status!
function showOnlineUsers(){

	// XMLHttpRequest Objekt je nach Browser erzeugen
	var req = (window.XMLHttpRequest) ? new XMLHttpRequest() : ((window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : false);
	
	// User-ID aus einem Hidden Form Filed holen
	if(document.getElementById("idonline") == null){
		var userid = userid = 0;
	}else{
		var userid = document.getElementById("idonline").value;
	}
	
	var onlineusers = document.getElementById("allOnlineUsers");
	var randomInt = Math.random()*99999999;
	var parameter = "eigene_id=" + userid + "&random=" + randomInt;

	// Verbindung angeben / GET / path / sync oder ansync --> true = async
	req.open("GET", "./users/online_users.php?eigene_id=" + userid +"&randomize_me=" + randomInt, true);
	req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	//req.setRequestHeader("Content-length", parameter.length);
	req.setRequestHeader("Cache-control", "must-revalidate");
	
	// Abfrage des Verbindnungs-Status
	req.onreadystatechange = function(){
		// Request vollständig
		if(req.readyState == 4){
			//alert("User online Anzeige aktualisiert! " + req.responseText);
			if(req.status == 200){

				var myXML = req.responseXML;
				
				var root = myXML.getElementsByTagName('root')[0];
				var rootDiv = document.getElementById('allOnlineUsers');
				var childNodes = root.childNodes;
				var childNodes2 = rootDiv.childNodes;
				var anzahlDerChildNodesImXML = childNodes.length;
				var anzahlDerChildNodesImDokument = childNodes2.length;
				//alert("Anzahl der Kindknoten im Dokument: " + anzahlDerChildNodesImDokument + " | Anzahl der Kindknoten im XML: " + anzahlDerChildNodesImXML);
				
				// alle SingleUserDivs im Gesamt-DIV löschen -- sprich der aktuelle Inhalt wird entfernt!
				while(rootDiv.hasChildNodes()){
					rootDiv.removeChild(rootDiv.lastChild);
				}
				
				var summeHoehe = 0; // wird im Laufe unten gefüllt bis zum Morphing Act
				
				// Wenn keine User online sind
				if(anzahlDerChildNodesImXML == 0){
					summeHoehe = 22;
					// Erschaffen der Tabelle mit je einem User drin
					var table = document.createElement('table');
					//table.setAttribute('id', 'singleUserTable');
					table.setAttribute('cellspacing', 0);
					table.setAttribute('cellpadding', 0);
					table.setAttribute('border', 0);
					//table.setAttribute('borderColor', '#FF0000');
					table.setAttribute('width', 150);
					
					var tableBody = document.createElement('tbody');
					table.appendChild(tableBody);
					
					// Jede Tabelle wird in einem einzelnen DIV liegen, damit man tolle Effekte erzeugen kann
					var userDiv = document.createElement('div');
					userDiv.setAttribute('id', 'singleUserDiv0');
					userDiv.setAttribute('lang', 'de');
					userDiv.setAttribute('border', 0);
					userDiv.setAttribute('width', 150);
				
					var tr = document.createElement('tr');
					tr.setAttribute('id', 'keineSau');
					var td1 = document.createElement('td');
					td1.setAttribute('valign', 'middle');
					td1.setAttribute('align', 'right');
					var p = document.createElement('p');
					//var a1 = document.createElement('a');
					//a1.setAttribute('href', 'javascript:;');
					/*a1.setAttribute('onclick', "window.open('./users/keineSau.html','keineSau','innerWidth=1024,innerHeight=768,left=0,top=0,resizable');");*/
					//a1.appendChild(document.createTextNode("Leider niemand!"));
					//p.appendChild(a1);
					p.innerHTML = p.innerHTML + "Niemand außer dir!&nbsp;";
					p.setAttribute('class', 'error');
					td1.appendChild(p);
					var td2 = document.createElement('td');
					td2.setAttribute('width', 20);
					td2.setAttribute('valign', 'middle');
					//var a2 = document.createElement('a');
					//a2.setAttribute('href', 'javascript:;');
					//a2.setAttribute('onclick', "window.open('./users/keineSau.html','keineSau','innerWidth=1024,innerHeight=768,left=0,top=0,resizable');");
					var spacerimage = document.createElement('img');
					spacerimage.setAttribute('src', './images/spacer.gif');
					spacerimage.setAttribute('width', 20);
					spacerimage.setAttribute('height', 5);				
					var image = document.createElement('img');
					image.setAttribute('src', './images/nobodyOnline.gif');
					//image.setAttribute('class', 'inside');
					image.setAttribute('border', 0);
					image.setAttribute('width', 15);
					image.setAttribute('title', 'Niemand außer Dir!');
					//a2.appendChild(image);
					td2.appendChild(image);
					//td2.appendChild(document.createElement('br'));
					//td2.appendChild(spacerimage);
					tr.appendChild(td1);
					tr.appendChild(td2);
					tableBody.appendChild(tr);
					userDiv.appendChild(table);
					document.getElementById('allOnlineUsers').appendChild(userDiv);
					
				// Wenn User online sind!
				}else{
							
					// Alle <user> durchlaufen 
					// sprich mit den verschiedenen Staten: alle ausgeben --> online, gone offline, offline
					for(i = 0; i < anzahlDerChildNodesImXML; i++){
												
						// Erschaffen der Tabelle mit je einem User drin
						var table = document.createElement('table');
						//table.setAttribute('id', 'singleUserTable');
						table.setAttribute('cellspacing', 0);
						table.setAttribute('cellpadding', 0);
						//table.setAttribute('borderColor', '#FF0000');
						table.setAttribute('border', 0);
						table.setAttribute('width', 150);

						var tableBody = document.createElement('tbody');
						table.appendChild(tableBody);
						
						// Jede Tabelle wird in einem einzelnen DIV liegen, damit man tolle Effekte erzeugen kann
						var userDiv = document.createElement('div');
						userDiv.setAttribute('id', 'singleUserDiv' + i);
						var status = myXML.getElementsByTagName('status')[i].childNodes[0].nodeValue;
						var mobile = myXML.getElementsByTagName('mobile')[i].childNodes[0].nodeValue;
						userDiv.setAttribute('border', 0);
						userDiv.setAttribute('width', 150);
						//alert("Status: " + status);
						if(status == 'goneOffline'){
							userDiv.setAttribute('class', 'goneOffline');
							userDiv.setAttribute('className', 'goneOffline');
							//alert("Class of UserDIV: " + userDiv.getAttribute('className'));
							//alert("Class was set to goneOffline"); 
						}
						var name = myXML.getElementsByTagName('name')[i].childNodes[0].nodeValue;
						var anzeigeName = "";
						var id = myXML.getElementsByTagName('id')[i].childNodes[0].nodeValue;
						var imgsrc = myXML.getElementsByTagName('img')[i].childNodes[0].childNodes[0].nodeValue;
						
						//alert("Name: " +name+ " | ID: " +id+ " | img src: " +imgsrc);
					
						var mobile_image = document.createElement('img');
						mobile_image.setAttribute('src', './guestbook/mobile_icon.gif');
						mobile_image.setAttribute('title', 'vom Handy');
						var td0 = document.createElement('td');
						td0.setAttribute('width', 16);
						td0.setAttribute('align', 'left');
						td0.setAttribute('valign', 'middle');
						td0.appendChild(mobile_image);
						
						var tr = document.createElement('tr');
						tr.setAttribute('id', 'user' + i);
						var td1 = document.createElement('td');
						td1.setAttribute('valign', 'middle');
						td1.setAttribute('align', 'right');
						var p = document.createElement('p');
						var a1 = document.createElement('a');
						a1.setAttribute('href', './index.php?content=userpage&id=' + id);
						if(name.length > 11){
							anzeigeName = name.substr(0, 9) + "...";
						}else{
							anzeigeName = name;
						}
						a1.appendChild(document.createTextNode(anzeigeName));
						p.appendChild(a1);
						p.innerHTML = p.innerHTML + "&nbsp;&nbsp";
						td1.appendChild(p);
						var td2 = document.createElement('td');
						td2.setAttribute('width', 20);
						var a2 = document.createElement('a');
						a2.setAttribute('href', './index.php?content=userpage&id=' + id);
						var spacerimage = document.createElement('img');
						spacerimage.setAttribute('src', './images/spacer.gif');
						spacerimage.setAttribute('width', 20);
						spacerimage.setAttribute('height', 5);				
						var image = document.createElement('img');
						var imageId = String("img" + i);
						image.setAttribute('src', imgsrc);
						image.setAttribute('id', imageId);
						image.setAttribute('class', 'inside');
						image.setAttribute('className', 'inside');
						image.setAttribute('border', 0);
						image.setAttribute('title', 'Zur Userpage von ' + name);
						a2.appendChild(image);
						td2.appendChild(a2);
						//td2.appendChild(document.createElement('br'));
						//td2.appendChild(spacerimage);
						tr.appendChild(td1);
						if(mobile == 'true'){
							tr.appendChild(td0);
						}
						tr.appendChild(td2);
						tableBody.appendChild(tr);
						// table wird ins single User Div gespeichert
						userDiv.appendChild(table);
						// singleUserDiv wird zum gesamt-div gespeichert
						document.getElementById('allOnlineUsers').appendChild(userDiv);
						
						// Set thumbnail width + height
						//var originalBreite = $(imageId).getDimensions().width;
						//var originalHoehe = $(imageId).getDimensions().height;
						var originalBreite = document.getElementById(imageId).width;
						var originalHoehe = document.getElementById(imageId).height;			
						var neueBreite = 20;
						var neueHoehe = Math.round(neueBreite / originalBreite * originalHoehe);
						//alert("Breite: " + originalBreite + " | Höhe: " + originalHoehe + "| Neue Breite: " + neueBreite + " | Neue Höhe: " + neueHoehe);
						//alert("Neue Breite: " + neueBreite + " | Neue Höhe: " + neueHoehe);
						image.setAttribute('width', neueBreite);
						image.setAttribute('height', neueHoehe);
						userDiv.setAttribute('height', neueHoehe + 15);
						
						summeHoehe += (neueHoehe + 5); // berechnet die Gesamthöhe für das Morphing DIV
						
					}
					
				}
				
				// Morphing Stuff
				var aktuelleHoehe = Element.getDimensions("allOnlineUsers").height;
				if(summeHoehe == 0){
					summeHoehe = 25;
				}

				// Morphing: wenn sich die Anzahl unterscheidez, dann wird gemorphed
				if(anzahlDerChildNodesImXML != anzahlDerChildNodesImDokument){
					//alert("Anzahl hat sich geändert! --> Aktuelle Höhe: " + aktuelleHoehe + " | Neue Höhe: " + neueHoehe);
					new Effect.Morph('allOnlineUsers',{ style: 'height:' + (summeHoehe + 5) + 'px;', duration: 1.0});	
				}				
				
			}else{
				document.getElementById('allOnlineUsers').value = "<p class='errorimportant'>ERROR status != 200</p>";	
			}
		}else{
			document.getElementById('allOnlineUsers').value = "<p class='errorimportant'>ERROR readyState != 4</p>";	
		}

		//if(req.status >= 400 && req.status
	}
	
	// Request senden
	req.send(parameter);

}


// Funktionen für Cookie-Behanldung
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var splitter = document.cookie.split(';');
	for(var i=0;i < splitter.length;i++) {
		var c = splitter[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

// Funktion für das ein und ausfahren von Info-Boxen am Rand (Weather / Quotations Ticker etc.)
function changeCookieSettings(cookieName, divName){
	var cookieValue = readCookie(cookieName);
	//if(cookieValue != null){
		//alert("Das ist der Wert, der aktuell im Cookie " + cookieName + " steht: " + cookieValue);
	//}
	
	if(document.getElementById(divName).style.display == "none"){
		createCookie(cookieName,'visible',14);
	}else{
		createCookie(cookieName,'hidden',14);
	}
}

function checkCookieSettings(cookieName, divName){
	var cookieValue = readCookie(cookieName);
	if(cookieValue != null){
		if(cookieValue == "hidden"){
			document.getElementById(divName).style.display = "none";
		}else{
			document.getElementById(divName).style.display = "";
		}
	}
}

