var http_request = createXmlHttpRequestObject();
var lastMessageID = 0;
var disaBled123 = 0;
var ile_req = 0;
var mTimer;

function createXmlHttpRequestObject() 
{
  var xmlHttp;
  try
  {
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
    {
      try 
      { 
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } 
      catch (e) {}
    }
  }
  if (!xmlHttp)
    alert("Błąd podczas tworzenia obiektu XMLHttpRequest.");
  else 
    return xmlHttp;
}

function sendMessage()
{
	if (trim(document.getElementById("messageBox").value) != "" ) 
	{
		var message = document.getElementById("messageBox").value;
		var uid = document.getElementById("userName").value;
		http_request.open("POST", 'shoutbox_view.php?last='+lastMessageID);
		http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		http_request.setRequestHeader('Shoutbox','shoutbox_js');
		http_request.onreadystatechange = handleReceivingMessages;
			var params = "mode=add&id="+encodeURIComponent(lastMessageID)+"&uid="+encodeURIComponent(uid)+"&message="+encodeURIComponent(message);
		http_request.send(params);
		document.getElementById("messageBox").value = '';
		clearInterval(mTimer);
		if (document.getElementById("zmien").style.display = 'inline')
		{
			document.getElementById("userId").value = '';
			document.getElementById("zmien").style.display = 'none';
			document.getElementById("anuluj1").style.display = 'none';
		}
	}
}

