YAHOO.namespace("event.calendar");
var myDatesTip = [];
var link = [];
var catid = [];
var em = '';
var ey = '';

cal =
{
  l: '/',  // lasciare solo lo slash
  init: function(e)
  {
    YAHOO.util.Event.preventDefault(e);
    var url = '/event/calendar.json';
    var callback = {success: cal.getdates}
    YAHOO.util.Connect.asyncRequest('GET', url, callback);
    if(document.getElementById('eventmonth'))
    {
      em = document.getElementById('eventmonth').innerHTML;
      ey = document.getElementById('eventyear').innerHTML;
    }
    
  },


  tooltip: function(e, o) {
    var tbodies = document.getElementsByTagName('tbody');
    if (!tbodies)
    {
      return;
    }
    var tbody = tbodies[0];
    var tds = tbody.getElementsByTagName('td');
    for (var i = 0; i < tds.length; i ++)
    {
      
      var d = YAHOO.event.calendar.cal1.cellDates[i][1] + '/' + YAHOO.event.calendar.cal1.cellDates[i][2] + '/' + YAHOO.event.calendar.cal1.cellDates[i][0]; 
      var id = tds[i].getAttribute('id');
      if (YAHOO.util.Dom.hasClass(tds[i], 'highlight'+catid[d]))
      {
        var tt = new YAHOO.widget.Tooltip("tt"+catid[d], { context: id , text: myDatesTip[d]});
        // Set the text for the tooltip just before we display it.
        tt.contextTriggerEvent.subscribe(
            function(type, args) {
                var context = args[0];
                var text = args[1];
            }
        );
        YAHOO.util.Event.addListener(id , "click", linkCallback, {msg: cal.l+'event/'+link[d]+'.html'});
      }
    }

  },


  // show message in case of success
  getdates: function(o)
  {
    YAHOO.event.calendar.cal1 = new YAHOO.widget.Calendar("cal1","cal1Container", { LOCALE_WEEKDAYS: '1char', START_WEEKDAY: 1 });

    // Date labels for Italian locale
    YAHOO.event.calendar.cal1.cfg.setProperty("START_WEEKDAY", 1);
    YAHOO.event.calendar.cal1.cfg.setProperty("MONTHS_SHORT",   ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"]);
    YAHOO.event.calendar.cal1.cfg.setProperty("MONTHS_LONG",    ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"]);
    YAHOO.event.calendar.cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["D", "L", "M", "M", "G", "V", "S"]);
    YAHOO.event.calendar.cal1.cfg.setProperty("WEEKDAYS_SHORT", ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"]);
    YAHOO.event.calendar.cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"]);
    YAHOO.event.calendar.cal1.cfg.setProperty("WEEKDAYS_LONG",  ["Domenica", "Luned“", "Marted“", "Mercoled“", "Gioved“", "Venerd“", "Sabato"]);
    
    if(em != '')
    {
      YAHOO.event.calendar.cal1.setMonth(em-1);
      YAHOO.event.calendar.cal1.setYear(ey);
    }
    
    var events = YAHOO.lang.JSON.parse(o.responseText);
    
    var myRenderer = function(workingDate, cell) {
      var d = (workingDate.getMonth() + 1).toString() + '/' + workingDate.getDate() + '/' + workingDate.getFullYear();
      cell.innerHTML = '<a href="'+cal.l+'event/'+link[d]+'.html" class="' + this.Style.CSS_CELL_SELECTOR + '">' + this.buildDayLabel(workingDate) + "</a>";
      YAHOO.util.Dom.addClass(cell, "highlight" + catid[d]);
      var id = cell['id'];
      return YAHOO.widget.Calendar.STOP_RENDER;
    }

    for (var i = 0; i < events['events'].length; i++)
    {

      // TODO giorno a 2 cifre...
      //var tmpa = events['events'][i].date.split('/');
      //var d = tmpa[2] + '-' + tmpa[0] + '-' + tmpa[1];
      //alert(events['events'][i].date)

      for (var k = 0; k < events['events'][i].listDates.length; k++)
      {
        
        myDatesTip[events['events'][i].listDates[k]] = '<h3>' + events['events'][i].title + '</h3>'+ '<p>'+events['events'][i].abs +'</p>';  
        link[events['events'][i].listDates[k]] = events['events'][i].catname + '/' + events['events'][i].slug;
        catid[events['events'][i].listDates[k]] = events['events'][i].cat;
        
        YAHOO.event.calendar.cal1.addRenderer(events['events'][i].listDates[k], myRenderer);
      }

    }

    YAHOO.event.calendar.cal1.renderEvent.subscribe(cal.tooltip );
    YAHOO.event.calendar.cal1.render();
  }



}

function linkCallback(e, o)
{

  YAHOO.util.Event.preventDefault(e);
  window.location.href = o.msg;

}


    function IntervalCalendar(container, cfg) {
        /**
         * The interval state, which counts the number of interval endpoints that have
         * been selected (0 to 2).
         */
        this._iState = 0;

        // Must be a multi-select CalendarGroup
        cfg = cfg || {};
        cfg.multi_select = true;

        // Call parent constructor
        IntervalCalendar.superclass.constructor.call(this, container, cfg);

        // Subscribe internal event handlers
        this.beforeSelectEvent.subscribe(this._intervalOnBeforeSelect, this, true);
        this.selectEvent.subscribe(this._intervalOnSelect, this, true);
        this.beforeDeselectEvent.subscribe(this._intervalOnBeforeDeselect, this, true);
        this.deselectEvent.subscribe(this._intervalOnDeselect, this, true);
    }



YAHOO.util.Event.addListener(window, 'load', cal.init);
