var date = new Date();
var currentMonth = date.getMonth();
var currentDay = date.getDate();
var currentYear = date.getFullYear();
var selectedMonth = currentMonth + 1;
var selctedDay = currentDay;
var selectedYear = currentYear;

var resultsArray = new Array();
var monthTotalDays = "";
var setEvents = false;

var month_name = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var empty_table = null;
var extraInfo = "event";

var curCatagory = "";


// ======================================================
// setCatagoryKey() - filter down to event type
// ======================================================
	function setCatagoryKey(argFilter) {
		
		if(argFilter != curCatagory){
	        //$(argFilter).getElements('span[class$=key_item]').setStyle('border','solid 1px #000000');
	        $(argFilter).getElements('span[class$=key_name]').setStyle('color','#8f8f8f');

	        if(curCatagory != ''){
	            $(curCatagory).getElements('span[class$=key_item]').setStyle('border','none');
	            $(curCatagory).getElements('span[class$=key_name]').setStyle('color','#5e7d9a');
	        }

	        curCatagory = argFilter;
		}

	}
	
// ======================================================
// filterMonth() - filter down to event type
// ======================================================
	function filterMonth(argFilter,argExtraInfo) {
		setCalendar();
		extraInfo = argExtraInfo;
		
		
		if(argFilter != 'all_events'){
		    events.update('events_container',["events"],[argFilter], extraInfo);
		}else{
		    events.update('events_container',["events"],"", extraInfo);
		}
		
		setCatagoryKey(argFilter);
	}
	
// ======================================================
	// selectMonth() - set results based on month
	// ======================================================
	function selectMonth() {
		setCalendar();
		events.update('events_container',["events"],global.filtersArray, extraInfo);
	}

// ======================================================
	// calcOffset - 
	// ======================================================
	function calcOffset(dayNum, monthNum, yearNum){
		var temp = new Date(yearNum, monthNum, dayNum);
		return ((43-temp.getDate()+temp.getDay())%7);
	}
	
	// ======================================================
	// daysInMonth - 
	// ======================================================
	//needs to have the NEXT month passed (cur+1)
	function daysInMonth(month,year) {
		var dd = new Date(year, month, 0);
		return dd.getDate();
	}
	
	// ======================================================
	// setCalendar - 
	// ======================================================
	function setCalendar(){
	
		var highlight_today = false;
  		if(date.getMonth() == currentMonth && date.getFullYear() == currentYear){
    			highlight_today = true;
  		}
		
		$('calendar').setStyle('display', 'block');
		
		if(empty_table != null) resetTable();
		empty_table = new Object($('calendar_dates').clone());
	
		$('month_label').setHTML(month_name[currentMonth] + ", ");
		$('year_label').setHTML(currentYear);
		var offset = calcOffset(1, currentMonth, currentYear);
		var num_days = daysInMonth(currentMonth + 1, currentYear);
		monthTotalDays = num_days;
		var day_num = 1;
		for(i = 0; i < 42; i++){
			var d = $("d_"+i);
			if(d != null) {
				if(i >= offset && day_num <= num_days){
					d.setHTML(day_num);
					d.id = "date_"+day_num;
					d.addClass('offset');
					d.removeClass('empty');
					if(highlight_today && day_num == date.getDate()){
					 	d.addClass('cur_day');
					}
					day_num++;
				}else{
					if(d){
						d.removeAttribute('id');
					  }
				}	
			}
		}
		for(var i = 0; i < resultsArray.length; i++){
			var event_start = parseInt(resultsArray[i].dates.startDay);
			var event_start_m = parseInt(resultsArray[i].dates.startMonth);
			var event_end = parseInt(resultsArray[i].dates.endDay);
			var event_end_m = parseInt(resultsArray[i].dates.endMonth);
			
			if(event_start_m != (currentMonth+1)){
				//event started last month and ends this month, so start the first day of this month
				event_start = 1;
			}else if(event_end_m != (currentMonth+1)){
				//event ends sometime next month, so fill in the calendar till the end of this month
				event_end = daysInMonth(currentMonth, currentYear);
			}
			for(var j = event_start; j <= event_end; j++){
				var d = $("date_"+j);
				if(!d.hasClass('has_event')) d.addClass('has_event');
			}
		}
		
		//Load in events data
		if(!setEvents){
		    events.read('events', '/en/experience/feeds/jeep-events-all.xml', true, 'events_container', extraInfo, 'calendar');
		    setEvents = true;
		    setCatagoryKey('all_events')
		}
	}
	
	// ======================================================
	// calendarBack() - 
	// ======================================================
	function calendarBack(){
		//resetTable();
		if(currentMonth == 0){currentMonth = 11; currentYear--; selectedYear--;}
		else{currentMonth--;}
		selectedMonth = currentMonth+1;
		selectMonth();
		//setCalendar();
		
	}
	
	// ======================================================
	// calendarNext() - 
	// ======================================================
	function calendarNext(){
		//resetTable();
		if(currentMonth == 11){currentMonth = 0; currentYear++; selectedYear++;}
		else{currentMonth++;}
		selectedMonth = currentMonth+1;
		selectMonth();
		//setCalendar();
	}
	
	// ======================================================
	// resetTable() - 
	// ======================================================
	function resetTable(){
		$('calendar_dates').remove();
		$('calendar_contents').appendChild(empty_table);
		$$('#calendar_dates td.has_event').each(function(item, index) {
						item.toggleClass('has_event');
											    });
		
	}
	
	onload_register('setCalendar();');