﻿function calendarLoad() {
    var calendar = $("#ctl00_ContentPlaceHolder1_Calendar1");
    var calendarDays = $(".dayStyle");
    var listDivs = $(".eventListLinkDiv");
    var hoverBox;
    highlightDaysWithEvents();
    createHoverBox();

    for (i = 0; i < calendarDays.length; i++) {
        calendarDays[i].onmouseover = linkList;
    }

    for (var i = 0; i < listDivs.length; i++) {
        listDivs[i].onmouseover = highlightDays;
        listDivs[i].onmouseout = unhighlightDays;
    }

    function linkList(e) {
        hideContainer();
        for (j = 0; j < listDivs.length; j++) {
            var dates = getDates(listDivs[j]);
            if (parseInt(this.innerHTML) >= dates.startDate && parseInt(this.innerHTML) <= dates.endDate) {
                var dateNode = this;
                showPopup(dateNode, listDivs[j]);
            }
        }
    }
    function getDates(listDiv) {
        var o = new Object();
        o.endDate = o.startDate = 0;
        var inputs = listDiv.getElementsByTagName("input");

        for (i = 0; i < inputs.length; i++) {
            if (inputs[i].className == "endDate")
                o.endDate = parseInt(inputs[i].value);
            else if (inputs[i].className == "startDate")
                o.startDate = parseInt(inputs[i].value);
        }
        return o;
    }
    function showPopup(dateNode, list) {
        var nodePosition = findPos(dateNode);
        hoverBox.style.display = "block";
        hoverBox.style.top = nodePosition.y + (parseInt(dateNode.style.width)/2)+ "px";
        hoverBox.style.left = nodePosition.x + (parseInt(dateNode.style.width)/2) +"px";
        hoverBox.content.appendChild(list.cloneNode(true));
    }

    function hideContainer() {
        hoverBox.style.display = "none";
        while (hoverBox.content.hasChildNodes()) {
            hoverBox.content.removeChild(hoverBox.content.firstChild);
        }
    }
    function createHoverBox() {
        hoverBox = document.createElement("div");
        hoverBox.id = "hoverBoxContainer";
        hoverBox.style.position = "absolute";
        hoverBox.style.display = "none";
        
        var closeBar = document.createElement("div");
        closeBar.className = "closeBar";

        var closeButton = document.createElement("div");
        closeButton.className = "closeButton";
        closeButton.onclick = hideContainer;
        var content = document.createElement("div")
        content.className = "hoverContent";

        hoverBox.content = content;

        hoverBox.appendChild(closeButton);
        hoverBox.appendChild(closeBar);
        hoverBox.appendChild(content);

        document.body.appendChild(hoverBox);

    }
    function findPos(obj) {
        var pos = new Object();
        pos.x = pos.y = 0;
        if (obj.offsetParent) {
            do {
                pos.x += obj.offsetLeft;
                pos.y += obj.offsetTop;

            } while (obj = obj.offsetParent);
        }
        return pos;
    }
    function highlightDaysWithEvents() {
        var dayRanges = new Array();

        for (i = 0; i < listDivs.length; i++) {
            dayRanges.push(getDates(listDivs[i]));
        }
        
        for (i = 0; i < calendarDays.length; i++) {
            for (j = 0; j < dayRanges.length; j++) {
                var currentDay = parseInt(calendarDays[i].innerHTML);
                if (currentDay >= dayRanges[j].startDate && currentDay <= dayRanges[j].endDate) {                    
                    calendarDays[i].style.fontWeight = "bold";                    
                }
            }
        }
    }
    function highlightDays(e) {
        var dates = getDates(this);
        var endDate = dates.endDate, startDate = dates.startDate;        

        for (var i = 0; i < calendarDays.length; i++) {
            if ((parseInt(calendarDays[i].innerHTML) >= startDate) && (parseInt(calendarDays[i].innerHTML) <= endDate)) {
                calendarDays[i].oldColor = calendarDays[i].style.color;
                if (calendarDays[i].className == "dayStyle") {
                    calendarDays[i].style.backgroundColor = "#1760a0";
                    calendarDays[i].style.color = "#FFFFFF";
                }
            }
        }
    }
    function unhighlightDays(e) {
        for (var i = 0; i < calendarDays.length; i++) {
            if (calendarDays[i].className == "dayStyle") {
                calendarDays[i].style.backgroundColor = "#FFFFFF";
                calendarDays[i].style.color = calendarDays[i].oldColor;
            }

        }
        highlightDaysWithEvents();
    }
}
