﻿//******************************************
//Calendar Functions and Code
//******************************************
var xmlhttp;
function loadXMLDoc(url) {
    xmlhttp = GetXmlHttpObject();
    if (xmlhttp == null) {
        alert("Your browser does not support XMLHTTP!");
        return;
    }
    xmlhttp.onreadystatechange = stateChanged;
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
}

function GetXmlHttpObject() {
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        return new XMLHttpRequest();
    }
    if (window.ActiveXObject) {
        // code for IE6, IE5
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
}

function stateChanged() {
    if (xmlhttp.readyState == 4) {
        //On successful load
        if (xmlhttp.status == 200) {
            //Change Calendar
            document.getElementById('cal_table').innerHTML = xmlhttp.responseText;
            //Highlight the new month
            highlightSelectedMonth();
            //enable buttons
            document.getElementById('prev').attributes["onclick"].value = "changeLink('back');return false;";
            document.getElementById('next').attributes["onclick"].value = "changeLink('forward');return false;";
        }
        else {
            alert("Problem retrieving XML data:" + xmlhttp.statusText);
        }
    }
}

function changeMonth(month, year) {
    sMonth = month;
    sYear = year;

    loadXMLDoc('CalTable.php?month=' + sMonth + '-' + sYear);
}

//******************************************
//Menu Functions and Code
//******************************************

function changeLink(action) {
       
    //alert("changeLink "+action);
    var monthsListed = 16;

    var monthArray = new Array();
    monthArray[0] = ["01", "January"];
    monthArray[1] = ["02", "February"];
    monthArray[2] = ["03", "March"];
    monthArray[3] = ["04", "April"];
    monthArray[4] = ["05", "May"];
    monthArray[5] = ["06", "June"];
    monthArray[6] = ["07", "July"];
    monthArray[7] = ["08", "August"];
    monthArray[8] = ["09", "September"];
    monthArray[9] = ["10", "October"];
    monthArray[10] = ["11", "November"];
    monthArray[11] = ["12", "December"];

    var sDateArr = document.getElementById('month-title').innerHTML.split(" ");
    var sMonth = sDateArr[0];
    var sYear = sDateArr[1];
    var sMonthNum = 0;
    for (var q = 0; q < monthArray.length; q++) {
        if (sMonth == monthArray[q][1])
            sMonthNum = parseInt(q);
    }

    try {
        //Disable the previous and next buttons
        //Enable them after the calendar is loaded in the XML funtions
        document.getElementById('prev').attributes["onclick"].value = "return false;";
        document.getElementById('next').attributes["onclick"].value = "return false;";
        
        if (action == "back") {
            //alert("Back");
            //Change Menu
            for (var i = 0; i < monthsListed; i++) {
                var dateSplit = document.getElementById('month-' + i).innerHTML.split(" ");
                var dateMonth = dateSplit[0];
                var dateYear = dateSplit[1];
                var prevYear = parseInt(dateYear) - 1;

                //alert(dateMonth + " " + dateYear);
                //alert(sMonth+" "+sYear);

                if (dateMonth == monthArray[0][1]) {
                    document.getElementById('month-' + i).innerHTML = monthArray[11][1] + " " + prevYear;
                    document.getElementById('month-' + i).attributes["onclick"].value = onClickChange(monthArray[11][0], prevYear);
                }
                else {
                    var newMonthNum = "";
                    var newMonthName = "";
                    for (var j = 0; j < monthArray.length; j++) {
                        if (dateMonth == monthArray[j][1]) {
                            newMonthNum = monthArray[j - 1][0];
                            newMonthName = monthArray[j - 1][1];
                        }
                    }
                    document.getElementById('month-' + i).innerHTML = newMonthName + " " + dateYear;
                    document.getElementById('month-' + i).attributes["onclick"].value = onClickChange(newMonthNum, dateYear);
                }
            }
            //Change Calendar
            if (sMonthNum == 0) {
                var monthBack = monthArray[11][0];
                var yearBack = parseInt(sYear) - 1;
                loadXMLDoc('CalTable.php?month=' + monthBack + '-' + yearBack);
            }
            else {
                var monthBack = monthArray[sMonthNum - 1][0];
                var yearBack = parseInt(sYear);
                loadXMLDoc('CalTable.php?month=' + monthBack + '-' + yearBack);
            }
        }
        else if (action == "forward") {
            //alert("Forward");
            for (var i = 0; i < monthsListed; i++) {
                var dateSplit = document.getElementById('month-' + i).innerHTML.split(" ");
                var dateMonth = dateSplit[0];
                var dateYear = dateSplit[1];
                var nextYear = parseInt(dateYear) + 1;

                //alert(dateMonth + " " + dateYear);

                if (dateMonth == monthArray[11][1]) {
                    document.getElementById('month-' + i).innerHTML = monthArray[0][1] + " " + nextYear;
                    document.getElementById('month-' + i).attributes["onclick"].value = onClickChange(monthArray[0][0], nextYear);
                }
                else {
                    var newMonthNum = "";
                    var newMonthName = "";
                    for (var j = 0; j < monthArray.length; j++) {
                        if (dateMonth == monthArray[j][1]) {
                            newMonthNum = monthArray[j + 1][0];
                            newMonthName = monthArray[j + 1][1];
                        }
                    }
                    document.getElementById('month-' + i).innerHTML = newMonthName + " " + dateYear;
                    document.getElementById('month-' + i).attributes["onclick"].value = onClickChange(newMonthNum, dateYear);
                }
            }

            //Change Calendar
            if (sMonthNum == 11) {
                var monthForward = monthArray[0][0];
                var yearForward = parseInt(sYear) + 1;
                loadXMLDoc('CalTable.php?month=' + monthForward + '-' + yearForward);
            }
            else {
                var monthForward = monthArray[sMonthNum + 1][0];
                var yearForward = parseInt(sYear);
                loadXMLDoc('CalTable.php?month=' + monthForward + '-' + yearForward);
            }
        }
        else { }
    }
    catch (e) {
        alert("The following error happened while trying to change the month:\n" + e);
    }  
    
    return false;
}

function onClickChange(month,year){
    var newDate = "changeMonth('"+month+"','"+year+"');return false;";
    return newDate;
}

function highlightSelectedMonth() {
    //Highlight the selected month
    var currTitle = document.getElementById('month-title').innerHTML.split(" ");
    var currMonth = currTitle[0];
    var currYear = currTitle[1];
    
    for (var x = 0; x < 16; x++) {
        var currElement = document.getElementById('month-' + x).innerHTML.split(" ");
        var currElementMo = currElement[0];
        var currElementYear = currElement[1];
        if (currMonth == currElementMo && currYear == currElementYear) {
            document.getElementById('month-' + x).style.color = "#a74106";
        }
        else {
            document.getElementById('month-' + x).style.color = "";
        }
    }
}