﻿var lastChatMessageId = 0;
var appendedIds = new Array();
var msgTimer;
var deelnemerTimer;
var showSystemMessages = false;
document.body.onresize = setChatboxWidth;
window.onunload = chatboxUnload;



function handleChatEvent(evt, textbox) {	
	if (evt.keyCode==13) {
		submitMsg(textbox.value,'',0,0)
		textbox.value='';
	}
	return false;
}

function chatboxUnload()
{	
	submitMsg(inlognaam + ' heeft de chatbox verlaten','',1,2);
}
function clearTimers() {
	clearTimeout(msgTimer);
	clearTimeout(deelnemerTimer);
	//alert(deelnemerTimer);
}


function startChatbox() {			
	setChatboxWidth();
	document.getElementById('chatmsg').focus();	
	msgTimer = setTimeout("submitMsg('','',0,0);startChatbox()", 10000);
	//1000 gaat de server al plat
	
}

function setChatboxWidth() {	
	var breedte = 447;
	var error;
	var error2;
	var headerdiv = document.getElementById('header');
	try {
		
		var bounds = chatboxdiv.getBoundingClientRect();			
		breedte = bounds.right - bounds.left;
	} catch (error) {
		try {
			breedte = chatboxdiv.offsetWidth;					
		} catch (error2) {
			var x;
			if (self.innerHeight) x = self.innerWidth;		
			else if (document.documentElement && document.documentElement.clientHeight) x = document.documentElement.clientWidth;
  		else if (document.body) x = document.body.clientWidth;
  		breedte = x-118;	
		}
	}
	breedte = breedte - 451;
	if (breedte<447) breedte = 447;
	breedte+= 'px';
	chatlines = getElementsByClassName('chatlineDiv');
	for (var i=0; i<chatlines.length; i++) {
			var chatlineDiv = chatlines[i];
			chatlineDiv.style.width=breedte;
	}
	
	document.getElementById('chatmsg').style.width = breedte;
	//document.getElementById('chatmsg').value = breedte;
	
	
}

function getElementsByClassName(class_name)
{
  var all_obj,ret_obj=new Array(),j=0,teststr;

  if(document.all)all_obj=document.all;
  else if(document.getElementsByTagName && !document.all)
    all_obj=document.getElementsByTagName("*");

  for(i=0;i<all_obj.length;i++)
  {
    if(all_obj[i].className.indexOf(class_name)!=-1)
    {
      teststr=","+all_obj[i].className.split(" ").join(",")+",";
      if(teststr.indexOf(","+class_name+",")!=-1)
      {
        ret_obj[j]=all_obj[i];
        j++;
      }
    }
  }
  return ret_obj;
}


function startDeelnemers(interval) {				
		var ajax   = new Ajax();	
		var urlStr = appDir+'chat.php?pntType=CmsChatbox&pntHandler=DeelnemersPage&id='+cmsChatboxId;
		ajax.requestURI = urlStr;		
		ajax.onCompletion = deelnemersCallback;
		ajax.run();				
	  deelnemerTimer = setTimeout("startDeelnemers("+interval+")", interval);
}

function submitMsg(msg, inlognaam, system,logintype) {
	var ajax   = new Ajax();	
	var urlStr;	
	urlStr = getUrl(msg, inlognaam, system,logintype);
	//return document.location.href=urlStr;
	ajax.requestURI = urlStr;		
	ajax.onCompletion = chatCallBack;
	ajax.run();	
}

function chatCallBack() {		
	
	processChatLines(this.response);		
}

function processChatLines(str) {
	var chatlines;
	chatlines = getChatLinesFromRespons(str);	
	appendChatLines(chatlines);
}

function getChatLinesFromRespons(str) {
		var response;		
		var i;
		var chatlines = new Array();
		var line;
		response = str.split('~~recsep~~');
		for (i=0; i<response.length; i++) {
				var line = response[i];
				line = line.split('~~fieldsep~~');
				if (line[0]>0) {
					chatlines[chatlines.length] = new ChatLine(line[0],line[1],line[2],line[3],line[4]);
				}
		}
		return chatlines;		
}

