//window.onbeforeunload = function() {
////	var elementsArray = $$('form.sending_chat_message_form');
//	var elementsArray = document.getElementsByClassName('sending_chat_message_form');
//	var formEl;
//	alert("elements array = " + elementsArray.length);
//	for(var i = 0; i < elementsArray.length; i++) {
//		formEl = elementsArray[i];
//		var idEl = formEl.getElementsBySelector('[id="follower_id"]')[0];
//		var nameEl = formEl.getElementsBySelector('[id="follower_name"]')[0];
//		closeChatPopup(nameEl.value, idEl.value);
//	}
//}

var handleNavigatingAway = function() {
//	var elementsArray = $$('form.sending_chat_message_form');
	var elementsArray = document.getElementsByClassName('sending_chat_message_form');
	var formEl;
//	alert("elements array = " + elementsArray.length);
	for(var i = 0; i < elementsArray.length; i++) {
		formEl = elementsArray[i];
//		alert("form el = " + formEl.id);
		var idEl = formEl.getElementsBySelector('[id="follower_id"]')[0];
		var nameEl = formEl.getElementsBySelector('[id="follower_name"]')[0];
		closeChatPopup(nameEl.value, idEl.value);
	}
}
window.onbeforeunload = handleNavigatingAway;

function createChatPopup(follower_id, follower_name) {
	var window = $(follower_name+follower_id);
	if(!window) {
		window = new Window({id: follower_name+follower_id, className: "mac_os_x", title: follower_name, width:350, height:300, zIndex:10, destroyOnClose: true, recenterAuto:false, onClose:closeChatPopup.bind(this, follower_name, follower_id)});
		window.getContent().update(getChatPopupHTML(follower_id, follower_name));
		window.showCenter();
	}
	else {
		window.win.showCenter();
		window.win.toFront();
	}
}

