﻿// News.js
// © Waimea Music Club

function ParseNextDate(className, targetClassName, today, prefix) {
    if (!prefix) {
        prefix = "d";
    }
    
    // Parse the date from the class name
    var nextDate = null;
    if (className) {
        var classNames = className.split(" ");
        if (classNames.length >= 1 && classNames[0] == targetClassName) {
            for (var i = classNames.length - 1; i >= 1; i--) {
                if (classNames[i].length > prefix.length && classNames[i].substring(0, prefix.length) == prefix) {
                    var temp = new Date();
                    temp.setTime(Date.parse(classNames[i].substring(prefix.length, prefix.length + 10).replace(/\-/g, "/")));
                    if (nextDate == null) {
                        nextDate = temp;
                    } else if (temp <= today.getTime() && temp.getTime() > nextDate.getTime()) {
                        nextDate = temp;
                    } else if (temp >= today.getTime() && temp.getTime() < nextDate.getTime()) {
                        nextDate = temp;
                    }
                }
            }
        }
    }
    return nextDate;
}

function CleanEvents() {
    // Determine the relevant dates
    var now = new Date();
    var today = new Date();
    today.setTime(Date.parse(now.toDateString()));
    var tomorrow = new Date();
    tomorrow.setTime(today.getTime());
    tomorrow.setDate(today.getDate() + 1);

    var elemEventsList = document.getElementById('eventslist');
    if (elemEventsList) {
        // Remove defunct events and mark cancelled events. Also, mark events that are to occur today or tomorrow.
        var nodes = elemEventsList.childNodes;
        for (var i = nodes.length - 1; i >= 0; i--) {
            var itemDate = ParseNextDate(nodes[i].className, "event", today, "d");
            if (itemDate) {
                if (itemDate.getTime() < today.getTime()) {
                    elemEventsList.removeChild(nodes[i]);
                } else if (nodes[i].className.indexOf("cancelled") >= 0 && nodes[i].innerHTML) {
                    nodes[i].innerHTML += "&nbsp;<span class=\"note\">CANCELLED</span>";
                }

                if (itemDate.getTime() == today.getTime() && nodes[i].innerHTML) {
                    nodes[i].innerHTML = "<span class=\"note\">TODAY</span>&nbsp;" + nodes[i].innerHTML;
                } else if (itemDate.getTime() == tomorrow.getTime() && nodes[i].innerHTML) {
                    nodes[i].innerHTML = "<span class=\"note\">TOMORROW</span>&nbsp;" + nodes[i].innerHTML;
                }
            }
        }
        nodes = null;
    }
    elemEventsList = null;
}

function CleanAnnouncements() {
    // Determine the relevant dates
    var now = new Date();
    var today = new Date();
    today.setTime(Date.parse(now.toDateString()));
    var newThreshold = new Date();
    newThreshold.setTime(today.getTime());
    newThreshold.setDate(newThreshold.getDate() - 20);

    var elemContent = document.getElementById("content");
    if (elemContent) {
        // Remove any expired announcements and add the "new" indicator to new announcements
        var nodes = elemContent.getElementsByTagName("*");
        for (var i = nodes.length - 1; i >= 0; i--) {
            var expiryDate = ParseNextDate(nodes[i].className, "announcement", today, "e");
            if (expiryDate && expiryDate.getTime() < today.getTime()) {
                nodes[i].parentNode.removeChild(nodes[i]);
            } else {
                var itemDate = ParseNextDate(nodes[i].className, "announcement", today, "d");
                if (itemDate && itemDate >= newThreshold && nodes[i].innerHTML) {
                    nodes[i].innerHTML = "<img src=\"Resources/new.gif\" title=\"This announcement is new\" alt=\"New!\" style=\"float: left; margin-right: 6px;\" />" + nodes[i].innerHTML;
                }
            }
        }
    }
    elemContent = null;
}
