var firstTime = "YES";
var userWindow = "NO";
var useIframe = "YES";
var focus = "YES";
var newMessages = 0;
var lastChatID = 0;
var participents = 0;
var updateFrame = new Boolean(false);
var regex = new RegExp(/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/);
var currentUrl = "";
var currentIframeUrl = "";
var titleInterval;
var myname;
var historyOffset = 0;
$.ifixpng('images/transparent.gif');
var userAway = "NO";
var timerNum = 0;
var timerAway;
var Comet;
var coolerCookie;
var newUser = 0;
var iFrameLocked = "YES";
var iFrameMenuOpen = "NO";
var freezeOpen = "NO";
var lastMsgUser = "";
var lastMsgCount = 0;
var lastMsgTimer;
var chatMenu = "NO";
var iframeMenuTimeout;
var badBrowser;
var minTimeout = 1000;
var maxTimeout = 30000;
var multiplier = 1.2;
var globalTimer;
var globalQuery;
var twitterCredsOpen = "NO";
var useTwitter;
var twitterU;
var twitterP;
var lang;

$(document).ready(function() {

	var badBrowser = (/MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32");
   	if (badBrowser) {
    	$('#feedbackButton, #abuseButton, #tsandcsButton, #privacyButton, #copyright, .menuIcon, #navLeft, #navRight, #iFrameMenu, #iFrameLock, #icicle, .navButton, #headerIgloo, #headerMoBeta, #chatGo, #chatMenuDropdown, #browserTR, #browserBR, #browserBL, #userBadge, #openUsers, .userIcon, .userTag, #logo').ifixpng();
   }
   
   	$('#newRoomName').alphanumeric({allow: " "});
	$('#newUserName').alphanumeric();
	$('#joinName').alphanumeric();
	$('#statusUpdate').alphanumeric({allow:"%!?@$£-., "});
	   	
	$('#chatInput').keyup(function(event){

		if(event.keyCode == 13)
		{
          if($('#chatInput').val() != ""){
			  $.post('post.php', {message: $('#chatInput').val(), name: myname, chatid: chatGUID, language: lang}, function() {
				  displayChat(myname, fetch_unix_timestamp(), $('#chatInput').val(), "0");
				  $('#chatInput').val("");
			  });
          }          
        }
          
        return false;
    });
        
    function sendChatter(command)
    {
          $.post('post.php', {message: command + $('#chatInput').val(), name: myname, chatid: chatGUID, language: lang}, function() {
	          displayChat(myname, fetch_unix_timestamp(), command + $('#chatInput').val(), "0");
	          $('#chatInput').val("");      
          });
          return false;    	
    }
        
    $("#chatMenuDropdown").click(function(){
    
		if(chatMenu == "NO")
		{
			$("#chatMenu").animate({opacity: "show"}, 300, function(){

			});
			chatMenu = "YES";
		}
		else
		{
			$("#chatMenu").animate({opacity: "hide"}, 300);
			chatMenu = "NO";
		}
    
    });
    
    $(".menuItem").click(function(){
    
		var command;
		
		if($(this).text() == "Search Google")
		{
			command = "!search ";
		} else if ($(this).text() == "Image Search")
		{
			command = "!image ";
		} else if ($(this).text() == "Video Search")
		{
			command = "!video ";
		} else if ($(this).text() == "Map Search")
		{
			command = "!map ";
		}
		
		$("#chatMenu").animate({opacity: "hide"}, 300);
		chatMenu = "NO";
		sendChatter(command);
    
    });
    

    
	$("#urlBar").keyup(function(event){

		if(event.keyCode == "13")
    	{
    		alert("url_bar");
			var urlText = replacewww($("#urlBar").val());						
			if (regex.test(urlText))
			{
          		time = fetch_unix_timestamp();

	        	  $.post('post.php', {message: urlText, name: myname, chatid: chatGUID}, function() {
			          displayChat(myname, time, urlText	, "0");          
	    	      });				
			}
		}
	});
    
    $("#iFrameLock").click(function(){                
    	$("#iFrameLock").animate({ "height": "0px", "opacity": "hide" }, 300, function(){
			if(iFrameLocked == "YES")
			{
				if(currentUrl != currentIframeUrl)
				{
					var iframe = document.getElementById('theFrame');
					iframe.src = currentUrl;
					currentIframeUrl = currentUrl;
				}
				iFrameLocked = "NO";
				$("#iFrameLock").css({ "background-image": "url(images/freezeframe.png)" });
				$("#icicle").animate({opacity: "hide"});
			} else {
				iFrameLocked = "YES";
				$("#iFrameLock").css({ "background-image": "url(images/unfreeze.png)" });
				$("#icicle").animate({opacity: "show"});
			}  
			iFrameMenuOpen = "NO";    	
    	});        	  	
    });
    
    $("#iFrameLock").mouseover(function(){
    	clearTimeout(iframeMenuTimeout);
	});
	
    $("#iFrameMenu").mouseout(function(){
    	iframeMenuTimeout = setTimeout("closeIframeMenu()", 5000)
    });
    
    $("#iFrameMenu").mouseover(function(){
    	clearTimeout(iframeMenuTimeout);    	
        $("#iFrameLock").animate({ "height": "25px", "opacity": "show" }, 300);
    	iFrameMenuOpen = "YES";
    });
    
    $("#iFrameMenu").mouseout(function(){
    	iframeMenuTimeout = setTimeout("closeIframeMenu()", 5000)
    });
        	
	$("#openUsers").click(function(){
		userWinControl();
	});
	
	function userWinControl()
	{
		if (userWindow == "NO")
		{
			openUsers("YES");
			userWindow = "YES";
		} else {
			closeUsers();
			userWindow = "NO";
		}
	}
		
	$("#previousDayButton").click(function(){
		++historyOffset;
		if(historyOffset == 1)
		{
			$("#nextDayButton").css({ "display": "block" });
		}
		getHistory(historyOffset);		
	});
	
	$("#nextDayButton").click(function(){
		historyOffset = historyOffset-1;
		
		if(historyOffset == 0)
		{
			$("#nextDayButton").css({ "display": "none" });
		}
		getHistory(historyOffset);		
	});
	
	$("#reminderButton").click(function(){
		var divName = "#popupReminder";
		if (/*@cc_on!@*/false) {
			$("#popupReminder").height(280);
		}
		else
		{
			$("#addToFav").css({ "display": "none" });
		}
		
		$("#roomguid").text(chatGUID);
		
		centerPopup(divName);
		loadPopup(divName);
	});
	
	$("#reminderClose").click(function(){  
		var parentDiv = $(this).parent().attr("id");
		disablePopup(parentDiv);
	});
	
	$("#addToFav").click(function(){
	
		if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4)) {
	
		var url="http://www.chatterbloc.com/chatroom.php?GUID=" + chatGUID;
		var title="Chatterbloc.com - " + roomName;
		
		window.external.AddFavorite(url, title);
	
		}
	
	});
	
	$("#reminderSubmit").click(function(){
		var sendTo = $("#reminderTo").val();
		var sendFrom = "info@chatterbloc.com";
		$.post('reminder.php', {emailAddresses: sendTo, from: sendFrom, name: myname, chatGUID: chatGUID});
		disablePopup("popupReminder");	
	});
	
	$("#historyButton").click(function(){
		var divName = "#popupHistory";
		getHistory(historyOffset);
		$("#historySearch").val("Search History");
		if(historyOffset == 0)
		{
		$("#nextDayButton").css({ "display": "none" });
		}

		centerPopup(divName);
		loadPopup(divName);
	});
	
	$("#historyClose").click(function(){  
		var parentDiv = $(this).parent().attr("id");
		disablePopup(parentDiv);
	});
	
	$("#historySearch").click(function(){
	
		if($("#historySearch").val() == "Search History")
		{
			$("#historySearch").val("");
		}
	
	});
	
	$("#historySearch").blur(function(){
	
		if($("#historySearch").val() == "")
		{
			$("#historySearch").val("Search History");
			if($("#historyArea").text() == "") {
				getHistory(historyOffset);
			}
		}
	
	});
	
	$("#historySearch").keyup(function(){

		var term = $("#historySearch").val();
		
		$("#loader").css({ "display": "block" });
		$("#historyArea").text("");
	
		$.post('search.php', {searchterm: term, chatGUID: chatGUID, offset: historyOffset},function(data){
			
			$("#historyArea").append(data);
			var objDiv = document.getElementById("historyArea");
			objDiv.scrollTop = objDiv.scrollHeight;
			$("#loader").css({ "display": "none" });
		});	
	});
	
	$("#inviteButton").click(function(){
		var divName = "#popupInviteChoices";
		centerPopup(divName);
		loadPopup(divName);
	});
	
	$("#inviteViaEmail").click(function(){
		var divName = "#popupInvite";
		disablePopup("popupInviteChoices");
		centerPopup(divName);
		loadPopup(divName);
	});
	
	$("#inviteViaTwitter").click(function(){
		var divName = "#popupInviteViaTwitter";
		$("#twitterNameInvite").val(twitterU);
		$("#twitterPassInvite").val(twitterP);
						
		disablePopup("popupInviteChoices");
		centerPopup(divName);
		loadPopup(divName);
	});
	
	$("#abuseButton").click(function(){
		var divName = "#popupReport";
		centerPopup(divName);
		loadPopup(divName);
	});

	$("#reportClose").click(function(){  
		var parentDiv = $(this).parent().attr("id");
		disablePopup(parentDiv);
	});
	
	$("#sendReportButton").click(function(){
		var sendFrom = $("#reportFromAddress").val();
		var message = $("#reportMessage").val();
		var sendTo = "report-abuse@chatterbloc.com";
		$.post('report.php', {emailAddresses: sendTo, from: sendFrom, name: myname, chatGUID: chatGUID, theMessage: message});
		disablePopup("popupReport");
	});
	
	$("#reportFromAddress").keyup(function(){
	
		var email = $("#reportFromAddress").val();
	
		if(email != 0)
		{
			if(isValidEmailAddress(email))
			{
				$("#validReportEmail").css({
					"background-image": "url('cbicons/16x16/validYes.png')"
				});
			} else {
				$("#validReportEmail").css({
					"background-image": "url('cbicons/16x16/validNo.png')"
				});
			}
		}
	
	});

	$("#leaveButton").click(function(){
		var divName = "#popupLeave";
		centerPopup(divName);
		loadPopup(divName);
	});
	
	$("#leaveClose").click(function(){  
		var parentDiv = $(this).parent().attr("id");
		disablePopup(parentDiv);
	});
	
	$("#leaveButtonCancel").click(function(){  
		var divName = "popupLeave";
		disablePopup(divName);
	});
	
	$("#leaveButtonOK").click(function(){
	    	    
	    var myleave = "YES";
	    var mymessage = "has left the room";
	    var cookName = "";
        var cookGUID = "";
        var theAlert = "1";
    	lastChatID = "0";

		coolerCookie.deleteCookie(chatGUID);
		clearTimeout(globalTimer);
	
    	$("#chatarea").html("");
		$('#chatInput').attr('disabled','disabled');
    	    	
		$.post('updateActivity.php', {name: myname, chatid: chatGUID, leave: myleave});
    	myname = "";

		disablePopup("popupLeave");
		window.location="index.php";		
	});
	
	$("#inviteClose").click(function(){  
		var parentDiv = $(this).parent().attr("id");
		disablePopup(parentDiv);
	});
	
	$("#fromAddress").keyup(function(){
	
		var email = $("#fromAddress").val();
	
		if(email != 0)
		{
			if(isValidEmailAddress(email))
			{
				$("#validFromEmail").css({
					"background-image": "url('cbicons/16x16/validYes.png')"
				});
			} else {
				$("#validFromEmail").css({
					"background-image": "url('cbicons/16x16/validNo.png')"
				});
			}
		}
	
	});
	
	$("#sendInviteButton").click(function(){
		var sendTo = $("#mailAddresses").val();
		var sendFrom = $("#fromAddress").val();
		var message = $("#inviteMessage").val();
		$.post('mail.php', {emailAddresses: sendTo, from: sendFrom, name: myname, chatGUID: chatGUID, theMessage: message});
		disablePopup("popupInvite");
	});
	
	$("#joinName").keydown(function(){
		$("#joinErrorMsg").fadeOut(1000);	
	});
	
	$("#generalButton").click(function(){
		createComet();
		disablePopup("popupGeneral");
		$('#chatInput').removeAttr('disabled');
		$('#chatInput').focus();
		$("#chatMenuDropdown").css({ "display": "block" });
	});
	
	$("#twitterCreds").click(function(){
	
		if(twitterCredsOpen == "NO")
		{
			$("#twitterName").animate({"opacity": "show"}, 200);
			$("#twitterPass").animate({"opacity": "show"}, 200);
			$("#popupJoin").animate({"height": "251px"}, 200);
			$("#twitterCreds").html("v Enter <B>Twitter</B> Credentials <i>(Optional)</i>");
			twitterCredsOpen = "YES";
		} else {
			$("#twitterName").animate({"opacity": "hide"}, 200);
			$("#twitterPass").animate({"opacity": "hide"}, 200);		
			$("#popupJoin").animate({"height": "196px"}, 200);
			$("#twitterCreds").html("> Enter <B>Twitter</B> Credentials <i>(Optional)</i>");
			twitterCredsOpen = "NO";
		}
	
	});
	
	$("#joinButton").click(function(){

		joinRoom();		

	});
	
	$("#joinName").keyup(function(event){
		if(event.keyCode == "13")
    	{
			joinRoom();		
		}
	});
	
	function joinRoom()
	{
		var myname = $("#joinName").val();
		lang = $("#langSelect").val();
		var nameMatch = "NO";
		useTwitter = $("#twitterChoice").val();
		twitterU = $("#twitterName").val();
		twitterP = $("#twitterPass").val();
		
		if (myname.length == 0)
		{
			$("#joinErrorMsg").fadeIn(1000).text("Name cannot be empty");
	
		} else {
		
			$.get("recentUsers.php?chatGUID=" + chatGUID, function(xml){
				$('user',xml).each(function(i){
					if (myname == $(this).find("name").text())
					{
						nameMatch = "YES";
					}				
				});
			
				if(nameMatch == "YES")
				{
					$("#joinErrorMsg").fadeIn(1000).text("User already exists");
				
				} else {
				
					coolerCookie.createCookie(chatGUID, myname);
				    $.post('updateActivity.php', {name: myname, chatid: chatGUID, language: lang});

					newUser = 1;
					checkCookie();
					disablePopup("popupJoin");
					$('#chatInput').removeAttr('disabled');
					$('#chatInput').focus();
					$("#chatMenuDropdown").css({ "display": "block" });
				} 
			});
        }
    }

	$("#newRoomButtonSubmit").click(function(){
		var roomname = $("#newRoomName").val();
		var userName = $("#newUserName").val();

		newguid = jsguid();
		
		if ((roomname.length == 0) || (userName.length == 0))
		{
			$("#createErrorMsg").fadeIn(1000).text("Fields cannot be empty");
		} else {
			$.post('create.php', {roomName: roomname, joinGUID: newguid}, function(){
				
				coolerCookie.createCookie(newguid, userName);
				disablePopup("popupNewRoom");
				window.open("chatroom.php?GUID=" + newguid);			
			});
		}
	});
	
	$("#newRoomButton").click(function(){ 
		createClick("NEW");
	});
 
	$("#newRoomClose").click(function(){  
		var parentDiv = $(this).parent().attr("id");
		disablePopup(parentDiv);
	});
	
	$("#userStatus").click(function(){
		$("#statusUpdate").css({ "display": "block" });
		$('#statusUpdate').focus();
	});
	
	$("#statusUpdate").keyup(function(event){
		$("#charCount").text(26 - $("#statusUpdate").val().length);
		if(event.keyCode == "13")
    	{
			updateStatus();
		}
	});
	
	$("#statusUpdate").focus(function () {
		$("#charCount").css({ "display": "block"});
	});
	
	$("#statusUpdate").blur(function () {
 		updateStatus();
    });
    
    $("#inviteChoicesClose").click(function(){
		var parentDiv = $(this).parent().attr("id");
		disablePopup(parentDiv);    
    });

    $("#inviteViaTwitterClose").click(function(){
		var parentDiv = $(this).parent().attr("id");
		disablePopup(parentDiv);    
    });
    
    $("#inviteTwitter").click(function(){
			
			$("#tweetFeedback").animate({"opacity": "show"}, 100);
    		var twUser = $("#twitterNameInvite").val();
    		var twPass = $("#twitterPassInvite").val();
    		$.post("twitter/index.php", {user: twUser, pass: twPass, send: "YES", twitter_stat: "Chat with me on Chatterbloc now! http://www.chatterbloc.com/chatroom.php?GUID=" + chatGUID}, function(data) {
    		
    		    time = fetch_unix_timestamp();
				disablePopup("popupInviteViaTwitter");   			
    			$("#tweetFeedback").animate({"opacity": "hide"}, 100);
   	          	displayChat("chatterbloc", time, " - Tweet Invite Sent", "1");
    		
    		});
    });

});

