/**
 * Global Javascripts & Shoutbox Submit
 *
 * @version		1.0
 *
 * @license		GNU Lesser General Public License
 * @author		Gerrit Böttcher <gerrit.boettcher [at] gmail.com>
 * @copyright	2007 fresh frames GmbH & Co. KG <http://www.freshframes.com>
 */

function getXmlHttpRequestObject() {
	try {
		xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
	} catch(e) {
		try {
			xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {
			xmlHttp  = false;
		}
	}
	if (!xmlHttp  && typeof XMLHttpRequest != 'undefined') {
		xmlHttp = new XMLHttpRequest();
	}
	return xmlHttp;
}




var prefix = 'beta';
var groupid = 0;
var searchReq = getXmlHttpRequestObject();

var last_request = 0;

function sendComment() {
	// Prüfmeldung
	// alert("xmlhttp ok");
	var txtMessage = encodeURIComponent(document.getElementById('txtmessage').value);
	var txtName    = encodeURIComponent(document.getElementById('txtname').value);
	// Prüfmeldung der bereinigten Nachricht
	// alert (txtmessage);
	if (txtMessage == '' || txtName == '') {
		alert("Du musst zunächst eine Nachricht schreiben");
	} else if (txtMessage == '!shutdown') {
		clearInterval(aktiv);
		document.getElementById("asb_content").innerHTML = 'Shoutbox deaktiviert.';
		document.getElementById("asb_input").innerHTML = '';
	} else {
		if (searchReq.readyState == 4 || searchReq.readyState == 0) {
			//alert('name: ' + txtName + ' - msg: ' + txtMessage);
			searchReq.open('POST', 'api/' + prefix + 'api.php');
			searchReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			// xmlHttp2.onreadystatechange = loadData;
			searchReq.send('action=shoutbox&txtmessage='+txtMessage+"&txtname="+txtName+"&last_request="+last_request);
			//alert('action=shoutbox&message='+txtMessage+"&name="+txtName+"&last_request="+last_request);
			document.getElementById('btnsend').disabled = true;
			setTimeout('document.getElementById(\'btnsend\').disabled = false;', 2000);

			searchReq.onreadystatechange = function () {
				if (searchReq.readyState == 4) {
					if (searchReq.responseText != 'success') {
						document.getElementById("asb_content").innerHTML = 'Es ist ein Fehler aufgetreten. Dies kann passieren wenn ihre Sitzung abgelaufen ist.<br><br>Bitte die Seite neu laden, um die Shoutbox (wieder) nutzen zu können.';
						document.getElementById("asb_input").innerHTML = '';
						clearInterval(aktiv);
						//alert('Server-antwort:\n\n' +searchReq.responseText);
					}

					searchSuggest(null, 3);
					//document.getElementById('btnsend').disabled = false;
				}
			}

			// Prüfmeldung
			// alert("Eintrag");
		} else {
			// Prüfmeldung
			// alert("Verzögerter Aufruf");
			//setTimeout('sendComment();',1000);
		}

		if (searchReq.readyState == 4 || searchReq.readyState == 0) {
			// Gebe Meldung aus und lade Einträge zeitversetzt
			//document.getElementById("asb_content").innerHTML = "Eintrag wurde gespeichert..."
			dosProtect = 0;
			//setTimeout('searchSuggest(null, 3);',1000);
		} else {
			// Gebe Meldung aus und lade Einträge zeitversetzt
			//document.getElementById("asb_content").innerHTML = "Eintrag wurde gespeichert..."
			dosProtect = 0;
			//setTimeout('searchSuggest(null, 3);',1000);
		}
	}

	// Leere das Eingabefeld
	document.frmshoutbox.txtmessage.value = '';
	document.frmshoutbox.txtmessage.focus(); // Cursor in das Textfeld setzen
}

function performsuggest (code, tgro) {
	//alert('Keycode: '  + code);
	if (code == 13) {
		// bei ENTER -> hide + bestätigen
		anyone_selected = false;
		select_next = false;
		barfoo = document.getElementsByName('sugglink[]');

		for (i = 0; i < barfoo.length-1; i++) {
			if (barfoo[i].className == 'suggest_link_over') {
				setSearch(barfoo[i].innerHTML, tgro);
			}
		}

		hide('search_suggest_' + tgro);
	} else if (code == 27 || code == 9) {
		// bei ESC + TAB -> hide
		anyone_selected = false;
		select_next = false;
		hide('search_suggest_' + tgro);
		return false;
	} else if (code == 40 || code == 38) {
		// wenn pfeil hoch oder runter

		themsg = 'Debugging';
		anyone_selected = false;
		select_next = false;
		barfoo = document.getElementsByName('sugglink[]');
		if (code == 40) {
			for (i = 0; i < barfoo.length-1; i++) {
				tmpi = i + 1;
				if (select_next == true) {
					barfoo[i].className = 'suggest_link_over';
					anyone_selected = true;
					select_next = false;
				} else {
					if (barfoo[i].className == 'suggest_link_over') {
						select_next = true;
						barfoo[i].className = 'suggest_link';
					} else {
						select_next = false;
					}
				}
				if (tmpi >= (barfoo.length-1)) {
					if (anyone_selected == false) {
						//barfoo[(i-1)].className = 'suggest_link';
						barfoo[0].className = 'suggest_link_over';
					}

				}
			}
		} else {
			//alert('der pfeil geht nich :P');
			for (i = barfoo.length-1; i > 0; i--) {
				tmpi = i - 1;
				if (select_next == true) {
					barfoo[i].className = 'suggest_link_over';
					anyone_selected = true;
					select_next = false;
				} else {
					if (barfoo[i].className == 'suggest_link_over') {
						select_next = true;
						barfoo[i].className = 'suggest_link';
					} else {
						select_next = false;
					}
				}
				if (tmpi <= 0) {
					if (anyone_selected == false) {
						//barfoo[(i-1)].className = 'suggest_link';
						barfoo[0].className = 'suggest_link_over';
					}

				}
			}

		}

	} else {
		if (document.getElementById('txtSearch_' + tgro).value == '') {
			hide('search_suggest_' + tgro);
		} else {
			if (performsuggest.arguments[2] == 'undefined') {
				searchSuggest(tgro);
			} else {
				searchSuggest(tgro, performsuggest.arguments[2]);
			}
		}
	}
}

function searchSuggest(tgroupid) {
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		//alert(searchSuggest.arguments[2]);
		/*if (searchSuggest.arguments[2] == 'undefined') {
		if (tgroupid != null) {
		var str = escape(document.getElementById('txtSearch_' + tgroupid).value);
		}*/
		/*} else {*/
		if (tgroupid != null) {
			try {
				var str = escape(document.getElementById(searchSuggest.arguments[2]).value);
			} catch(e) {
				var str = escape(document.getElementById('txtSearch_' + tgroupid).value);
			}
		}
		/*}*/


		try {
			if (performsuggest.arguments[1] == 'undefined') {
				searchReq.open("GET", 'api/' + prefix + 'api.php?action=search&groupid=' + tgroupid + '&value=' + str, true);
				groupid = tgroupid;
				searchReq.onreadystatechange = handleSearchSuggest;
				searchReq.send(null);
			} else {
				throw 'else schleife';
			}
		} catch(e) {
			/*} else {*/
			switch (searchSuggest.arguments[1]) {
				case 1:{
					// City Districts
					searchReq.open("GET", 'api/' + prefix + 'api.php?action=district&groupid=' + tgroupid + '&value=' + str, true);
					groupid = tgroupid;
					searchReq.onreadystatechange = handleSearchSuggest;
					searchReq.send(null);
					break;
				}
				case 2:{
					// Search Usernames ~~ PM System
					searchReq.open("GET", 'api/' + prefix + 'api.php?action=uname&groupid=' + tgroupid + '&value=' + str, true);
					groupid = tgroupid;
					searchReq.onreadystatechange = handleFriendSuggest;
					searchReq.send(null);
					break;
				}
				case 3:{
					// Shoutbox
					//alert('REQUEST: api/' + prefix + 'api.php?action=shoutbox&id=' + last_request);
					searchReq.open("GET", 'api/' + prefix + 'api.php?action=shoutbox&id=' + last_request, true);
					groupid = tgroupid;
					searchReq.onreadystatechange = handleSearchShout;
					searchReq.send(null);
					break;
				}
				default:{
					//alert('Es ist ein Fehler aufgetreten.\n' + searchSuggest.arguments[1] + '\n' + searchSuggest.arguments[1].value);
					break;
				}
			}
		}
		//alert('groupid gesetzt zu: ' + tgroupid);

	}
}

