var title = new Array();

/**
 * This feature implements the Event app client side. 
 */
function formatEvent(title,description,url,location) {
    return "<li>" + "<span class='event_title'>"+ title + 
    "</span> : <span class='event_description'>" + description +"</span>" 
    + "</li>"
}

/**
 * This is the callback function for the AJAX request sent from the browser to 
 * the server for fetching the events for a particular month
 */
function set_data (json){

  title = [];
  total_objects = json.length;
  var event_dates = new Array ();
  for (i = 0; i < total_objects; i++)
    {
      event_dates = event_dates.concat(json[i].dates.split ('-')[2]);
    }

  total_cells_available = $('table.ui-datepicker-calendar td').length;
  total_cells_empty = $('td.datepicker_unselectable').length;
  calendar_cell_list = $('#eventCalendarWidget table.ui-datepicker-calendar td a');
  total_cells = total_cells_available - total_cells_empty;
  cells = $('table.ui-datepicker-calendar td a');
  
  for (i = 0; i < cells.length; i++)
    {
      value = $(cells[i]).text();
      
      for (k = 0; k < event_dates.length; k++)
        { 
          if (parseInt(value, 10) == parseInt(event_dates[k], 10)){ 
            title[parseInt(value, 10)] = "<ul><h3>Events</h3>";
            for (l = 0; l < json.length; l++){
                if (parseInt (json[l].dates.split ('-')[2], 10) == 
                parseInt (value, 10)) {
                  title[parseInt(value, 10)] += 
                  formatEvent(json[l].title,json[l].description,json[l].url,
                  json[l].location)
                  if ($(calendar_cell_list[i]).attr("href") == '#'){
                      $(calendar_cell_list[i]).attr("href", "/events/view/" +  json[l].key )
                  }
                  
              }
            }
            title[i+1] += "</ul>";
            $(calendar_cell_list[i]).addClass("hasevent");
            // adding the tooltip (pop ip) div
            $("<div class='"+"tooltip"+"' id='"+"tooltip"+i
            +"'>"+ (title[i+1]) +"</div>").insertAfter("#eventCalendarWidget");  
            var tooltip_el = $("#"+"tooltip"+i);
            var offset = $(calendar_cell_list[i]).offset();
                        
            $(calendar_cell_list[i]).parent().hover( 
                function(){
                    index = parseInt($(this).text(), 10)-1 ;
                    $("#"+"tooltip"+index).css("display","block");
                },
                function(){                    
                    index = parseInt($(this).text(), 10)-1 ;
                    $("#"+"tooltip"+index).css("display","none");
                });
            break;
          }
        }
    }
$('table.ui-datepicker-calendar td').removeAttr('onclick');


}

function get_data_from_date(dateText){
    try
    {
        var date = dateText.split("/");
        var month = date[0];
        var year = date[2];
    }
    catch(err)
    {
        var month = dateText.getMonth() + 1;
        var year = dateText.getFullYear();
    }   
    $.getJSON ('/events/search/' + year + '/' + month + '/', set_data);
    $('.tooltip').hide();
}

function get_data_from_dropdown(){
    //events_request_context is derived from the homepage_base.html
    $.getJSON ('/events/search/' + 
    $('select.ui-datepicker-new-year').val() + '/' + 
    parseInt(parseInt($('select.ui-datepicker-new-month').val()) + 1) + '/', 
    set_data);
    $('.tooltip').hide();
}

/**
 * Doing onload event calendar tasks
 */
$(document).ready( function(){
    if( typeof(eventcalendar_shown) == 'undefined') {
            $("<div id='eventCalendarWidget'> </div>").appendTo("#calendarWrapper");
            $('#eventCalendarWidget').datepicker ({
              minDate: new Date (2007, 1 - 1, 1), 
              maxDate: new Date (2012, 12 - 1, 31),
              changeMonth: 'True',
              changeYear: 'True',
              onSelect:function(dateText) {
                  get_data_from_date(dateText);
              },
              onChangeMonthYear:function(year,month){
                  $.getJSON ('/events/search/' + year + '/' + month + '/', set_data);
                  $('.tooltip').hide();
              }
          });
        //get_data_from_dropdown();
        $('<a href="/events" id="all_events">See All Events</a>').prependTo('#eventCalendarWidget');
        $('table.ui-datepicker-calendar td').removeAttr('onclick')
    }
    $('#eventCalendarWidget').hide();
    $("#eventcalendar").click(function () {
            $('#eventCalendarWidget').toggle();
     });
     
    $('#eventCalendarWidget').mouseleave(function(){
       $('body').one('click', function(){
           $('#eventCalendarWidget').hide();
       });
    });
    
});


