var $eventData = "";
$.fn.loadCalendarXML = function(m,y) {
	$.ajax({
		type: "GET",
		url: "/idea_hub/events/EventFeeder.aspx",
		success: function(data) {
			//alert(data);
			$eventData = $(data);
			$.fn.buildEvents(m,y);
		}
	});
};

$.fn.buildEvents = function(m,y) {
	$eventData.find('event[date^=' + y + '-' + m + ']').each(function() {
		
		var event = $(this);
		eventDate = event.attr('date').split('-');
		
		$('#calendar_container ul li[rel=' + event.attr('date') + ']').addClass('calendar_event');
		if (!$('#calendar_container ul li[rel=' + event.attr('date') + '] a').hasClass('calendar_event_link')) {
			$('#calendar_container ul li[rel=' + event.attr('date') + ']').wrapInner('<a href="' + event.attr('url') + '" class="calendar_event_link"></a>');
		}
		
	});
	
	$.fn.bindCalDateHover();
};

$.fn.loadEventDetail = function(date, target) {
	$eventData.find('event[date=' + date + ']').each(function() {
		var event = $(this);
		$('#calendar_popup_content').append( '<p><span class="calendar_popup_title">' + event.attr('title') + '</span><br /><span class="calendar_popup_location">' + event.attr('location') + '</span></p>' );
	});
	$('#calendar_popup_shadow').css({
		height: $('#calendar_popup_content').outerHeight() + 'px'
	});
	$('#calendar_popup_arrow').css({
		top: $('#calendar_popup_content').outerHeight() - 4
	});
	
	popupLeft = $(target).offset().left - ( ($('#calendar_popup').outerWidth()/2) - ($(target).outerWidth()/2) ) + 2;
	
	if (popupLeft < 10) {
		
		// Reposition arrow
		rePos = popupLeft - 10;
		$('#pos').html(rePos);
		$('#calendar_popup_arrow').css('background-position', rePos + 'px 0');
		
		popupLeft = 10;
	} else {
		$('#calendar_popup_arrow').css('background-position', '0 0');
	}
	
	// Position popup
	$('#calendar_popup').css({
		top: $(target).offset().top - $('#calendar_popup').outerHeight() + 'px',
		left: popupLeft + 'px'
	});
};

$.fn.unLoadEventDetail = function() {
	// Position popup
	$('#calendar_popup').css({
		top: '0px',
		left: '-9999px'
	});
	$('#calendar_popup_content').empty();
};

$.fn.bindCalDateHover = function() {
	$('#calendar_container ul li a').hover(
		function() { $.fn.loadEventDetail( $(this).parent('li').attr('rel'), $(this) ); },
		function() { $.fn.unLoadEventDetail(); }
	);
};

$.fn.bindCalHeader = function() {
	$('#calendar_header a').click(function() {
	
		// Set initial values
		newDate = $(this).attr('rel').split('-');
		$.fn.buildCalendar(newDate[0],newDate[1]);
	
		return false;
	});
};

$.fn.buildCalendar = function(m,y) {
	
	var mn = ['January','February','March','April','May','June','July','August','September','October','November','December'];
	var dim = [31,0,31,30,31,30,31,31,30,31,30,31];

	var oD = new Date(y, m-1, 1); //DD replaced line to fix date bug when current day is 31st
	oD.od = oD.getDay()+1; //DD replaced line to fix date bug when current day is 31st

	var todaydate = new Date(); //DD added
	var scanfortoday = (y==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0; //DD added

	dim[1] = (((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;
	
	// Previous
	if ((parseInt(m,10)-1) == 0) {
		var prevMonth = 12;
		var prevYear = (parseInt(y,10)-1);
	} else {
		var prevMonth = parseInt(m,10)-1;
		var prevYear = y;
	}
	
	// Next
	if ((parseInt(m,10)+1) == 13) {
		var nextMonth = 1;
		var nextYear = (parseInt(y,10)+1);
	} else {
		var nextMonth = parseInt(m,10)+1;
		var nextYear = y;
	}
	
	var t = '<div id="calendar_header"><h4><a href="#" rel="' + (todaydate.getMonth()+1) + '-' + todaydate.getFullYear() + '">' + mn[m-1] + ' ' + y + '</a></h4><a href="#" class="month_prev" rel="' + prevMonth + '-' + prevYear + '">&lt;</a><a href="#" class="month_next" rel="' + nextMonth + '-' + nextYear + '">&gt;</a></div>';
	t += '<div id="calendar_container"><ul>';
	/*for(s=0;s<7;s++) {
		t+='<li class="calendar_day">' + "SMTWTFS".substr(s,1) + '</li>';
	}*/
	
	for(i=1;i<=42;i++) {
		var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
		if (x==scanfortoday) { //DD added
			t+='<li id="calendar_today" class="calendar_date" rel="' + y + '-' + m + '-' + x + '">' + x + '</li>';
		} else {
			t+='<li class="calendar_date" rel="' + y + '-' + m + '-' + x + '">' + x + '</li>';
		}
	
	}
	
	t += '</ul></div>';
	
	// Add popup div for holding event list
	if ( !$('div').is('#calendar_popup') ) {
		$('body').append('<div id="calendar_popup"><div id="calendar_popup_content"></div><div id="calendar_popup_shadow"></div><div id="calendar_popup_arrow"></div></div>');
	}
	
	// LOAD IN XML ITEM DATA
	if ($eventData != "") {
		$('#mini_calendar').html( t );

		$.fn.buildEvents(m,y);
	} else {
		$.fn.loadCalendarXML(m,y);
		
		$('#mini_calendar').html( t );
	}
	
	$.fn.bindCalHeader();
};
