//
//                   Calendario vers. 1.0
//                     by Maurizio Mauri
//                   mailto: M.Mauri@mclink.it
//
//   

var source;
var tipo;
var campi = new Array();
var DataSelezionata;
function MostraCalendario(val1, val, Block, e, t,Leng) {
	var dt = new Array();
	var oggi = new Date()

  	Stop = '';
	if(Block.indexOf('@') > 0){
				DTb= Block.split('@')
				start =DTb[0]; 
				Stop = DTb[1];
				}
				else start =Block;
	 if (val.value == '' && Block != ''){	stra = start.split('/'); oggi = new Date(stra[2], stra[1] - 1, stra[0]) }
	SetLenguage(Leng)
	if(BWD.ie)	Pos=e.srcElement
	else Pos=e.target
		
	var dB=document.body;var eL=0;var eT=0;
	for(var p=Pos;p&&p.tagName!='BODY';p=p.offsetParent){	eL+=p.offsetLeft;eT+=p.offsetTop;}
	var eH=Pos.offsetHeight;var dH=Pos.style.pixelHeight;var sT=dB.scrollTop;
	if(eT-dH>=sT&&eT+eH+dH>dB.clientHeight+sT)eT-=dH;else eT+=eH;
	
	xPos = eL; 
	yPos = eT;						
 
	tipo = t;
	source = val;
	source1 = val1;
		if (t == 0) {
		dt[0] = val[0].value;
		dt[1] = val[1].value;
		dt[2] = val[2].value;
	}
else

  if (val.value == "")
  			{
		dBock = start.split('/');
		
		dt[0] = oggi.getDate();
		dt[1] = oggi.getMonth() + 1 ;
		dt[2] = oggi.getFullYear();
		
		StrN = '' + dBock[2] + '' + dBock[1] + '' +dBock[0];
		StrN2 = '' + dt[2] + '' + dt[1] + '' +dt[0];
		if(parseInt(StrN) > parseInt(StrN2)){dt[2] = dBock[2]; dt[1] = dBock[1];dt[0] = dBock[0]}
		
			}
  else	dt = val.value.split('/');
	
  
  
  dBock = start.split('/');
  fBlock = Stop.split('/');
  
  showCalendar(new Date(dt[2], dt[1] - 1, dt[0]), new Date(dBock[2], dBock[1] - 1, dBock[0]), new Date(fBlock[2], fBlock[1] - 1, fBlock[0]), xPos, yPos);
}
			
			
var xwidth = 220;
var xheight = 180;
var D6=window,Y7=document;
function DETECT()
{
this.ver=navigator.appVersion;
this.agent=navigator.userAgent;
this.dom=Y7.getElementById?1:0;
this.opera5=this.agent.indexOf("Opera 5")>-1;
this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0;
this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
this.ie7=(this.ver.indexOf("MSIE 7")>-1 && this.dom && !this.opera5)?1:0;
this.ie4=(Y7.all && !this.dom && !this.opera5)?1:0;
this.ie=this.ie4||this.ie5||this.ie6||this.ie7;this.mac=this.agent.indexOf("Mac")>-1;
this.ns6=(this.dom && parseInt(this.ver)>=5)?1:0;
this.ns4=(Y7.layers && !this.dom)?1:0;
this.BWD=(this.ie7||this.ie6||this.ie5||this.ie4||this.ns4||this.ns6||this.opera5);
return this
}

BWD=new DETECT()



var browser = BWD.ns4 ? 0 : BWD.ie ? 1 : 2;


// colori
var backtable = '#ffffff';
var calendback = '#EBF3F7';
var lines = '#4882c3';
var bright = '#4882c3';
var festa = '#FAF0E6';
var oggi = '#bb7151';
var dataPrec = '#4882c3';
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 MesePrecedente = 'Mese precedente';
var DataOdierna = 'Data odierna';
var MeseSuccessivo = 'Mese successivo';
var Annulla = 'Annulla'

