//globals
var month;      var day;        var year;   var pasqua;
var delim = new Array(":","/","\\","-"," ",".");
var monthArray = new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);
var gfestivi = new Array ("01/01","06/01","25/04","01/05","15/08","08/12","25/12","2/12");
var patr=" ";
var max=0 ;

while (gfestivi[max]!=null)
	max+=1;

if (patr!="")
	gfestivi[max]=patr;
	
nome=window.name;

// Aggiunge il patrono alla lista delle festività se il form aprente è un "Mezzi"
if (nome=="Tipo")	{
	patr2=parent.Trasferta.document.forms[0].Patroni.value;
	if ((patr!=patr2) && (patr2!="")) 
		gfestivi[max]=patr2;
}	
	
// Calcola il giorno di Pasquetta: riceve in input l'anno corrente:
function Easter(year) {
	var pasquetta; var c; var n; var k; var i; var ii; var iii; var j; var jj; var q; var eastermonth; var easterday;	
	var temp1; var temp2; var temp3; var temp4; var temp5;
	c=parseInt(year/100);
	n=year-19*(parseInt(year/19));
	k=parseInt((c-17)/25);
	
	if (isNaN(k))
		k=0;
		
	i=c-(parseInt(c/4))- parseInt((c-k)/3)+(19*n)+15;
	ii=i-30*parseInt(i/30);
	temp1=parseInt(ii/28);
	temp2=parseInt(29/(ii+1));
	temp3=parseInt((21-n)/11);
	
	if (isNaN(temp1)) {
		iii=ii;
	} else {
		if (isNaN(temp2) || isNaN(temp3))
			iii=ii-temp1;
		else
			 iii=ii-temp1*(1-temp1*temp2*temp3);	
	}
	
	j=year+parseInt(year/4)+iii+2-c+parseInt(c/4);
	jj=j-7*parseInt(j/7);
	q=iii-jj;
	temp4=parseInt((q+40)/44);
	
	if (isNaN(temp4))
		eastermonth=3;
	else 
		eastermonth=3+temp4;
	
	temp5=parseInt(eastermonth/4);
	
	if (isNaN(temp5))
		easterday=(q+28);
	else
		easterday=(q+28)-31*temp5;
	
	if ((eastermonth==3) && (easterday==31)) {
		eastermonth=eastermonth+1;
		easterday=1;
	} else {
		easterday=easterday+1;
	}
	
	if (easterday<10)
		pasquetta="0"+easterday+"/0"+eastermonth;
	else	
		pasquetta=easterday+"/0"+eastermonth;

	return pasquetta;
}
// Fine Pasquetta ("Easter").

// Calcola se il giorno (feste="gg/mm") è un festivo:
function CalcolaFestivo(feste) {
	var p=0;
	
	while (gfestivi[p]!=null) {
		if (feste==gfestivi[p]) {			
			return true;
			break;
		} else {
			// document.writeln("<TR>"+"<TD>"+"P="+ p +"</TR>"+"</TD>");
			p=p+1;
			if (gfestivi[p]==null)
				return false;
		}
	}
}

// Fine 	CalcolaFestivo(feste)
function twochar(valore) {
	
   if (parseInt(valore)<10) {
         return "0"+valore;
   } else {      
         return valore;
	} 
}

//CHI LA USA?????????????
function vd(frm, fieldName,fieldLabel) {
   //init  
	dtString = eval("frm." + fieldName + ".value");
   // trim date string
   
   while ((dtString.charAt(0) == " ") && (dtString.length != 0))
   	dtString = dtString.substring(1,dtString.length - 1)
   
   while ((dtString.charAt(dtString.length - 1) == " ") && (dtString.length != 0))
   	dtString = dtString.substring(0,dtString.length - 1)
   
   //get date components
   i = 0; startPos = 0;    pos = 0;
   //get month
   do {
   	pos = dtString.indexOf(delim[i], startPos);
      i++
	}
   
   while ((pos == -1) && (i < delim.length));
   
   if (pos == -1) 
   	return false;
   
   month  = parseInt(dtString.substring(startPos,pos),10);
   startPos = pos + 1;
   
   if ((month < 1) || (month > 12)) 
   	return false;
   
	//get day
	i = 0;
   do {
   	pos = dtString.indexOf(delim[i], startPos);
      i++
	}
   
   while ((pos == -1) && (i < delim.length));
   
   if (pos == -1)
   	return false;
      
	day  = parseInt(dtString.substring(startPos,pos),10);
	startPos = pos + 1;
	if ((day < 1) || (day > monthArray[month])) 
		return false;
      
	//get year
   year = parseInt(dtString.substring(startPos,dtString.length),10);
   //check for leap year
   if ((month == 2) && (day == 29)) {
   	if ((((year % 4) == 0) && ((year % 100) != 0)) == false) {       
			return false;   
		}
	}

	//if we've gotten this far, return true
   return true;
} // end function vd

