var chatTimerId = null;
var chatTimerRunning = false;
var	chatDelay = 1000;
var messageIds = new Array();
var msgIds = new Array();
var conversationIds;
var isMsgLog = false;

PrivateChat = {
	controlUrl : privateChatUrl,
	
	doChatStart : function() {
		PrivateChat.stopChatTimer();
		PrivateChat.startTimer();
		PrivateChat.doChatGet();
	},
	
	doChatGet : function() {
		chatTimerRunning = true;
		new Ajax.Request(PrivateChat.controlUrl, { method: 'get', 
			onComplete: function(transport){

				if (transport.responseText != "No Record"){
					var json = transport.responseText.evalJSON();
					for (var i=0; i<json.messageCollection.length;i++){
						var message = json.messageCollection[i].time +'. '+ json.messageCollection[i].authorName + ': '+json.messageCollection[i].message +'<br>';
						var authorId = json.messageCollection[i].authorId;
						var conversationId = json.messageCollection[i].conversationId;
						var _id = json.messageCollection[i].id;
						conversationIds = conversationId;
						if ($('userMsg'+conversationId)!=null){
							if (messageIds[_id] != conversationId){
								$('userMsg'+conversationId).innerHTML+=message;
							}
							if ($('userMsg'+conversationId).innerHTML == ""){
								if (msgIds[_id] != _id)
									$('userMsg'+conversationId).innerHTML+=message;
							}
							msgIds[_id] = _id;
							messageIds[_id] = conversationId;
							$('topContainer'+conversationId).scrollTop = $('topContainer'+conversationId).scrollTop + $('topContainer'+conversationId).scrollHeight;
						}else{
							getRecentMessages(json.messageCollection[i].targetUserId,json.messageCollection[i].targetUser,true);
							//createPopUp('pm',conversationId,false,json.messageCollection[i].targetUser,json.messageCollection[i].avatar);
						}
					}
				}
				chatTimerId = setTimeout("PrivateChat.doChatGet()", chatDelay);
			}
		});
	},

	doChatSay : function(_id,targetId,isUser) {
		if ($(_id).value != '') {
			new Ajax.Request(PrivateChat.controlUrl, { method: 'get', parameters: 'm=' + escape($(_id).value)+'&method=post&isUser='+isUser+'&targetUser='+targetId, onComplete: null });
			$(_id).value = '';
			
			//if (isUser)
	    		//if($('container_user'+targetId)!=null){
					//hidePopUp('container_user'+targetId);
				//}
		}
	},
	
	startTimer :  function(){
		chatTimerRunning = true;
        chatTimerId = setTimeout("PrivateChat.doChatGet()", chatDelay);
	},
	
	stopChatTimer :  function(){
		 if(chatTimerRunning)
	        clearTimeout(chatTimerId)
	    chatTimerRunning = false;
	},
	
	handleScroll : function(e){
		var objDiv = document.getElementById("chat_area");
		objDiv.scrollTop = objDiv.scrollHeight;
	}
}
//TODO: Disabled Chat for now
//Event.observe(window, 'load', PrivateChat.doChatStart, false);


function getLogMessages(_targetUser,_username, isNew){
	isMsgLog = !isMsgLog;
	getRecentMessages(_targetUser,_username, isNew);
}

