// JScript File 
function show_calendar(str_target, str_datetime, str_date_sel, cssPath) 
{
    var str_target_to = str_target.id.substring(0, str_target.id.indexOf("Periodo")) + "PeriodoAl";
        
	var today = new Date();
    
	var arr_months = ["JANVIER", "FÉVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AO&Ucirc;T", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DÉCEMBRE"];
	var week_days = ["di", "lu", "ma", "me", "je", "ve", "sa"];
	var n_weekstart = 1; // day week starts from (normally 0 or 1)

	var dt_datetime = (str_datetime == null || str_datetime == "" ? new Date() : str2dt(str_datetime));
	var dt_date_sel = (str_date_sel == null || str_date_sel == "" ? new Date() : str2dt(str_date_sel));
	
    var aux_datetime = dt_datetime;
    
    if(dt_datetime.getMonth() == 0 && dt_datetime.getDate() > 28)
        aux_datetime = new Date(dt_datetime.getFullYear(), dt_datetime.getMonth(), 27)
	
	var dt_prev_month = new Date(dt_datetime);
	dt_prev_month.setMonth(dt_datetime.getMonth()-1);
	
	var dt_next_month = new Date(aux_datetime);
	dt_next_month.setMonth(aux_datetime.getMonth()+1);
	
	var dt_firstday = new Date(dt_datetime);
	dt_firstday.setDate(1);
	dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);
	
	var dt_lastday = new Date(dt_next_month);
	dt_lastday.setDate(0);
	
	var str_buffer = new String (
		"<html>\n" +
		"<head>\n" +
		"	<title>Partenza</title>\n" +
		"   <link rel=\"stylesheet\" href=\"" + cssPath + "\">" +
		"</head>\n" +
		"<body style=\"margin:0;margin-left:5px;\">\n" +
		"<table cellspacing=\"0\" border=\"0\" width=\"150\" bgcolor=\"#ffffff\">\n" +
		"	<tr><td>\n" +
		"			<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n" +
		"			<tr>\n" +
		"				<td align=\"left\"><a class=\"CalendarMonths\" style=\"font-size:11px;\" href=\"javascript:window.parent.show_calendar(window.parent.document.getElementById('" + str_target.id + "'), '" + dt2dtstr(dt_prev_month) + "', '" + dt2dtstr(dt_date_sel) + "', '" + cssPath + "');\">&laquo;</a></td>\n" +
		"				<td colspan=\"5\" align=center><font class=\"CalendarMonths\">" + arr_months[dt_datetime.getMonth()] + " " + dt_datetime.getFullYear()+ "</font></td>\n" +
		"				<td align=\"right\"><a class=\"CalendarMonths\" style=\"font-size:11px;\" href=\"javascript:window.parent.show_calendar(window.parent.document.getElementById('" + str_target.id + "'), '" + dt2dtstr(dt_next_month) + "', '" + dt2dtstr(dt_date_sel) + "', '" + cssPath + "');\">&raquo;</a></td>\n</tr>\n"
	);

	var dt_current_day = new Date(dt_firstday);
	var dt_datetime_to = new Date(dt_current_day.getFullYear(), dt_current_day.getMonth() , dt_current_day.getDate()+ 1);

	// print weekdays titles
	str_buffer += "<tr>\n";
	
	for (var n=0; n<7; n++)
		str_buffer += "	<td face=\"verdana\" class=\"DayNameHeader\" align=center>" + week_days[(n_weekstart+n)%7] + "</td>\n";

	// print calendar table
	str_buffer += "</tr>\n";
	
	while (dt_current_day.getMonth() == dt_datetime.getMonth() || dt_current_day.getMonth() == dt_firstday.getMonth()) 
	{
		// print row heder
		str_buffer += "<tr>\n";
		
		for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {

			// current date
			if (dt_current_day.getDate() == dt_date_sel.getDate() && dt_current_day.getMonth() == dt_date_sel.getMonth())
				str_buffer += "	<td class=\"DayName_SelectedDay_BackGround\" align=\"center\">";
			// weekend days
			else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
				str_buffer += "	<td bgcolor=\"white\" align=\"center\">";
			// working days of current month
			else
				str_buffer += "	<td bgcolor=\"white\" align=\"center\">";

			// days of current month
			if (dt_current_day.getMonth() == dt_datetime.getMonth())
			{
				// current date
				if (dt_current_day.getDate() == dt_date_sel.getDate() && dt_current_day.getMonth() == dt_date_sel.getMonth())
					str_buffer += "<a class=\"DayName_SelectedDay\" href=\"javascript:window.parent.document.getElementById('" + str_target_to + "').value='" + dt2dtstr(dt_datetime_to) + "';window.parent.document.getElementById('" + str_target.id + "').value='" + dt2dtstr(dt_current_day) + "'; window.close();window.parent.document.getElementById('ifrmCalendar').style.height=0;\">" + dt_current_day.getDate() + "</a></td>\n";
				// weekend days
				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
				{
					if(dt_current_day >= today || (dt_current_day.getDate() == today.getDate() && dt_current_day.getMonth() == today.getMonth() && dt_current_day.getFullYear() == today.getFullYear()))
						str_buffer += "<a class=\"DayName_WeekendDays\" href=\"javascript:window.parent.document.getElementById('" + str_target_to + "').value='" + dt2dtstr(dt_datetime_to) + "';window.parent.document.getElementById('" + str_target.id + "').value='" + dt2dtstr(dt_current_day) + "'; window.close();window.parent.document.getElementById('ifrmCalendar').style.height=0;\">" + dt_current_day.getDate() + "</a></td>\n";
					else
						str_buffer += "<font class=\"DayName_WeekendDays\">" + dt_current_day.getDate() + "</font></td>\n";
				}
				else
				{
					if(dt_current_day >= today || (dt_current_day.getDate() == today.getDate() && dt_current_day.getMonth() == today.getMonth() && dt_current_day.getFullYear() == today.getFullYear()))
						str_buffer += "<a class=\"DayName_WeekDays\" href=\"javascript:window.parent.document.getElementById('" + str_target_to + "').value='" + dt2dtstr(dt_datetime_to) + "';window.parent.document.getElementById('" + str_target.id + "').value='" + dt2dtstr(dt_current_day) + "'; window.close();window.parent.document.getElementById('ifrmCalendar').style.height=0;\">" + dt_current_day.getDate() + "</a></td>\n";
					else
						str_buffer += "<font class=\"DayName_WeekDays\">" + dt_current_day.getDate() + "</font></td>\n";
				}
			}
			// days of other months
			else
			{
				if(dt_current_day >= today)
					str_buffer += "<a class=\"DayName_OtherMonth\" href=\"javascript:window.parent.document.getElementById('" + str_target_to + "').value='" + dt2dtstr(dt_datetime_to) + "';window.parent.document.getElementById('" + str_target.id + "').value='" + dt2dtstr(dt_current_day) + "'; window.close();window.parent.document.getElementById('ifrmCalendar').style.height=0;\">" + dt_current_day.getDate() + "</a></td>\n";
				else
					str_buffer += "<font class=\"DayName_OtherMonth\">" + dt_current_day.getDate() + "</font></td>\n";
			}
			
			dt_current_day.setDate(dt_current_day.getDate()+1);
			dt_datetime_to = new Date(dt_current_day.getFullYear(), dt_current_day.getMonth(), dt_current_day.getDate() + 1);
		}
		// row footer
		str_buffer += "</tr>\n";
	}

	// print calendar footer
	str_buffer +=
		"<form name=\"cal\">\n</form>\n" +
		"</table>\n</td>\n</tr>" +
		"<tr height=5><td></td></tr>\n" +
		"<tr valign=bottom><td align=right style=\"font-family:verdana;font-size:9px;color:#000000;\">|<a style=\"font-family:verdana;font-size:9px;color:#000000;text-decoration:none;\" href=\"javascript:window.close();window.parent.document.getElementById('ifrmCalendar').style.height=0;\">chiudi</a>|</td></tr></table>" +
		"</body>\n" +
		"</html>\n";

	var vWinCal = window.open("", "ifrmCalendar", "width=130,height=195,status=no,resizable=no");		
	vWinCal.opener = self;
	var calc_doc = vWinCal.document;
	calc_doc.write (str_buffer);
	calc_doc.close();
	
	document.getElementById("ifrmCalendar").style.height = 180;
}

