// AJAX - HTTP REQUEST
var http_request = false;
var http_request_msg = false;
var http_request_leave = false;
var leaved_yet = false;
var table_open = "<TABLE cellPadding=4 cellSpacing=0 width='100%' border=0><TBODY>";
var table_close = "</TBODY></TABLE>";

if( chat_language == "de" )
{
	var toon_lang_x1 = "hat den LIVE-CHAT betreten";
	var toon_lang_x2 = "hat den LIVE-CHAT verlassen";
	var toon_lang_x4 = "Du hast den LIVE-CHAT betreten";
}else
{
	var toon_lang_x1 = "joined the LIVE-CHAT";
	var toon_lang_x2 = "left the LIVE-CHAT";
	var toon_lang_x4 = "you have entered the LIVE-CHAT";
}

function sendHTTPRequestWD(vars) {

	http_request = false;

	if (window.XMLHttpRequest) {
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType)
		http_request.overrideMimeType('text/html');
	} else if (window.ActiveXObject) {
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request)
	return false;

	http_request.onreadystatechange = httpResponseWD;
	http_request.open('POST', 'watchdog_livechat.php', true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.send(vars+"&language="+chat_language);
}

function httpResponseWD() {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			var type = http_request.responseText.substr(0,http_request.responseText.indexOf(":::"));
			var msg = http_request.responseText.substr(http_request.responseText.indexOf(":::")+3);
			if( type == "label" )
			{
				// partnername ersetzen
				//msg = msg.replace(/##partner##/g,partner_nick);
				document.getElementById("info").innerHTML = table_open+"<tr><td colspan='2' class='norm'>"+msg+"</td></tr>"+table_close;
				if( document.getElementById("writer").style.visibility == "visible" )
				document.getElementById("writer").style.visibility="hidden";
			}
			else if( type == "error" )
			{
				document.getElementById("info").innerHTML = table_open+"<tr><td colspan='2' class='norm'>"+msg+"</td></tr>"+table_close;
			}
			else if( type == "message" && !leaved_yet )
			{
				// explode the messages
				var allmsgs = msg.split(":-*#*-:-*#*-:");
				for(c=0;c<allmsgs.length;c++)
				{
					var curmsg = allmsgs[c];
					var message_id =  Number(curmsg.substr(0,curmsg.indexOf("-")));
					rest = curmsg.substr(curmsg.indexOf("-")+1);
					
					var message_sender = Number(rest.substr(0,rest.indexOf("|")));
					rest = rest.substr(rest.indexOf("|")+1);
					
					var message_sendernick = rest.substr(0,rest.indexOf("|"));
					rest = rest.substr(rest.indexOf("|")+1);
					
					var message_senderimg = rest.substr(0,rest.indexOf("|"));
					rest = rest.substr(rest.indexOf("|")+1);
					
					var message_text = rest.substr(rest.indexOf("|")+1);
					
					last_message_id = message_id;
					
					if( message_text == "**F5**" )
					document.location.href = document.location.href;
					else
					addMessage(message_text,"user",message_sendernick,message_senderimg, message_sender);
				}
				refreshChatters();
			}
			else
			{
					refreshChatters();
			}
		}
	}

}

var http_request_chatters = false;

