// JavaScript Document
var Mesi = ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',
            'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre']
var Giorni = ['Lu','Ma','Me','Gi','Ve','Sa','Do']

var now = new Date();            // Data Corrente: oggi
var pdate = new Date();          // e' la Data da stampare
var dc,mc,fdp,ndpm,event;

function printCurr(e) {
    dc = now.getDate();
    pdate.setFullYear(now.getFullYear(),now.getMonth(),1); // set data al primo del mese
    mc = pdate.getMonth();             // Mese Corrente
    fdp = (pdate.getDay()+6) % 7;      // posizione del Primo giorno nella settimana
    ndpm=getDayPerMonth(mc,pdate.getFullYear()); // Num giorni nel mese
    
    getEvent(e);
    printOut();
}    


function printNext(e) {
    dc = 0;
    pdate.setMonth((mc+1));
    mc=pdate.getMonth();             // Mese Corrente
    fdp=(pdate.getDay()+6) % 7;      // posizione del Primo giorno nella settimana
    ndpm=getDayPerMonth(mc,pdate.getFullYear()); // Num giorni nel mese
    
    getEvent(e);
    printOut();
}    

// Genero il calendario
function printOut(e) {
    document.write("<table class='calTab'>");
    document.write("<tr><th class='month' colspan='7'>" + Mesi[mc] + " " + pdate.getFullYear() +"</td></tr>"); // testata
    document.write("<tr>"); // testata
    for (i=0;i<7;i++) {
      document.write("<th>" + Giorni[i] + "</th>"); // testata
    }
    document.write("</tr>"); // testata

    n=1;
    while (n<=ndpm) {
      document.write("<tr>");
      for (i=0; i<7; i++)  {
          if ((i<fdp && n==1) || n >ndpm) document.write("<td class='noDay'>&nbsp;</td>");
          else { 
            if (n==dc)  document.write("<td class='today'>");
            else document.write("<td class='otherDay'>");
            if (i==0) document.write( n + "</td>");   // Il lunedi riposo
            else document.write(event[n]+ "</td>"); 
            
            n++; 
          }
      }
      document.write("</tr>");
    }
    document.write("</table>\n");
}
// Calcolo i link agli eventi programmati
function getEvent(e) { 
    event = new Array(ndpm+1);
    for (j=1; j<=ndpm; j++) event[j] = j;

    for (i=0; i<e.length; i++) {
        if (e[i][1] == mc+1) sta = e[i][0];
        else sta = 1;
        if (e[i][3] == mc+1) end = e[i][2];
        else end = ndpm;
        if (sta==1 && end==ndpm) continue;
        for (j=sta; j <= end; j++) { event[j] = "<a href='" + e[i][4] + "' title='" + e[i][5] + "'>" + j + "</a></td>"; }
    }
}

function getDayPerMonth(m,y) { 
      if (m == 1) {
          if (checkDate(29,1,y)==true) return 29;
          else return 28;
      }
      if (checkDate(31,m,y)==true) return 31;
      else return 30;
} 

// Controlla se la data e` corretta
function checkDate(d,m,y) {
    if (!(m >= 0 && m <= 11 && y >= 1 && y <= 32767)) return false;
    var myDate = new Date();
    myDate.setFullYear(y, m, d);
    return ((myDate.getMonth()) == m && d<32);
}