function handleSearchShout() {
	if (searchReq.readyState == 4 && searchReq.status == 200) {
		if (document.getElementById('asb_input').style.display == 'none') {
			document.getElementById('asb_input').style.display = 'block';
		}
		dosProtect = dosProtect + 1;
		var response = searchReq.responseText;
		if (response.length > 0) {

			// in erster Zeile steht der Timestamp -> extrahieren
			zeilen = response.split("<br />");

			last_request = zeilen[0];

			var anzahl_zeilen = zeilen.length;

			for (i=1;i<anzahl_zeilen;i++) {
				document.getElementById("asb_content").innerHTML+=zeilen[i];
			}
			popup.apply();
		}
		if (document.getElementById('shout_autoscroll')) {
			if (document.getElementById('shout_autoscroll').checked) {
				var cdiv = document.getElementById('asb_contentwrap');
				cdiv.scrollTop = cdiv.scrollHeight;
			}
		}
		/*var checkpmbox = new Ajax(pmurl, {method: 'get', onComplete: function (text) {
			alert(text);
		}}).request();*/
		//alert(checkpmbox.data());
	} else {
		if (searchReq.readyState == 4) {
			document.getElementById("asb_content").innerHTML = 'Die Verbindung zum Server wurde unterbrochen<br><br>Bitte die Seite neu laden, um die Shoutbox nutzen zu können.';
			document.getElementById("asb_input").innerHTML = '';
			clearInterval(aktiv);
		}
	}
}

