/**
 * @author vincent voyer
 * vincent.voyer@gmail.com
 */
(function($){
	jQuery.fn.ajaxChat = function(params){
		
		var params = jQuery.extend({
			refresh:1.7
		},params);
		var chat = function (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');
			
			// handle the submit message function
			var activateKeyboard = function(){
				writeInput.submit(function(){
					var input = jQuery(this).find('.chatinput');
					var message = input.val();
					
					if (jQuery.trim(message).length > 0) { // need to have something to say !
						ajaxStatus.show();
						
						input.val('');
						input.blur();
						input.attr("disabled", "disabled"); // we have to this so there'll be less spam messages
						jQuery.post("?action=chatwrite", { //this is the url of your server side script that will handle write function
							msg: message
						}, function(data){
							input.removeAttr("disabled");
							input.focus();
							if (data) {
								chat.append('<p><small>('+ data.time +')</small> ' + data.nickname + ' <strong> &gt; </strong>' + data.msg + '</p>');
							        jQuery("#chatcontent").attr({ scrollTop: $("#chatcontent").attr("scrollHeight") });

							}
							ajaxStatus.hide();
						}, 'json');
					}
					return false;
				});
			}
			
			// handle the read messages function
			var readMessages = function(){
				jQuery.getJSON("?action=chatread", function(data){
					jQuery.each(data, function(i,msg){
						chat.append('<p><small>('+ msg.time +')</small> '+msg.nickname+' <strong> &gt; </strong>'+msg.msg+'</p>');
						jQuery("#chatcontent").attr({ scrollTop: $("#chatcontent").attr("scrollHeight") });
					});
					setTimeout(readMessages,params.refresh*1000);
				});
			}
			
//			chooseNickname.submit(function(){
//				var tryNickname=jQuery(this).find(':input:first').val();
//				
//				jQuery.post("/projets/chat/chooseNickname", { //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();
//						
//						writeInput.find(':input').val('hello i\'m there !').parent().trigger('submit');
//						
//					} else {
//						alert('bad nickname, try something else !');
//					}
//				}, 'json');
//				
//				return false;
//			});
			
//			chatContainer.hide();
//			writeInput.hide();
//			ajaxStatus.hide();
			
			activateKeyboard();
		}
		
		return this.each(function(){
			chat(jQuery(this));
		});		
	};
})(jQuery)
