// 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

var xCoord;
var yCoord;
var opera=172;
var calAniInUrma = 0;
var calAniInFata = 1;
var baseURL = '';

function checkwhere(e) {
    if (document.layers){
    xCoord = e.x;
    yCoord = e.y;
  }
  else if (document.all){
    xCoord = event.clientX;
    yCoord = event.clientY;
  }
  else if (document.getElementById){
    xCoord = e.clientX;
    yCoord = e.clientY;
  }
  return true;
}

document.onmousemove = checkwhere;
if(document.captureEvents) {document.captureEvents(Event.MOUSEMOVE); opera=226;}

function sanitize(str)
{
	 from = new Array('\'');
	 to  = new Array('\\\'');
	 var result = '';

   for(i = 0; i < str.length; i++)
	 {
		 var replaced = false;
		 for(j = 0; j < from.length; j++)
			   if(str.charAt(i) == from[j]) 
				 {
					 result += to[j];
					 replaced = true;
					 break;
				 }
			if(!replaced) result += str.charAt(i);
	 }
	 return result;
}

function year_form(sdate,str_target){
	try
	{
		var tstr;
		var now = new Date()
		var cyear = now.getFullYear();
		var syear = sdate.getFullYear();
		str_target = sanitize(str_target);
		if(syear < 1900) syear += 1900;//daca e 2000 il vede ca 100
		if(cyear < 1900) cyear += 1900;//daca e 2000 il vede ca 100
		tstr="&nbsp;<select id=\"year_sel\" style=\"font-size: 10px; height: 17px; width: 50px;\" onchange=\"window.opener.show_calendar('" + str_target + "',this.options[this.selectedIndex].value + '-" + (sdate.getMonth()+1) + "-" + sdate.getDate() + "');\">";
		for(var i = -calAniInUrma; i < calAniInFata + 1; i++){
			tstr+="<option value=\"" + (cyear+i) + "\"";
			if((cyear+i) == syear) tstr += " selected";
			tstr+=">" + (cyear+i) + "</option>";
		}
		tstr+="</select>";
		tstr+="<script type='text/javascript'>document.getElementById(\"year_sel\").focus()</script>";
		return tstr;
	}catch(e){}
}

