function buildCalendar()

in site/js/dev/ponymail_pagebuilder.js [35:105]


function buildCalendar(json) {
    var firstYear = json.firstYear
    var lastYear  = json.lastYear
    var firstMonth0 = json.firstMonth - 1 // 0-based
    var lastMonth0 = json.lastMonth - 1 // 0-based
    var monthly_emails = json.monthly_emails
    
    // Build the main calendar (desktop version)
    var dp = document.getElementById('datepicker')
    dp.style.width = "150px"
    dp.innerHTML = "<h3>Archive:</h3>"
    var fyear = lastYear ? lastYear : new Date().getFullYear();
    
    // Check we don't esplode
    if (fyear > new Date().getFullYear()) {
        fyear = new Date().getFullYear();
    }

    for (var year = fyear; year >= (firstYear ? firstYear : current_cal_min); year--) {
        var n = "none";
        if (fyear == firstYear) {
            n = "block"
        }
        var cale = ''
        var em = (new Date().getFullYear() == year) ? new Date().getMonth() : 11;
        for (var y = em; y >= 0; y--) {
            var yyyymm = (year+"-"+(y+1))
            var url = "list.html?" + xlist + ":" + yyyymm
            var yyyy0m = y < 9 ? (year+"-0"+(y+1)) : yyyymm
            if (monthly_emails[yyyy0m]) {
                var count = monthly_emails[yyyy0m]
                cale += "<a href='" + url + "' onclick='return false;'><label id='calmonth_" + yyyymm + "' style='width: 80px; float: left;cursor: pointer;' class='label label-default label-hover' onclick='toggleEmail(" + year + ", " + (y + 1) + ");' >" + months[y] + ' ('+ count + ')' + "</label></a><br/>"
            }
        }
        if (cale != '') {
            cale += "</div>"
            dp.innerHTML += "<label onmouseout='this.setAttribute(\"class\", \"label label-success\");'  onmouseover='this.setAttribute(\"class\", \"label label-warning\");' onclick='toggleCalendar(" + year + ");' class='label label-success' style='float: left; width: 110px; font-size: 11pt; cursor: pointer'>" + year + "</label><br/>"
            var calehdr = "<div style='float: left; width: 80%; display: " + n + "; padding-left: 15px; margin-bottom: 15px;' id='cal_" + year + "'>"
            dp.innerHTML += calehdr + cale
        }
    }
    
    // Build the mobile version (dropdown)
    var mdp = document.getElementById('datepicker_mobile')
    
    if (mdp) {
        mdp.innerHTML = ""
        for (var year = fyear; year >= (firstYear ? firstYear : current_cal_min); year--) {
            var n = "none";
            if (fyear == firstYear) {
                n = "block"
            }
            var ye = document.createElement('OPTGROUP');
            ye.label = year
            mdp.appendChild(ye)
            var em = (new Date().getFullYear() == year) ? new Date().getMonth() : 11;
            for (var y = em; y >= 0; y--) {
                var m = document.createElement('OPTION');
            var pfx = ''
            var sfx = ''
            if ((year == firstYear && y < firstMonth0) || (year == lastYear && y > lastMonth0)) {
                pfx = '('
                sfx = ')'
            }
                m.textContent = pfx + months[y] + ", " + year + sfx
                m.value = year + '-' + (y+1)
                ye.appendChild(m)
            }
        }
    }
}