var ChatRequest;
var ChatTable		= 'chatmessages';
var ChatUser		= 'chatusers';
var ChatMessage		= 'chatmessage';
var ShoutTimeOut	= null;
var MessageQueue	= [];
var LastID			= 0;
var BusyProcessing	= false;
var xml;
var Offset			=	0;
var showMe			= true;
function HandleTimer(){
	ShoutTimeOut = setTimeout('HandleTimer()',2000);
	
	//if (!BusyProcessing){
		//BusyProcessing = true;
		PostMessage();
	//}
}

function GetMessageFromStack(){
	ReturnMessage = '';
	if (MessageQueue.length > 0){
		var Counter = 0;
		for (Counter=0;Counter<MessageQueue.length;Counter++){
			ReturnMessage += MessageQueue[Counter];
		}
		MessageQueue = [];		
	}
	return ReturnMessage;
}

function StoreMessageToStack(StoreMessage){
	MessageQueue.push(StoreMessage);
}

function cci_gosend(e){
	var keynum;
	var keychar;
	var numcheck;

	if(window.event){
		// IE
		keynum = e.keyCode;
	} else if (e.which) {
		// Mozilla
		keynum = e.which;
	}
	if (keynum == 13){
		StoreMessageToStack(document.getElementById(ChatMessage).value);
		document.getElementById(ChatMessage).value = '';
	}
}

function PostMessage(){
	//if (ChatRequest.readyState == 4 || ChatRequest.readyState == 0) {
		document.getElementById('loader').style.display	= '';
		document.getElementById('static').style.display	= 'none';
		message = GetMessageFromStack();
		url = '../../phplib/cci_chatxml.php'+'?ID='+LastID;
		if (!showMe){
			url += '&register=0';
			message = '';
		}		
		if (window.XMLHttpRequest) {
	        ChatRequest = new XMLHttpRequest();
			ChatRequest.open("POST", url, true);
			ChatRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			ChatRequest.onreadystatechange = handleChat;
	        var param = 'message=' + message;
			ChatRequest.send(param);
	    // branch for IE/Windows ActiveX version
	    } else if (window.ActiveXObject) {
	        ChatRequest = new ActiveXObject("Microsoft.XMLHTTP");
	        if (ChatRequest) {
				ChatRequest.open("POST", url, true);
				ChatRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
				ChatRequest.onreadystatechange = handleChat;
				var param = 'message=' + message;
				ChatRequest.send(param);
	        }
	    }
	//}
}

function handleChat(){
	if (ChatRequest.readyState == 4) { // Complete
		if (ChatRequest.status == 200) { // OK response
			document.getElementById('loader').style.display	= 'none';
			document.getElementById('static').style.display	= '';
			xml =  ChatRequest.responseXML;
			if(xml!=null) {
				var MessageNodes = xml.getElementsByTagName("message");
				if (MessageNodes.length > 0){
					handleMessages(MessageNodes);
				}

				var UserNodes = xml.getElementsByTagName("member");
				Offset = xml.getElementsByTagName("times")[0].getElementsByTagName("id")[0].firstChild.nodeValue;
				//if (UserNodes.length > 0){
					handleUsers(UserNodes);
					SetDates();
				//}
			}
			
		}
	}
}

function handleMessages(messageNodes){
	// build table and add rows according to messages
	var ChatMessages	= document.getElementById(ChatTable);
	var icounter;
	var irows = ChatMessages.rows.length;
	icounter = 0;

	while (ChatMessages.rows.length > 450){
		ChatMessages.deleteRow(-1);
	}

	for (icounter=messageNodes.length-1;icounter>-1;icounter--){
		if (parseInt(messageNodes[icounter].getElementsByTagName("ID")[0].firstChild.nodeValue) > parseInt(LastID)){
			LastID = messageNodes[icounter].getElementsByTagName("ID")[0].firstChild.nodeValue;
		}
		var oRow					= ChatMessages.insertRow(0);
		var oCell					= oRow.insertCell(0);
		oCell.style.fontSize		= '6pt';
		oCell.innerHTML				= '&nbsp;';

		var oRow					= ChatMessages.insertRow(0);
		var oCell					= oRow.insertCell(0);
		oCell.style.fontFamily		= 'Tahoma, Verdana, Arial, Sans-Serif';
		oCell.style.fontSize		= '9pt';
		oCell.style.fontWeight		= 'normal';
		oCell.style.color			= '#222222';
		oCell.style.textAlign		= "left";
		oCell.style.verticalAlign	= "top";
		oCell.style.width			= "150px";
		oCell.innerHTML				= PlaceSmilies(messageNodes[icounter].getElementsByTagName("text")[0].firstChild.nodeValue);

		var oRow					= ChatMessages.insertRow(0);
		var oCell					= oRow.insertCell(0);
		oCell.style.fontFamily		= 'Tahoma, Verdana, Arial, Sans-Serif';
		oCell.style.fontSize		= '9pt';
		oCell.style.color			= '#666666';
		oCell.style.textAlign		= "left";
		oCell.style.verticalAlign	= "top";
		oCell.innerHTML				= '<span style="font-size:7pt;">'+messageNodes[icounter].getElementsByTagName("time")[0].firstChild.nodeValue + '</span><a class="shoutbox" target="_blank" href="cci_members_maintain.php?ID='+messageNodes[icounter].getElementsByTagName("userid")[0].firstChild.nodeValue+'">' + '&nbsp;&nbsp;' + messageNodes[icounter].getElementsByTagName("user")[0].firstChild.nodeValue+'</a>';
	}
}