function getRecentMessages(_targetUser,_username, isNew){
	setPopupSession(_targetUser,_username,true);
	new Ajax.Request(remainUrl, { method: 'get', parameters: 'targetUser='+_targetUser+'&isNew='+isNew+"&isMsgLog="+isMsgLog,
			onComplete: function(transport){
				if ($('targetUser'+_username)!=null){
					return;
				}
				
				var json = transport.responseText.evalJSON();
				var targetUser;
				var conversationId;
				var avatar;
				var message;
				var latestMsg;
				var _id;
				for (var i=0; i<json.messageCollection.length;i++){
					message = json.messageCollection[i].message;
					conversationId = json.messageCollection[i].conversationId;
					avatar = json.messageCollection[i].avatar;
					targetUser = json.messageCollection[i].targetUser;
					latestMsg = json.messageCollection[i].latestMsg;
					_id = json.messageCollection[i].msgId;
				}
				
				messageIds[_id] = conversationId;
				if (_id!=null)
					msgIds[_id] = _id;
					
				avatarName = avatar.substring(avatar.lastIndexOf("/")+1);
				avatar = avatar.substring(0,avatar.lastIndexOf("/")+1)+escape(avatarName);	
				createPopUp('pm', conversationId,false,targetUser,avatar);
				_username = "'"+_username+"'";
				if (message!=null){
					if (message.length == 0){
						$('userMsg'+conversationId).innerHTML+=message;
					}else{
						if (isMsgLog){
							getHistoryMessages(_targetUser,_username,isMsgLog);
						}else{
							if (latestMsg!=null){
								$('userMsg'+conversationId).innerHTML='<a href="javascript:getHistoryMessages('+_targetUser+','+_username+','+isMsgLog+');">show recent messages</a><br/>';
								$('userMsg'+conversationId).innerHTML+=latestMsg;
							}else{
								$('userMsg'+conversationId).innerHTML='<a href="javascript:getHistoryMessages('+_targetUser+','+_username+','+isMsgLog+');">show recent messages</a><br/>';
							}
						}
					}
				}else if (latestMsg!=null && message==null){
					$('userMsg'+conversationId).innerHTML=latestMsg;
				}
				
				$('topContainer'+conversationId).scrollTop = $('topContainer'+conversationId).scrollTop + $('topContainer'+conversationId).scrollHeight;
				if (isMsgLog)
					isMsgLog = !isMsgLog;
			}
		});
}

function getHistoryMessages(_targetUser,_username,_isMsgLog){
	new Ajax.Request(remainUrl, { method: 'get', parameters: 'targetUser='+_targetUser+'&isNew=false'+'&isMsgLog='+_isMsgLog,
			onComplete: function(transport){
				var json = transport.responseText.evalJSON();
				var targetUser;
				var conversationId;
				var avatar;
				var message;
				messageIds[_id] = conversationId;
				
				for (var i=0; i<json.messageCollection.length;i++){
					message = json.messageCollection[i].message;
					conversationId = json.messageCollection[i].conversationId;
					avatar = json.messageCollection[i].avatar;
					targetUser = json.messageCollection[i].targetUser;
				}
				
				if (message==null)
					return;
				
				$('userMsg'+conversationId).innerHTML=message;
				$('topContainer'+conversationId).scrollTop = $('topContainer'+conversationId).scrollTop + $('topContainer'+conversationId).scrollHeight;
			}
		});
}

function iteratorPopup(){
	new Ajax.Request(reopenPopup, {method: 'get',
			onComplete: function(transport){
				var json = transport.responseText.evalJSON();
				var targetId;
				var targetUser;

				for (var i=0; i<json.popupCollection.length;i++){
					reOpenPopup(json.popupCollection[i].id,json.popupCollection[i].targetUser);
				}
			}
	});
}

function reOpenPopup(_targetUser,_username){
	setPopupSession(_targetUser,_username,true);
	new Ajax.Request(remainUrl, { method: 'get', parameters: 'targetUser='+_targetUser+'&isNew=false',
			onComplete: function(transport){
				if ($('targetUser'+_username)!=null){
					return;
				}
				
				var json = transport.responseText.evalJSON();
				var targetUser;
				var conversationId;
				var avatar;
				var message;
				var latestMsg;
				var _id;
				for (var i=0; i<json.messageCollection.length;i++){
					message = json.messageCollection[i].message;
					conversationId = json.messageCollection[i].conversationId;
					avatar = json.messageCollection[i].avatar;
					targetUser = json.messageCollection[i].targetUser;
					latestMsg = json.messageCollection[i].latestMsg;
					_id = json.messageCollection[i].msgId;
				}
				avatarName = avatar.substring(avatar.lastIndexOf("/")+1);
				avatar = avatar.substring(0,avatar.lastIndexOf("/")+1)+escape(avatarName);
				createPopUp('pm', conversationId,false,targetUser,avatar);
				_username = "'"+_username+"'";
				
				getHistoryMessages(_targetUser,_username);
		}
	});
}