

		var month = new Array("", "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь");
		var day = new Array ("", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс")
		var mv = 1980; // минимальный високосный год

		
		
		
		function CreateCalendar(m, y, loc, ext, fileNameErr){
		
			var offset = 0;
			var dayleft = 0;
			var isNewsInMonth = false;
			var s = m+"";

			s.length==1 ? mm="0"+m : mm=m;

                        if(m==0){
                                var ny=y+1;
                                var py=y-1;
                        }
			if(m==1){
				var pm=12;
				var nm=2;
				var py=y-1;
				var ny=y;
			}
			if(m>11){
				var pm=11;
				var nm=1;
				var py=y;
				var ny=y+1;
			}
			if(m>1 && m<12){
				var pm=m-1;
				var nm=m+1;
				var py=y;
				var ny=y;
			}

			if(y < mv)	
				return 0;

			var daysinmonth = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
			if ((y-mv)%4 == 0)	
				daysinmonth[2] = 29;

			for(i=1; i<m; i++)
				dayleft += daysinmonth[i];
			yleft = y - mv;
			v = parseInt(yleft/4) + parseInt(0.9 + (yleft%4)/10);
			offset = ((v*366 + (yleft-v)*365 + dayleft + 1) % 7);


                        if( m == 0){
			       // ============================================================================
			       // формирование таблички календаря по месяцам
			       // ============================================================================
			
			       result = "<a href=\"#\" class=\"month_cal\" onClick=\"ShowCalendar(0,"+py+",'"+loc+"','"+ext+"','"+fileNameErr+"'); return false\">&laquo;</a>&#160;<span class=\"month_cal\">" + y + "</span>&#160;<b><a href=\"#\" onClick=\"ShowCalendar(0,"+ny+",'"+loc+"','"+ext+"','"+fileNameErr+"'); return false\">&raquo;</a>";
			
			       for(i=1; i<13; i++){
			                dd = 1;
                                        if(i<10) mm = "0" + i;			
                                        while(D[y + "" + mm + dd] != 1 && dd<33){
                                                   dd ++;
                                        }
         			        D[y + "" + mm + dd] == 1 ? result += "<a href=\"/cgi-bin/calendar.pl?prefix="+ loc + "&year=" + y + "&month=" + mm + "&day=" + dd + "&ext=" + ext + "&fileNameErr=" + fileNameErr + "\" class=\"month_cal\">" + month[i] + "</a><br/>" : result += month[i] + "<br/>";
			       }
			
                               // ============================================================================
			}else{
			       // ============================================================================
			       // формирование таблички календаря по дням
			       // ============================================================================
			       result = "<table bgcolor=\"#FFFFFF\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"100%\"><tr valign=\"top\"><td width=\"100%\" height=\"110\">"
			       result += "<table cellspacing=\"2\" cellpadding=\"0\" align=\"center\"><tr>";
			       for(i=1; i<8; i++)
				      result += "<td class=\"day\">" + day[i] + "</td>";
			       result += "</tr>"

			       rows = parseInt((offset+daysinmonth[m])/7) + parseInt(0.9 + ((offset+daysinmonth[m])%7)/10);
			       for(i=0; i<rows; i++){
				       result += "<tr>"
				       for(j=1; j<8; j++){
					       ((i*7)+j-offset) < 10 ? dd="0"+((i*7)+j-offset) : dd=((i*7)+j-offset);
					       if(i*7+j <= offset || i*7+j-offset > daysinmonth[m]){
						       result += "<td class=\"cln\"></td>"
					       }else{
						       D[y + "" + mm + dd] == 1 ? result += "<td class=\"cln\"><a href=\"/cgi-bin/calendar.pl?prefix="+ loc + "&year=" + y + "&month=" + mm + "&day=" + dd + "&ext=" + ext + "&fileNameErr=" + fileNameErr + "\" class=\"day_ok\">" + ((i*7)+j-offset) + "</a></td>" : result += "<td class=\"cln\">" + ((i*7)+j-offset) + "</td>";
					       }
					       if(D[y + "" + mm + dd] == 1) isNewsInMonth = true;
				        }
				        result += "</tr>";
			       }


			       result += "</table></td></tr>";

			       result += "<tr><td align=\"center\"><a href=\"#\" class=\"month_cal\" onClick=\"ShowCalendar("+pm+","+py+",'"+loc+"','"+ext+"','"+fileNameErr+"'); return false\">&laquo;&laquo;&laquo;</a>&#160;";
			       isNewsInMonth ? result += "<a href=\"/cgi-bin/calendar.pl?prefix=" + loc + "&year=" + y + "&month=" + mm + "&ext=" + ext + "&fileNameErr=" + fileNameErr + "\" class=\"month_cal\">" + month[m] + " " + y + "</a>"  :  result += month[m] + " " + y;
			       result += "&#160;<a href=\"#\" class=\"month_cal\" onClick=\"ShowCalendar("+nm+","+ny+",'"+loc+"','"+ext+"','"+fileNameErr+"'); return false\">&raquo;&raquo;&raquo;</a><br><br></td></tr>";

			       result += "</table>";			
			
			       // ============================================================================
			}
			return result;
		}



		
		
		function ShowCalendar(m, y, loc, ext, fileNameErr){
			if(document.all)
				document.all["calendar"].innerHTML = CreateCalendar(m, y, loc, ext, fileNameErr);
			else
				window.location = loc + "?m=" + m + "&y=" + y;
		}
		
		
		
		

