// Title: Timestamp picker
// Description: See the demo at url
// URL: http://us.geocities.com/tspicker/
// Script featured on: http://javascriptkit.com/script/script2/timestamp.shtml
// Version: 1.0
// Date: 12-05-2001 (mm-dd-yyyy)
// Author: Denis Gritcyuk <denis@softcomplex.com>; <tspicker@yahoo.com>
// Notes: Permission given to use this script in any kind of applications if
//    header lines are left unchanged. Feel free to contact the author
//    for feature requests and/or donations

function show_calendar(str_target, str_datetime) {
	var arr_months = ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno",
		"Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"];
	var week_days = ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"];
	var n_weekstart = 1; // day week starts from (normally 0 or 1)

	var dt_datetime = (str_datetime == null || str_datetime =="" || str_datetime =="gg-mm-aaaa" ?  new Date() : str2dt(str_datetime));
	var dt_prev_month = new Date(dt_datetime);
	dt_prev_month.setMonth(dt_datetime.getMonth()-1);
	var dt_next_month = new Date(dt_datetime);
	dt_next_month.setMonth(dt_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);
	
	// html generation (feel free to tune it for your particular application)
	// print calendar header
	var str_buffer = new String (
	    "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n"+
		"<html>\n"+
		"<head>\n"+
		"<title>VIEST - Calendario</title>\n"+
		"<link rel=\"stylesheet\" type=\"text/css\" href=\"../../css/style.css\"/>\n"+
		"</head>\n"+
		"<body style=\"margin: 0px\">\n"+
	    "<table width=\"270\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\" summary=\"Calendario\">\n"+
		" <tr>\n"+
		"  <td colspan=\"2\" height=\"14\"><img src=\"../../images/spacer.gif\" width=\"1\" height=\"1\" alt=\"spaziatore\"></td>\n"+
		" </tr>\n"+
		" <tr>\n"+
		"  <td><img src=\"../../images/spacer.gif\" width=\"22\" height=\"1\" alt=\"spaziatore\"></td>\n"+
		"  <td width=\"248\"><img src=\"../../images/it/titCalendar.gif\" width=\"105\" height=\"18\" alt=\"spaziatore\"></td>\n"+
		" </tr>\n"+
		" <tr>\n"+
		"  <td colspan=\"2\" height=\"10\"><img src=\"../../images/spacer.gif\" width=\"1\" height=\"1\" alt=\"spaziatore\"></td>\n"+
		" </tr>\n"+
		" <tr>\n"+
		"  <td colspan=\"2\" align=\"center\">\n"+
		"   <table width=\"230\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" summary=\"Calendario\">\n"+
		"    <tr>\n"+
		"     <td colspan=\"2\" align=\"center\" class=\"t11_marrone\"><b>"+arr_months[dt_datetime.getMonth()]+" "+dt_datetime.getFullYear()+"</b></td>\n"+
		"    </tr>\n"+
		"    <tr>\n"+
		"     <td colspan=\"2\" height=\"5\"><img src=\"../../images/spacer.gif\" width=\"1\" height=\"1\" alt=\"spaziatore\"></td>\n"+
		"    </tr>\n"+
		"    <tr>\n"+
		"     <td class=\"t11_grigio\"><img src=\"../../images/frSX.gif\" width=\"4\" height=\"7\" alt=\"freccia\">"+
		"     &nbsp;<a href=\"javascript:window.opener.show_calendar('"+str_target+"','"+ dt2dtstr(dt_prev_month)+"');\">Precedente</a></td>\n"+
		"     <td align=\"right\" class=\"t11_grigio\">"+
		"     <a href=\"javascript:window.opener.show_calendar('"+str_target+"','"+dt2dtstr(dt_next_month)+"');\">Successivo</a>&nbsp;<img src=\"../../images/frDX.gif\" width=\"4\" height=\"7\" alt=\"freccia\"></td>\n"+
		"    </tr>\n"+
		"    <tr>\n"+
		"     <td colspan=\"2\" height=\"13\"><img src=\"../../images/spacer.gif\" width=\"1\" height=\"1\" alt=\"spaziatore\"></td>\n"+
		"    </tr>\n"+
		"    <tr>\n"+
		"     <td colspan=\"2\" align=\"center\">\n"+
		"      <table bgcolor=\"#E1DFDC\" width=\"195\" cellspacing=\"1\" cellpadding=\"3\" border=\"0\" summary=\"Calendario\">");
		var dt_current_day = new Date(dt_firstday);
		// print weekdays titles
		str_buffer += "<tr>\n";
		for (var n=0; n<7; n++)
			str_buffer += "	<td width=\"27\" height=\"24\" valign=\"middle\" align=\"center\" bgcolor=\"#F0EFED\" class=\"t11_grigio\"><b>"+
			week_days[(n_weekstart+n)%7]+"</b></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++) {
				if (dt_current_day.getDate() == dt_datetime.getDate() &&
					dt_current_day.getMonth() == dt_datetime.getMonth()){
					// print current date
					str_buffer += "	<td bgcolor=\"#FFFFFF\" width=\"27\" height=\"24\" valign=\"middle\" align=\"center\" class=\"t11_marrone\"><b>";
					if (dt_current_day.getMonth() == dt_datetime.getMonth()){
						// print days of current month
						str_buffer += "<a href=\"javascript:window.opener."+str_target+
							".value='"+dt2dtstr(dt_current_day)+"'; window.close();\">";
					}else{
						// print days of other months
						str_buffer += "<a href=\"javascript:window.opener."+str_target+
						".value='"+dt2dtstr(dt_current_day)+"'; window.close();\">";
					}
					str_buffer += dt_current_day.getDate()+"</b></a></td>\n";
				}else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6){
					// weekend days
					str_buffer += "	<td bgcolor=\"#C7C6C3\" width=\"27\" height=\"24\" valign=\"middle\" align=\"center\" class=\"t11\">";
				    if (dt_current_day.getMonth() == dt_datetime.getMonth()){
						// print days of current month
						str_buffer += "<a href=\"javascript:window.opener."+str_target+
							".value='"+dt2dtstr(dt_current_day)+"'; window.close();\">";
					}else{
						// print days of other months
						str_buffer += "<a href=\"javascript:window.opener."+str_target+
						".value='"+dt2dtstr(dt_current_day)+"'; window.close();\">";
					}
					str_buffer += dt_current_day.getDate()+"</a></td>\n";
				}else{
				    if (dt_current_day.getMonth() == dt_datetime.getMonth()){
						// print working days of current month
						str_buffer += "	<td bgcolor=\"#F0EFED\" width=\"27\" height=\"24\" valign=\"middle\" align=\"center\" class=\"t11\">";
						str_buffer += "<a href=\"javascript:window.opener."+str_target+
							".value='"+dt2dtstr(dt_current_day)+"'; window.close();\">";
						str_buffer += dt_current_day.getDate()+"</a></td>\n";
					}else{
						// print working days of other month
						str_buffer += "	<td bgcolor=\"#F0EFED\" width=\"27\" height=\"24\" valign=\"middle\" align=\"center\" class=\"t11_grigio\">";
						str_buffer += "<a href=\"javascript:window.opener."+str_target+
							".value='"+dt2dtstr(dt_current_day)+"'; window.close();\">";
						str_buffer += dt_current_day.getDate()+"</a></td>\n";
					}
					
				}
				dt_current_day.setDate(dt_current_day.getDate()+1);
			}
			// print row footer
			str_buffer += "</tr>\n";
		}