function validateDate(form, dateFieldName,fieldLabel){
        if (!vd(frm,fieldName,fieldLabel))
                alert(fieldLabel + " does not have a valid date")
}//end function validateDate

function getToday() {
	today = new Date();
   day = today.getDate();
   month = today.getMonth();
   month=month+1;
   year = today.getYear();
   year = (year < 900) ? 1900 + year : year;
}

function getMonth_and_Date(form,fieldName) {
        dtString = eval("form." + fieldName + ".value");
        // trim date string
        while ((dtString.charAt(0) == " ") && (dtString.length != 0))
                dtString = dtString.substring(1,dtString.length - 1)
        while ((dtString.charAt(dtString.length - 1) == " ") && (dtString.length != 0))
                dtString = dtString.substring(0,dtString.length - 1)
        //get date components
        i = 0; startPos = 0;    pos = 0;
        //get month
        do {
                pos = dtString.indexOf(delim[i], startPos);
                i++
                }
        while ((pos == -1) && (i < delim.length));
        if (pos == -1){//there's no month
                getToday();     
                return;
        }
        month  = parseInt(dtString.substring(startPos,pos),10) - 1;
        startPos = pos + 1;
        if ((month < 0) || (month > 12)){ //no valid month
                getToday();
                return;
        }
        else
                month++;                        
        //get day
        i = 0;
        do {
                pos = dtString.indexOf(delim[i], startPos);
                i++
                }
        while ((pos == -1) && (i < delim.length));
        if (pos == -1){
                getToday();
                return;
        }
        day  = parseInt(dtString.substring(startPos,pos),10);
        startPos = pos + 1;
        if ((day < 1) || (day > monthArray[month])){
                getToday();
                return;
        }
        //get year
        year = parseInt(dtString.substring(startPos,dtString.length),10)
        year = (year < 100) ? 1900 + year : year;
}//getMonth_and_Date

function putDate(form,fieldName,value)
{
        eval("form." + fieldName + ".value=" + value)
}

function gm(num) {
 var mydate = new Date();
 mydate.setDate(1);
 mydate.setMonth(num-1);
 var datestr = "" + mydate;
 return datestr.substring(4,7);
}

function gy(num) 
{
  var mydate = new Date();
  return (1900 + eval(mydate.getYear()) - 4 + num);
}

