var temp;
function show_calendar(str_target, str_datetime,sDateChecked)
 {
	
	
	var checkedDate = document.getElementById(sDateChecked).value; 
	if (checkedDate!=null && checkedDate.length>0)
		checkedDate += '00:00:00';
	//alert(checkedDate);
	
		
	var arr_months = ["January","February","March","April","May","June","July","August","September","October","November","December"];//;arr_mon.split(',');
	//var week_days = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
	//var week_days =  ["Sunday","Monday","Tuesday","Wensday","Thirsday","Friday"];//arr_week_days.split(','); 
	var week_days =  ["SU","MO","TU","WE","TH","FR","SA"];//arr_week_days.split(','); 
	//alert(week_days)
	var n_weekstart = 1; // day week starts from (normally 0 or 1)
	var dt_datetime = new Date();
	var dt_CheckedDate = new Date();
	var dt_now = new Date();
	
	if (checkedDate!=null && checkedDate!="")
		dt_CheckedDate = str2dt(checkedDate);
	else
		dt_CheckedDate = null;
		
	//alert(dt_CheckedDate);
	
	if (str_datetime == null || str_datetime =="")
	   dt_datetime =  new Date() ;
	else
	{
	   str_datetime = str_datetime + dt2tmstr(dt_datetime)
	   //alert('str_datetime=' + str_datetime);
	   dt_datetime =   str2dt(str_datetime);
	}

    var year=dt_datetime.getYear();
    if (dt_datetime.getYear()<1900)
    {
        year+=1900;
    }
	var dt_prev_year = new Date(dt_datetime);
	dt_prev_year.setYear(year-1);
	var dt_next_year = new Date(dt_datetime);
	dt_next_year.setYear(year+1);
	
	//alert('dt_prev_year = ' + dt_prev_year)
	//alert('dt_next_year = ' + dt_next_year)
   
	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);
	//window.
	
	// html generation (feel free to tune it for your particular application)
	// print calendar header
	var str_buffer = new String (
		"<html>\n"+
		"<head>\n"+
		"	<title>Calendar</title>\n"+
		"   <link href=\"include/Calendar.css\" rel=\"stylesheet\" type=\"text/css\">" +
		"</head>\n"+
		"<body bgcolor=\"#FFFFFF\" leftmargin=\"0\" marginheight=\"0\" rightmargin=0 bottommargin=0 topmargin=0 align=\"center\" >\n"+
		"<table topmargin=\"0\" cellspacing=\"0\" border=\"0\" width=\"470\" cellpadding=\"0\">\n"+
		"<tr><td bgcolor=\"#2e608a\" valign=middle>\n"+
		//onLoad=\"window.resizeTo(100,100);\"
		
		"<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\" width=\"470\">\n"+
		"<tr>\n	"+
		
		"<td colspan = 7>\n "+
		"<table cellpadding=\"0\" height=\"50\" cellspacing=\"0\" border=\"0\" width=\"470\"><tr>"+
		
		//" <td bgcolor=\"#3d62be\"><a href=\"javascript:window.close();\">"+
		" <td width=\"54\"><a href=\"javascript:window.opener.document.getElementById('" + sDateChecked + "').value = '';window.close();\">" +
		"<img src=\"images/Calendar_Clear.gif\" width=\"54\" height=\"49\" border=\"0\""+
		" alt=\"clear\"></a></td>\n"+
		
	   
		
		"   <td width=\"71\"><a href=\"javascript:window.opener.show_calendar('"+
		str_target+"', '"+ dt2dtstr(dt_prev_year)+  "','" + sDateChecked + "'" + ");\">"+
		"<img src=\"images/Calendar_PrevYear.gif\" width=\"71\" height=\"49\" border=\"0\""+
		" alt=\"previous year\"></a></td>\n"+
		
		
		"   <td width=\"79\"><a href=\"javascript:window.opener.show_calendar('"+
		str_target+"', '"+ dt2dtstr(dt_prev_month)+  "'," +  "'" + sDateChecked + "'" + ");\">"+
		"<img src=\"images/Calendar_PrevMonth.gif\" width=\"79\" height=\"49\" border=\"0\""+
		" alt=\"previous month\"></a></td>\n"+
		
	
		
		
		
		"	<td background=\"images/Calendar_BG.gif\" colspan=\"2\" align=\"center\" class=\"CurrentMonthYear\">"+
		
				arr_months[dt_datetime.getMonth()]+" "+dt_datetime.getFullYear()+"</td>\n"+
		
		
		
	
	"   <td width=\"83\"><a href=\"javascript:window.opener.show_calendar('"+
		str_target+"', '"+dt2dtstr(dt_next_month)+  "'," +  "'" +  sDateChecked + "'" + ");\">"+
		"<img src=\"images/Calendar_NextMonth.gif\" width=\"83\" height=\"49\" border=\"0\""+
		" alt=\"next month\"></a></td>\n"+
	
	
		"	<td align=\"right\" width=\"71\"><a href=\"javascript:window.opener.show_calendar('"
		+str_target+"', '"+dt2dtstr(dt_next_year)+  "'," +  "'" + sDateChecked + "'" + ");\">"+
		"<img src=\"images/Calendar_NextYear.gif\" width=\"71\" height=\"49\" border=\"0\""+
		" alt=\"next year\"></a></td>\n " +
		
		
		
		
		
		"</tr>" +
		"<tr>" +
			"<td height=\"1\" colspan=\"6\" bgcolor=\"#2E608A\"></td>" +
		"</tr>" +
		"</table> " +
		"</td>" +
		
		"</tr>\n"
	);
	var countRows = 0;
	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 align=\"center\" class=\"WeekDay\">"+
		
		week_days[(n_weekstart+n)%7]+"</td>\n";
	// print calendar table
	str_buffer += "</tr>\n";
	
	//alert('dt_current_day.getMonth(): '+dt_current_day.getMonth()+', dt_datetime.getMonth(): '+dt_datetime.getMonth());
	
	
	
	while (dt_current_day.getMonth() == dt_datetime.getMonth() ||
		dt_current_day.getMonth() == dt_firstday.getMonth()) {
		// print row header
		countRows ++;
		str_buffer += "<tr>\n";
		for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
				
				if (dt_CheckedDate != null &&
				    dt_CheckedDate.getDate() == dt_current_day.getDate() &&
				    dt_CheckedDate.getMonth() == dt_current_day.getMonth())
				    {
						str_buffer += "	<td bgcolor=\"#F14B23\"  align=\"center\">";
				    }
			    else if (dt_current_day.getDate() == dt_now.getDate() &&
					dt_current_day.getMonth() == dt_now.getMonth())
					{
						str_buffer += "	<td bgcolor=\"white\" style=\"border-top:#94AFF4 2px solid;border-right:#94AFF4 2px solid;border-bottom:#94AFF4 2px solid;border-left:#94AFF4 2px solid;\" align=\"center\">";
					}
				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
					// weekend days
					str_buffer += " <td bgcolor=\"#E6EBED\" align=\"center\">";
				else
					// print working days of current month
					str_buffer += " <td bgcolor=\"white\" align=\"center\">";

				if (dt_CheckedDate != null &&
					dt_CheckedDate.getDate() == dt_current_day.getDate() &&
				    dt_CheckedDate.getMonth() == dt_current_day.getMonth())
					// print current date
					str_buffer += "<a class=\"CurrentDate\" href=\"javascript:window.opener.document.getElementById('"+str_target+
					"').value='"+dt2dtstr(dt_current_day)+"'; window.close();\">"+
					"";
				else if (dt_current_day.getDate() == dt_now.getDate() &&
					dt_current_day.getMonth() == dt_now.getMonth())
					// print current date
					str_buffer += "<a class=\"CurrentDate\" href=\"javascript:window.opener.document.getElementById('"+str_target+
					"').value='"+dt2dtstr(dt_current_day)+"'; window.close();\">"+
					"";
				else if (dt_current_day.getMonth() == dt_datetime.getMonth())
					// print days of current month
					str_buffer += "<a class=\"CurrentMonthDate\" href=\"javascript:window.opener.document.getElementById('"+str_target+
					"').value='"+dt2dtstr(dt_current_day)+"'; window.close();\">"+
					"";
				else 
					// print days of other months
					str_buffer += "<a class=\"OtherMonthDate\" href=\"javascript:window.opener.document.getElementById('"+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";
	}
	
	
	
//	alert('countRows =' + countRows);
	if(countRows == 5)
	   countRows = 175;
	else if(countRows == 6)
	   countRows = 192;
	
	// print calendar footer
	str_buffer +=
		"</table>\n" +
		"</tr>\n</td>\n</table>\n" +
		"</body>\n" +
		"</html>\n";


    var winProperties = "location=no,menubar=no,resizable=yes,scrollbars=no,status=no,titlebar=no,toolbar=no,top=200,left=260,width=1,height=1";
	var vWinCal = window.open("", "Calendar", winProperties);
	vWinCal.opener = self;
	var calc_doc = vWinCal.document;
	calc_doc.write (str_buffer);
	calc_doc.close();
	//vWinCal.resizeTo(480, 200); //set height and width of calendar window
	vWinCal.resizeTo(480, 225); //set height and width of calendar window

}
// 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+)$/;
	if (!re_date.exec(str_datetime))
		return alert("Invalid Datetime format: "+ 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 dt2tmstr (dt_datetime) {
	return (new String (
			dt_datetime.getHours()+":"+dt_datetime.getMinutes()+":"+dt_datetime.getSeconds()));
}

