
function show_calendar(str_target, str_date) {
	var arr_months = ["ßÍÂÀÐÜ", "ÔÅÂÐÀËÜ", "ÌÀÐÒ", "ÀÏÐÅËÜ", "ÌÀÉ", "ÈÞÍÜ",
		"ÈÞËÜ", "ÀÂÃÓÑÒ", "ÑÅÍÒßÁÐÜ", "ÎÊÒßÁÐÜ", "ÍÎßÁÐÜ", "ÄÅÊÀÁÐÜ"];
	var week_days = ["Âñ", "Ïí", "Âò", "Ñð", "×ò", "Ïò", "Ñá"];
	var n_weekstart = 1; 

	if (str_date != null && str_date != "") {
		if (str2dt2(str_date) == false) {
		 	alert("Íåâåðíûé ôîðìàò äàòû: "+str_date);
			return;
		}
	}
	var dt_date = (str_date == null || str_date =="" ?  new Date() : str2dt2(str_date));
	var dt_prev_month = new Date(dt_date);
	dt_prev_month.setMonth(dt_date.getMonth()-1);
	if (dt_date.getMonth()%12 != (dt_prev_month.getMonth()+1)%12) {
		dt_prev_month.setMonth(dt_date.getMonth());
		dt_prev_month.setDate(0);
	}
	var dt_prev_year = new Date(dt_date);
	dt_prev_year.setMonth(dt_date.getMonth()-12);

	var dt_next_month = new Date(dt_date);
	dt_next_month.setMonth(dt_date.getMonth()+1);
	if ((dt_date.getMonth() + 1)%12 != dt_next_month.getMonth()%12)
		dt_next_month.setDate(0);

	var dt_next_year = new Date(dt_date);
	dt_next_year.setMonth(dt_date.getMonth()+12);
	
	var dt_firstday = new Date(dt_date);
	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);
	
	var str_buffer = new String (
 //       "<body bgcolor=\"#ffffff\" text=\"#ffffff\" alink=\"#660000\" link=\"#ffffff\" vlink=\"#ffffff\" marginwidth=\"10\" marginheight=\"10\" topmargin=\"10\" bottommargin=\"10\" leftmargin=\"10\" rightmargin=\"10\">\n"+
		"<table align=center cellspacing=\"0\" cellpadding=\"1\" border=\"0\" width=\"190\">\n"+
		"<tr>\n<!--<td align=center nowrap><a href=\"javascript:window.opener.show_calendar('"+str_target+"', '"+dt2dtstr2(dt_prev_year)+"');\"><img src=\"/img/first.gif\" border=\"0\" alt=\"Ïðåäûäóùèé ãîä\"></a>&nbsp;&nbsp;<a href=\"javascript:window.opener.show_calendar('"+
		str_target+"', '"+ dt2dtstr2(dt_prev_month)+"');\">"+
		"<img src=\"/img/prev.gif\" border=\"0\" alt=\"Ïðåäûäóùèé ìåñÿö\"></a></td>\n-->"+
//		"<td colspan=\"7\" align=center ><b><font style=\"color:#005c96; font-size:9pt; font-family: tahoma\">"
//		+arr_months[dt_date.getMonth()]+" "+dt_date.getFullYear()+"</font></b></td>\n"+
		"<td colspan=\"7\" class=\"text\"><b>"
		+arr_months[dt_date.getMonth()]+" "+dt_date.getFullYear()+"</b></td>\n"+
		"<!--<td align=\"center\" nowrap><a href=\"javascript:window.opener.show_calendar('"+
		str_target+"', '"+dt2dtstr2(dt_next_month)+"');\">"+
		"<img src=\"/img/next.gif\" border=\"0\" alt=\"Ñëåäóþùèé ìåñÿö\"></a>&nbsp;&nbsp;<a href=\"javascript:window.opener.show_calendar('"+str_target+"', '"+dt2dtstr2(dt_next_year)+"');\"><img src=\"/img/last.gif\" border=\"0\" alt=\"Ñëåäóþùèé ãîä\"></a></td>\n--></tr>\n"
	);

	var dt_current_day = new Date(dt_firstday);
	str_buffer += "<tr>\n";
	for (var n=0; n<7; n++)
	{
		if (n == 5 || n == 6)
			str_buffer += "<td width=\"1%\" align=center class=\"caldatesun\">"+
			week_days[(n_weekstart+n)%7]+"</td>\n";
		else
			str_buffer += "<td width=\"1%\" align=center class=\"caldate\">"+
			week_days[(n_weekstart+n)%7]+"</td>\n";
		if (n < 6)
			str_buffer += "<td width=\"15%\" class=\"caldate\">&#160;</td>\n";
	}
	str_buffer += "</tr>\n";
	while (dt_current_day.getMonth() == dt_date.getMonth() ||
		dt_current_day.getMonth() == dt_firstday.getMonth()) {
		str_buffer += "<tr>\n";
		for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
				if (dt_current_day.getDate() == dt_date.getDate() &&
					dt_current_day.getMonth() == dt_date.getMonth())
					
					str_buffer += "	<td width=\"1%\" align=center class=\"caldatecur\">";
				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
					
					str_buffer += "	<td width=\"1%\" align=center class=\"caldate\">";
				else
					
					str_buffer += "	<td width=\"1%\" align=center class=\"caldate\">";

				if (dt_current_day.getMonth() == dt_date.getMonth()){
				
                if (dt_current_day.getDate() == dt_date.getDate() &&
					dt_current_day.getMonth() == dt_date.getMonth())
					
//					str_buffer += "<a style=\"color:#9d102d; font-size:9px; font-weight: bold; font-family: tahoma; text-decoration: none;\" href=\""+str_target+
//					"?cday="+dt_current_day.getDate()+"&cmonth="+(dt_current_day.getMonth()+1).toString()+"&cyear="+dt_current_day.getFullYear()+"&cdate="+dt2dtstr2(dt_current_day)+"\">";
					str_buffer += "<a class=\"caldatecur\" href=\""+str_target+
					"?cday="+dt_current_day.getDate()+"&cmonth="+(dt_current_day.getMonth()+1).toString()+"&cyear="+dt_current_day.getFullYear()+"\">";
                    
                else
                    
					if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
//						str_buffer += "<a style=\"color:#485969; font-size:8pt; font-family: tahoma; text-decoration: none;\" href=\""+str_target+
//						"?cday="+dt_current_day.getDate()+"&cmonth="+(dt_current_day.getMonth()+1).toString()+"&cyear="+dt_current_day.getFullYear()+"&cdate="+dt2dtstr2(dt_current_day)+"\">";
						str_buffer += "<a class=\"caldatesun\" href=\""+str_target+
						"?cday="+dt_current_day.getDate()+"&cmonth="+(dt_current_day.getMonth()+1).toString()+"&cyear="+dt_current_day.getFullYear()+"\">";
					else
//						str_buffer += "<a style=\"color:#485969; font-size:8pt; font-family: tahoma; text-decoration: none;\" href=\""+str_target+
//						"?cday="+dt_current_day.getDate()+"&cmonth="+(dt_current_day.getMonth()+1).toString()+"&cyear="+dt_current_day.getFullYear()+"&cdate="+dt2dtstr2(dt_current_day)+"\">";
						str_buffer += "<a class=\"caldate\" href=\""+str_target+
						"?cday="+dt_current_day.getDate()+"&cmonth="+(dt_current_day.getMonth()+1).toString()+"&cyear="+dt_current_day.getFullYear()+"\">";
                }    

				else 
					
					str_buffer += "<a style=\"color:#c1c8cf; font-size:0pt; font-family: tahoma; text-decoration: none;\" nohref=\""+str_target+
					"?cday="+dt_current_day.getDate()+"&cmonth="+(dt_current_day.getMonth()+1).toString()+"&cyear="+dt_current_day.getFullYear()+"\">"+
					"";
				str_buffer += dt_current_day.getDate()+"</a></td>\n";
				dt_current_day.setDate(dt_current_day.getDate()+1);
				if (n_current_wday < 6)
					str_buffer += "<td width=\"15%\">&#160;</td>\n";
		}
		
		str_buffer += "</tr>\n";
	}
	