//A CHE SERVE STO COSO???????
function ud(mon) {
  var i = mon.selectedIndex;
  if(mon.options[i].value == "2") {
    document.myform.day.options[30] = null;
    document.myform.day.options[29] = null;
    var j = document.myform.year.selectedIndex;
    var year = eval(document.myform.year.options[j].value);
    if ( ((year%400)==0) || (((year%100)!=0) && ((year%4)==0)) ) {
      if (document.myform.day.options[28] == null) {
        document.myform.day.options[28] = new Option("29");
        document.myform.day.options[28].value = "29";
      }
    } else {
      document.myform.day.options[28] = null;
    }
  }
  if(mon.options[i].value == "1" ||
     mon.options[i].value == "3" ||
     mon.options[i].value == "5" ||
     mon.options[i].value == "7" ||
     mon.options[i].value == "8" ||
     mon.options[i].value == "10" ||
     mon.options[i].value == "12")
  {
    if (document.myform.day.options[28] == null) {
      document.myform.day.options[28] = new Option("29");
      document.myform.day.options[28].value = "29";
    }
    if (document.myform.day.options[29] == null) {
      document.myform.day.options[29] = new Option("30");
      document.myform.day.options[29].value = "30";
    }
    if (document.myform.day.options[30] == null) {
      document.myform.day.options[30] = new Option("31");
      document.myform.day.options[30].value = "31";
    }
  }
  if(mon.options[i].value == "4" ||
     mon.options[i].value == "6" ||
     mon.options[i].value == "9" ||
     mon.options[i].value == "11")
  {
    if (document.myform.day.options[28] == null) {
      document.myform.day.options[28] = new Option("29");
      document.myform.day.options[28].value = "29";
    }
    if (document.myform.day.options[29] == null) {
      document.myform.day.options[29] = new Option("30");
      document.myform.day.options[29].value = "30";
    }
    document.myform.day.options[30] = null;
  }
  if (document.myform.day.selectedIndex == -1)
    document.myform.day.selectedIndex = 0;
}
//

//LO UTILIZZA NESSUNO?????????
function showdate() {
  var i = document.myform.month.selectedIndex;
  var j = document.myform.day.selectedIndex;
  var k = document.myform.year.selectedIndex;
  alert(document.myform.month.options[i].value + "/" +
        document.myform.day.options[j].value + "/" +
        document.myform.year.options[k].value)
}
//

function putcal(form, dateFieldName) 
{
  var version = navigator.appVersion;
  if (navigator.appVersion.indexOf("Mac") != -1) {
    calwin = open("","calwin","width=300,height=300,resizable=yes");
  } else {
	    calwin = open("","calwin",centraFinestra("width=210,height=230,resizable=yes"));
	}
	
  calccal(calwin,form,dateFieldName);
}

