jQuery.fn.show_loading = function() {
    $(this[0]).append('<div class="loading" style="height: '+$(this[0]).height()+'px;">&nbsp;</div>');
};
jQuery.fn.hide_loading = function() {
    $(this[0]).find('div.loading').remove();
};


jQuery.add_banner_image = function(image_src, banner_id){
  $('#top_banner').append('<img id="'+banner_id+'" src="'+image_src+'" alt="banner_image" />');
}

jQuery.rotate_banner_images = function(){
  var banners_count = $('#top_banner img').length;
  if(banners_count == 1)
    return false;
  var active_bannerId = parseInt($('#top_banner').attr('class').replace('active_banner_image_', ''));
  var next_bannerId = (active_bannerId+1) <= banners_count ? (active_bannerId+1) : 1;
  var $current_banner = $('#top_banner #banner_image_'+active_bannerId);
  var $next_banner = $('#top_banner #banner_image_'+next_bannerId);
  //$.my_debug(active_bannerId + ' -> '+ next_bannerId);

  $current_banner.fadeOut(2000, function(){
    $current_banner.removeClass('active');
  });
  $next_banner.fadeIn(2000, function(){
    $next_banner.addClass('active');
    $('#top_banner').attr('class', 'active_banner_image_'+next_bannerId);
    setTimeout('$.rotate_banner_images()', 2000);
  });
}


jQuery.my_debug = function(text){
  $('#my_debug').append(text+'<br />\r\n');
}