function updateStatus()
{
   		var theStatus;
    	var activityMessage;
    	var myAlert = "1";
    	var currentStatus = $("#userStatus").text().substring(1,($("#userStatus").text().length - 1));
    	
    	if($("#statusUpdate").val().length == "0")
    	{
    		if (currentStatus != "click to edit status")
    		{
		   		theStatus = "click to edit status";
    			activityMessage = "";
    			$.post('updateActivity.php', {name: myname, chatid: chatGUID, statusUpdate: activityMessage}, function(){
				$("#userStatus").text("(" + theStatus + ")");
    			});
    		}
       	}
    	else if ($("#statusUpdate").val() == currentStatus)
    	{
    	
    	} 
    	else
    	{
    		theStatus = $("#statusUpdate").val();
    		activityMessage = theStatus;
			$.post('post.php', {message: theStatus, name: myname, chatid: chatGUID, alert: myAlert}, function(){
			
				$.post('updateActivity.php', {name: myname, chatid: chatGUID, statusUpdate: activityMessage}, function(){
			
					$("#userStatus").text("(" + theStatus + ")");
				    time = fetch_unix_timestamp();
					displayChat(myname, time, activityMessage, "1");
				});
			});
    	}
		
		$("#statusUpdate").css({ "display": "none" });
		$("#charCount").css({ "display": "none"});
}

