$(function() {
    var eventSize = $('#recentEvents').height();
    var pressSize = $('#pressReleases').height();
    if(pressSize > eventSize) {
        if(($.browser.msie && $.browser.version < 7)) {// || $.browser.safari) {
            $('#recentEvents').height(pressSize+"px");
        } else {
            $('#recentEvents').css("minHeight",pressSize+"px");
        }
    } else {
        if(($.browser.msie && $.browser.version < 7)) { // || $.browser.safari) {
            $('#pressReleases').css("height",eventSize+"px");
        } else {
            $('#pressReleases').css("minHeight",eventSize+"px");
        }
    }
});

/**
 * News and events extra content slider functionality.  It expands/collapses the element that is
 * the list parent's parent's immediate sibling.
 * @param jobj the object being clicked on
 */
function expandNewsAndEvents(jobj) {
    jobj.toggleClass("expand");
    jobj.toggleClass("collapse");
    jobj.parent().parent().prev().children().next().next().slideToggle("normal",function(){if($(this).css('display') == 'block'){$(this).css('display','inline-block')}});
}
/**
 * Assigns the list items under elements with the class allEvents the onClick event to activate
 * the expanding content functionality.
 */
$(function() {
    $('.allEvents ul li.collapse').click( function() {
        expandNewsAndEvents($(this))
    });
    $('.allEvents ul li.expand').click( function() {
        expandNewsAndEvents($(this))
    });
});


/**
 *  The calendar widget
 */
(function($) {
    
    var events = [];
    var currentDate = new Date();
    var isDomReady = false;
    
    $(document).ready(function() {
        init();        
    });
    
    function init() {
        isDomReady = true;
        $("#upcomingCalendar > p").after('<a id="calNavLeft"><img src="/common/images/calendarNavLeft.gif" width="8" height="5" alt="" border="0"/></a>')
                                  .after('<a id="calNavRight"><img src="/common/images/calendarNavRight.gif" width="8" height="5" alt="" border="0"/></a>');
        
        $("#calNavLeft").click(function() {
            decrement();
        });  
        $("#calNavRight").click(function() {
            increment();
        });        
        
        populateCalendar(); 
    }
    
    function setCalendarDate(date) {
	
        if (date) {
            currentDate.setTime(Date.parse(date));
        }
        if (isDomReady) {
            populateCalendar(); 
        }
    }
    
    function addEvent(event) {
        if ((event.startDate == null || event.startDate == "")
                && (event.endDate == null || event.endDate == "")) {
            return;   
        }
        if (!event.startDate || event.startDate == "") {
            event.startDate = event.endDate;
        }
        if (!event.endDate || event.endDate == "") {
            event.endDate = event.startDate;
        }
        events.push(event);
    }
    
    function increment() {
        var month = currentDate.getMonth();
        currentDate.setMonth(month + 1);
        populateCalendar();
    }
    
    function decrement() {
        var month = currentDate.getMonth();
        currentDate.setMonth(month - 1);
        populateCalendar();
    }

    function populateCalendar() {
        var td = $("#upcomingCalendar > .calendar td");
        td.removeClass("highlight").unbind("click").css("cursor", "default");
        
        var date = new Date();
        date.setTime(currentDate);
        date.setDate(1);
        var month = date.getMonth();
		
        while (date.getDay() != 1) {
            var day = date.getDate();
            date.setDate(day - 1);
        }
        
        var tdArr = td.get();
        var startIndex = -1;
        for (var i = 0; i < 42; i++) {
            if (date.getMonth() == month) {
                if (startIndex == -1) {
                    startIndex = i;
                }
                $(tdArr[i]).text(date.getDate());
            } else {
                $(tdArr[i]).html("");
            }
            date.setDate(date.getDate() + 1);
        }
        
        for (var i = 0; i < events.length; i++) {
            var start = new Date();
            start.setTime(Date.parse(events[i].startDate) + 3 *3600000); //adding 3 hours in milliseconds to accomodate pacific times.
            start.setHours(0);
            start.setMinutes(0);
            start.setSeconds(0);
           
            var end = new Date();
            end.setTime(Date.parse(events[i].endDate)+ 3 *3600000);
            end.setHours(23);
            end.setMinutes(59);
            end.setSeconds(59); 
			
			
            while (start <= end) {
                if (start.getFullYear() == currentDate.getFullYear()
                        && start.getMonth() == currentDate.getMonth()) {
                    
                    var day = start.getDate();
					
                    var td = $(tdArr[day - 1 + startIndex])
                    td.addClass("highlight");
                    if (events[i].featured == false) {
                        td.css("cursor", "pointer");
                        td.click(function() {
                            $('#nonFeaturedUpcomingExpand ul li.expand').click();
                        });
                    }
                    
                }
                start.setDate(start.getDate() + 1);
            }
        }
        
        $("#upcomingCalendar > p").text(monthTable[currentDate.getMonth()] + " " + currentDate.getFullYear());
    }

    var monthTable = {
        0:"January",
        1:"February",
        2:"March",
        3:"April",
        4:"May",
        5:"June",
        6:"July",
        7:"August",
        8:"September",
        9:"October",
        10:"November",
        11:"December"
    };

    window.setCalendarDate = setCalendarDate;
    window.addCalendarEvent = addEvent;
    
})(jQuery);