function show_calendar(str_target, str_datetime) 
{
	try
	{
		var arr_months = ["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie",
			"Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"];
		var week_days = ["Du", "Lu", "Ma", "Mi", "Joi", "Vi", "Sa"];
		var n_weekstart = 1; // day week starts from (normally 0 or 1) --> luni
		var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() : str2dt(str_datetime));
	
		var dt_prev_month = new Date(dt_datetime);
		dt_prev_month.setMonth(dt_datetime.getMonth()-1);
		var dt_prev_year = new Date(dt_datetime);
		dt_prev_year.setYear(dt_datetime.getYear()-1);
		var dt_next_month = new Date(dt_datetime);
		dt_next_month.setMonth(dt_datetime.getMonth()+1);
		var dt_next_year = new Date(dt_datetime);
		dt_next_year.setYear(dt_datetime.getYear()+1);
	
		var dt_firstday = new Date(dt_datetime);
		dt_firstday.setDate(1);
			//imi da cate zile am inainte de a incepe luna
			var tmp = (7+dt_firstday.getDay()-n_weekstart)%7;
			//sa imi schimbe luna
		dt_firstday.setDate(-1);
		//var dt_lastday = new Date(dt_next_month);
		//dt_lastday.setDate(0);
			mlen = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
			var m = dt_datetime.getMonth();
			var d = 1 - tmp;
			if( dt_datetime.getYear()%4 == 0 ) mlen[1]=29;//il facem bisect
	
		var dt_lastday = new Date(dt_datetime);
		dt_lastday.setMonth(dt_lastday.getMonth()+1);
		var dt_tdate = new Date(dt_datetime);
	
		var str_buffer;
		
		str_buffer = "<html>\n"+
		"<head>\n"+
		"<link type=\"text/css\" rel=\"stylesheet\" href=\""+baseURL+"calendar_style.css\">"+
		"<title>Calendar</title>\n"+
		"</head>\n"+
		"<body>\n"+
		"<div id='tableDiv' style='width: 100%;height: 100%; position: relative;'>\n";
		// html generation (feel free to tune it for your particular application)
		// print calendar header
		str_buffer +=
		"<table cellspacing=\"1\" cellpadding=\"0\" width=\"100%\">\n"+
		"<tr><td style=\"border: 1px solid #fff;\"><div align=\"center\">\n"+
				"<table cellspacing=\"1\" cellpadding=\"0\" widtth=\"100%\" class='calmenu'>\n"+
		"<tr>\n<td><a href=\"javascript:window.opener.show_calendar('"+
		sanitize(str_target)+"', '"+ dt2dtstr(dt_prev_month)+"');\">"+
		"&lt;</a></td>\n"+
		"<td nowrap>"
		+arr_months[dt_datetime.getMonth()]+ year_form(dt_datetime,str_target) +
				"</td>\n<td><a href=\"javascript:window.opener.show_calendar('"
		+sanitize(str_target)+"', '"+dt2dtstr(dt_next_month)+"');\">"+
		"&gt;</a></td>\n</tr></table></div></td></tr>\n";
	
		var tdate;
		var tday;
	
		// print weekdays titles
		str_buffer += "<tr><td><table cellspacing=1 width=\"100%\" height=\"100%\" class=\"cal\">\n";
		for (var i=0; i<7; i++)//lu ma mie... etc
			str_buffer += "	<td class=\"calday\">"+
			week_days[(n_weekstart+i)%7]+"</font></td>\n";
		// print calendar table
		str_buffer += "</tr>\n";
	
			while(d <= mlen[dt_datetime.getMonth()]){
			str_buffer += "<tr>\n";//prima sapt special
			for(var i=0; i<7; i++){
				if(d<1){
					str_buffer += "<td class=\"calpnmonth\"";
					tday = (mlen[dt_firstday.getMonth()]+d);
					tdate = dt2dtstrr(tday,dt_firstday.getMonth(),dt_firstday.getFullYear());
				}
				else if(d>mlen[dt_datetime.getMonth()]){
					str_buffer += "<td class=\"calpnmonth\"";
					tday = (d-mlen[dt_datetime.getMonth()]);
					tdate = dt2dtstrr(tday,dt_lastday.getMonth(),dt_lastday.getFullYear());
				}
				else{
					str_buffer += "<td";
					tday = d;
					if(dt_datetime.getMonth()!=0)
					tdate = dt2dtstrr(tday,dt_datetime.getMonth(),dt_firstday.getFullYear());
					else
					tdate = dt2dtstrr(tday,dt_datetime.getMonth(),dt_firstday.getFullYear()+1);
				}
				//alert(tdate);
				d++;
				if (dt_tdate.getDate()==tday){
				 str_buffer += " class=\"calcurday\">";
				}
				else if (i == 5 || i == 6){//weekend
			str_buffer += " class=\"calwend\">";
				}
				else //orice zi
					 str_buffer += ">";
				str_buffer += "<a href=\"javascript: window.opener."+ str_target +
			".value='" + tdate + "'; window.close();\">" + tday + "</a></td>";
			}
			str_buffer += "</tr>\n";
			}
		// print calendar footer
		str_buffer +=
			"</div></td></tr></table>\n" +
			"</tr>\n</td>\n</table>\n" +
			"<script type=\"text/javascript\">this.focus()</script>" +
			"</body>\n" +
			"</html>\n";
	
		var vWinCal = window.open("", "calendar", "width=200,height=" + opera + 
			",status=no,resizable=no,scrollbars=no,top=" + (yCoord-(opera/2)) + 
			",left=" + (xCoord-100));
		var calc_doc = vWinCal.document;
		calc_doc.write (str_buffer);
		calc_doc.close();
	}catch(e){}
}
// datetime parsing and formatting routimes. modify them if you wish other datetime format
function str2dt (str_datetime) {
	var re_date = /^(\d+)\-(\d+)\-(\d+)$/;
	if (!re_date.exec(str_datetime))
		return alert("Invalid Datetime format: "+ str_datetime);
	return (new Date (RegExp.$1, RegExp.$2-1, RegExp.$3));
}

function dt2dtstr (t_datetime) {
	//return (new String (
	//		t_datetime.getDate()+"-"+(t_datetime.getMonth()+1)+"-"+t_datetime.getFullYear()));
	return (new String (
			t_datetime.getFullYear()+"-"+(t_datetime.getMonth()+1)+"-"+t_datetime.getDate()));
}

function dt2dtstrr (t_day,t_month,t_year) {
	return (new String (t_year+"-"+(t_month+1)+"-"+t_day));
}