function refreshChatters()
{
	http_request_chatters = false;

	if (window.XMLHttpRequest) {
		http_request_chatters = new XMLHttpRequest();
		if (http_request_chatters.overrideMimeType)
		http_request_chatters.overrideMimeType('text/html');
	} else if (window.ActiveXObject) {
		try {
			http_request_chatters = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request_chatters = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request_chatters)
	return false;

	http_request_chatters.onreadystatechange = chattersResponse;
	http_request_chatters.open('POST', 'livechat_chatters.php', true);
	http_request_chatters.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request_chatters.send("sender="+wd_memberid+"&session="+wd_sessionid+"&language="+chat_language);
}

function chattersResponse()
{
	if (http_request_chatters.readyState == 4) {
		if (http_request_chatters.status == 200) {
			var allmsgs = http_request_chatters.responseText.split("|||---|||");
			// allowed_users	
			document.getElementById("allowed_users").innerHTML = allmsgs[0];
			// queued_users
			document.getElementById("queued_users").innerHTML = allmsgs[1];
			if( allmsgs[2] == "true" )
			{
				if( !sendinAMessage ){
					document.forms.chatform.sendbutton.disabled = false;
					document.forms.chatform.mytext.disabled = false;
				}
			}
			else
			{
				document.forms.chatform.sendbutton.disabled = true;
				document.forms.chatform.mytext.disabled = true;
			}
			
			if( document.forms.chatform.writeaccess != undefined )
			{
				if( allmsgs[3] == "true" )
				document.forms.chatform.writeaccess.checked = true;
				else
				document.forms.chatform.writeaccess.checked = false;
			}
		}
	}
}

function showMember(mid)
{
	window.opener.document.location.href="profile.php?TOONSESSID="+chat_sesid+"&mid="+mid;
}

function clearMessages()
{
	document.getElementById("info").innerHTML = table_open+table_close;
}

function addMessage(message, style, usernick, userimg, userid)
{
	var ttg = document.getElementById("info").innerHTML;
	ttg = ttg.substr(0,ttg.length-table_close.length);
	if( ttg.indexOf("<TBODY>")>0 )
	ttg = ttg.substr(ttg.indexOf("<TBODY>")+7); //table_open.length);
	else if( ttg.indexOf("<tbody>")>0 )
	ttg = ttg.substr(ttg.indexOf("<tbody>")+7); //table_open.length);
	else if( ttg.indexOf("<Tbody>")>0 )
	ttg = ttg.substr(ttg.indexOf("<Tbody>")+7); //table_open.length);
	
	//if( self ) var takename = own_nick; else var takename = partner_nick;
	if( usernick.length == 0 )
	var takename = "&nbsp;";
	else
	var takename = usernick;
	
	if( entry_count%2 == 0 )
	var bginc = " bgcolor='#EEEEEE'";
	else
	var bginc = "";
	
	if( userid == moderatorID )
	{
		if( entry_count%2 == 0 )
		bginc = " bgcolor='#ffdab0'";
		else
		bginc = " bgcolor='#ffd4a4'";
	}
	
	// Undzeichen rausparsen
	message = message.replace(/#!sys-UND!#/g, "&");
	
	document.getElementById("info").innerHTML = table_open+ttg+"<tr"+bginc+"><td width='100' class='norm' valign='top'><div class='message'><a href='javascript:showMember(\""+userid+"\");'><img src='http://www.toonity.com/memberimages/ms_"+userimg+"' style='border: 1px solid #b5b5b5;' title='"+takename+"' border='0' width='56' height='46' /></a><div style='width:56px;overflow:hidden;font-size:7pt;text-align:center;'><b>"+takename+"</b></div></div></td><td class='norm' valign='top'><div class='message' style='margin-left:6px;overflow:hidden;'>"+message+"</div></td></tr>"+table_close;
	entry_count++;
	
	document.getElementById("info").scrollTop = document.getElementById("info").scrollHeight;
}

http_request_nextusers = false;

function turnToNextUsers()
{
	http_request_nextusers = false;

	if (window.XMLHttpRequest) {
		http_request_nextusers = new XMLHttpRequest();
		if (http_request_nextusers.overrideMimeType)
		http_request_nextusers.overrideMimeType('text/html');
	} else if (window.ActiveXObject) {
		try {
			http_request_nextusers = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request_nextusers = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request_nextusers)
	return false;

	http_request_nextusers.onreadystatechange = nextUsersResponse;
	http_request_nextusers.open('POST', 'livechat_nextusers.php', true);
	http_request_nextusers.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	http_request_nextusers.send("sender="+wd_memberid+"&session="+wd_sessionid);
}

function nextUsersResponse()
{
	if (http_request_readmode.readyState == 4) {
		if (http_request_readmode.status == 200) {
			// Do nothing
		}
	}
}

http_request_readmode = false;

function setReadMode(obj)
{
	http_request_readmode = false;

	if (window.XMLHttpRequest) {
		http_request_readmode = new XMLHttpRequest();
		if (http_request_readmode.overrideMimeType)
		http_request_readmode.overrideMimeType('text/html');
	} else if (window.ActiveXObject) {
		try {
			http_request_readmode = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request_readmode = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request_readmode)
	return false;

	http_request_readmode.onreadystatechange = readModeResponse;
	http_request_readmode.open('POST', 'livechat_readmode.php', true);
	http_request_readmode.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	if( obj.checked )
	http_request_readmode.send("sender="+wd_memberid+"&newval=y&session="+wd_sessionid);
	else
	http_request_readmode.send("sender="+wd_memberid+"&newval=n&session="+wd_sessionid);
}

function readModeResponse()
{
	if (http_request_readmode.readyState == 4) {
		if (http_request_readmode.status == 200) {
			if( http_request_readmode.responseText == "n" )
			{
				document.forms.chatform.sendbutton.disabled = true;
				document.forms.chatform.mytext.disabled = true;
			}
		}
	}
}

function leaveChat()
{
	http_request_leave = false;

	if (window.XMLHttpRequest) {
		http_request_leave = new XMLHttpRequest();
		if (http_request_leave.overrideMimeType)
		http_request_leave.overrideMimeType('text/html');
	} else if (window.ActiveXObject) {
		try {
			http_request_leave = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request_leave = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request_leave)
	return false;

	http_request_leave.onreadystatechange = leaveResponse;
	http_request_leave.open('POST', 'livechat_leave.php', true);
	http_request_leave.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request_leave.send("sender="+wd_memberid+"&session="+wd_sessionid);
	
	document.forms.chatform.sendbutton.disabled = true;
	document.forms.chatform.mytext.disabled = true;
	
	leaved_yet = true;
}

function leaveResponse()
{
	if (http_request_leave.readyState == 4) {
		if (http_request_leave.status == 200) {
			window.close();
		}
	}
}

var sendinAMessage = false;

function sendMessage()
{
	if( document.forms.chatform.sendbutton.disabled || document.forms.chatform.mytext.disabled )
	return;

	http_request_msg = false;

	if (window.XMLHttpRequest) {
		http_request_msg = new XMLHttpRequest();
		if (http_request_msg.overrideMimeType)
		http_request_msg.overrideMimeType('text/html');
	} else if (window.ActiveXObject) {
		try {
			http_request_msg = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request_msg = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request_msg)
	return false;
	
	var message_text = document.forms.chatform.mytext.value;
	
	// Undzeichen rausparsen
	message_text = message_text.replace(/&/g, "#!sys-UND!#");

	http_request_msg.onreadystatechange = messageResponse;
	http_request_msg.open('POST', 'livechat_msg.php', true);
	http_request_msg.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request_msg.send("message="+message_text+"&sender="+wd_memberid+"&session="+wd_sessionid); // .substr(0,500)
	
	sendinAMessage = true;
	
	document.forms.chatform.sendbutton.disabled = true;
	document.forms.chatform.mytext.disabled = true;
}

function messageResponse()
{
	if (http_request_msg.readyState == 4) {
		if (http_request_msg.status == 200) {
			
			document.forms.chatform.sendbutton.disabled = false;
			document.forms.chatform.mytext.disabled = false;
			sendinAMessage = false;
			
			document.forms.chatform.mytext.value = "";
			document.forms.chatform.mytext.focus();
		}
	}
}

var wd_memberid = -1;
var wd_sessionid = "";

function checkForReturn(evt)
{
	if (!evt)
    evt = window.event;
	if (evt.which){
	keypr = evt.which;
	}else if(evt.keyCode){
	keypr = evt.keyCode;
	}
	
	if( keypr == 13 )
	sendMessage();
	else if( keypr == 10 )
	document.forms.chatform.mytext.value += String.fromCharCode(13);
}

function startWatchDog(mid,sid)
{
	wd_memberid = mid;
	wd_sessionid = sid;
	
	document.forms.chatform.mytext.onkeypress = checkForReturn;
	
	if( guest_visitor )
	sendHTTPRequestWD("mid="+mid+"&sid="+sid+"&lastmsg="+last_message_id+"&guest_visitor=y");
	else
	sendHTTPRequestWD("mid="+mid+"&sid="+sid+"&lastmsg="+last_message_id);
	window.setTimeout("callWatchDog()",1000);
}

function callWatchDog()
{
	if( leaved_yet )
	return;
	if( guest_visitor )
	sendHTTPRequestWD("mid="+wd_memberid+"&sid="+wd_sessionid+"&lastmsg="+last_message_id+"&guest_visitor=y");
	else
	sendHTTPRequestWD("mid="+wd_memberid+"&sid="+wd_sessionid+"&lastmsg="+last_message_id);
	window.setTimeout("callWatchDog()",1500);
}