function firstLoad()
{		
	coolerCookie = new CoolerCookie();
	coolerCookie.Expires = 3;
	checkCookie();
	var rand_no = Math.floor((600000-100000)*Math.random()) + 200000;
	setTimeout("animateMo()", rand_no);
	setInterval("blinkMo()", 24000);
}

function blinkMo()
{
	$("#headerMoBlink").css({ "display": "block" });
	setTimeout("unblinkMo()", 180);
}

function unblinkMo()
{
	$("#headerMoBlink").css({ "display": "none" });
}

function animateMo()
{
	$("#headerMo").css({ "background-image": "url(images/mo_fishing_extra.gif)" });
	setTimeout("resetMo()", 15000);
}

function resetMo()
{
	$("#headerMo").css({ "background-image": "url(images/mo_fishing.png)" });
	var rand_no = Math.floor((600000-100000)*Math.random()) + 200000;
	setTimeout("animateMo()", rand_no);	
}

function centerButton(divName)
{
	var iframeWidth = $("#iFrameDiv").width();
	var buttonWidth = $(divName).width();
	
	$(divName).css({     
	"position": "absolute",  
	"left": iframeWidth/2-buttonWidth/2
	});
	
}

function checkCookie()
{
	myname = coolerCookie.readCookie(chatGUID);

	if ((myname) && (newUser != 1))
	{
		centerPopup("#popupGeneral");
		loadPopup("#popupGeneral");
	} 
	if ((myname) && (newUser == 1))
	{
		createComet();
	}
	else if(myname == null)
	{
		centerPopup("#popupJoin");
		loadPopup("#popupJoin");
	}
}


