﻿(function() {

    var Event = YAHOO.util.Event, Dom = YAHOO.util.Dom;

    Event.onDOMReady(function() {

        var oCalendarMenu;
        var onButtonClick = function() {

            var currentTime = new Date();
            var month = currentTime.getMonth() + 1;
            var day = currentTime.getDate();
            var year = currentTime.getFullYear();
            var startDate = month + "/" + day + "/" + year;
            var endYear = year + 2;
            var endDate = month + "/" + day + "/" + endYear;

            var oCalendar = new YAHOO.widget.Calendar("buttoncalendar", oCalendarMenu.body.id, { mindate: startDate, maxdate: endDate });

            if (calendarLang == "de") {
                oCalendar.cfg.setProperty("MONTHS_SHORT", ["Jan", "Feb", "M\u00E4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]);
                oCalendar.cfg.setProperty("MONTHS_LONG", ["Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]);
                oCalendar.cfg.setProperty("WEEKDAYS_1CHAR", ["S", "M", "D", "M", "D", "F", "S"]);
                oCalendar.cfg.setProperty("WEEKDAYS_SHORT", ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]);
                oCalendar.cfg.setProperty("WEEKDAYS_MEDIUM", ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"]);
                oCalendar.cfg.setProperty("WEEKDAYS_LONG", ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]);
            } else if (calendarLang == "el") {
                oCalendar.cfg.setProperty("MONTHS_SHORT", ["\u0399\u03B1\u03BD",
		                    "\u03A6\u03B5\u03B2",
		                    "\u039C\u03AC\u03C1",
		                    "\u0391\u03C0\u03C1",
		                    "\u039C\u03AC\u03B9",
		                    "\u0399\u03BF\u03CD",
		                    "\u0399\u03BF\u03CD",
		                    "\u0391\u03CD\u03B3",
		                    "\u03A3\u03B5\u03C0",
		                    "\u039F\u03BA\u03C4",
		                    "\u039D\u03BF\u03AD",
		                    "\u0394\u03B5\u03BA"]);
                oCalendar.cfg.setProperty("MONTHS_LONG", ["\u0399\u03B1\u03BD\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2",
		                   "\u03A6\u03B5\u03B2\u03C1\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2",
		                   "\u039C\u03AC\u03C1\u03C4\u03B9\u03BF\u03C2",
		                   "\u0391\u03C0\u03C1\u03AF\u03BB\u03B9\u03BF\u03C2",
		                   "\u039C\u03AC\u03B9\u03BF\u03C2",
		                   "\u0399\u03BF\u03CD\u03BD\u03B9\u03BF\u03C2",
		                   "\u0399\u03BF\u03CD\u03BB\u03B9\u03BF\u03C2",
		                   "\u0391\u03CD\u03B3\u03BF\u03C5\u03C3\u03C4\u03BF\u03C2",
		                   "\u03A3\u03B5\u03C0\u03C4\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2",
		                   "\u039F\u03BA\u03C4\u03CE\u03B2\u03C1\u03B9\u03BF\u03C2",
		                   "\u039D\u03BF\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2",
		                   "\u0394\u03B5\u03BA\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2"]);
                oCalendar.cfg.setProperty("WEEKDAYS_1CHAR", ["\u039A", "\u0394", "\u03A4", "\u03A4", "\u03A0", "\u03A0", "\u03A3"]);
                oCalendar.cfg.setProperty("WEEKDAYS_SHORT", ["\u039A\u03C5", "\u0394\u03B5", "\u03A4\u03C1", "\u03A4\u03B5", "\u03A0\u03AD", "\u03A0\u03B1", "\u03A3\u03AC"]);
                oCalendar.cfg.setProperty("WEEKDAYS_MEDIUM", ["\u039A\u03C5\u03C1",
		                       "\u0394\u03B5\u03C5",
		                       "\u03A4\u03C1\u03AF",
		                       "\u03A4\u03B5\u03C4",
		                       "\u03A0\u03AD\u03BC",
		                       "\u03A0\u03B1\u03C1",
		                       "\u03A3\u03AC\u03B2"]);
                oCalendar.cfg.setProperty("WEEKDAYS_LONG", ["\u039A\u03C5\u03C1\u03B9\u03B1\u03BA\u03AE",
		                     "\u0394\u03B5\u03C5\u03C4\u03AD\u03C1\u03B1",
		                     "\u03A4\u03C1\u03AF\u03C4\u03B7",
		                     "\u03A4\u03B5\u03C4\u03AC\u03C1\u03C4\u03B7",
		                     "\u03A0\u03AD\u03BC\u03C0\u03C4\u03B7",
		                     "\u03A0\u03B1\u03C1\u03B1\u03C3\u03BA\u03B5\u03C5\u03AE",
		                     "\u03A3\u03AC\u03B2\u03B2\u03B1\u03C4\u03BF"]);
            }

            oCalendar.render();
            oCalendar.selectEvent.subscribe(function(p_sType, p_aArgs) {
                var aDate;
                if (p_aArgs) {
                    aDate = p_aArgs[0][0];
                    Dom.get(calendarTextboxID).value = aDate[2] + "/" + aDate[1] + "/" + aDate[0];
                }
                oCalendarMenu.hide();
            });

            Event.on(oCalendarMenu.element, "keydown", function(p_oEvent) {
                if (Event.getCharCode(p_oEvent) === 27) {
                    oCalendarMenu.hide();
                    this.focus();
                }
            }, null, this);

            var focusDay = function() {
                var oCalendarTBody = Dom.get("buttoncalendar").tBodies[0], aElements = oCalendarTBody.getElementsByTagName("a"), oAnchor;
                if (aElements.length > 0) {
                    Dom.batch(aElements, function(element) {
                        if (Dom.hasClass(element.parentNode, "today")) { oAnchor = element; }
                    });
                    if (!oAnchor) { oAnchor = aElements[0]; }

                    YAHOO.lang.later(0, oAnchor, function() {
                        try { oAnchor.focus(); }
                        catch (e) { }
                    });

                }

            };
            oCalendarMenu.subscribe("show", focusDay);
            oCalendar.renderEvent.subscribe(focusDay, oCalendar, true);
            focusDay.call(oCalendar);
            oCalendarMenu.align();
            this.unsubscribe("click", onButtonClick);
        };

        oCalendarMenu = new YAHOO.widget.Overlay("calendarmenu", { visible: false });

        var oButton = new YAHOO.widget.Button({
            type: "menu",
            id: "calendarpicker",
            label: "Choose A Date",
            menu: oCalendarMenu,
            container: "datefields"
        });

        oButton.on("appendTo", function() {
            oCalendarMenu.setBody("&#32;");
            oCalendarMenu.body.id = "calendarcontainer";
        });

        //oButton._button.parentNode.style.backgroundImage = 'url(' + calendarBtnImage + ')';
        oButton._button.parentNode.className += ' icon';
        //oButton._button.style.visibility = 'hidden';

        oButton.on("click", onButtonClick);

    });

} ());


