/**
 * @author vincent voyer
 * vincent.voyer@gmail.com
 */

jQuery.noConflict();

(function($){
	$.fn.ajaxChat = function(params){
		
		var params = $.extend({
			refresh:1.7
		},params);
		
                createChat = function(container) {
                  container.html('<div class="chat"><div></div></div><div id="user_list"></div><form action="" method="post" class="writeInput"><input type="text" value="" /></form><form action="chat.php" method="post" class="chooseNickname"><p>Nickname:</p><input type="text" value="" maxlength="100" /> <input type="submit" value="Enter" /></form><img src="/fultv_chat/img/ajax-loader.gif" class="ajaxStatus" />'); 
                };

		var scrollChat = function(el) {
			el[0].scrollTop = el[0].scrollHeight;
		}

		var chat = function (jElt) {
                        createChat(jElt);
                        
			//jElt is the jQuery object where the function starts
			var chatContainer=jElt.find('.chat');
			var _chat=chatContainer.find('div'); // this is div containing the messages
			var writeInput=jElt.find('.writeInput');
			var chooseNickname=jElt.find('.chooseNickname');
			var ajaxStatus=jElt.find('.ajaxStatus');
                        var userList = jElt.find('#user_list');
			
			// handle the submit message function
			var activateKeyboard = function(){
				writeInput.submit(function(){
					var input = $(this).find(':input');
					var message = input.val();
					if (jQuery.trim(message).length > 0) { // need to have something to say !
						ajaxStatus.show();
						input.val('');
						input.blur();
						jQuery.post("/fultv_chat/post.php", { //this is the url of your server side script 
							msg: message,
						}, function(response_data){
							input.removeAttr("disabled");
							input.focus();
							if (response_data) 
								_chat.append('<p><small>('+ response_data.time +')</small> ' + response_data.nickname + ' &gt; <strong>' + response_data.msg + '</strong></p>');
								scrollChat(_chat);
							ajaxStatus.hide();
						}, 'json');
					}
					
					return false;
				});
			}
			
			// handle the read messages function
			var readMessages = function(){
				$.getJSON("/fultv_chat/read.php", function(data){
					$.each(data.msg, function(i,msg){
						_chat.append('<p><small>('+ msg.time +')</small> '+msg.nickname+'&gt; <strong>'+msg.msg+'</strong></p>');
						scrollChat(_chat);
					});
                                        userList.html(data.users)
					setTimeout(readMessages,params.refresh*1000);
				});
			}
			
			chooseNickname.submit(function(){
				var tryNickname=$(this).find(':input:first').val();
				
				$.post("/fultv_chat/nickname.php", { //this is the url of your server side script that will handle write function
					nickname: tryNickname
				}, function(data){
					if (data) {
						chooseNickname.remove();
						
						chatContainer.show();
						writeInput.show();
						readMessages();
						userList.show();
						//var inp=writeInput.find(':input');
						//inp.val('---///---startchat---///---');
						//$('.writeInput').submit();
						//writeInput.find(':input').val('---///---startchat---///---').parent().trigger('submit');
                        			
                        //$(window).bind("beforeunload", function(){$.getJSON("/fultv_chat/exit.php", function(data){});});
						
					} 
					// else {
					// 	alert('bad nickname, try something else !');
					//}
				}, 'json');
				
				return false;
			});
			
			chatContainer.hide();
			writeInput.hide();
			ajaxStatus.hide();
			
			activateKeyboard();
            var usr = $("#userlinks a:first");
            if(usr.length) {
                chooseNickname.find(':input:first').val(usr.text());
                chooseNickname.submit();
            }
            
            
		}
		
		return this.each(function(){
			chat($(this));
		});		
	};
})(jQuery)


jQuery(document).ready(function($) {
	$("#fultvChat").ajaxChat();

});