function SetLenguage(Lenguage)
{
	
if (Lenguage == 'GER'){
// ------ Non cambiare ger ----------
mesi = new Array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni','Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');	
days = new Array('Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So');	
MesePrecedente = 'Vorhergehender Monat';
DataOdierna = 'Heute';
MeseSuccessivo = 'Folgender Monat';
Annulla = 'Löschen'
AnnoPrecedente = 'Previous year';
AnnoSuccessivo = 'Folgendes Jahr';

} 
else if (Lenguage == 'ENG'){
// ------ Non cambiare eng----------
mesi = new Array('January', 'February', 'March', 'April', 'May', 'June','July', 'August', 'September', 'October', 'November', 'December');
days = new Array('Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su');
MesePrecedente = 'Previous month';
DataOdierna = 'Today';
MeseSuccessivo = 'Next month';
AnnoPrecedente = 'Previous year';
AnnoSuccessivo = 'Next year';
Annulla = 'Cancel'
}
else{
// ------ Non cambiare ita ----------
mesi = new Array('Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre');
days = new Array('Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do');	
MesePrecedente = 'Mese precedente';
DataOdierna = 'Data odierna';
MeseSuccessivo = 'Mese successivo';
Annulla = 'Annulla'
AnnoPrecedente = 'Anno successivo';
AnnoSuccessivo = 'Anno precedente';
}
}

var dd = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

var today = new Date();
var canno = today.getFullYear();
var cmese = today.getMonth();
var ccurrday = today.getDate();
var mesecal= today.getMonth();
var AnnoCorrente = today.getFullYear();
var MeseCorrente =  today.getMonth();
var DataStartBlock = new Date();
var DataStopBlock = new Date(9999,12,31);
var cellwidth = Math.floor(xwidth / 7); xwidth = cellwidth * 7;
var xmese = 0;
var aboutx = false;
var isOn = false;
var  PercorsoImg = 'http://www.bravoitalia.it/'; 
function chiudi()
		{
		 getId().showIt(false);
		}

function action(g, m , a) {
   function format(x) {
      return x > 9 ? x : "0" + x;
   }
   getId().showIt(false);

   if (tipo == 0) {
      source[0].value = format(g);
      source[1].value = format(m + 1);
      source[2].value = a;
   }
   else{
      source.value = format(g) + '/' + format(m + 1) + '/' + a;
      source1.value = a + '-' + format(m + 1) + '-' + format(g);
	  }
}

document.write('<style type="text/css">\n<!--');
document.write('.cal { font-family: Arial, Helvetica, sans-serif; font-size: 10px; font-weight: bold; color: #4882c3}');
document.write('.num { font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-decoration:none}');
document.write('.mese {  font-family: Arial, Helvetica, sans-serif; font-size: 14px; font-weight: bold; color: #4882c3}');
document.write('.butt {  font-family: Arial, Helvetica, sans-serif; font-size: 10px}');
document.write('-->\n</style>');


function comparedate(d1, d2) {
   if (d1.getFullYear() == d2.getFullYear() && d1.getMonth() == d2.getMonth() && d1.getDate() == d2.getDate()) 
      return true;
   return false;
}

function pasqua(aa) {
   var xx = new Array(22, 22, 23, 23, 24, 24);
   var yy = new Array(2, 2, 3, 4, 5, 5);
   var a = aa % 19;
   var b = aa % 4;
   var c = aa % 7;

   var i = Math.floor(aa / 100) - 15;
   var x = xx[i], y = yy[i];
   var d = (19*a + x) % 30;
   var e = (2*b + 4*c + 6 * d + y) % 7;

   var p = 22 + d + e;

   var m = 300;
   if (p > 31) {
      m = 400;
      p = p - 31;
   }
   return m + p;
}


function isfesta(d) {
   var feste = new Array(0, 101, 106, 425, 501, 602, 815, 1101, 1208, 1225, 1226);

   if (d.getDay() == 0)
      return true;

   var pp = pasqua(d.getFullYear()) + 1;     // Pasquetta
      if (pp % 100 > 31)
         pp = 401;

   feste[0] = pp;
   for (var i = 0; i < feste.length; i++)
      if (Math.floor(feste[i] / 100) == d.getMonth() + 1) {
         var gg = feste[i] % 100;
         if (gg == d.getDate())
            return true;
      }

   return false;
}


