YAHOO.namespace('design');
YAHOO.design.ButtonCalendar = function (params) {    
    this.initId = params.sufix;
    this.labelDate = params.labelDate;
    this.lang = params.lang;
    
    YAHOO.util.Event.onContentReady(this.initId, this.popupButtonCalendar, this);
    }
YAHOO.design.ButtonCalendar.prototype.popupButtonCalendar = function(args){
    initId = args.initId;
    labelDate = args.labelDate;
    lang = args.lang;
    function onButtonClick() {
        oCalendarMenu.setBody("&#32;");
        var container = this.get("container");
        oCalendarMenu.body.id = "calendarcontainer"+container.id;
        oCalendarMenu.render(container);
        oCalendarMenu.align();
        var today = new Date();
        var oCalendar = new YAHOO.widget.Calendar(
          "buttoncalendar"+container.id, 
          oCalendarMenu.body.id,
          {mindate: "1/1/2005",  maxdate: today}
        );
        oCalendar.cfg.setProperty("DATE_FIELD_DELIMITER", "-");   
        oCalendar.cfg.setProperty("MDY_DAY_POSITION", 3);   
        oCalendar.cfg.setProperty("MDY_MONTH_POSITION", 2);   
        oCalendar.cfg.setProperty("MDY_YEAR_POSITION", 1);   
        oCalendar.cfg.setProperty("MD_DAY_POSITION", 3);   
        oCalendar.cfg.setProperty("MD_MONTH_POSITION", 2); 
        switch (lang){
          case 'UA':
            oCalendar.cfg.setProperty ("MONTHS_SHORT",   ["Сiч", "Лют", "Бер", "Кв", "Тр", "Чер", "Лип", "Сер", "Вер", "Жов", "Лист", "Гр"]);
            oCalendar.cfg.setProperty ("MONTHS_LONG",   ["Сiчень", "Лютий", "Березень", "Квiтень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"]);
            oCalendar.cfg.setProperty ("WEEKDAYS_SHORT",   ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"]);
            oCalendar.cfg.setProperty ("WEEKDAYS_MEDIUM",   ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"]);
            oCalendar.cfg.setProperty ("WEEKDAYS_LONG",   ["Недiля", "Понедiлок", "Вiвторок", "Середа", "Четвер", "П'ятниця", "Субота"]);
          break;
          case 'RU': 
            oCalendar.cfg.setProperty ("MONTHS_SHORT",   ["Янв", "Фев", "Мар", "Апр", "Май", "Июнь", "Лип", "Июль", "Авг", "Окт", "Ноя", "Дек"]);
            oCalendar.cfg.setProperty ("MONTHS_LONG",   ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"]);
            oCalendar.cfg.setProperty ("WEEKDAYS_SHORT",   ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"]);
            oCalendar.cfg.setProperty ("WEEKDAYS_MEDIUM",   ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"]);
            oCalendar.cfg.setProperty ("WEEKDAYS_LONG",   ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"]);
            break;
          default:
            oCalendar.cfg.setProperty ("MONTHS_SHORT" ,["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]);
            oCalendar.cfg.setProperty ("MONTHS_LONG", ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
            oCalendar.cfg.setProperty ("WEEKDAYS_SHORT", ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]);
            oCalendar.cfg.setProperty ("WEEKDAYS_MEDIUM", ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]);
            oCalendar.cfg.setProperty ("WEEKDAYS_LONG", ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]);
        }
        oCalendar.render();
        oCalendar.changePageEvent.subscribe(function () {
            window.setTimeout(function () {
                oCalendarMenu.show();
            }, 0);
        });
        oCalendar.selectEvent.subscribe(function (p_sType, p_aArgs) {
          var aDate,
                  nMonth,
                  nDay,
                  nYear;
          if (p_aArgs) {
                  aDate = p_aArgs[0][0];
                  nMonth = aDate[1];
                  nDay = aDate[2];
                  nYear = aDate[0];
                  oButton.set("label", (nYear + "-" + nMonth + "-" + nDay));
                  YAHOO.util.Dom.get("month"+container.id).selectedIndex = (nMonth - 1);
                  YAHOO.util.Dom.get("day"+container.id).selectedIndex = (nDay - 1);
                  YAHOO.util.Dom.get("year"+container.id).value = nYear;
          }
          oCalendarMenu.hide();
        });
        this.unsubscribe("click", onButtonClick);
     }
     var oDateFields = YAHOO.util.Dom.get(initId);
       oMonthField = YAHOO.util.Dom.get("month"+initId),
       oDayField = YAHOO.util.Dom.get("day"+initId),
       oYearField = YAHOO.util.Dom.get("year"+initId);
       oMonthField.style.display = "none";
       oDayField.style.display = "none";
       oYearField.style.display = "none";
     var oCalendarMenu = new YAHOO.widget.Overlay("calendarmenu"+initId);
     var oButton = new YAHOO.widget.Button({ 
                                    type: "menu", 
                                    id: "calendarpicker"+initId, 
                                    label: labelDate, 
                                    menu: oCalendarMenu, 
                                    container: oDateFields });
      switch (lang){
        case 'UA':
          oButton.MENUBUTTON_DEFAULT_TITLE="Виберiть дату"; 
          oButton.MENUBUTTON_MENU_VISIBLE_TITLE="Для вибору дати клiкнiть або натиснiть Esc";
          break;
        case 'RU': 
          oButton.MENUBUTTON_DEFAULT_TITLE="Выбирите дату"; 
          oButton.MENUBUTTON_MENU_VISIBLE_TITLE="Для выбора даты кликните или нажмите Esc";
          break;
        default:
          oButton.MENUBUTTON_DEFAULT_TITLE="Choose date"; 
          oButton.MENUBUTTON_MENU_VISIBLE_TITLE="Click or press Esc to collapse.";
      }
      oButton.on("click", onButtonClick);
}