function getChatPopupHTML(follower_id, follower_name) {
	var idSuffix = "_" + follower_name + "_" + follower_id;
	var outerDiv = new Element('div', {id:'div'+idSuffix, 'class':'chat_outerDiv'});
	var chatMessagesDiv = new Element('div', {id:'div_chatMessages'+idSuffix, 'class':'chat_messagesDiv'});
	outerDiv.insert(chatMessagesDiv);
	var isPollingHiddenInput = new Element('input', {id:'is_polling'+idSuffix, name:'is_polling'+idSuffix, type:'hidden', value:"false"});
	outerDiv.insert(isPollingHiddenInput);
	var isRequestPendingHiddenInput = new Element('input', {id:'is_request_pending'+idSuffix, name:'is_request_pending'+idSuffix, type:'hidden', value:"false"});
	outerDiv.insert(isRequestPendingHiddenInput);
	
	//sending chat messages setup
	var sendingChatMessageIframe = new Element('iframe', {id:'iframe_sendingChatMessage'+idSuffix, name:'iframe_sendingChatMessage'+idSuffix, 'class':'hidden_iframe'});
	outerDiv.insert(sendingChatMessageIframe);
	var action = $('hiddenChatMessageForm').action;
	var chatMessageForm = new Element('form', {method:'post', id:'sendingChatMessageForm'+idSuffix, name:'sendingChatMessageForm'+idSuffix, 'class':'sending_chat_message_form', action:action, target:'iframe_sendingChatMessage'+idSuffix});
	var chatMessageTextArea = new Element('textarea', {id:'textarea'+idSuffix, name:'textarea'+idSuffix, 'class':'chat_textArea'});
	chatMessageForm.insert(chatMessageTextArea);
	var chatMessageFollowerIdHidden = new Element('input', {id:'follower_id', name:'follower_id', type:'hidden', value:follower_id});
	chatMessageForm.insert(chatMessageFollowerIdHidden);
	var chatMessageFollowerNameHidden = new Element('input', {id:'follower_name', name:'follower_name', type:'hidden', value:follower_name});
	chatMessageForm.insert(chatMessageFollowerNameHidden);
	var chatMessageTranslationCodeHidden = new Element('input', {name:'wl_tp', type:'hidden', value:'textarea'+idSuffix});
	chatMessageForm.insert(chatMessageTranslationCodeHidden);
	var chatMessageButton = new Element('a', {'class':'btn-login chat_button', id:'submit_'+follower_name}).update(SEND_BUTTON_TEXT);
	chatMessageButton.observe('click', sendChat.bind(this, {messagesEl: chatMessagesDiv.identify(), textAreaEl:chatMessageTextArea.identify(), formEl:chatMessageForm.identify(), outerDivEl:outerDiv.identify()}, {followerId:follower_id, followerName:follower_name}));
	chatMessageForm.insert(chatMessageButton);
	chatMessageForm.observe('keydown', sendChat.bind(this, {messagesEl: chatMessagesDiv.identify(), textAreaEl:chatMessageTextArea.identify(), formEl:chatMessageForm.identify(), outerDivEl:outerDiv.identify()}, {followerId:follower_id, followerName:follower_name}));
	outerDiv.insert(chatMessageForm);
	
	//receiving chat messages setup
	var receivingChatMessagesIframe = new Element('iframe', {id:'iframe_receivingChatMessages'+idSuffix, name:'iframe_receivingChatMessages'+idSuffix, 'class':'hidden_iframe'});
	outerDiv.insert(receivingChatMessagesIframe);
	var getChatMessagesAction = $('hiddenGetChatMessagesForm').action;
	var getMessagesForm = new Element('form', {method:'post', id:'getMessagesForm'+idSuffix, name:'getMessagesForm'+idSuffix, 'class':'hidden_iframe', action:getChatMessagesAction, target:'iframe_receivingChatMessages'+idSuffix});
	var getMessagesFollowerIdHidden = new Element('input', {id:'get_messages_follower_id', name:'get_messages_follower_id', type:'hidden', value:follower_id});
	getMessagesForm.insert(getMessagesFollowerIdHidden);
	var getMessagesFollowerNameHidden = new Element('input', {id:'get_messages_follower_name', name:'get_messages_follower_name', type:'hidden', value:follower_name});
	getMessagesForm.insert(getMessagesFollowerNameHidden);
	var getMessagesLastUpdateTimeHidden = new Element('input', {id:'get_messages_last_update_time', name:'get_messages_last_update_time', type:'hidden', value:""});
	getMessagesForm.insert(getMessagesLastUpdateTimeHidden);
	outerDiv.insert(getMessagesForm);
	
	return outerDiv;
}

function closeChatPopup(follower_name, follower_id, event) {
	var closeChatIframe = $('iframe_close_chat');
//	alert("closing chat popup");
	if(closeChatIframe) {
		closeChatIframe.src = closeChatIframeSrc(follower_id, follower_name);
	}
}

function getDateInDBFormat() {
	var date = new Date();
	var year = "" + date.getFullYear();
	var month = "" + (date.getMonth()+1);
	var day = "" + date.getDate();
	var hour = "" + date.getHours();
	var min = "" + date.getMinutes();
	var sec = "" + date.getSeconds();

	if (day.length == 1) { day = "0" + day;}
	if (month.length == 1) { month = "0" + month;}
	if (hour.length == 1) { hour = "0" + hour;}
	if (min.length == 1) { min = "0" + min;}
	if (sec.length == 1) { sec = "0" + sec;}
	
	var dateStr = year + "-" + month + "-" + day + " " +  
				  hour + ":" + min + ":" + sec;
	return dateStr;
}		

function addMessageToUI(messagesEl, message) {
	if(messagesEl) {
		var text = "";
		text += "[" + chat_current_username + "] ";
		var date = getDateInDBFormat();
//		text += "(" + date + ")";
		text += ": " + message;
		
		var span = new Element('span', {'class':'chat_messageSpan current_user_chat_message'});
		span.update(text);
		messagesEl.insert({bottom:span});
		messagesEl.scrollTop = messagesEl.scrollHeight; // keeps the textarea scrolled to bottom to show most recent message
	}
}