function calendar(currday, mese, anno, dateClick, dateStop) {

  MeseCorrente = mese;
  AnnoCorrente = 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 = '<div class="mese" style="width:' + xwidth +'px;height:25px;align:absmiddle;"><table border="0" cellspacing="0" cellpadding="0" class="mese" ><tr><td><a href="##" onclick="altro_mese(-1)" title="'  + MesePrecedente + '"><img alt="'  + MesePrecedente + '" border="0" src="' + PercorsoImg + 'calendario/prev.gif" name="prev"  align="absmiddle"></a></td><td width="80" align="center">' + mesi[mese] + '</td><td><a href="##" onclick="altro_mese(1)" title="' + MeseSuccessivo + '"><img alt="' + MeseSuccessivo + '" src="' + PercorsoImg + 'calendario/next.gif" border="0"  align="absmiddle\" name="next"></a></td><td><a href="#" onClick="altro_anno(' + (anno - 1) + ');return false;" title="' + AnnoPrecedente + '"><img align="absmiddle" alt="' + AnnoPrecedente + '" border="0" src="' + PercorsoImg + 'calendario/prev.gif" name="prev" ></a></td><td>' + anno +'</td><td><a href="#" onClick="altro_anno(' + (anno + 1) + ');return false;" title="' + AnnoSuccessivo + '"><img align="absmiddle" alt="' + PercorsoImg + 'Mese Successivo" border="0" src="' + PercorsoImg + 'calendario/next.gif" name="next" ></a></td></tr></table></div>\n';
   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 (isfesta(ddx)) {
               bgstring = ' bgcolor="' + festa + '"';
            }
            if (dx == DataSelezionata.getDate() && MeseCorrente == DataSelezionata.getMonth()  && AnnoCorrente == DataSelezionata.getFullYear()  )
            { 
			   fgcol = '#066FB1';
               fgstring = '<b><i><u>' + dx + '</u></i></b>\n'; 
            }
            if (comparedate(ddx, today)) {
               fgcol = bright;
               fgstring = '<b><u>' + dx + '</u></b>\n'; 
             
            }
            var tempdate = ddx.getDate() + ", " + ddx.getMonth() + ", " + ddx.getFullYear();
       
            //ANNO ATTUALE o Di Blocco
            annoc = dateClick.getFullYear();
            annocf = dateStop.getFullYear();
			//MESE ATTUALE o Di Blocco
            mesec = dateClick.getMonth();
            mesec = mesec.toString()
            mesecf = dateStop.getMonth();
            mesecf = mesecf.toString()
         	if (mesec.length < 2) mesec = '0' + mesec;	
			if (mesecf.length < 2) mesecf = '0' + mesecf;
			//GIORNO ATTUALE
            currdayc = dateClick.getDate();
            currdayc = currdayc.toString()
            currdaycf = dateStop.getDate();
            currdaycf = currdaycf.toString()
            
			if (currdayc.length < 2) currdayc = '0' + currdayc;
            if (currdaycf.length < 2) currdaycf = '0' + currdaycf;
            //ANNO CALENDARIO
            annocal = ddx.getFullYear();
            //MESE CALENDARIO
            mesecal = ddx.getMonth();
            mesecal = mesecal.toString()
            if (mesecal.length < 2) mesecal = '0' + mesecal;	
			//GIORNO CALENDARIO
            currdaycal = ddx.getDate();
            currdaycal = currdaycal.toString()
            if (currdaycal.length < 2) currdaycal = '0' + currdaycal;            

            dataOggi = annoc + '' + mesec + '' + currdayc;
            dataCal =  annocal + '' + mesecal + '' + currdaycal;
            dataFineB = annocf + '' + mesecf + '' + currdaycf;
		    if (dataOggi > dataCal ||  dataCal > dataFineB)
            {   
            	fgstring = '<i><a class = "num"><font color="#c3c3c3">' + fgstring +  '</font></a></i>\n';
            }
            else
            {
            	fgstring = '<a href="javascript:action(' + tempdate + ')" class = "num"><font color="' + fgcol + '">' + fgstring + '</font></a>\n';
            }
            
             //alert("Data:" + dataOggi + '\n' + "Data:" + dataCal);
         }

         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) {
   var s = '<table width="' + xwidth + '" border="1" cellspacing="0" cellpadding="0" bgcolor="' + backtable + '">';
   s += '<tr>\n<td class="mese" valign="middle">';

   s += x; // calendar(currday, mese, anno);
   
   s += '</td></tr><tr><td>';
   s += '<form class="butt"><table width="100%" border="0" cellspacing="0" cellpadding="2">';
   s += '<tr>';
   s += '<td><a href="#" onclick="chiudi(); return false;" class = "num"><font color="' + bright + '">' + Annulla +'</font></a></td>';
   s += '<td align="right" ><a href="##" onclick="altro_mese(900)" class = "num"><font color="' + bright + '">';
   s +=' ' + DataOdierna + '</font></a>  ';
   s += '<a href="##" onclick="altro_mese(900)" title="' + DataOdierna + '"><img alt="' + DataOdierna + '" border="0" name="current" src="' + PercorsoImg + 'calendario/calendario.gif" ></a>';
   s += '</td>';
   s += '</tr></form></table>';

   s += '</td>\n</tr>\n</table>';
   return s;
}