// qui
function calccal(targetwin,form,dateFieldName) { 
	var monthname = new Array(12);
	monthname[0] = "Gennaio";
	monthname[1] = "Febbraio";
	monthname[2] = "Marzo";
	monthname[3] = "Aprile";
	monthname[4] = "Maggio";
	monthname[5] = "Giugno";
	monthname[6] = "Luglio";
	monthname[7] = "Agosto";
	monthname[8] = "Settembre";
	monthname[9] = "Ottobre";
	monthname[10] = "Novembre";
	monthname[11] = "Dicembre";
	var endday = calclastday(eval(month),eval(year));
	mystr = month + "/00/" + year;
	mydate = new Date(mystr);
	firstday = mydate.getDay();
	var cnt = 0;
	var day = new Array(6);
	for (var i=0; i<6; i++)
		day[i] = new Array(7);
		
	for (var r=0; r<6; r++)	{
		for (var c=0; c<7; c++) {
			if ((cnt==0) && (c!=firstday)) {
				continue;
			}
			cnt++;
			day[r][c] = cnt;
			if (cnt==endday)
				break;
		}
		if (cnt==endday)
			break;
	}
	
	targetwin.document.open()
  	targetwin.document.writeln("<HEAD><TITLE>Calendario</TITLE><body onblur='self.focus()'><STYLE>A:link{text-decoration:none};A:hover{color:red}</STYLE></HEAD>")
  	targetwin.document.writeln("<BODY >")
  
  	targetwin.document.writeln("<FORM><TABLE><TR VALIGN=TOP>");
	var prevyear = eval(year) - 1;
   targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=prevyearbutton VALUE='<<'"+
   	" onclick='opener.month = " + month + "; opener.year = " + prevyear + ";document.clear();opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\")'></TD>");
  	// targetwin.document.writeln("<TD><a href=javascript:"+
  	// " onclick='opener.month = " + month + "; opener.year = " + prevyear + ";document.clear();opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\")'><IMG SRC='/HomeOverTravel/images/arrowsx.gif' BORDER=0><IMG SRC='/HomeOverTravel/images/arrowsx.gif' BORDER=0></a></TD>");
  	
  	var prevmonth = (month == 1) ? 12 : month - 1;
  	var prevmonthyear = (month == 1) ? year - 1 : year;
   targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=prevmonthbutton VALUE='&nbsp;<&nbsp;'"+
   	" onclick='opener.month = " + prevmonth + "; opener.year = " + prevmonthyear + ";document.clear();opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\")'></TD>");
  	// targetwin.document.writeln("<TD>&nbsp;<a href=javascript:"+
  	// " onclick='opener.month = " + prevmonth + "; opener.year = " + prevmonthyear + ";document.clear();opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\")'><IMG SRC='/HomeOverTravel/images/arrowsx.gif' BORDER=0></a></TD>");
  	targetwin.document.writeln("<TD COLSPAN=3 ALIGN=CENTER>");
  	
  	var index = eval(month) - 1;
  	targetwin.document.writeln("<B><FONT FACE='Verdana' SIZE=1>" + monthname[index] + " " + year + "</FONT></B></TD>");
  	var nextyear = eval(year) + 1;        
  	var nextmonth = (month == 12) ? 1 : month + 1;
  	var nextmonthyear = (month == 12) ? (year + 1) : year;
   targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=nextmonthbutton VALUE='&nbsp;>&nbsp;'"+
   	" onclick='opener.month = " + nextmonth + "; opener.year = " + nextmonthyear + ";document.clear();opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\")'></TD>");
  	//targetwin.document.writeln("<TD><a href=javascript:"+
  	//" onclick='opener.month = " + nextmonth + "; opener.year = " + nextmonthyear + ";document.clear();opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\")'><IMG SRC='/HomeOverTravel/images/arrowdx.gif' BORDER=0></a></TD>");
   targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=nextyearbutton VALUE='>>'"+
   	" onclick='opener.month = " + month + "; opener.year = " + nextyear + ";document.clear();opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\")'></TD>");
  	// targetwin.document.writeln("<TD>&nbsp;<a href=javascript:"+
  	// " onclick='opener.month = " + month + "; opener.year = " + nextyear + ";document.clear();opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\")'><IMG SRC='/HomeOverTravel/images/arrowdx.gif' BORDER=0><IMG SRC='/HomeOverTravel/images/arrowdx.gif' BORDER=0></a></TD>");
  	targetwin.document.writeln("</TR><TR></TABLE><TABLE CELLSPACING=0 CELLPADDING=0><TR>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Lu</FONT></TD>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Ma</FONT></TD>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Me</FONT></TD>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Gi</FONT></TD>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Ve</FONT></TD>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Sa</FONT></TD>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Do</FONT></TD>");
  	targetwin.document.writeln("</TR>");
  	targetwin.document.writeln("<TR><TD COLSPAN=7><HR NOSHADE></TD></TR>");
  	targetwin.document.writeln("<TR><TD COLSPAN=7><TABLE  WIDTH=\"100%\" BORDER=\"0\">");
  	var selectedmonth = eval(month)-1;
  	var today = new Date();
  	var thisyear = today.getYear() + 1900;
  	var selectedyear = eval(year) - thisyear + 4;
	var colore='blue';
  	var conditionalpadder = "";

	/////////// 
	n=0;
	var feste="";
	var bool=false;
	p=0;
  	for(r=0; r<6; r++) {
		targetwin.document.writeln("<TR>");
		for (c=0; c<7; c++) {
			// Crea la variabile "feste" del tipo gg/mm:
			if (day[r][c] <10) {
				if (month<10)
					feste=("0"+day[r][c]+"/"+"0"+month);
				else
					feste=("0"+day[r][c]+"/"+month);
			} else {
				if (month<10)
					feste=(day[r][c] +"/"+"0"+month);
				else
					feste=(day[r][c]+"/"+month) ;
			}
			// Fine crea "feste".
			
			pasqua= (Easter(year));
			// Cambia il colore del link se giorno=sabato,domenica,festivo:
			bool=(CalcolaFestivo(feste));
			if ((c>4 ) ||  (bool) || (feste==pasqua))	{			
				colore = 'red'			
			} else {
				colore = 'blue';
			}
			// Fine Cambia colore link.
    
    		targetwin.document.writeln("<TD>");
    		if(day[r][c] != null) {
      		if (day[r][c]<10)
        			conditionalpadder = "&nbsp;"+"&nbsp;"
      		else	
      			conditionalpadder = ""
				
				targetwin.document.writeln (
					"<a href=\"javascript:window.close();" +     
               "opener.document." + form.name + "." + dateFieldName + ".value = '" + twochar(day[r][c]) + "/" + twochar(month) +"/"+ year + "'" + 
               "\">" + conditionalpadder +"<Font Face='Verdana' SIZE=1 color="+ colore +">"+ day[r][c]+"</font>"+  conditionalpadder +  "</a>")
    		}
			
			// 
    		targetwin.document.writeln("</TD>");
   	}
   	targetwin.document.writeln("</TR>");
  	}
  	targetwin.document.writeln("</TABLE>"+"</TABLE>"+"</FORM>");
  	targetwin.document.close()
}