$(document).ready(function(){

  $('#top_banner').css('background-image', "url('"+$('#top_banner').find("img[class='active']").attr('src')+"')");
  //attach onImagesLoad to the banner
  $('#top_banner').onImagesLoad({
      selectorCallback: function($selector){//note: $selector is $('#top_banner') here
        $selector.find('img').css('left','0');
        $selector.find("img[class!='active']").css('display','none').css('z-index', '2');
        setTimeout('$.rotate_banner_images()', 2000);
      }
  });

  $(document).onImagesLoad({
    selectorCallback: function($selector){
      $('a#home_button').animate({
        width: '29px',
        left: '11px'
      }, 800);

      change_height = $('#middleCover').height();
      ideal_height = $('#rightCover').height();
      if(change_height < ideal_height){
        new_height = 0;
        $('.middleCoverTop').each(function(){
          new_height += $(this).height();
        });
        $('.middleCoverCenter').each(function(){
          new_height += $(this).height() + 3;
        });
        $('.middleCoverBottom').each(function(){
          new_height += $(this).height();
        });
        new_height = $('.middleCoverCenter:last').height() + (ideal_height - new_height);
        $('.middleCoverCenter:last').animate({ height:  new_height+ 'px'}, 2000);
      }
    }
  });


  /*      TABS    */
  //content containers
  var $calendar_small_box_content = $('.small_box.calendar .small_box_content');
  var $calendar_wide_box_content = $('.wide_box.calendar .wide_box_content');

  //inside page tabs
  $('.small_box.calendar .small_box_heading a.diary').click(function(){
    if($(this).parent().hasClass(this.className))
      return false;
    update_tab(this);

    var move_months = parseInt($('.small_box.calendar .actual_move_month').html());
    var params = 'calendar_params[move_months]='+move_months;

    $calendar_small_box_content.show_loading();
    $calendar_small_box_content.html(ajax_load_calendar(params));
    $calendar_small_box_content.hide_loading();

    $('.small_box.calendar a.previous_month, .small_box.calendar a.next_month').bind('click', function(){
      inside_prev_next_month_click($(this));
      return false;
    });
    //if there is a marquee active then stop it
    if(marqueeInitialized){
      clearTimeout(marqueeTimer);
      clearInterval(marqueeTimerInterval);
      marqueeInitialized = false;
    }
    return false;
  });
  $('.small_box.calendar .small_box_heading a.events').click(function(){
    if($(this).parent().hasClass(this.className))
      return false;
    update_tab(this);

    var move_months = parseInt($('.small_box.calendar .actual_move_month').html());
    var params = 'calendar_params[move_months]='+move_months+'&calendar_params[display_info_only]=1&calendar_params[short_info]=1&calendar_params[month_name_apart]=1';

    $calendar_small_box_content.show_loading();
    $calendar_small_box_content.html(ajax_load_calendar(params));
    $calendar_small_box_content.hide_loading();

    return false;
  });

  //inside page prev/next months links
  $('.small_box.calendar a.previous_month, .small_box.calendar a.next_month').click(function(){
    inside_prev_next_month_click($(this));
    return false;
  });
  function inside_prev_next_month_click($element){
    var move_months = $element.attr('href');
    find_move_months = "?move_months=";
    pos = move_months.indexOf(find_move_months);
    move_months = move_months.substr(pos + find_move_months.length, move_months.length);
    var params = 'calendar_params[move_months]='+move_months;

    $calendar_small_box_content.show_loading();
    $calendar_small_box_content.html(ajax_load_calendar(params));
    $calendar_small_box_content.hide_loading();

    $('.small_box.calendar a.previous_month, .small_box.calendar a.next_month').bind('click', function(){
      inside_prev_next_month_click($(this));
      return false;
    });
    return false;
  }

  //homepage tabs
  $('.wide_box.calendar .wide_box_heading a.events').click(function(){
    if($(this).parent().hasClass(this.className))
      return false;
    update_tab(this);

    //var move_months = parseInt($('.wide_box.calendar .actual_move_month:last').html());
    //var params = 'calendar_params[display_info]=1&calendar_params[move_months]='+move_months;
    var params = 'calendar_params[display_info]=1';

    $calendar_wide_box_content.show_loading();
    $calendar_wide_box_content.html(ajax_load_calendar(params));
    $calendar_wide_box_content.hide_loading();

    $('.wide_box.calendar a.previous_month, .wide_box.calendar a.next_month').bind('click', function(){
      home_prev_next_month_click($(this));
      return false;
    });

    return false;
  });

  $('.wide_box.calendar .wide_box_heading a.diary').click(function(){
    if($(this).parent().hasClass(this.className))
      return false;
    update_tab(this);

    $calendar_wide_box_content.show_loading();

    dateObj = new Date();
    month = dateObj.getMonth() + 1;
    /*
    move_months = 0;//parseInt($('.wide_box.calendar .actual_move_month').html());
    move_months = -1 * (month + 3) + move_months;

    params = 'calendar_params[move_months]='+move_months;
    */
    params = '';
    move_months = 0;
    display_months = (month >= 8 ? 12-(month-8) : 8-month);

    var content = '';
    content += '<table class="move_years"><tr><td class="previous_year"><a href="?diary&amp;move_months=-12">&lt; previous year</a></td><td><a href="?diary&amp;whole_year">display whole year</a></td><td class="next_year"><a href="?diary&amp;move_months=12">next year &gt;</a></td></tr></table>';
    //content += '<p class="move_years"><a class="previous_year" href="?diary&amp;move_months='+(move_months - 12)+'">&lt; previous year</a><a class="next_year" href="?diary&amp;move_months='+(move_months + 12)+'">next year &gt;</a></p>';
    content += '<table cellpadding="0" class="calendars_holder"><tr>';
    for(i=1; i<=display_months; i++){
      params = 'calendar_params[move_months]='+move_months;
      content += '<td class="calendars_holder_cell" valign="top">';
      content += ajax_load_calendar(params);
      content += '</td>';
      move_months++;
      if(((i % 3) == 0) && i != display_months)
        content += '</tr><tr>';
    }
    i--;
    while((i % 3) != 0) {
      content += '<td>&nbsp;</td>';
      i++;
    }
    content += '</tr></table>';

    $calendar_wide_box_content.html(content);
    $calendar_wide_box_content.hide_loading();
    return false;
  });
  $('.wide_box.calendar .wide_box_heading a.announcments').click(function () {
    if($(this).parent().hasClass(this.className))
      return false;
    update_tab(this);
    $calendar_wide_box_content.show_loading();
    $calendar_wide_box_content.html(ajax_load_announcments(''));
    $calendar_wide_box_content.hide_loading();
    return false;
  });
  //homepage page prev/next months links
  $('.wide_box.calendar a.previous_month, .wide_box.calendar a.next_month').click(function(){
    home_prev_next_month_click($(this));
    return false;
  });
  function home_prev_next_month_click($element){
    var move_months = $element.attr('href');
    find_move_months = "?move_months=";
    pos = move_months.indexOf(find_move_months);
    move_months = move_months.substr(pos + find_move_months.length, move_months.length);
    var params = 'calendar_params[move_months]='+move_months+'&calendar_params[display_info]=1';

    $calendar_wide_box_content.show_loading();
    $calendar_wide_box_content.html(ajax_load_calendar(params));
    $calendar_wide_box_content.hide_loading();

    $('.wide_box.calendar a.previous_month, .wide_box.calendar a.next_month').bind('click', function(){
      home_prev_next_month_click($(this));
      return false;
    });
    return false;
  }

  function ajax_load_calendar(params){
    var result = '';
      $.ajax({
        type: "GET",
        url: "site/ajax/calendar.php",
        data: params,
        async: false,
        dataType: "text",
        success: function(response){
          result = response;
        },
        error: function(xhr, desc, exception){ result = 'An error occurred while getting the calendar.'; }
      });
    return result;
  }
  function ajax_load_announcments(params){
    var result = '';
      $.ajax({
        type: "GET",
        url: "site/ajax/announcments.php",
        data: params,
        async: false,
        dataType: "text",
        success: function(response){
          result = response;
        },
        error: function(xhr, desc, exception){ result = 'An error occurred while getting the announcments.'; }
      });
    return result;
  }

  function update_tab(element){
    cont = $($($(element).parent()).parent());
    if($.inArray(element.className, ['diary', 'events']) != -1 ) {
      if(cont.hasClass('red-border'))
        cont.removeClass('red-border')
    } else if(!cont.hasClass('red-border')) {
        cont.addClass('red-border')
    }
    $(element).parent().removeClass('diary').removeClass('events').removeClass('announcments').addClass(element.className);
  }

  //$(".home_news .hot_news a").animate({backgroundColor:"#d67902"},1000);
});

