$.fn.addTooltip = function(content) {

    var distance = 10;
    var time = 250;
    var hideDelay = 250;
    var popup = document.getElementById('popup');

    hideDelayTimer = null;

    beingShown = false;
    shown = false;

    var info = $(popup);
    
    $(this).mouseover(function () {
        $(popup).hide();
        $('#tipCaption').html(content);
        info.css({
            top: $(this).offset().top - info.height() + 0,
            left: $(this).offset().left - 63
        });
        info.fadeIn('fast');                
        $(this).stop().animate({opacity: .5});
        return false;
    }).mouseout(function () {
        $(popup).fadeOut('fast');
        $(this).stop().animate({opacity: 1});
        return false;
    });
}    

function setupCalendar(type) {

    var windowsSettingsTable = $('#windowsSettingsTable');

    // Clear calendar, interval table, and window settings
    $('.intervalData').each(function(){$(this).fadeOut('fast').remove()});
    $('td', '#calendar').each(function(){$(this).removeClass().unbind();});
    $('tr:gt(0)', '#windowsSettingsTable').remove();
    
    // Setup messages in calendar and interval table
    $.each(type, function(i, messageData) {

        $('td', '#calendar').each(function() {
            if ($(this).text() == messageData.sendDate) {
                $(this).addClass('sentMessage').fadeOut('fast').fadeIn('fast').addClass('message' + messageData.number);
                $(this).addTooltip('<strong>Message #' + messageData.number + '</strong> sent ' + messageData.time);
            }
        });
        
        $('#messageTable').append('<tr class="intervalData message' + messageData.number + '"><td class="mtMessage">' + messageData.number  + '</td><td class="mtInterval">' + messageData.interval + '</td><td>' + messageData.description + '</td></tr>');
    });
    
    $('#messageTable tr').mouseover(function (){
        var number = $('td', this).eq(0).text();
        if ((number != "Message") && ($('.message' + number).length > 0)) {
          $('td.message' + number).trigger('mouseover');
        }
    })
    .mouseout(function() {
        number = $('td', this).eq(0).text();
        if ((number != "Message") && ($('.message' + number).length > 0)) {
          $('td.message' + number).trigger('mouseout');
        }
    });

    $('#calendar td').mouseover(function (){
        var hasMessage = this.className.indexOf('message');
        if(hasMessage != -1) {
            $('tr.message' + this.className.substring(hasMessage+7,hasMessage+8)).css({'backgroundColor':'#75c7eb'});
        }
    })
    .mouseout(function() {
        hasMessage = this.className.indexOf('message');
        if(hasMessage != -1) {
            $('tr.message' + this.className.substring(hasMessage+7,hasMessage+8)).css({'backgroundColor':'#fff'});
        }
    });


}

$(function(){

    function windowsClick(example, el, altEl) {
        setupCalendar(example);
        el.css({backgroundColor:'#aaa'});       
        altEl.css({backgroundColor:'#ddd'})        
    }

    $('a#windowsOff').click(function(e){
        windowsClick(example.windowsOff, $(this), $('a#windowsOn'));
        e.preventDefault();
    });
    
    $('a#windowsOn').click(function(e){
        windowsClick(example.windowsOn, $(this), $('a#windowsOff'));
        e.preventDefault();
    });
    
    $('a#windowsOff').triggerHandler('click');    

});