if (/*@cc_on!@*/false) { 
	document.onfocusin = onFocus;
	document.onfocusout = onBlur;
} else {
	window.onfocus = onFocus;
	window.onblur = onBlur;
}

function kill()
{
    $.post('updateActivity.php', {name: myname, chatid: chatGUID, leave: "YES"});
}

function onFocus()
{
	focus = "YES";
	if(userAway == "YES"){ 
		userAway = "NO";
		$.post('updateActivity.php', {name: myname, chatid: chatGUID, isAway: userAway});
	}

	if(currentUrl != currentIframeUrl)
	{
		if (useIframe == "YES")
		{					
			if(iFrameLocked == "NO")
			{
				var iframe = document.getElementById('theFrame');
				iframe.src = currentUrl;
				currentIframeUrl = currentUrl;
			}
		}	
	}
	
	newMessages = 0;
	document.title = "chatterbloc - a cooler way to chat";
	timerNum = 0;	
	clearTimeout(timerAway);
	$('#chatInput').focus(); 	
}

function onBlur()
{
	focus = "NO";
	awayTimer();
}

function awayTimer()
{

	if(timerAway){ clearTimeout(timerAway) }
	timerNum = timerNum + 1;
	
	if(timerNum == 16)
	{
		var away = "YES";
		$.post('updateActivity.php', {name: myname, chatid: chatGUID, isAway: away});
		timerNum = 0;
		userAway = "YES";
		clearTimeout(timerAway);
	} else {	
		timerAway = setTimeout("awayTimer()", 60000);
	}
}

