var monthNames1=new Array("","января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
var monthNames=new Array("","Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
var monthDays=new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
var weekDays=new Array("","пн","вт","ср","чт","пт","сб","вс");

function MDate(year,month,day){
 this.year=year;
 this.month=month;
 this.day=day;
}

function getLeapYear(year){
 if(year<0) year-=3;
 return ((year%4==0)&&((year%100!=0)||(year%400==0)));
}

function maxDayMonth(year,month){
 maxday=monthDays[month];
 if(month==2) maxday+=getLeapYear(year);    
 return maxday;
}

function getWeekDay(date){
 var i;
 var y=date.year-1;
 var day=date.year*365+Math.floor(y/4)-Math.floor(y/100)+Math.floor(y/400);
 for(i=1;i<date.month;i++)
  day+=maxDayMonth(date.year,i);
 day=(day+date.day-1)%7;
 return day==0?7:day;
}

function datePlusDays(mdate,days){
 var date=new MDate(mdate.year,mdate.month,mdate.day+days);
 while(date.day<1){
  if(date.month==1){
   date.year--;
   date.month=12;
   date.day+=31;
  }else{
   date.month--;
   date.day+=maxDayMonth(date.year,date.month);
  }
 }
 while(date.day>maxDayMonth(date.year,date.month)){
  if(date.month==12){
   date.year++;
   date.month=1;
   date.day-=31;
  }else{
   date.day-=maxDayMonth(date.year,date.month);
   date.month++;
  }
 }
 return date;
}

function datePlusMonths(mdate,months){
 var date=new MDate(mdate.year,mdate.month+months,mdate.day);
 while(date.month<1){
  date.year--;
  date.month+=12;
 }
 while(date.month>12){
  date.year++;
  date.month-=12;
 }
 if(date.day>maxDayMonth(date.year,date.month))
  date.day=maxDayMonth(date.year,date.month);
 return date;
}

function compareDates(mdate1,mdate2){
 if(mdate1.year<mdate2.year) return -1;
 if(mdate1.year==mdate2.year){
  if(mdate1.month<mdate2.month) return -1;
  if(mdate1.month==mdate2.month){
   if(mdate1.day<mdate2.day) return -1;
   if(mdate1.day==mdate2.day) return 0;
   return 1;
  }
  return 1;
 }
 return 1;
}