function handleFriendSuggest() {
	if (searchReq.readyState == 4 && searchReq.status == 200) {
		if (searchReq.responseText != '$tolow$' && searchReq.responseText.length >= 4) {
			var ss = document.getElementById('search_suggest_' + groupid);
			ss.style.display = 'block';
			document.getElementById('txtSearch_' + groupid).style.backgroundColor = '#FFFFFF';
			ss.innerHTML = '';
			var str = searchReq.responseText.split("\n");
			for(i=0; i < str.length - 1; i++) {
				if (unescape(str[i]).toLowerCase() == document.getElementById('txtSearch_' + groupid).value.toLowerCase()) {
					document.getElementById('txtSearch_' + groupid).style.backgroundColor = '#00FF00';
				}
				var suggest = '<div name="sugglink[]" onmouseover="javascript:suggestOver(this);" ';
				suggest += 'onmouseout="javascript:suggestOut(this);" ';
				suggest += 'onclick="javascript:setSearch(this.innerHTML, \'' + groupid + '\', \'green\');" ';
				suggest += 'class="suggest_link">' + unescape(str[i]) + '</div>';
				ss.innerHTML += suggest;
			}
		} else {
			if (searchReq.responseText == '$tolow$') {
				var ss = document.getElementById('txtSearch_' + groupid);
				ss.style.backgroundColor = '#FF0000';
			} else {
				var ss = document.getElementById('txtSearch_' + groupid);
				ss.style.backgroundColor = '#FFFFFF';
			}
		}
	} else {
		if (searchReq.readyState == 4) {
			ss.innerHTML = 'Die Verbindung zum Server wurde unterbrochen<br><br>Bitte die Seite neu laden, um die Shoutbox nutzen zu können.';
		}
	}
}



