var browser = document.layers ? 0 : document.all ? 1 : 2;

var mesi = new Array('Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno',
               'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre');

var days = new Array('Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do');
var dd = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

var today = new Date();
var anno = today.getFullYear();
var mese = today.getMonth();
var currday = today.getDate();
var cellwidth = Math.floor(xwidth / 7);
xwidth = cellwidth * 7;
var xmese = 0;
var isOn = false;


function action(g, m , a) {
   function format(x) {
      return x > 9 ? x : "0" + x;
   }
   getId().showIt(false);

	source[0].value = g;
	source[1].value = m+1;
	source[2].value = a;
	if (source[2].value=='') source[2].value = -1;

}

function comparedate(d1, d2) {
   if (d1.getFullYear() == d2.getFullYear() && d1.getMonth() == d2.getMonth() && d1.getDate() == d2.getDate()) 
      return true;
   return false;
}


function calendar(currday, mese, anno) {

   var dx = 2 - (new Date(anno, mese, 1)).getDay();
   if (dx == 2)
      dx = -5;
   var daysInMonth = dd[mese];

   if (mese == 1) {
      if (anno % 4 == 0 && anno % 100 != 0  || anno % 400 == 0)
         daysInMonth++
   }

   var tx='';
   tx += '<table width="' + xwidth + '" border="0" cellspacing="1" cellpadding="1">\n';
   tx += '<tr align="right">\n';

   for (var i = 0; i < 7; i++)
      tx += '<td width="' + cellwidth+ '" class="cal">' + days[i] + '&nbsp;</td>\n';

   tx += '</tr>\n';
   for (var j = 0; j < 6; j++) {
      tx += '<tr bgcolor="' + calendback + '" align="right">\n';
      for (var i = 0; i < 7; i++) {
         var bgstring = "";
         var fgcol = lines;
         var fgstring = '&nbsp;';

         if (dx > 0 && dx <= daysInMonth) {
            fgstring = dx;
            var ddx = new Date(anno, mese, dx);
            
            if (ddx.getDay() == 0) {
               bgstring = ' bgcolor="' + festa + '"';
            }

            if (comparedate(ddx, today)) {
               fgcol = bright;
               fgstring = '<b><u>' + dx + '</u></b>\n';
            }
            var tempdate = ddx.getDate() + ", " + ddx.getMonth() + ", " + ddx.getFullYear();
            fgstring = '<a href="javascript:action(' + tempdate + ')" class = "num"><font color="' + fgcol + '">' + fgstring + '</font></a>\n';
         }
         tx += '<td width="' + cellwidth + '" class="num"' + bgstring + '>\n';
         tx += fgstring;
         tx += '</td>\n';
         dx++;
      }
      tx += '</tr>\n';
   }
   tx += '</table>\n';

   return tx;
}


function dataframe(x,mese,anno) {
   var s = '<table style="border-collapse: collapse" width="' + xwidth + '" border="1" cellspacing="0" cellpadding="0" bgcolor="#E6E7E9">';
   s += '<tr>';
   s += '<td align="center">';
   s += '<input type="button" name="prev" value="<<" class="butt" onclick="altro_mese(-12)">&nbsp;';
   s += '<input type="button" name="prev" value="<" class="butt" onclick="altro_mese(-1)">&nbsp;';
   s += '<font class="mese">  ' + mesi[mese] + ' ' + anno + '  </font>';
   s += '<input type="button" name="prev" value=">" class="butt" onclick="altro_mese(1)">&nbsp;';
   s += '<input type="button" name="prev" value=">>" class="butt" onclick="altro_mese(12)">';
   s += '</td>';
   s += '</tr>';
   
   s += '<tr>\n<td class="mese" valign="middle">';

   s += x; 
   
   s += '</td></tr><tr><td align="center">';
   s += '<input type="button" class="butt" value="Chiudi" onclick="javascript:getId().showIt(!isOn);">';
   s += '</td>\n</tr>\n</table>';
   return s;
}

function altro_mese(x) {
   xmese += x;
   if (x == 9)
      xmese = 0;
   var xday = (xmese == 0)? currday : 99;
   var mm = (mese + xmese) % 12;

   while (mm < 0)
      mm += 12;

   var s = dataframe(calendar(xday, mm, anno + Math.floor((mese + xmese) / 12)),mm,anno + Math.floor((mese + xmese) / 12));
   writeLayer(s);
}

function getId() {
   switch (browser) {
      case 0:
         return document.layers.calframe;
      case 1:
         return eval('calframe');
      case 2:
         return document.getElementById("calframe");
   }
}


function moveLayer(xPos, yPos) {
   switch (browser) {
   case 0:
      this.left = xPos;
      this.top = yPos-xheight;
      break;
   case 1:
      this.style.pixelLeft = xPos;
      this.style.pixelTop = yPos-xheight;
     break;
   default:
      this.style.left = xPos;
      this.style.top = yPos-xheight;
   }
}


function createlayer() {
   var s;
   if (document.layers)
      s = '<layer id="calframe" visibility="hide" z-index=1>';
   else
      s = '<div id="calframe" style="position:absolute; visibility: hidden; z-index: 30000;">';
   if (document.layers)
      s += '</layer>';
   else
      s += '</div>';

   document.writeln(s);
}


function showIt(on) {
   isOn = on;
	if (document.Form1)
		if (on)
			document.Form1.Stelle.style.visibility='hidden';
		else
			document.Form1.Stelle.style.visibility='visible';
   if (browser)
      this.style.visibility = (on) ? "visible" : "hidden";
   else
      this.visibility = (on) ? "show" : "hide"
}


function writeLayer(s)
{
   var id = getId();
   if (browser)
   {
      id.innerHTML = s;
	}
   else
   {
      id.document.open();
      id.document.write(s);
      id.document.close();
   }
}

function init() {
   var id = getId();
   id.moveLayer = moveLayer;
   id.showIt = showIt;
   id.showIt(false);
}


function showCalendar(d, xpos, ypos) {
   if (!isOn) {
           
      if (d) {
            anno = d.getFullYear();
            mese = d.getMonth();
            currday = d.getDate();
         } else {
            anno = today.getFullYear();
            mese = today.getMonth();
            currday = today.getDate();
      }
      if (arguments.length > 2) {
         var id = getId();
         id.moveLayer(xpos, ypos);
      }
      else
         getId().moveLayer(100, 100);

      xmese = 0;

      writeLayer(dataframe(calendar(currday, mese, anno),mese,anno));
      
   }
   getId().showIt(!isOn);
}



createlayer(1);
onload = init;