// string to date
function str2dt (str_datetime) 
{
	var re_date1 = /^(\d+)\/(\d+)\/(\d+)$/;
	var re_date2 = /^(\d+)\-(\d+)\-(\d+)$/;

	if ((!re_date1.exec(str_datetime)) && (!re_date2.exec(str_datetime)))
		return alert("Formato della data non corretto: " + str_datetime);

	return (new Date (RegExp.$1, RegExp.$2-1, RegExp.$3));
}

// date to string
function dt2dtstr (dt_datetime) 
{
	var gg = new String (dt_datetime.getDate());
	if(gg.length == 1)
		gg = "0" + gg;
	
	var mm = new String (dt_datetime.getMonth() + 1);
	if(mm.length == 1)
		mm = "0" + mm;
	
	var aa = new String (dt_datetime.getFullYear());

	return (aa + "-" + mm + "-" + gg);
}

function ctrlDate (parent, cssPath) 
{
    var obj, txtbox_date;

    arrDIV = document.getElementsByTagName('input');
    
    if(arrDIV.length != 0)
    {   
        for (var i = 0; i < arrDIV.length; i++)
        {
            if(arrDIV[i].id.indexOf(parent) > -1)	        
            {
               obj = arrDIV[i];
               txtbox_date = arrDIV[i].value;
            }	        
        }                
    }    
    
	var re_date1 = /^(\d+)\/(\d+)\/(\d+)$/;
	var re_date2 = /^(\d+)\-(\d+)\-(\d+)$/;

	if(txtbox_date == '')
	{
		var today = new Date();

		var gg = '00' + today.getDate();
		gg = gg.substring((gg.length - 2),gg.length);

		var mm = '00' + (today.getMonth() + 1);
		mm = mm.substring((mm.length - 2),mm.length);
		
		var yyyy = today.getFullYear();
		
		txtbox_date = yyyy + "-" + mm + "-" + gg;
	}
		
	if ((!re_date1.exec(txtbox_date)) && (!re_date2.exec(txtbox_date)))
		alert("Il formato della data non è corretto.\nes: 05/05/2005");
	else
	{
	    
	
		show_calendar(obj, txtbox_date, txtbox_date, cssPath);
    }
}