function calclastday(month,year) {
  if (month==2) 
	{
	if ((year%4)==0)
		return 29;
	else	return 28;
	}
  if ((month==1) || (month == 3) || (month == 5) || (month == 7) ||
      (month==8) || (month == 10) || (month ==12))
    return 31;
else  return 30;
}

function calcnextmonth(month) 
{
  if (month=="12")
    return "1";
  else
    return (eval(month)+1);
}

function calcnextyear(month,year) 
{
  if (month=="12")
    return (eval(year)+1);
  else
    return (year);
}

function calcprevmonth(month) 
{
  if (month=="1")
    return "12";
  else
    return (eval(month)-1);
}

function calcprevyear(month,year) 
{
  if (month=="1")
    return (eval(year)-1);
  else
    return (year);
}

// Funzione centraFinestra: riceve la stringa delle altre opzioni,
// ES:"width=300,height=300,resizable=yes";  ed apre la finestra centrata:
function centraFinestra(altreOpzioni)
{
altreOpzioni=altreOpzioni.toLowerCase();
var opzioni=altreOpzioni.split(",");
var valori; var wid=0; var hei=0;
var n=0; k=0;
do	{
	valori=opzioni[n].split("=");
	if (valori[0]=="width")	wid=valori[1];
	if (valori[0]=="height")	hei=valori[1];
	n+=1;
	}while (opzioni[n]!=null);
var w=window.screen.width-wid;
var h=window.screen.height-hei;
if(!isNaN(w) )	var x=parseInt(w/2);
else x=0;
if(!isNaN(h) )	var y=parseInt(h/2);
else y=0;
var stringa;
if (navigator.appVersion.indexOf("MSIE")!=-1) 
	{
	stringa=("left=" + x + ",top=" + y +",");
	}
else	{
	stringa=("screenX="+ x + ",screenY="+ y +",");
	}
    return (stringa + altreOpzioni);
}
// Fine centraFinestra.