function addHTMLToUI(messagesEl, html) {
	if(messagesEl) {
		messagesEl.insert({bottom:html});
		messagesEl.scrollTop = messagesEl.scrollHeight; // keeps the textarea scrolled to bottom to show most recent message
	}
}

function setupChatPollingIframe(followerObj) {
	var follower_id = followerObj.followerId;
	var follower_name = followerObj.followerName;
	var idSuffix = "_" + follower_name + "_" + follower_id;
	var isPolling = $('is_polling'+idSuffix);
	if(isPolling.value == "false") {
		if(navigator.appName === 'Microsoft Internet Explorer') {
//			alert("setting up polling for chat msgs");
		}
		isPolling.value = "true"; //set polling to true
		var getChatMessagesForm = $('getMessagesForm'+idSuffix);
		var followerIdInput = $('get_messages_follower_id');
		var followerNameInput = $('get_messages_follower_name');
		var lastUpdateTimeInput = $('get_messages_last_update_time');
		getChatMessagesForm.submit();		
	}
}

function closeChatIframeSrc(follower_id, follower_name) {
	var parameters = follower_id;
	var src = '/ajaxindex/closeChat/' + parameters;
	if(wl_bj_pre_bpath != null && wl_bj_pre_bpath != "") {
		src = wl_bj_pre_bpath + encodeURIComponent('/ajaxindex/closeChat/') + encodeURIComponent(parameters);
	}
	return src;
}

function sendChat(elementsObj, followerObj, event) {
	if(event.keyCode == undefined || event.keyCode == 13) {
		var messagesEl = $(elementsObj.messagesEl);
		var textAreaEl = $(elementsObj.textAreaEl);
		var formEl = $(elementsObj.formEl);
		var iframeEl = $(elementsObj.iframeEl);
		var text = textAreaEl.value;
		if(text != null && text != "") {
			addMessageToUI(messagesEl, text);
			formEl.submit();
			textAreaEl.value = "";
			setupChatPollingIframe(followerObj);
		}
	}
	return false;
}

function resubmitGetMessagesForm(follower_id, follower_name, lastUpdateTime) {
	var idSuffix = "_" + follower_name + "_" + follower_id;
	var chatOuterDiv = $('div'+idSuffix);
	if(!chatOuterDiv) {
		return;
	}
	
	var getChatMessagesForm = $('getMessagesForm'+idSuffix);
	if(lastUpdateTime) {
		var lastUpdateTimeInput = $('get_messages_last_update_time');
		lastUpdateTimeInput.value = lastUpdateTime;
	}
	var isRequestPending = $('is_request_pending'+idSuffix);
	if(navigator.appName === 'Microsoft Internet Explorer') {
//		alert("polling for chat msgs, isRequestPending = " + isRequestPending);
	}
	if(isRequestPending.value == "false") {
		isRequestPending.value = "true";
		getChatMessagesForm.submit();
	}
}

function updateChatWindow(follower_id, follower_name, lastUpdateTime, html) {
	var isRequestPending = $('is_request_pending'+"_"+follower_name+"_"+follower_id);
	isRequestPending.value = "false";
	if(html === "stopmessagepolling") {
		var isPolling = $('is_polling_'+follower_name+"_"+follower_id);
		isPolling.value = "false";
		return;
	}
	else if(html && html != "" ) {
		var messagesEl = $('div_chatMessages_' + follower_name + '_' + follower_id);
		addHTMLToUI(messagesEl, html);
	}
	setTimeout("resubmitGetMessagesForm('" + follower_id + "', '" + follower_name + "', '" + lastUpdateTime + "')", GET_CHAT_MESSAGES_REFRESH_TIME);
}