var chatscroll = new Object();

chatscroll.Pane =
    function(scrollContainerId)
    {
        this.bottomThreshold = 25;
        this.scrollContainerId = scrollContainerId;
    }

chatscroll.Pane.prototype.activeScroll =
    function()
    {
        var scrollDiv = document.getElementById(this.scrollContainerId);
        var currentHeight = 0;

        if (scrollDiv.scrollHeight > 0)
            currentHeight = scrollDiv.scrollHeight;
        else
            if (objDiv.offsetHeight > 0)
                currentHeight = scrollDiv.offsetHeight;

        if (currentHeight - scrollDiv.scrollTop - ((scrollDiv.style.pixelHeight) ? scrollDiv.style.pixelHeight : scrollDiv.offsetHeight) < this.bottomThreshold)
            scrollDiv.scrollTop = currentHeight;

        scrollDiv = null;
    }

function sendCheck(){
	var msg=document.getElementById("message").value;
	if(msg.length>0 && !firstrun)
	    	parseMessage();
}

function move_down() {
    document.getElementById("chat").scrollTop = 1000;
}

function chooseRoom(){
	Login("room="+document.getElementById("room").value);
	updateCounter();
}

function getMessage() {
  	if(chat_total_messages>chat_total_messages_limit){
  		Login("");
  		chat_total_messages=0;
  	}else{
  		var chat_domain_root=document.getElementById("chat_domain_root").innerHTML;
		var parameters=Object.toQueryString({action: "get"});
		var url = chat_domain_root+"/chat.standalone.php";
		var get = new Ajax(url, {
			method: 'post',
			data: parameters,
			update: $('chat_get'),
			onComplete: function(){
				processMessage();
				if(isrunning=="yes"){
					setTimeout("getMessage()",GET_INTERVAL);
				}
			}
		});
		get.request();
  	}
}

function processMessage() {
	var data=document.getElementById("chat_get").innerHTML;
	var array=data.split(/\+\+\+/);
	for(var i=0;i<array.length;i++){
		var mess=array[i].split(/%%%/);
		if(mess.length==5){
			var message = mess[1]+": "+mess[3];
			document.getElementById("chat").innerHTML=document.getElementById("chat").innerHTML+message+"<br />";
			divScroll.activeScroll();
			chat_total_messages++;
		}
	}
}

function Login(parameters){
	var chat_domain_root=document.getElementById("chat_domain_root").innerHTML;
	var url=chat_domain_root+"/chat.standalone.php";
	var param=Object.toQueryString({action: "logon"});
	if(parameters.length>0)
		url+="?"+parameters;
	var get = new Ajax(url, {
		method: 'post',
		data: param,
		update: $('chat_logon'),
		onComplete: function() {
			processLogon();
		}
	});
	get.request();
}

function processLogon() {
	var data=document.getElementById("chat_logon").innerHTML;
	document.getElementById("chat").innerHTML="";
	if(data.length>0){
		var array=data.split(/%%%/);
		var room_array=array[1].split(/\+\+\+/);
		document.getElementById("room").selectedIndex = getIndex(room_array[1],document.getElementById("room"));
		for (var x = 2; x < array.length-1; x++)
   		{
   			document.getElementById("chat").innerHTML=document.getElementById("chat").innerHTML+array[x]+"<br />";
   		}
   		if(room_array[0]!="none")
   			document.getElementById("chat").innerHTML=document.getElementById("chat").innerHTML+"Du er nå i:<br />"+room_array[0]+"<br />";
		if(firstrun){
			firstrun=false;
			getMessage();
		}
		move_down();
	}
}

function getIndex(value,select){
	for(var x=0;x<select.length;x++){
		if(select[x].value==value)
		{
			return x;
		}
	}
	return 0;
}

function controlChat(){
	if(this.isrunning)
	{
		this.isrunning="no";
	}
	else
	{
		this.isrunning="yes";
		getMessage();
	}
}

