Date.prototype.isLeapYear = function() {
    var year = this.getFullYear();
        return !!((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year)));
};
Date.prototype.before = function(fDate) {
    return this.getFullYear() < fDate.getFullYear() ||
           (this.getFullYear() == fDate.getFullYear() && this.getMonth() < fDate.getMonth()) ||
           (this.getFullYear() == fDate.getFullYear() && this.getMonth() == fDate.getMonth() && this.getDate() < fDate.getDate());
};

Calendar = {
   config: {
       daysNames:['Âñ', 'Ïí', 'Âò', 'Ñð', '×ò', 'Ïò', 'Ñá']
      ,daysInMonth : [31,28,31,30,31,30,31,31,30,31,30,31]
      ,monthNames : [
        "ßíâàðü",
        "Ôåâðàëü",
        "Ìàðò",
        "Àïðåëü",
        "Ìàé",
        "Èþíü",
        "Èþëü",
        "Àâãóñò",
        "Ñåíòÿáðü",
        "Îêòÿáðü",
        "Íîÿáðü",
        "Äåêàáðü"
      ]

   },

   setup: function(fParams){
      ;
   },

   create: function(fElement, fDate){
      var tDayStartWeek = 1;
      var tUl = jQuery("<ul class='calendarX boxOrange' style='padding-bottom:10px;'>" + Calendar.config.monthNames[fDate.getMonth()] + " " + fDate.getFullYear() + "</ul>");
      for(var tC = 0; tC < Calendar.config.daysNames.length; tC++)
        tUl.append("<li class='day'>" + Calendar.config.daysNames[(tC + tDayStartWeek)%Calendar.config.daysNames.length] + "</li>");

      var tDateStart = new Date(fDate.getFullYear(), fDate.getMonth(), 1);
      var tDateEnd = new Date(fDate.getFullYear(), fDate.getMonth(), Calendar.config.daysInMonth[fDate.getMonth()] + (fDate.getMonth() == 1 && fDate.isLeapYear()) );

      tDateStart.setDate( tDateStart.getDate() - (Calendar.config.daysNames.length + tDateStart.getDay() - tDayStartWeek)%7 );
      tDateEnd.setDate(tDateEnd.getDate() + (Calendar.config.daysNames.length - 1 - tDateEnd.getDay() + tDayStartWeek)%7)

      while(!tDateEnd.before(tDateStart))
        {
           var tClass = (tDateStart.getMonth() != fDate.getMonth() ? 'am ' : '');
           if(tDateStart.getMonth() == fDate.getMonth() && tDateStart.getDate() == fDate.getDate())
             tClass = 'selected ';
           tUl.append("<li class='" + tClass + "'>" + tDateStart.getDate() + "</li>");
           tDateStart.setDate(tDateStart.getDate() + 1)
        }

      jQuery(fElement).html("").append(tUl);
   }

}