function newHeartbeat()
{
	clearTimeout(globalTimer);
	$.get("heartbeat4.0.php?chatGUID=" + chatGUID + globalQuery, function(newData){
					
		if(newData)
		{		
		   heartbeat(newData);
		}else{
		   if(timerInterval < maxTimeout)
		   {
			  timerInterval = timerInterval * multiplier;
		   }
		   globalTimer = setTimeout(newHeartbeat, timerInterval);
		}
	  });
}

function heartbeat(theXML)
{
	var randNum = Math.random();
	var finalID;
	var noUsers;
				
	$('heartbeat',theXML).each(function(i){
	
	logAvailable = $(this).find("logAvailable").text();
	lastTime = $(this).find("logAvailable").attr("time");
	lastID = $(this).find("logAvailable").attr("lastID");

	activityAvailable = $(this).find("activityAvailable").text();
	activityNum = $(this).find("activityAvailable").attr("value");
	
		if (logAvailable == "YES")
		{
			finalID = deliverChatter(theXML);
		} else {
			finalID = lastChatID;
		}
	
		if (activityAvailable == "YES")
		{
			noUsers = updateActivity(activityNum, theXML);
		} else {
			noUsers = participents;
		}
	});

	if((finalID == undefined) || (noUsers == undefined))
	{ 
		alert("We apologise, but an error has occured. Please refresh your browser.");
		$.post('addLog.php', { userName: myname, guid: chatGUID, lastID: lastChatID, lastParticipents: participents });
	}

	globalQuery = "&lastChatID=" + finalID + "&participents=" + noUsers + "&userName=" + myname + "&timeLast=" + lastTime + "&firstTime=NO&num=" + randNum;
	
	timerInterval = minTimeout;
	globalTimer = setTimeout(newHeartbeat, timerInterval);	
}