function updateCounter() {
	var chat_domain_root=document.getElementById("chat_domain_root").innerHTML;
	var url=chat_domain_root+"/chat.standalone.php";
	var parameters=Object.toQueryString({action: "counter"});
	var get = new Ajax(url, {
		method: 'post',
		data: parameters,
		update: $('chat_counter'),
		onComplete: function() {
			processCounter();
		}
	});
	get.request();
}

function processCounter(){
	return true;
}

function parseMessage() {
	var msg=document.getElementById("message").value;
	var array=msg.split(/ /);
	if(array[0]=="/ban_user")
		sendCommand("ban_user",array[1]);
	else
	if(array[0]=="/unban_user")
		sendCommand("unban_user",array[1]);
	else
	if(array[0]=="/help"){
		document.getElementById("message").value="";
		alert("KOMMANDOER:\n/ban_user 'bruker'\n/unban_user 'bruker'\n/system start\n/system stop");
	}else
	if(array[0]=="/system")
	{
		document.getElementById("message").value="";
		if(array[1]=="stop")
			this.isrunning="no";
		else
		if(array[1]=="start"){
			this.isrunning="yes";
			getMessage();
		}
	}else
		sendMessage();
}

function sendCommand(cmd,item){
	var chat_domain_root=document.getElementById("chat_domain_root").innerHTML;
	var url=chat_domain_root+"/chat.standalone.php?action=kommando&cmd="+cmd+"&item="+item;
	document.getElementById("message").readonly=true;
	document.getElementById("message").onfocus="this.blur()";
	var get = new Ajax(url, {
		method: 'get',
		update: $('chat_kommando'),
		onComplete: function() {
			processCommand();
		}
	});
	get.request();
}

function processCommand() {
	var data=document.getElementById("chat_kommando").innerHTML;
	var data_array=data.split(/:/);
	if(data_array[0]=="banned"){
		document.getElementById("message").value="";
		document.getElementById("chat").innerHTML=document.getElementById("chat").innerHTML+"Bannet : "+data_array[1]+"<br />";
	}else
	if(data_array[0]=="notbanned"){
		document.getElementById("message").value="";
		document.getElementById("chat").innerHTML=document.getElementById("chat").innerHTML+"Kunne ikke banne : "+data_array[1]+"<br />";
	}else
	if(data_array[0]=="unbanned"){
		document.getElementById("message").value="";
		document.getElementById("chat").innerHTML=document.getElementById("chat").innerHTML+"Unbanned : "+data_array[1]+"<br />";
	}else
	if(data_array[0]=="stillbanned"){
		document.getElementById("message").value="";
		document.getElementById("chat").innerHTML=document.getElementById("chat").innerHTML+"Still banned : "+data_array[1]+"<br />";
	}else
	{
		document.getElementById("message").value="";
		document.getElementById("chat").innerHTML=document.getElementById("chat").innerHTML+"Kommando feil<br />";
	}
	document.getElementById("message").readonly=false;
	document.getElementById("message").onfocus="";
	document.getElementById("message").focus();
	divScroll.activeScroll();
}

function sendMessage() {
	var chat_domain_root=document.getElementById("chat_domain_root").innerHTML;
	var msg=(document.getElementById("message").value).trim();
	var url=chat_domain_root+"/chat.standalone.php";
	if(msg.length>0 && !msg.match(/%%%/) && !msg.match(/\+\+\+/)){
		document.getElementById("message").disabled=true;
		var parameters=Object.toQueryString({action: "send", message: msg});
		var get = new Ajax(url, {
			method: 'post',
			data: parameters,
			update: $('chat_send'),
			onComplete: function() {
				processResponse();
			}
		});
		get.request();
	}else{
		alert("Ugyldig input:\n"+document.getElementById("message").value);
		document.getElementById("message").value="";
	}
}

function processResponse() {
	var data=document.getElementById("chat_send").innerHTML;
	if(data=="ok"){
		document.getElementById("message").value="";
	}else{
		document.getElementById("chat").innerHTML=document.getElementById("chat").innerHTML+"Klarte ikke å sende melding"+data+"<br />";
		divScroll.activeScroll();
		document.getElementById("message").value="";
	}
	document.getElementById("message").disabled=false;
	document.getElementById("message").focus();
}