﻿// 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

// 
// Part of CMS project.

var arr_months = ["Január", "Február", "Március", "Április", "Május", "Június",
		"Július", "Augusztus", "Szeptember", "Október", "November", "December"];
	
var static_timeneeded = true;
var static_css = "";
var static_image_prev = "";
var static_image_next = "";

var __CSS_STYLE1 = "\"form-background\"";
var __CSS_STYLE2 = "\"form-caption\"";

function show_calendar( str_target, str_datetime, str_timetarget, str_timetime, str_format, bool_timeneeded, str_css, image_prev, image_next ) {

	if (bool_timeneeded!=null) static_timeneeded = bool_timeneeded;
	if (str_css!=null) static_css = str_css;
	if (image_prev!=null) static_image_prev = image_prev;
	if (image_next!=null) static_image_next = image_next;
	
	var week_days = ["Va", "Hé", "Ke", "Sz", "Cs", "Pé", "Sz"];
	var n_weekstart = 1; // day week starts from (normally 0 or 1)

	var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() : getDate(str_datetime,str_format));
	if (dt_datetime==null)  {
		alert("Érvénytelen dátum ["+ str_datetime+"]. A dátum átáll a mai napra.");
 	dt_datetime = new Date();
	}
	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 (
		"<html>\n"+
		"<head>\n"+
		"	<title>CMS Dátum</title>\n"+
		"<link rel=\"stylesheet\" href=\""+static_css+"\" type=\"text/css\">"+
		"</head>\n"+
		"<body class=\"body\">\n"+
		"<form name=cal>"+
		"<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n"+
		"<tr><td class="+ __CSS_STYLE1 +">\n"+
		"<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n"+
		"<tr>\n	<td class="+ __CSS_STYLE1 +"><a class="+ __CSS_STYLE2 +" href=\"javascript:window.opener.show_calendar('"+
		str_target+"', '"+ formatDate(dt_prev_month,str_format)+"','"+str_timetarget+"',document.cal.time.value,'"+str_format+"');\">"+
//		"<<"+
		"<img src=\""+static_image_prev+"\" width=\"16\" height=\"16\" alt=\"<<\" border=\"0\""+
		" alt=\"previous month\">"+
		"</a></td>\n"+
		"	<td class="+ __CSS_STYLE2 +" colspan=\"5\">"+
		"<font face=\"tahoma, verdana\" size=\"2\">"
		+arr_months[dt_datetime.getMonth()]+" "+dt_datetime.getFullYear()+"</font></td>\n"+
		"	<td class="+ __CSS_STYLE1 +" align=\"right\"><a class="+ __CSS_STYLE2 +" href=\"javascript:window.opener.show_calendar('"
		+str_target+"', '"+formatDate(dt_next_month,str_format)+"','"+str_timetarget+"',document.cal.time.value,'"+str_format+"');\">"+
//		">>"+
		"<img src=\""+static_image_next+"\" width=\"16\" height=\"16\" alt=\"<<\" border=\"0\""+
		" alt=\"next month\">"+
		"</a></td>\n</tr>\n"
	);

	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 class="+ __CSS_STYLE2 +">"+
		"<font face=\"tahoma, verdana\" size=\"2\">"+
		week_days[(n_weekstart+n)%7]+"</font></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=\"#FFB6C1\" align=\"right\">";
				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
					// weekend days
					str_buffer += "	<td bgcolor=\"#DBEAF5\" align=\"right\">";
				else
					// print working days of current month
					str_buffer += "	<td bgcolor=\"white\" align=\"right\">";

				if (dt_current_day.getMonth() == dt_datetime.getMonth())
					// print days of current month
					str_buffer += "<a href=\"javascript:window.opener."+str_target+
					".value='"+formatDate(dt_current_day,str_format)+"';window.opener."+str_timetarget+
					".value=document.cal.time.value;window.close();\">"+
					"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
				else 
					// print days of other months
					str_buffer += "<a href=\"javascript:window.opener."+str_target+
					".value='"+formatDate(dt_current_day,str_format)+"';window.opener."+str_timetarget+
					".value=document.cal.time.value;window.close();\">"+
					"<font color=\"gray\" face=\"tahoma, verdana\" size=\"2\">";
				str_buffer += dt_current_day.getDate()+"</font></a></td>\n";
				dt_current_day.setDate(dt_current_day.getDate()+1);
		}
		// print row footer
		str_buffer += "</tr>\n";
	}
	// print calendar footer
	str_buffer +=
		"<form name=\"cal\">\n<tr><td colspan=\"3\" class="+ __CSS_STYLE2 +">"+
		"<font face=\"tahoma, verdana\" size=\"2\">";

 if (static_timeneeded==true) {
 	str_buffer +=
		"Idő: <input type=\"text\" name=\"time\" value=\""+dt2tmstr(str_timetime)+
		"\" size=\"5\" maxlength=\"5\">";
 } else {
// hiddenbe pakoljuk csak, mert igazabol nincs ra szukseg.
 	str_buffer +=
		"<input type=\"hidden\" name=\"time\" value=\""+dt2tmstr(str_timetime)+
		"\" size=\"3\" maxlength=\"5\">";
 }

 // OK (ez a gomb csak a kapott datumot visszaadja, az idon valtoztathat csak ezert!) es Megsem gombok
	str_buffer += "</font></td>"+
  "<td colspan=\"2\" class="+ __CSS_STYLE2 +">"+
		"<font face=\"tahoma, verdana\" size=\"2\">"+
		"<a href=\"javascript:window.opener."+str_target+
					".value='"+formatDate(dt_datetime,str_format)+"';window.opener."+str_timetarget+
					".value=document.cal.time.value;window.close();\">"+
		"<font color=\"#444444\" face=\"tahoma, verdana\" size=\"2\">Beállít</font></a>\n</td>"+


  "<td colspan=\"4\" class="+ __CSS_STYLE2 +">"+

		"<a href=\"javascript:window.close()\">"+
		"<font face=\"tahoma, verdana\" color=\"#444444\" size=\"2\">Vissza</font></a>"+

		"<br><font face=\"tahoma, verdana\" size=\"2\">"+
		"<a href=\"javascript:window.opener."+str_target+
					".value='"+formatDate(new Date(),str_format)+"';window.opener."+str_timetarget+
					".value='"+getNowTime()+"';window.close();\">"+
		"<font color=\"#444444\" face=\"tahoma, verdana\" size=\"1\">Most</font></a></td>\n"+

		"</td>"+
	// a vege		
	 "</tr>\n</form>\n" +
		"</table>\n" +
		"</tr>\n</td>\n</table>\n" +
		"</form>"+
		"</body>\n" +
		"</html>\n";

	var vWinCal = window.open("", "Calendar", 
		"width=200,height=250,status=no,resizable=yes,top=200,left=200");
 vWinCal.focus();
	vWinCal.opener = self;
	var calc_doc = vWinCal.document;
	calc_doc.write (str_buffer);
	calc_doc.close();
}

// parses time to Date, with FEAK year month and day set!
function str2timedate (str_datetime) {
	var re_date = /^(\d+)\:(\d+)$/;
	if (!re_date.exec(str_datetime)) {
		alert("Nem megfelelő formátumú idő ["+ str_datetime +"]. A idő átáll a jelenlegi időre.");
		return new Date();
	}
	return (new Date (2000,1,1, RegExp.$1, RegExp.$2));
}


// idot leiro stringet csinalja meg. a parser segitsegevel datumba formazza, majd osszeallitja a stringet.
function dt2tmstr (str_time) {
	dt_datetime = str2timedate(str_time);
	return (new String (
			padZero(dt_datetime.getHours())+":"+padZero(dt_datetime.getMinutes())));
}

function getNowTime() {
	dt_datetime = new Date();
	return (new String (
			padZero(dt_datetime.getHours())+":"+padZero(dt_datetime.getMinutes())));
}


// pad with zeros
function padZero(num) {
   return (num	< 10)? '0' + num : num ;
}