//Controlli per le date
// La data è essere passata come paramatro: la funzione restituisce:
// la data stessa se è nel formato gg/mm/aaaa;
// la data modificata nel formato gg/mm/aaaa, se e di tipo g/m/aa o gg-mm-aaaa etc.
// false, altrimenti!
// Calcola se la data è inserita in modalità gg/mm/aaaa:
function checkdate(dataDa_A) 
	{
	if (dataDa_A=="") return dataDa_A;
	var j=0;var d8; var d9; var flag; var data="";var i;
	if (dataDa_A[10]== null) 
		{
		if ((dataDa_A[2]!="/") || (dataDa_A[5]!="/"))
			{	
			dataDa_A=dataDa_A.split("");   
			if (dataDa_A[1]=="/")
				inserisci(dataDa_A,0,"0");
			if (dataDa_A[4]=="/")
				inserisci(dataDa_A,3,"0");
			else
				{
				if (dataDa_A[5]!="/")
					{
					alert('Inserire la data nel formato gg/mm/aaaa');
					return false;
					}
				}

			flag= true;
			dataDa_A[2]="/";
			dataDa_A[5]="/";
			for (j=0;j<10;j++)
				data +=dataDa_A[j];
			}
			if (dataDa_A[9]== null)	
				{
				if (flag !=true)
					dataDa_A=dataDa_A.split("");
				if (dataDa_A[6] != null) d8=dataDa_A[6];
				else d8=0;
				if (dataDa_A[7] != null) d9=dataDa_A[7];
				else d9=0;
				inserisci(dataDa_A,6,"2");
				inserisci(dataDa_A,7,"0");
				inserisci(dataDa_A,8,d8);
				inserisci(dataDa_A,9,d9);
//				inserisci(dataDa_A,11,"");
				dataDa_A[2]="/";
				dataDa_A[5]="/";
				data="";
				for (j=0;j<10;j++)
					data +=dataDa_A[j];
				if (!checklettere(data)) return false;
				for (i=1;i<10;i++)
					{
					if ((i!=2) && (i!=5))
						{
						if (isNaN(dataDa_A[i]))
							{
							alert('Inserire la data nel formato gg/mm/aaaa');
							return false;
							}
						}
					}
				if (ControllaGGMM(data)) 
					{
					return data;
					}
				else
					{
					alert('Errore nel mese/giorno inseriti');
					return false;
					}
				}
			else 
				{
				dataDa_A[2]="/";
				dataDa_A[5]="/";

				if (!checklettere(data)) return false;
				if (!checklettere(dataDa_A)) return false;
				data="";
				for (j=0;j<10;j++) data +=dataDa_A[j];

				for (i=1;i<10;i++)
					{
					if ((i!=2) && (i!=5))
						{
						if (isNaN(dataDa_A[i]))
							{
							alert('Inserire la data nel formato gg/mm/aaaa');
							return false;
							}
						}
					}

				if (ControllaGGMM(data))
					{
					return data;
					}
				else
					{
					alert('Errore nel mese/giorno inseriti');
					return false;
					}
				}
		}
		else
			{
			alert('Inserire la data nel formato gg/mm/aaaa');
			return false;
			}
	}
// Fine checkdate.

// Riceve come argomenti: una stringa da modificare, un numero 
// che indica dove inserire il valore, ed un valore da inserire!
// Restituisce la stringa modificata con l'inserimento di "valore".
function inserisci (stringa,dove,valore)
	{
	var i=0; var n=0;;var max=0;var finale="";
	while (stringa[i]!= null)
		i++;
	max=i+1;
	for (n=max; n>dove; n--)
		stringa[n]=stringa[n-1];
	stringa[dove]=valore;
	for(i=0;i<max;i++)
		finale +=stringa[i];
	return finale;
	}
// Fine inserisci.

// Controlla se la stringa passata nel formato  (gg/mm/aaaa), contiene 
// solo numeri (oltre agli "/") ;
// Restituisce false se trova lettere; senò true. 
function checklettere(stringa)
		{
		var i=0 ;bool=true;
		while ((stringa[i] !=null) && (bool==true))
			{
			if (isNaN(stringa[i]))
				{		
				if((i!=2) && (i!=5)) bool=false;
				}
			
			i+=1;
			}
		if(i==0) return true;
		if (bool!=true) return false;
		else return true;
		}
// Fine checklettere.

// Calcola se il mese /giorno inseriti sono validi:
function ControllaGGMM(data)
	{
	var gg,mm;	
	gg=data.substring(0,2);
	mm=data.substring(3,5);
	if ((mm>12) || (mm<1)) return false;
	switch (parseInt(mm))
		{
		case (11):
			if ((gg>30) || (gg<1)) return false;
			else return true;
			break;
		case (4):
			if ((gg>30)  || (gg<1)) return false;
			else return true;
			break;
		case (6):
			if ((gg>30)  || (gg<1)) return false;
			else return true;
			break;
		case (9):
			if ((gg>30)  || (gg<1)) return false;
			else return true;
			break;
		case (2):
			if ((gg>29)  || (gg<1)) return false;
			else return true;
			break;
		default:
			if ((gg>31) || (gg<1)) return false;
			else return true;
			break;
		}
	}
// ControllaGGMM

function ControlloData(P_Data)
{
	result = checkdate(P_Data);
	if (result !=false) return result;
	else return ""

}