function handleSearchSuggest() {
	var ss = document.getElementById('search_suggest_' + groupid)
	ss.style.display = 'block';
	if (searchReq.readyState == 4 && searchReq.status == 200) {
		//alert('im handle drin.. groupid: ' + groupid);

		ss.innerHTML = '';
		var str = searchReq.responseText.split("\n");
		for(i=0; i < str.length - 1; i++) {
			var suggest = '<div name="sugglink[]" onmouseover="javascript:suggestOver(this);" ';
			suggest += 'onmouseout="javascript:suggestOut(this);" ';
			suggest += 'onclick="javascript:setSearch(this.innerHTML, \'' + groupid + '\');" ';
			suggest += 'class="suggest_link">' + unescape(str[i]) + '</div>';
			ss.innerHTML += suggest;
		}
	} else {
		if (searchReq.readyState == 4) {
			ss.innerHTML = 'Die Verbindung zum Server wurde unterbrochen<br><br>Bitte die Seite neu laden, um die Shoutbox nutzen zu können.';
		}
	}
}


function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}
function suggestOut(div_value) {
	div_value.className = 'suggest_link';
}

function setSearch(value, groupid) {
	document.getElementById('txtSearch_' + groupid).value = value;
	if (setSearch.arguments[2] == 'green') {
		if (value == '') {
			document.getElementById('txtSearch_' + groupid).style.backgroundColor = '#FFFFFF';
		} else {
			document.getElementById('txtSearch_' + groupid).style.backgroundColor = '#00FF00';
		}
	}
	document.getElementById('search_suggest_' + groupid).innerHTML = '';
	document.getElementById('search_suggest_' + groupid).style.display = 'none';
}


function showhide(div_value) {
	if (div_value.className == 'tt_hidden') {
		div_value.className = 'tt_show';
	} else {
		div_value.className = 'tt_hidden';
	}
}

function show(id) {
	div_val = document.getElementById(id);
	div_val.style.display = 'block';
}

function hide(id) {
	div_val = document.getElementById(id);
	div_val.style.display = 'none';
}





/* AJAX - ALTE Funktion */
/***********************************************
*** URL-Request - Funktionalität             ***
************************************************/
/*var reqSuccCallback;
var connTermCallback;
var connectionSuccess;
var httpRequest = new XMLHttpRequest();

function getURL(sUrl) {

sUrl = 'api/11api.php?aktion=' + sUrl;
//document.getElementById("ka_status-textbox").setAttribute("value", getOurString("url.connection.attempt"));
httpRequest.open("GET", sUrl, true);
httpRequest.setRequestHeader("User-Agent", 'Firefox/DE V1.0.0');
httpRequest.onerror=getURL_onError;
httpRequest.onreadystatechange=getURL_onReadyStateChange;
//document.getElementById("ka_status-textbox").setAttribute("value", getOurString("url.connection.established"));
httpRequest.send("");

}

function getURL_onReadyStateChange()
{
connectionSuccess = 0;
if (httpRequest.readyState == 2) {
//document.getElementById("ka_status-textbox").setAttribute("value", getOurString("url.connection.recieve"));
return;
}
if (httpRequest.readyState == 4) {
//document.getElementById("ka_status-textbox").setAttribute("value", getOurString("url.connection.complete"));
connectionSuccess = 1;
getURL_done();
}
}

function getURL_onError()
{
connectionSuccess = 0;
getURL_done();
}

function getURL_done() {

statusfield = document.getElementById("status");
//status = statusfield.getAttribute("value");
if (!connectionSuccess) {
//statusfield.setAttribute("value", status+getOurString("url.connection.clienterror"));
alert('client error');
return;
}

if (httpRequest.status != 200) {
//statusfield.setAttribute("value", status+getOurString("url.connection.servererror")+String(httpRequest.status)+")");
alert('server error');
return;
}

if (httpRequest.responseText == "") {
//statusfield.setAttribute("value", status+getOurString("response.nodata"));
alert('keine daten empfangen');
return;
}
lines = httpRequest.responseText.split("\n");
n = lines.length;
switch (lines[0]) {
default:{
statusfield.value = lines[0];
break;
}
}
return;
}*/
