YAHOO.namespace('chickadvisor.calendar');

YAHOO.chickadvisor.calendar.init = function() {
    function handleSelect(type,args,obj) {
        var dates = args[0];
        var date = dates[0];
        var year = date[0], month = date[1], day = date[2];

        var calendarMonths = document.getElementById("calendarMonths");
        var calendarDays = document.getElementById("calendarDays");
        var calendarYears = document.getElementById("calendarYears");

        calendarMonths.selectedIndex = month;
        calendarDays.selectedIndex = day;

        for (var y = 0; y < calendarYears.options.length; y++) {
            if (calendarYears.options[y].text == year) {
                calendarYears.selectedIndex = y;
                break;
            }
        }
    }

    function updateCal() {
        var calendarMonths = document.getElementById("calendarMonths");
        var calendarDays = document.getElementById("calendarDays");
        var calendarYears = document.getElementById("calendarYears");

        var month = parseInt(calendarMonths.options[calendarMonths.selectedIndex].value);
        var day = parseInt(calendarDays.options[calendarDays.selectedIndex].value);
        var year = parseInt(calendarYears.options[calendarYears.selectedIndex].value);

        if (! isNaN(month) && ! isNaN(day) && ! isNaN(year)) {
            var date = month + "/" + day + "/" + year;

            YAHOO.chickadvisor.calendar.cal1.select(date);
            YAHOO.chickadvisor.calendar.cal1.cfg.setProperty("pagedate", month + "/" + year);
            YAHOO.chickadvisor.calendar.cal1.render();
        }
    }

    YAHOO.chickadvisor.calendar.cal1 = new YAHOO.widget.Calendar("cal1","calContainer",
                                                                { close: true,
                                                                  navigator: true,
                                                                  mindate: calendar.mindate,
                                                                  maxdate: calendar.maxdate,
                                                                  selected: calendar.selected,
                                                                  pagedate: calendar.pagedate,
                                                                  title:"Choose a date:" });
    YAHOO.chickadvisor.calendar.cal1.selectEvent.subscribe(handleSelect, YAHOO.chickadvisor.calendar.cal1, true);
    YAHOO.chickadvisor.calendar.cal1.renderEvent.subscribe(function() {
        var title = YAHOO.util.Dom.getElementsByClassName('title', 'div', YAHOO.chickadvisor.calendar.cal1.oDomContainer)[0];
        var dd = new YAHOO.util.DD("calContainer");
        dd.setHandleElId(title);
    });
    YAHOO.chickadvisor.calendar.cal1.render();

    YAHOO.util.Event.addListener(["calendarMonths","calendarDays","calendarYears"], "change", updateCal);
    YAHOO.util.Event.addListener("showCalendar", "click", YAHOO.chickadvisor.calendar.cal1.show, YAHOO.chickadvisor.calendar.cal1, true);
}

YAHOO.util.Event.onDOMReady(YAHOO.chickadvisor.calendar.init);