str_buffer += "</table>\n"+
		"     </td>\n"+
		"    </tr>\n"+
		"    <tr>\n"+
		"     <td colspan=\"2\" height=\"13\"><img src=\"../../images/spacer.gif\" width=\"1\" height=\"1\" alt=\"spaziatore\"></td>\n"+
		"    </tr>\n"+
		"    <tr>\n"+
		"     <td colspan=\"2\" align=\"center\" class=\"t11_grigio\">Clicca sul giorno desiderato</td>\n"+
		"    </tr>\n"+
		"   </table>\n"+
		"  </td>\n"+
		" </tr>\n"+
		"</table>\n" +
		"</body>\n" +
		"</html>\n";
	
	if (document.all){
    	var x = window.screenLeft;
      	var y = window.screenTop;
      	var w = window.document.body.offsetWidth;
      	var h = window.document.body.offsetHeight;
 	} else {
   		var x = window.screenX;
   		var y = window.screenY;
   		var w = window.outerWidth;
   		var h = window.outerHeight;
 	}
 	var cntx = x + Math.round((w - 270) / 2);
 	var cnty = y + Math.round((h - 300) / 2);
 	var vWinCal = window.open ("", "Calendar", 'left=' + cntx + ',top=' + cnty + ',width=270,height=300,status=no,resizable=yes');
	
	vWinCal.opener = self;
	var calc_doc = vWinCal.document;
	calc_doc.write (str_buffer);
	calc_doc.close();
}
// datetime parsing and formatting routimes. modify them if you wish other datetime format
function str2dt (str_datetime) {
	//var re_date = /^(\d+)\-(\d+)\-(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;
	var re_date = /^(\d+)\-(\d+)\-(\d+)$/;
	if (!re_date.exec(str_datetime))
		return alert("Formato della data non valido: "+ str_datetime);
	return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1, RegExp.$4, RegExp.$5, RegExp.$6));
}
function dt2dtstr (dt_datetime) {
	return (new String (
			dt_datetime.getDate()+"-"+(dt_datetime.getMonth()+1)+"-"+dt_datetime.getFullYear()));
}
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}