//	str_buffer += "<tr><td height=\"10\"></td><tr><td colspan=7><font style=\"color:#485969; font-size:8pt; font-family: tahoma;\">Òåêóùàÿ äàòà:</font>&nbsp;<a style=\"text-decoration: none; color:#485969; font-size:8pt; font-family: tahoma\" href=\""+str_target+"?value="+
//	dt2dtstr2(new Date())+"\">"+dt2dtstr2(new Date())+"</a></td></tr>";
	
	str_buffer +=
		"</table>\n";

/*
	var vWinCal = window.open("", "Calendar", 
		"width=240,height=180,status=no,resizable=no,top=200,left=200");
	vWinCal.opener = self;
	vWinCal.focus();
	var calc_doc = vWinCal.document;
	calc_doc.write (str_buffer);
	calc_doc.close();
*/
	
// 	alert("Êàëåíäàðü: "+str_buffer);
//	return (str_buffer);
	document.write (str_buffer);
}

function str2dt2 (str_date) {
	var re_date = /^(\d+)\.(\d+)\.(\d+)$/;
	if (!re_date.exec(str_date)) {
		return (false);
	} else {
		var arrD = new Array();
		var m, d, Y;
		arrD = str_date.split(".");
		d = parseInt(correct_number(arrD[0]));
		m = parseInt(correct_number(arrD[1])) - 1;
		Y = parseInt(arrD[2]);
		return (new Date(Y, m, d));
		//return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1));
	}
}

function dt2dtstr2 (dt_date) {
var bday, bmonth;
bday = dt_date.getDate().toString();
bmonth = (dt_date.getMonth()+1).toString();

if (bmonth.length == 1) {
	bmonth = "0" + bmonth;
}
if (bday.length == 1) {
	bday = "0" + bday;
}

	return (new String (
			bday+"."+bmonth+"."+dt_date.getFullYear()));
}

function correct_number(strIn) {
	var res;
	if (strIn.length = 2 && (strIn.substr(0, 1) == '0')) {
		res = strIn.substr(1, 1);
	} else {
		res = strIn;
	}
	return (res);
}