function appendChatLines(chatlines) {	
	var chatline;
	var i;	
	var container;
	container = document.getElementById('msgscontainer');
	if (!container) return;
	for (i=0; i<chatlines.length; i++) {
			chatline = chatlines[i];
			lastChatMessageId = chatline.id;
			if (!inArray(appendedIds,chatline.id)) {
				appendDivs(chatline, container);
				appendedIds[appendedIds.length] = chatline.id;
			}
	}	
	if (chatlines.length>0) {
		container.scrollTop = container.scrollHeight - container.style.height;
	}

}

function appendDivs(chatline, container) {
	var lineDiv;
	var inlognaamDiv;
	var messageDiv;
	var inlognaam;
	
	inlognaam = chatline.inlognaam;
	lineDiv = document.createElement('div');
	inlognaamDiv = document.createElement('div');
	inlognaamDiv.className = 'inlognaamDiv';
	messageDiv = document.createElement('div');			
	messageDiv.className = 'messageDiv';	
	inlognaamDiv.innerHTML = chatline.tijd+' '+inlognaam.substring(0,12)+':';
	messageDiv.innerHTML = chatline.message+'&nbsp;';	
	if (chatline.system==1) {
		if (!showSystemMessages) return;
		messageDiv.className += ' systemMessage';
		inlognaamDiv.className += ' systemMessage';
	}
	 					
	lineDiv.appendChild(inlognaamDiv);
	lineDiv.appendChild(messageDiv);
	lineDiv.className = 'chatlineDiv';
	container.appendChild(lineDiv);
}

function getUrl(msg, inlognaam, system,logintype) {
	var urlStr;		
	msg = encodeURIComponent(msg);	
	urlStr = appDir+'chat.php?message='+msg+'&lastChatMessageId='+lastChatMessageId+'&cmsChatboxId='+cmsChatboxId+'&system='+system+'&logintype='+logintype;	
	
	if (inlognaam) {
		urlStr+= '&inlognaam='+inlognaam;
	}	
	urlStr+= '&'+sessionName+'='+sessionId;			
	return urlStr;
}


function ChatLine(id, tijd, inlognaam, message, system) {
		var inlognaam;
		var id;
		var message;
		var tijd;
		var system;
		this.inlognaam = inlognaam;
		this.message = message;
		this.id = id;		
		this.tijd = tijd;
		this.system = system;
		
}

function Deelnemer(inlognaam, tijd) {
	var inlognaam;	
	var tijd;
	this.inlognaam = inlognaam;	
	this.tijd = tijd;
}

function inArray(myArray, myElem) {
	for (i=0; i<myArray.length; i++) {
		if (myArray[i]==myElem) {
			return true;
		}
	}
	return false;
}

function getDeelnemersFromResponse(str) {
	var response;		
	var i;
	var deelnemers = new Array();
	var line;
	response = str.split('~~recsep~~');	
	
	for (i=0; i<response.length; i++) {
			var line = response[i];
			line = line.split('~~fieldsep~~');			
			
			if (line[0].length>0) {				
				deelnemers[deelnemers.length] = new Deelnemer(line[0],line[1]);
			}
	}	
	return deelnemers;	
}
function deelnemersCallback() {
		var deelnemers = getDeelnemersFromResponse(this.response);
		
		var i;
		var str ='';
		var deelnemer;		
		var deelnemersDiv;
		deelnemersDiv = document.getElementById('chatDeelnemersContent');
		if (!deelnemersDiv) return;
		if (deelnemers.length==0) {						
			deelnemersDiv.innerHTML = 'Geen deelnemers.';						
			return;
		}
		for (i=0; i<deelnemers.length; i++) {
			deelnemer = deelnemers[i];
			str += '<div class="chatterlineDiv">&nbsp;';
			str += deelnemer.inlognaam;
			/*
			str += ' (';
			str += deelnemer.tijd;
			str += ')';
			*/
			str += '</div>';
			
			
		}
		deelnemersDiv.innerHTML = str;		
		
}