function PlaceSmilies(chatMessage){
	var FilePath = "../../common/smilies/";
	
	chatMessage = ReplaceSmiley(chatMessage, ":D", "icon_e_biggrin.gif");
	chatMessage = ReplaceSmiley(chatMessage, ":-D", "icon_e_biggrin.gif");
	chatMessage = ReplaceSmiley(chatMessage, ":)", "icon_e_smile.gif");
	chatMessage = ReplaceSmiley(chatMessage, ":-)", "icon_e_smile.gif");
	chatMessage = ReplaceSmiley(chatMessage, ";)", "icon_e_wink.gif");
	chatMessage = ReplaceSmiley(chatMessage, ";-)", "icon_e_wink.gif");
	chatMessage = ReplaceSmiley(chatMessage, ":p", "icon_razz.gif");
	chatMessage = ReplaceSmiley(chatMessage, ":-p", "icon_razz.gif");
	chatMessage = ReplaceSmiley(chatMessage, ":(", "icon_e_sad.gif");
	chatMessage = ReplaceSmiley(chatMessage, ":-(", "icon_e_sad.gif");
	chatMessage = ReplaceSmiley(chatMessage, ":o", "icon_e_surprised.gif");
	chatMessage = ReplaceSmiley(chatMessage, ":-o", "icon_e_surprised.gif");

	return chatMessage;
}

function ReplaceSmiley(text, smiley, icongif){
	var FilePath = "../../common/smilies/";
    var word = smiley.replace(")","\\)");
    word	= word.replace("(","\\(");
	word = new RegExp(word, "g");
    var smiley_img = "<img src='"+FilePath+icongif+"'>";    
    text = text.replace(word, smiley_img);
	return text;
}

function handleUsers(userNodes){
	// build table and add rows according to online users
	var ChatUsers	= document.getElementById(ChatUser);
	var icounter;
	var irows = ChatUsers.rows.length;
	icounter = 0;

	for(icounter=0; icounter<irows;icounter++){
		ChatUsers.deleteRow(-1);
	}

	for (icounter=0;icounter<userNodes.length;icounter++){
		var oRow				= ChatUsers.insertRow(-1);

		var oCell					= oRow.insertCell(0);
		oCell.style.fontFamily		= 'Tahoma, Verdana, Arial, Sans-Serif';
		oCell.style.fontSize		= '8pt';
		oCell.style.fontWeight		= 'bold';
		oCell.style.textAlign		= "left";
		oCell.style.verticalAlign	= "top";
		oCell.innerHTML				= "<a href='cci_members_maintain.php?ID="+userNodes[icounter].getElementsByTagName("id")[0].firstChild.nodeValue+"' target='_blank'>"+userNodes[icounter].getElementsByTagName("user")[0].firstChild.nodeValue+"</a>";
	}
}

function SetDates(){
	$('#servertime').attr('innerHTML', SetServerTime(Offset));
	$('#pctime').attr('innerHTML', SetLocalTime());
}

function SetLocalTime(){
	var oDate 		 = new Date();
	var lLocalOffSet = -1*oDate.getTimezoneOffset()/60;
	if (lLocalOffSet > 0){
		lLocalOffSet = '+' +  lLocalOffSet;
	}
	return FormatDigit(oDate.getHours()) + ':' + FormatDigit(oDate.getMinutes()) + ' ' + '(GMT ' + lLocalOffSet + ')';
}

function SetServerTime(lOffSet){
	var lTotaloffSet;
	var oServerDate;
	var oDate 		 = new Date();
	var lLocalOffSet = -1*oDate.getTimezoneOffset()/60;
	var lMilliseconds;
	lOffSet = parseInt(lOffSet);
	lOffSet = lOffSet/3600;
	lTotaloffSet = lOffSet - lLocalOffSet

	lMilliseconds 	= oDate.getTime();
	lMilliseconds 	= lMilliseconds + (lTotaloffSet*3600000);
	oServerDate 	= new Date(lMilliseconds);
	if (lOffSet > 0){
		lOffSet = '+' +  lOffSet;
	}
	return FormatDigit(oServerDate.getHours()) + ':' + FormatDigit(oServerDate.getMinutes()) + ' ' + '(GMT ' + lOffSet + ')';
}

function FormatDigit(sDigit){
	sDigit = sDigit + '';
	if (sDigit.length < 2){
		sDigit = '0' + sDigit;
	}
	return sDigit;
}

function ShowHideMe(){
	showMe = !showMe;
	MessageQueue = [];
	if (showMe){
		$('#showhide').attr('innerHTML', LabelArrayLong[0]);
	} else {
		$('#showhide').attr('innerHTML', LabelArrayLong[1]);
	}
}