﻿var aMonthNames = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var currentDate = new Date();
var monthOffset = 0;
var timeSpan = 2;   // Number of months AFTER current to include. MUST NOT be more than 11
var failedAttempts = 0;
var CalenderScroller;

function getCalendarData() {
    var oLoaderDiv = document.getElementById("loadingoverlay");
    oLoaderDiv.style.display = "block";
    
    var sParams = "action=SIDECALENDER"
    sParams += "&month="+(currentDate.getMonth()+1)
    sParams += "&year="+(currentDate.getFullYear())
    sParams += "&timeSpan="+timeSpan
    
    var calenderAjax = new billosJAX();
    calenderAjax.sendGetRequest("/process.aspx",sParams,"processCalendarData");
}

function changeMonth(amount) {
    currentMonth = currentDate.getMonth();
    currentYear = currentDate.getFullYear();
    
    currentMonth += (amount * timeSpan);
    if(currentMonth > 11) {
        currentMonth = currentMonth - 12;
        currentYear++;
    } else if (currentMonth < 0) {
        currentMonth += 12;
        currentYear--;
    }
    
    currentDate.setMonth(currentMonth);  
    currentDate.setFullYear(currentYear);    
    getCalendarData();
    
    
    
    monthOffset += (amount * timeSpan);
    oMonth_prev = document.getElementById("month_prev");
    oMonth_next = document.getElementById("month_next");
    oMonth_prev.style.display = (monthOffset <= -6) ? "none" : "block"  // disable if they are 6 months in the past
    oMonth_next.style.display = (monthOffset >= 6) ? "none" : "block"   // disable if they are 6 months in the future
}


function processCalendarData(responseXML, responseText) {
    var oLoaderDiv = document.getElementById("loadingoverlay");
    var oContentDiv = document.getElementById("calendar_items_content");
    var oTitleDiv = document.getElementById("calendar_title");

    var status = responseXML.getElementsByTagName("status")[0].childNodes[0].nodeValue
    if (status == "OK") {
        
        failedAttempts = 0;
        var sCalenderItems = '';
        
        
        var oItemNodes = responseXML.getElementsByTagName("event");       
        for (i = 0; i < oItemNodes.length; i++) {
            cssClass = "item topborder"
            if (i % 2 == 1) { cssClass += " alt" }
            
            sCalenderItems += '<div class="'+cssClass+'">';
            sCalenderItems += '    <div class="daylabel"><div class="daynum">'+oItemNodes[i].getAttribute("day")+'</div>'+aMonthNames[oItemNodes[i].getAttribute("month")-1].toUpperCase()+'</div>';
            sCalenderItems += '    <a href="/event_details.aspx?ID='+oItemNodes[i].getAttribute("id")+'" class="calendar">';
            sCalenderItems += '        <span class="itemtitle"><nobr>'+oItemNodes[i].getAttribute("title")+'</nobr></span><br />';
            sCalenderItems += '        <span class="itembyline"><nobr>'+oItemNodes[i].getAttribute("text")+'</nobr></span>';  
            sCalenderItems += '    </a>';                  
            sCalenderItems += '</div>';         
        }
        
        if (sCalenderItems == "") {
            sCalenderItems = "<br /><br /><br /><br /><br />No Events for this period.";
        }
        
        
        oContentDiv.innerHTML = sCalenderItems; 
        
        CalenderScroller = new simpleScroller('calendar_items_mask', 'calendar_items_content', 'calendar_arrow_up', 'calendar_arrow_down')              
        oLoaderDiv.style.display = "none";
        
        // change the title;
        oTitleDiv.innerHTML = "Events " + aMonthNames[currentDate.getMonth()] + "-" + aMonthNames[currentDate.getMonth()+timeSpan]        
        
    } else {        
        if (oContentDiv.innerHTML == "") {
            failedAttempts++;
            if (failedAttempts < 5) {   // keep trying 5 times.
                getCalendarData();            
            }
        } else {
            oLoaderDiv.style.display = "none";    
            displayAjaxErrorMsg(); 
        }        
    }     
   
}


/******** Calendar Search By ************/

var sCurrentSearchBy = "state";
var aSearchBySections = new Array("state","category","event");
var aSearchByContent = new Array()  

function ddlOption(text,val) {
    var optn = document.createElement("OPTION");
    optn.text = text;
    optn.value = val;                    
    return optn;
}

function changeSearchBy(newMethod) {   
    for (i=0; i < aSearchBySections.length; i++) {            
        oDDL = document.getElementById("searchby_ddl");
        oLink = document.getElementById("searchby_a_" + aSearchBySections[i]);
        
        if (newMethod == aSearchBySections[i]) {            
            oLink.className = "searchby searchby_selected";
            
            if (aSearchByContent[newMethod]) {
                var contentLoader = null  // kill any current request  
                oDDL.options.length = 0;
                for (j=0; j < aSearchByContent[newMethod].length; j++) {
                    oDDL.options.add(aSearchByContent[newMethod][j])
                }
            } else {
                // load it from AJAX
                oDDL.options.length = 0;                  
                oDDL.options.add(new ddlOption("Loading...",""));               
                
                var searchByLoader = new billosJAX();
                searchByLoader.sendGetRequest("/process.aspx", "action=SEARCHBY_"+newMethod, "searchByLoaderProcessRetunedData");
            }            
            oDDL.selectedIndex = 0;
        } else {
            oLink.className = "searchby";
        }
    }
    sCurrentSearchBy = newMethod;
}           
     
function chooseSearchBy(ddl) {
    sSelected = ddl.options[ddl.options.selectedIndex].value;
    if (sSelected != "") {
        if (sCurrentSearchBy == "event") {
            self.location.href = "/event_details.aspx?ID="+sSelected
        } else {
            self.location.href = "/events.aspx?searchby="+sCurrentSearchBy+"&ID="+sSelected
        }
    }        
}


function searchByLoaderProcessRetunedData(responseXML, responseText) {
    var sContent = new Array();
    var status = responseXML.getElementsByTagName("status")[0].childNodes[0].nodeValue
    if (status == "OK") { 
        sContent.push(new ddlOption("Please select " + sCurrentSearchBy,"")); 
        sContent.push(new ddlOption("----------------",""));   

    
        var oItemNodes = responseXML.getElementsByTagName("item");       
        for (i = 0; i < oItemNodes.length; i++) {
	        var optn = document.createElement("OPTION");
	        optn.text = oItemNodes[i].getAttribute("text");
	        optn.value = oItemNodes[i].getAttribute("value");                    
            sContent.push(optn);
        }
        aSearchByContent[sCurrentSearchBy] = sContent; 
        changeSearchBy(sCurrentSearchBy);
    } else {
        displayAjaxErrorMsg();     
    }
}
