var miniCalendar = new MiniCalendar();

function MiniCalendar()
{
	//var BASE_URL			= 'http://192.168.0.206/html/calendar/';
	var BASE_URL		= 'http://www.soundrunner.net/calendar/';
	//var FLAG_SEGMENT 		= 3;
	var FLAG_SEGMENT	= 2;
	var DAY_FLAG			= 'day';
	var EVT_FLAG			= 'evt';
	var EVT_ID_SEGMENT 	= FLAG_SEGMENT + 1;
	var YEAR_SEGMENT		= FLAG_SEGMENT + 1;
	var MONTH_SEGMENT		= YEAR_SEGMENT + 1;
	var DAY_SEGMENT		= MONTH_SEGMENT + 1;	
	
	var year;
	var month;

	Event.observe(window, 'load', loadHandler);

	// event handlers
	//------------------------------------------------------
		
		function loadHandler(evt) 
		{
			$('preloader').className = 'display_block';
			
			var pathArray = window.location.pathname.split('/');
			
			// only the event id is known so need to get event date
			if(	pathArray[FLAG_SEGMENT] === EVT_FLAG	&&
				pathArray.length		>= EVT_ID_SEGMENT )
			{
				var request = 
				new Ajax.Request(
					BASE_URL + 'get_date_by_event_id',	
					{	
						method		: 'post',
						onSuccess	: getEventDateSuccess,
						parameters	: 
						{
							event_id : pathArray[EVT_ID_SEGMENT]
						}
					}
				);
			}
			// event date is known
			else
			{
				// date specified in url
				if(	pathArray[FLAG_SEGMENT] === DAY_FLAG	&&
					pathArray.length 		>= MONTH_SEGMENT )
				{
					year	= pathArray[YEAR_SEGMENT];
					month	= pathArray[MONTH_SEGMENT];
				}
				// use current date
				else
				{
					var date 	= new Date();
					year		= date.getFullYear();
					month		= zeroFill(date.getMonth() + 1);
				}
				
				requestCalendar();
			}
		}

		function incMonth()
		{
			month++;
			if(month > 12)
			{
				month = 1;
				year++;
			}
			month = zeroFill(month);
			
			switchMonth();		
		}

		function decMonth()
		{
			month--;
			if(month <= 0)
			{
				month = 12;
				year--;
			}
			month = zeroFill(month);
			
			switchMonth();	
		}
		
		function requestCalendar()
		{
			var request = 
				new Ajax.Request(
					BASE_URL + 'get_mini_calendar',	
					{	
						method		: 'post',
						onSuccess	: getCalendarSuccess,
						parameters	: 
						{
							date : year + '-' + month
						}
					}
				);
		}
		
	//------------------------------------------------------


	// callback
	//------------------------------------------------------
		
		function getCalendarSuccess(transport)
		{
			$('preloader').className = 'no_display';
			$('mini_calendar_wrap').innerHTML = transport.responseText;
			$('prev_month').onclick = decMonth;
			$('next_month').onclick = incMonth;
		}
		
		function calendarSwitchSuccess(transport)
		{
			$('preloader').className = 'no_display';
			$('mini_calendar_wrap').innerHTML = transport.responseText;
			$('prev_month').onclick = decMonth;
			$('next_month').onclick = incMonth;
		}
		
		function getEventDateSuccess(transport)
		{
			var dateArray 	= transport.responseText.split('-');
			year 			= dateArray[0];
			month 			= dateArray[1];
			
			requestCalendar();
		}

	//------------------------------------------------------


	// misc
	//------------------------------------------------------

		function switchMonth()
		{
			var request = 
				new Ajax.Request(
					BASE_URL + 'get_mini_calendar',	
					{	
						method		: 'post',
						onSuccess	: calendarSwitchSuccess,
						parameters	: 
							{
								date : year + '-' + month
							}
					}
				);
			
			$('mini_calendar_wrap').innerHTML = '';
			$('preloader').className = 'display_block';
		}
		
	//------------------------------------------------------


	// utility
	//------------------------------------------------------
		
		function zeroFill(str)
		{
			while(str.length < 2)
			{
				str = '0' + str;
			}
			
			return str;
		}
		
	//------------------------------------------------------
	
	return true;
}

