// 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;

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){
  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=0;i<80;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;
}

function show_calendar(str_target, str_datetime) {
	var arr_months = ["January", "February", "March", "April", "May", "Juny",
		"July", "August", "September", "Octomber", "November", "December"];
	var week_days = ["Su", "Mo", "Tu", "We", "Thu", "Fri", "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=\"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 style='30px'><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 style='30px'><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" +
		"</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();
}
// 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));
}