function dateAdd(dat, sInterval, iNum){
  var dTemp = dat;
  if (!sInterval || iNum == 0) return dTemp;
  switch (sInterval.toLowerCase()){
    case "ms":
      dTemp.setMilliseconds(dTemp.getMilliseconds() + iNum);
      break;
    case "s":
      dTemp.setSeconds(dTemp.getSeconds() + iNum);
      break;
    case "mi":
      dTemp.setMinutes(dTemp.getMinutes() + iNum);
      break;
    case "h":
      dTemp.setHours(dTemp.getHours() + iNum);
      break;
    case "d":
      dTemp.setDate(dTemp.getDate() + iNum);
      break;
    case "mo":
      dTemp.setMonth(dTemp.getMonth() + iNum);
      break;
    case "y":
      dTemp.setFullYear(dTemp.getFullYear() + iNum);
      break;
  }
  return dTemp;
}


function altro_anno(x){
	var s = dataframe(calendar(currday, MeseCorrente, x, DataStartBlock,DataStopBlock ));
    writeLayer(s);
	
}


function altro_mese(x) {
   if (x==900)
  {
	var s = dataframe(calendar(today.getDate(), today.getMonth(),today.getFullYear(), DataStartBlock,DataStopBlock ));
    writeLayer(s);
  }
  else {
  	 tempd = new Date(AnnoCorrente,MeseCorrente,1);
  	 tempde = dateAdd(tempd,'mo',x);
	 
	 var s = dataframe(calendar(tempde.getDate(), tempde.getMonth(),tempde.getFullYear(), DataStartBlock,DataStopBlock ));
     writeLayer(s);
	 }
  aboutx = false;
}


function xabout() {
   if (aboutx)
      altro_mese(0);
   else {
      var aboutstr = '<table border="0" cellspacing="0" cellpadding="10" align="center"><tr><td nowrap class="mese">';
      aboutstr += '<br>Calendario vers. 1.0<br><br>';
      aboutstr += '&copy;2002 by Maurizio Mauri<br><br>';
      aboutstr += '<a href="mailto:M.Mauri@mclink.it" class="num">M.Mauri@mclink.it</a>';
      aboutstr += '</td></tr></table><br>';
   
      writeLayer(dataframe(aboutstr));
   }
   aboutx = true;
}


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.style = xPos+"px";
      this.style = yPos+"px";
      break;
   case 1:
      this.style.pixelLeft = xPos;
      this.style.pixelTop = yPos;
     break;
   default:
   	  this.style.left = xPos+"px";
      this.style.top = yPos+"px";
   }
}


function createlayer() {
   var s;
   
  if (document.layers)
      s = '<layer id="calframe" visibility="hide" z-index=1; style="position:absolute;">';
   else
      s = '<div name="calframe" id="calframe" style="position:absolute; visibility: hidden; z-index=10;"  >';
   if (document.layers)
      s += '</layer>';
   else
      s += '</div>';

   document.writeln(s);
}


function showIt(on) {
   isOn = on;
   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,StartBlock,StopBlock,xpos,ypos) {
   if (!isOn) {
           
				   
		   
      if (d) {
            AnnoCorrente = d.getFullYear();
			MeseCorrente = d.getMonth();
			anno = d.getFullYear();
            mese = d.getMonth();
            currday = d.getDate();
         } else {
			AnnoCorrente = today.getFullYear();            
			MeseCorrente = today.getMonth();
			anno = today.getFullYear();
            mese = today.getMonth();
            currday = today.getDate();
      }
	  
	  if (StartBlock)	DataStartBlock = StartBlock;
	  if (StopBlock != '')	DataStopBlock = StopBlock;
	  
	//alert(startBlock)
      if (arguments.length > 2) {
         var id = getId();
         id.moveLayer(xpos, ypos);
      }
      else getId().moveLayer(100, 100);

      xmese = 0;
	  DataSelezionata = new Date(d.getFullYear(),d.getMonth(),d.getDate())
      writeLayer(dataframe(calendar(currday, mese, anno, DataStartBlock, DataStopBlock)));
      
   }
   getId().showIt(!isOn);
}



createlayer(1);
onload = init;