function deliverChatter(theXML)
{
	var lastID;
	var alertAvailable = "NO";
	var newText;
	
	clearInterval(lastMsgTimer);
	
		$('message',theXML).each(function(i){
		
		lastID = $(this).find("id").text();
		xmlDate = $(this).find("date").text();
		xmlName = $(this).find("name").text();
		xmlText = $(this).find("text").text();
		xmlAlert = $(this).find("at").text();
		xmlLang = $(this).find("language").text();
		
		displayChat(xmlName, xmlDate, xmlText, xmlAlert, xmlLang);
									
		});
		
	if(firstTime == "YES")
	{
		$("#bigLoader").css({ "display": "none" });
		firstTime = "NO";
		iFrameLocked = "NO";
		currentUrl = "http://www.chatterbloc.com/welcome.php";
		currentIframeUrl = "http://www.chatterbloc.com/welcome.php";
	    $("#iFrameCover").css({ "opacity": "0.7" });
		$("#iFrameCover").fadeIn("slow");
		setTimeout("forceScrollDown()", 1000);
	}
	
	lastMsgCount = 0;
	lastMsgTimer = setInterval("lastMessageCounter()", 1000);
	
	lastChatID = lastID;
	return lastID;
}

function displayChat(xmlName, xmlDate, xmlText, xmlAlert, xmlLang)
{
	var iframe = document.getElementById('theFrame');

		xmlText = convertCommand(xmlText);
		
		xmlDate = convertUnixToTime(xmlDate);
		
		if(focus == "NO")
		{
			++newMessages;
			updateTitle(newMessages);
		}
				
		textToMatch = xmlText.toLowerCase();
		var message;
		
		if (xmlAlert == "1")
		{			
			message = "<div class='alertHolder'>" +
			"<div class='alertBubble'></div>" +
			"<div class='message'><em>" + xmlDate + "</em> <I>" + xmlName + " " + xmlText + "</I></div>" +
			"</div>";
			
			alertAvailable = "YES";
		
		} else {
		
			var showName;
			if(lastMsgCount > 600)
			{
				message = "<div class='timeHolder'>" +
							"<em>" + xmlDate + "</em><div class='lineBreak'><hr noshade='true' size='1px'></hr></div>" +
							"</div>";
				showName = "YES";
			} else {
				message = "";
			}
		
			newText = replacewww(xmlText);
			newText = replaceURLWithHTMLLinks(newText);
			newText = convertSmileys(newText);
					
			if(lastMsgUser == xmlName)
			{
				if(textToMatch.match(myname.toLowerCase()) != null)
				{
					bubbleRef = "cbicons/16x16/followOnPers.png";
				} else {
					bubbleRef = "cbicons/16x16/followOn.png";
				}
								
				message = message + "<div class='messageHolder'>" +
				"<img src=\"" + bubbleRef + "\" border=0 class='followOnBubble'>" +
				"<div class='message'>";
				
				if(showName == "YES"){ message = message + "<strong>" + xmlName + ":</strong> "; }
				
				if((lang != xmlLang) && (xmlLang != undefined)) {
					google.language.translate(newText, xmlLang, lang, function(result) {
						$("#chatarea").append(message + result.translation + "</div></div>");
					});

				} else {
					$("#chatarea").append(message + newText + "</div></div>");
				}
				
			

			} else {
		
				if(textToMatch.match(myname.toLowerCase()) != null)
				{
					bubbleRef = "cbicons/16x16/speechPers.png";
				} else {
					bubbleRef = "cbicons/16x16/speech.png";
				}
				
				if((lang != xmlLang) && (xmlLang != undefined)) {
					google.language.translate(newText, xmlLang, lang, function(result) {
  						
		  				$("#chatarea").append(message + "<div class='messageHolder'>" +
						"<img src=\"" + bubbleRef + "\" border=0 class='speechBubble'>" +
						"<div class='message'><strong>" + xmlName + ":</strong> " + result.translation + "</div>" +
						"</div>");	
  						
					});
				} else {
		  				$("#chatarea").append(message + "<div class='messageHolder'>" +
						"<img src=\"" + bubbleRef + "\" border=0 class='speechBubble'>" +
						"<div class='message'><strong>" + xmlName + ":</strong> " + newText + "</div>" +
						"</div>");					
				}
			
			}
		
		}
						
			var url;
			var urlText = replacewww(xmlText);
						
			if (regex.test(urlText))
			{
				url = regex.exec(urlText)[0];
				currentUrl = url;
				
				if(url.match("youtube.com/watch") != null)
				{
					firstIndex = url.indexOf("h?v=") + 4;
					if(url.indexOf("&") != -1)
					{
						secondIndex = url.indexOf("&");
					} else {
						secondIndex = url.length;
					}	
						vidID = url.substring(firstIndex, secondIndex);
						
						newUrl = "http://www.youtube.com/v/";
						end = "&hl=en&fs=1";
										
						url = newUrl.concat(vidID);
						url = url.concat(end);
				}
				
				if (useIframe == "YES")
				{					
					if(iFrameLocked == "NO")
					{
						if(focus == "YES")
						{
							iframe.src = url;
							currentIframeUrl = url;
							$("#urlBar").val(url);
						}
					}				
				
				currentUrl = url;

				}
				$('#chatInput').focus();
			}
			
	lastMsgUser = xmlName;
	var objDiv = document.getElementById("chatarea");
	objDiv.scrollTop = objDiv.scrollHeight;
}

