$(document).ready(function(){
    
    $('body').append('<div id="snd">');
    
    $('#messages>dl>dt>span').live('click', function(){
      var span = $(this);
      var dt = span.parent();
      var dd = span.parent().next();
      dt.fadeOut('slow')
      dd.fadeOut('slow', function(){
        dt.remove();
        dd.remove();
      });
    });

    $("#messages").animate({scrollTop: $("#messages").height()},{"duration":1000,"easing":"easeOutBounce"});
		$.ajaxSetup({
			cache: false,
			type: "POST"
		});
    
    $('#user-list ul li.me').live('click', function(){
      notice('Chat de Santa Fe - Aviso', 'Este eres tú');
    });
    $('#user-list ul li.visitor:not(.me)').live('click', function(){
      notice('Chat de Santa Fe - Aviso', 'El usuario seleccionado es un visitante,<br/>no tiene perfil ni puede participar en privados.');
    });
    $('#user-list ul li.registered:not(.me)').live('click', function(){
        var profile = $('#registered a.profile');
        profile.attr('href', profile.attr('rel') + '/' + $(this).attr('rel'));
        jQuery.facebox({div: '#registered'});
    });
    
		var getMessages = function () {
			$.post(
				'/chat/rooms/get_messages.json',
				{room_id:$('#room_id').val()},
				function(data){
					if(data.length) {
						$("#snd").jPlayer({
							ready: function () {
								$(this).jPlayer("setMedia", {
									wav: "/chat/sound/beep2.wav"
								}).jPlayer("play");
							},
							ended: function (event) {
								$(this).jPlayer("stop");
							},
							swfPath: "/chat/js/jQuery.jPlayer.2.0.0/",
							supplied: "wav"
						}).jPlayer("play").jPlayer( "clearMedia" );
					}
					for(var i in data) {
						$('<dt style="color:'+data[i].b+';background:'+data[i].c+';display:none"><span>x</span><em class="time" style="font-size: 9px; float: right;">'+data[i].t+'</em> <strong>'+data[i].n+'</strong>:</dt><dd style="color:'+data[i].c+';background:'+data[i].b+';display:none"><span>'+data[i].m+'</span></dd>').appendTo('#messages dl');
						$('#messages dl').find('dd,dt').fadeIn('slow');
						while($('#messages dl dt').length > 20){
							$('#messages dl dt:first,#messages dl dd:first').remove();
						}
					}
        if($("#messages").scrollTop() >= 360) {
          $("#messages").animate({scrollTop: $("#messages").height()},{"duration":1000,"easing":"easeOutBounce"});
        }
				}
			);
			$.post(
				'/chat/rooms/get_users.json',
				{room_id:$('#room_id').val()},
				function(data){
//          console.time('update list');
          var ul = $('#user-list ul');
					for(var i in data) {
            var user = $('li.' + data[i].u + '.u' + data[i].i, ul);
            if(user.length == 0) {
              $('<li rel="' + data[i].i + '" style="display:none;background:'+data[i].b+';color:'+data[i].c+'" class="keep ' + data[i].u + ' u' + data[i].i + ' ' + (data[i].me?'me':'')  +'">'+data[i].n+'</li>').appendTo('#user-list ul').show('slow');
            }else{
              user.addClass('keep').html(data[i].n).css({background:data[i].b, color:data[i].c});
            }
					}
          $('#user-list ul li').not('.keep').hide('slow', function(){
            $(this).remove();
          });
          $('#user-list ul li').removeClass('keep');
//          console.timeEnd('update list');  
				}
			);
		};
		$("#message-controls").submit( function (e) {
			var input = $('#message-input');
			var strMessage = input.val();
			if ($.trim(strMessage).length > 0){
				input.val('');
				input.focus();
				$.post('/chat/rooms/message', {
					message:strMessage,
					room_id:$('#room_id').val()
				}, function(){
          $("#messages").animate({scrollTop: $("#messages").height()},{"duration":1000,"easing":"easeOutBounce"});
					getMessages();
				});
			}
			return e.preventDefault();
		});
		setInterval(getMessages, 5800);
		var ping=function(){
			$.post('/chat/activities/ping',{
				room_id:$('#room_id').val()
			});
		}
		setInterval(ping, 12000);
		ping();
		getMessages();
	});
