var Chat = {
    isOpen: function() {
        return $("#chat-window").css('display') == 'block';
    },

    open: function() {
        $.cookie('show-chat', 1, { path: '/', expires: 10 });
        $("#chat-window").show();
        $("#chat-input").focus();
    },

    close: function() {
         $.cookie('show-chat', 0, { path: '/', expires: 10 });
         $("#chat-window").hide();
    },

    toggle: function() {
         if (this.isOpen()) {
             this.close();
         }
         else {
             this.open();
         }
    },

    load: function() {
         $("#chat-messages").load(url + "/chat/latest/0?clean=1");
    },

    refresh: function() {
         var last = $("#chat-messages .message:last");

         var latest = 0;
         if (last.length == 1) {
             latest = last.attr('id');
         }

         $.get(url + "/chat/latest/" + latest + "?clean=1", function(html) {
             if (html.length > 0) {
                 if (!Chat.isOpen()) {
                     Chat.showArrow();
                 }

                 $("#chat-messages").append(html);
             }
         });
    },

    showArrow: function() {
         var arrow = $("#chat-arrow");
         arrow.css("position", "absolute");
         arrow.css("right", "200px");
         arrow.css("top", $(document).scrollTop() + $(window).height() - 160 + "px");
         arrow.fadeIn('fast');

         setTimeout(function() {
             $("#chat-arrow").fadeOut('slow');
         }, 2000);
    },

    getOnline: function() {
         $("#chat-online").load(url + "/chat/online");
    },

    init: function() {
         if ($.cookie('show-chat') == 1) {
             this.open();
         }

         $("#open-chat").click(function() {
             Chat.toggle();
             return false;
         });

         $(document).scroll(function() {
             $("#chat-arrow").hide();
         });

         $("#chat-input").keyup(function(event) {
               if (event.keyCode == '13' && $("#chat-input").val() != "") {
                   $.post(url + "/chat/post", { message: $("#chat-input").val() }, function(html) {
                                                                                     if (html.length > 0) {
                                                                                         $("#chat-messages").append(html);
                                                                                     }
                                                                                   });
                   $("#chat-input").val('');
               }
               return false;
         });

         this.load();
         this.getOnline();

         setInterval(function() {
             Chat.refresh();
         }, 3000);

         setInterval(function() {
             Chat.getOnline();
         }, 10000);

    }
}

