var BLPub = {
    calendar: {

        firstDay: 0,
        dates: [],
        limited: true,

        toggleState: function() {
            var toggler = $("calendar-toggler");
            BLPub.calendar.limited =  (!BLPub.calendar.limited);
            toggler.firstChild.nodeValue = (!BLPub.calendar.limited) ? "Visa aktuella datum" : "Visa hela året";
            BLPub.calendar.render();
        },

        render: function() {
            var i = 0;
            var cal = $("important-dates");
            var calBody = cal.tBodies[0];
            var start = 0;
            var end = calBody.rows.length;
            if (BLPub.calendar.limited) {
                for (i = 2; i < BLPub.calendar.dates.length; i++) {
                    if (BLPub.calendar.dates[i] == BLPub.calendar.firstDay) {
                        start = BLPub.calendar.dates[i - 2];
                        end = BLPub.calendar.dates[i + 8]
                        if (end == undefined) {
                            end = calBody.rows.length;
                        }
                    }
                }
            }
            for (i = 0; i < calBody.rows.length; i++) {
                calBody.rows[i].style.display = "";
                if (i < start || i >= end ) {
                    calBody.rows[i].style.display = "none";
                }
            }
            if (calBody.rows[end - 1].className == "month-name") {
                calBody.rows[end - 1].style.display = "none";
            }
        },

        setup: function() {
            var i = 0;
            var cal = $("important-dates");
            var calBody = cal.tBodies[0];
            var className;
            for (i = 0; i < calBody.rows.length; i++ ) {
                if (calBody.rows[i].className == "") {
                    BLPub.calendar.firstDay = i;
                    break;
                }
            }
            for (i = 0; i < calBody.rows.length; i++) {
                var row = calBody.rows[i];
                var rowClass = row.className;
                if (rowClass == "month-name") {
                    className = "even";
                }
                else if (rowClass == "") {
                    if (row.cells[0].firstChild) {
                        className = (className == "odd") ? "even" : "odd";
                    }
                    row.className = className;
                }
                if (row.cells[0].firstChild && row.className != "month-name") {
                    BLPub.calendar.dates.push(i);
                }
            }
            var toggler = document.createElement("div");
            toggler.id = "calendar-toggler";
            toggler.onclick = BLPub.calendar.toggleState;
            toggler.appendChild(document.createTextNode("Visa hela året"));
            var t = $("important-dates");
            t.parentNode.insertBefore(toggler,t);
            BLPub.calendar.render();
        }
    }
}
window.addOnloadListener(BLPub.calendar.setup);