function putCalUrlLinking(url, param) 
{
  var version = navigator.appVersion;
  if (navigator.appVersion.indexOf("Mac") != -1) {
    calwin = open("","calwin","width=300,height=300,resizable=yes");
  } else {
	    calwin = open("","calwin",centraFinestra("width=210,height=230,resizable=yes"));
	}
	
  calcCalUrlLinking(calwin, url, param);
}

// qui
function calcCalUrlLinking(targetwin, url, param) { 
	var monthname = new Array(12);
	monthname[0] = "Gennaio";
	monthname[1] = "Febbraio";
	monthname[2] = "Marzo";
	monthname[3] = "Aprile";
	monthname[4] = "Maggio";
	monthname[5] = "Giugno";
	monthname[6] = "Luglio";
	monthname[7] = "Agosto";
	monthname[8] = "Settembre";
	monthname[9] = "Ottobre";
	monthname[10] = "Novembre";
	monthname[11] = "Dicembre";
	var endday = calclastday(eval(month),eval(year));
	mystr = month + "/00/" + year;
	mydate = new Date(mystr);
	firstday = mydate.getDay();
	var cnt = 0;
	var day = new Array(6);
	for (var i=0; i<6; i++)
		day[i] = new Array(7);
		
	for (var r=0; r<6; r++)	{
		for (var c=0; c<7; c++) {
			if ((cnt==0) && (c!=firstday)) {
				continue;
			}
			cnt++;
			day[r][c] = cnt;
			if (cnt==endday)
				break;
		}
		if (cnt==endday)
			break;
	}
	
	targetwin.document.open()
  	targetwin.document.writeln("<HEAD><TITLE>Calendario</TITLE><body onblur='self.focus()'><STYLE>A:link{text-decoration:none};A:hover{color:red}</STYLE></HEAD>")
  	targetwin.document.writeln("<BODY background='/HomeOverTravel/images/SfondoOverTravel2.gif'>")
  
  	targetwin.document.writeln("<FORM><TABLE><TR VALIGN=TOP>");
	var prevyear = eval(year) - 1;
   targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=prevyearbutton VALUE='<<'"+
   	" onclick='opener.month = " + month + "; opener.year = " + prevyear + ";document.clear();opener.calcCalUrlLinking(opener.calwin, \"" + url + "\",\"" + param + "\")'></TD>");
   	//opener.calccal(opener.calwin,opener.document." + form.name + ",\"" + dateFieldName + "\")'></TD>");
  	
  	var prevmonth = (month == 1) ? 12 : month - 1;
  	var prevmonthyear = (month == 1) ? year - 1 : year;
   targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=prevmonthbutton VALUE='&nbsp;<&nbsp;'"+
   	" onclick='opener.month = " + prevmonth + "; opener.year = " + prevmonthyear + ";document.clear();opener.calcCalUrlLinking(opener.calwin, \"" + url + "\",\"" + param + "\")'></TD>");
  	targetwin.document.writeln("<TD COLSPAN=3 ALIGN=CENTER>");
  	
  	var index = eval(month) - 1;
  	targetwin.document.writeln("<B><FONT FACE='Verdana' SIZE=1>" + monthname[index] + " " + year + "</FONT></B></TD>");
  	var nextyear = eval(year) + 1;        
  	var nextmonth = (month == 12) ? 1 : month + 1;
  	var nextmonthyear = (month == 12) ? (year + 1) : year;
   targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=nextmonthbutton VALUE='&nbsp;>&nbsp;'"+
   	" onclick='opener.month = " + nextmonth + "; opener.year = " + nextmonthyear + ";document.clear();opener.calcCalUrlLinking(opener.calwin, \"" + url + "\",\"" + param + "\")'></TD>");
   targetwin.document.writeln("<TD><INPUT TYPE=BUTTON NAME=nextyearbutton VALUE='>>'"+
   	" onclick='opener.month = " + month + "; opener.year = " + nextyear + ";document.clear();opener.calcCalUrlLinking(opener.calwin, \"" + url + "\",\"" + param + "\")'></TD>");
  	targetwin.document.writeln("</TR><TR></TABLE><TABLE CELLSPACING=0 CELLPADDING=0><TR>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Lu</FONT></TD>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Ma</FONT></TD>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Me</FONT></TD>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Gi</FONT></TD>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Ve</FONT></TD>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Sa</FONT></TD>");
  	targetwin.document.writeln("<TD><FONT FACE='Verdana' SIZE=1>Do</FONT></TD>");
  	targetwin.document.writeln("</TR>");
  	targetwin.document.writeln("<TR><TD COLSPAN=7><HR NOSHADE></TD></TR>");
  	targetwin.document.writeln("<TR><TD COLSPAN=7><TABLE  WIDTH=\"100%\" BORDER=\"0\">");
  	var selectedmonth = eval(month)-1;
  	var today = new Date();
  	var thisyear = today.getYear() + 1900;
  	var selectedyear = eval(year) - thisyear + 4;
	var colore='blue';
  	var conditionalpadder = "";

	/////////// 
	n=0;
	var feste="";
	var bool=false;
	p=0;
  	for(r=0; r<6; r++) {
		targetwin.document.writeln("<TR>");
		for (c=0; c<7; c++) {
			// Crea la variabile "feste" del tipo gg/mm:
			if (day[r][c] <10) {
				if (month<10)
					feste=("0"+day[r][c]+"/"+"0"+month);
				else
					feste=("0"+day[r][c]+"/"+month);
			} else {
				if (month<10)
					feste=(day[r][c] +"/"+"0"+month);
				else
					feste=(day[r][c]+"/"+month) ;
			}
			// Fine crea "feste".
			
			pasqua= (Easter(year));
			// Cambia il colore del link se giorno=sabato,domenica,festivo:
			bool=(CalcolaFestivo(feste));
			if ((c>4 ) ||  (bool) || (feste==pasqua))	{			
				colore = 'red'			
			} else {
				colore = 'blue';
			}
			// Fine Cambia colore link.
    
    		targetwin.document.writeln("<TD>");
    		if(day[r][c] != null) {
      		if (day[r][c]<10)
        			conditionalpadder = "&nbsp;"+"&nbsp;"
      		else	
      			conditionalpadder = ""
				var date = twochar(day[r][c]) + "/" + twochar(month) +"/"+ year ;
				if(url.indexOf("?")<0) 
					targetwin.document.writeln (
						"<a href=\"javascript:window.close();" +  
						"opener.location='" +url+"?"+param+"=" +date+"'"+  
						//"window.location=" +url+ "&DATE=" +date+
						//"sendDateToUrl('"+url+"', '" + twochar(day[r][c]) + "/" + twochar(month) +"/"+ year + "')" + 
               			//"opener.document." + form.name + "." + dateFieldName + ".value = '" + twochar(day[r][c]) + "/" + twochar(month) +"/"+ year + "'" + 
               			"\">" + conditionalpadder +"<Font Face='Verdana' SIZE=1 color="+ colore +">"+ day[r][c]+"</font>"+  conditionalpadder +  "</a>")
				else 
					targetwin.document.writeln (
						"<a href=\"javascript:window.close();" +  
						"opener.location='" +url+"&"+param+"=" +date+"'"+  
						//"window.location=" +url+ "&DATE=" +date+
						//"sendDateToUrl('"+url+"', '" + twochar(day[r][c]) + "/" + twochar(month) +"/"+ year + "')" + 
               			//"opener.document." + form.name + "." + dateFieldName + ".value = '" + twochar(day[r][c]) + "/" + twochar(month) +"/"+ year + "'" + 
               			"\">" + conditionalpadder +"<Font Face='Verdana' SIZE=1 color="+ colore +">"+ day[r][c]+"</font>"+  conditionalpadder +  "</a>")
    		}
			
    		targetwin.document.writeln("</TD>");
   	}
   	targetwin.document.writeln("</TR>");
  	}
  	targetwin.document.writeln("</TABLE>"+"</TABLE>"+"</FORM>");
  	targetwin.document.close()
}

function sendDateToUrl(url, date) {
	window.location = url+"?DATE="+date;
}

// attiva la dialog di consultazione del Calendario
function openCalendar(theForm, theText){
	getToday();
	putcal(theForm, theText.name);
}