function removeShout(id)
{
	var el = document.getElementById(id);
	if (el){el.parentNode.removeChild(el);}
	http_request.open("GET", "shoutbox_view.php?mode=delete&del="+id+"&last="+lastMessageID);
	http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	http_request.setRequestHeader('Shoutbox','shoutbox_js');
	http_request.onreadystatechange = handleReceivingMessages;
	http_request.send(null);
}
function editShout(id) 
{
	var texT = new String(document.getElementById('edit_'+id).innerHTML);
		texT = texT.replace(/<(u|U|b|B|i|I)\>/g, "[$1]");
		texT = texT.replace(/<(\/u|\/U|\/b|\/B|\/i|\/I)\>/g, "[$1]");
		texT = texT.replace(/<\/(span|SPAN)\>/g, "[/color]");
		texT = texT.replace(/<(a|A)(.*?)href=\"(.*?)\"(.*?)\>(.*?)\<\/(a|A)\>/g, "$3");
		texT = texT.replace(/<(img|IMG)(.*?)alt=\"(.*?)\"(.*?)>/g, "$3");
		texT = texT.replace(/<(img|IMG)(.*?)alt=(.*?)(.*?)>/g, "$3");
		texT = texT.replace(/<(span|SPAN)(.*?)style=\"(color|COLOR):(.*?)(\#[0-9A-F]{6}|[a-z]+)(.*?)\">/g, "[color=$5]"); 
		texT = texT.replace(/&lt;/g, "<");
		texT = texT.replace(/&gt;/g, ">");
		texT = texT.replace(/&amp;/g, "&");
	document.getElementById("messageBox").value = texT;
	document.getElementById("userId").value = id;
	document.getElementById("zmien").style.display = 'inline';
	document.getElementById("anuluj1").style.display = 'inline';
	document.getElementById("wyslij").style.display = 'none';
}

function anuluj1() 
{
	document.getElementById("messageBox").value = '';
	document.getElementById("userId").value = '';
	document.getElementById("zmien").style.display = 'none';
	document.getElementById("anuluj1").style.display = 'none';
	document.getElementById("wyslij").style.display = 'inline';
}
function sendEditShout() 
{
	var msg = new String(document.getElementById("messageBox").value);
		msg = msg.replace(/\[B\]/g, "[b]");
		msg = msg.replace(/\[\/B\]/g, "[/b]");
		msg = msg.replace(/\[U\]/g, "[u]");
		msg = msg.replace(/\[\/U\]/g, "[/u]");
		msg = msg.replace(/\[I\]/g, "[i]");
		msg = msg.replace(/\[\/I\]/g, "[/i]");
		msg = msg.replace(/\[COLOR\=(\#[0-9A-F]{6}|[a-z]+)\]/g, "[color=$1]");
		msg = msg.replace(/\[\/COLOR\]/g, "[/color]");
		msg = msg.replace(/&lt;/g, "<");
		msg = msg.replace(/&gt;/g, ">");
		msg = msg.replace(/&amp;/g, "&");
	var id = document.getElementById("userId").value;
	if ( trim(msg) != '' )
	{
		http_request.open("POST", "shoutbox_view.php?last="+lastMessageID);
		http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		http_request.setRequestHeader('Shoutbox','shoutbox_js');
		http_request.onreadystatechange = handleReceivingMessages;
			var params = "mode=edit" + "&id="+document.getElementById("userName").value+"&edit_id="+id+"&message="+msg;
		http_request.send(params);
			msg = msg.replace(/\[(u|U|b|B|i|I)\]/g, "<$1>");
			msg = msg.replace(/\[(\/u|\/U|\/b|\/B|\/i|\/I)\]/g, "<$1>");
			msg = msg.replace(/\[\/color\]/g, "</span>");
			msg = msg.replace(/\[color\=(\#[0-9A-F]{6}|[a-z]+)\]/g, "<span style=\"color: $1;\">");
			msg = msg.replace(/(http:\/\/[a-z.][^\n\s]*)/g, "<a href=\"$1\">$1</a>");
			msg = msg.replace(/&lt;/g, "<");
			msg = msg.replace(/&gt;/g, ">");
			msg = msg.replace(/&amp;/g, "&");
		document.getElementById('edit_'+id).innerHTML = msg;
		anuluj1();
	}
}

function displayButton12()
{
	document.getElementById("wyslij").style.display = 'none';
	document.getElementById("messageBox").style.display = 'none';
	document.getElementById("message12").style.display = 'none';
	document.getElementById("zmien").style.display = 'none';
	document.getElementById("anuluj1").style.display = 'none';
}

function refreshSB12()
{
	ile_req = 0;
	requestNewMessages();
	document.getElementById("messageBox").style.display = 'inline';
	document.getElementById("wyslij").style.display = 'inline';
	document.getElementById("refresh12").style.display = 'none';
}

function requestNewMessages()
{  	
	if (http_request.readyState == 4 || http_request.readyState == 0) 
	{
		if (disaBled123 == 0)
		{
			if (ile_req <= 396)
			{
				http_request.open("GET", "shoutbox_view.php?last="+lastMessageID);
				http_request.setRequestHeader('Shoutbox','shoutbox_js');
				http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
				http_request.onreadystatechange = handleReceivingMessages;
				http_request.send(null);
				clearInterval(mTimer);
				indicator_switch(1);
			}
			else
			{
				displayButton12();
				document.getElementById("refresh12").style.display = 'inline';
			}
		}
		else
		{
			displayButton12();
			document.getElementById("refresh12").style.display = 'none';
			indicator_switch(0);
		}
	}
}

function handleReceivingMessages()
{	
	if (http_request.responseText != '')
	{
		if (http_request.readyState == 4 && http_request.status == 200)
		{
			var oScroll = document.getElementById("scroll");
			var scrollDown = /*(oScroll.scrollHeight - oScroll.scrollTop <=*/ oScroll.offsetHeight /*)*/;
			var res = eval("("+http_request.responseText+")");
			for(x=0; x < res.d.length; x++) 
			{
				var htmlMessage = '';
				var color = (res.d[x].c) ? 'style="'+res.d[x].c+'"' : '';
				var row = (res.d[x].i % 2) ? 'sb1' : 'sb2';
					htmlMessage += '<div id="'+res.d[x].i+'" class="'+row+' table0"> '
					if (res.d[x].x == 1){
					htmlMessage += '<a onclick="removeShout('+res.d[x].i+')" style="cursor: pointer;"><b>x</b></a> ';}
					if (res.d[x].e == 1){
					htmlMessage += '<a onclick="editShout('+res.d[x].i+')" style="cursor: pointer;"><b>e</b></a> ';}
					htmlMessage += res.d[x].t;
					if (res.d[x].l == 1){
					htmlMessage += ' <a href="profile.php?mode=viewprofile&u='+res.d[x].u+'" class="gensmall" '+color+'>'+res.d[x].n+'</a>: ';}
					else{
					htmlMessage += ' <span '+color+'>'+res.d[x].n+'</span>: ';}
					htmlMessage += '<span id="edit_'+res.d[x].i+'">'+res.d[x].m+'</span></div>';
				oScroll.innerHTML += htmlMessage;
				oScroll.scrollTop = scrollDown ? oScroll.scrollHeight : oScroll.scrollTop;
				lastMessageID = res.d[x].i;
				disaBled123 = res.d[x].h;
				ile_req = 0;
			}
			indicator_switch(0);
			clearInterval(mTimer);
			mTimer = setTimeout("requestNewMessages();", updateInterval);
		}
	}
	else
	{
		ile_req = ile_req + 1;
		indicator_switch(0);
		clearInterval(mTimer);
		mTimer = setTimeout("requestNewMessages();", updateInterval);
	}
}

function handleKey(e) 
{
	e = (e) ? e : (window.event) ? window.event : "";
	var theKey ;
	if (e)
	{
		theKey = (e.which) ? e.which : e.keyCode ;
	}
	if (theKey == 13)
	{
		if (document.getElementById("zmien").style.display != 'inline')
		{
			sendMessage();
		}
		else
		{
			sendEditShout();
		}
	}
}

function trim(s)
{
    return s.replace(/(^\s+)|(\s+$)/g, "")
}

function indicator_switch(state)
{
	if(document.getElementById("act_indicator"))
	{
		var img = document.getElementById("act_indicator");	
		if(state == 1)
		{
			img.style.visibility = "visible";
		}
		else
		{
			img.style.visibility = "hidden"
		}	
	}
}