function lastMessageCounter()
{
	++lastMsgCount;
}

function updateActivity(activityNumber, theXML)
{
	var randNum = Math.random();

	var content = "";

	$('user',theXML).each(function(i){
		
			name = $(this).find("name").text();
			userStat = $(this).find("status").text();
			isAway = $(this).find("away").text();
			
			if(userStat.length != "0") { userStat = ": " + userStat; }
			
			var img;
			if(isAway == "0")
			{
				img = "cbicons/16x16/user.png";	
			} else if (isAway == "1")
			{
				img = "cbicons/16x16/userAway.png";				
			}
			
			content = content + "<div class=\"userTag\"><img src=\"" + img + "\" border=0 class='userIcon'><B>" + name + "</B>" + userStat + "</div>";
		});
		
		$("#userList").html(content);
		if (participents != 0)
		{
			$("#userCount").fadeOut(500);
		}
		
		$("#userCount").html(activityNumber);
		$("#userCount").fadeIn(500);
		
		$(".userTag").click(function(){
			currentMessage = $('#chatInput').val();
			name = $(this).html();
			nameIndex = name.indexOf("<b>") + 3;
			lastIndex = name.indexOf("</b>");
			name = name.substring(nameIndex,lastIndex);
			$('#chatInput').val(currentMessage + " " + name + " "); 
			});				

participents = activityNumber;

if(userWindow == "YES")
{
	openUsers("NO");
}

return participents;
}

function translateText(text, from, to)
{
	// translate via Google.
	alert("in for translation from " + from + " to " + to);
	google.language.translate(text, from, to, function(result) {
  		return(result.translation);
	});
}

function openUsers(open)
{
	var userHeight;
	var maxHeight = Math.round($("#iFrameDiv").height()/2);	
	var calcHeight = participents * 18 + 50;
	
	if(calcHeight > maxHeight)
	{
		userHeight = maxHeight;
	}
	else
	{
		userHeight = calcHeight;
	}
	
	if (/*@cc_on!@*/false) {
	
		userHeight = 100;
	}
	
	var chatTop;
	if (/*@cc_on!@*/false) {
		chatTop = userHeight + 23;
	}
	else
	{
		chatTop = userHeight + 35;
	}	
	
	if(open == "YES")
	{
	$('#userWindow').animate({ 'height': userHeight, 'opacity': 'show' }, 600);
	}
	else
	{
	$('#userWindow').animate({ 'height': userHeight }, 600);
	}
	
	if (/*@cc_on!@*/false) {
	
	var chatHeight = 207;
	
	$('#chatarea').animate({'height': chatHeight, 'top': chatTop}, 600, function(){
		var objDiv = document.getElementById("chatarea");
		objDiv.scrollTop = objDiv.scrollHeight;		
		$('#chatInput').focus();	
	});
	
	} else {
	
	$('#chatarea').animate({ 'top': chatTop }, 600, function(){
		var objDiv = document.getElementById("chatarea");
		objDiv.scrollTop = objDiv.scrollHeight;		
		$('#chatInput').focus();	
	});
	
	}

}

function closeUsers()
{
	$('#userWindow').animate({ 'height': '0', 'opacity': 'hide' }, 600);

	if (/*@cc_on!@*/false) {
	$('#chatarea').animate({ 'height': '319', 'top': '11'}, 600, function(){
		var objDiv = document.getElementById("chatarea");
		objDiv.scrollTop = objDiv.scrollHeight;	
		$('#chatInput').focus();
	});	
	} else {

	$('#chatarea').animate({ 'top': '11' }, 600, function(){
		var objDiv = document.getElementById("chatarea");
		objDiv.scrollTop = objDiv.scrollHeight;	
		$('#chatInput').focus();
	});
	}
}

function replaceURLWithHTMLLinks(text) {
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;    
    return text.replace(exp,"<a href='$1' target='_blank'>$1</a>"); 
}

function replacewww(text) {
	
	var start = (text.indexOf("www"))-7;
	var match = text.substr(start,7);
	if(match == "http://" || match == "ttps://")
	{		
	} else{
		text = text.replace("www", "http://www");	
	}
	return text;
}

function getHistory(offset)
{
	$("#loader").css({ "display": "block" });
	$("#historyArea").text("");

	var randNum = Math.random();	
	$.get("getHistory.php?chatGUID=" + chatGUID + "&userName=" + myname + "&type=HISTORY&offset=" + offset + "&num=" + randNum,function(data){
		
		$("#historyArea").append(data);
		var objDiv = document.getElementById("historyArea");
		objDiv.scrollTop = objDiv.scrollHeight;
		$("#loader").css({ "display": "none" });
	});
}

function updateTitle(noOfMessages) 
{
	var message = "messages";
	if (noOfMessages == "1")
	{
		message = "message";
		$(".speechBubble").each(function(){
			
			var mysrc = $(this).attr("src");
			if (mysrc == "cbicons/16x16/speechOffPers.png" || mysrc == "cbicons/16x16/speechOff.png")
			{	

			}
			else if (mysrc == "cbicons/16x16/speechPers.png")
			{
				$(this).attr("src", "cbicons/16x16/speechOffPers.png");
			}
			else
			{
				$(this).attr("src", "cbicons/16x16/speechOff.png");		
			}		
		});
		$(".followOnBubble").each(function(){
			var mysrc = $(this).attr("src");
			if (mysrc == "cbicons/16x16/followOnOffPers.png" || mysrc == "cbicons/16x16/followOnOff.png")
			{	

			}
			else if (mysrc == "cbcicons/16x16/followOnPers.png")
			{
				$(this).attr("src", "cbicons/16x16/followOnOffPers.png");
			}
			else
			{
				$(this).attr("src", "cbicons/16x16/followOnOff.png");		
			}	
		});		
	}				
				
	document.title = "["+noOfMessages+"] " + "chatterbloc - a cooler way to chat";
}

function createComet()
{
	$("#chatName").text(myname);
	$.post('updateActivity.php', {name: myname, chatid: chatGUID, firstTime: 'YES'}, function(){
		globalQuery = "&lastChatID=0&participents=0&userName=" + myname + "&firstTime=YES&timeLast=0";
		newHeartbeat();
	});
}

function closeIframeMenu()
{
	$("#iFrameLock").animate({ "height": "0px", "opacity": "hide" }, 300);
	iFrameMenuOpen = "NO";
}

function forceScrollDown()
{
	var objDiv = document.getElementById("chatarea");
	objDiv.scrollTop = objDiv.scrollHeight;
}

window.onresize = function () {
	forceScrollDown();
}