	//addLoadEvent(loadCalendar);
	
	var m_names = new Array("Jan", "Feb", "March", "April", "May", "June", "July", "August", "Sept", "Oct", "Nov", "Dec");
	var Today = new Date();
	var date = new Date();
	
	function calendarTeaser(d) //d = div
	{
		$('calendarDetail').style.top = (findPosY($(d)) + 25) + 'px';
		$('calendarDetail').style.left = (findPosX($(d)) + 90) + 'px';
		
		if ($('detail_'+d).innerHTML.length > 0)
		{
			$('calendarDetail').innerHTML = $('detail_'+d).innerHTML;
			Element.show('calendarDetail');
		}		
	}
	
	function calendarTeaserHide(d)
	{
		Element.hide('calendarDetail');
	}	
	
	function loadNextMonth( event_type, space ){
		date.setMonth(date.getMonth()+1);
		reloadCalendar(event_type, space, date);
	}
	
	function loadPreviousMonth(event_type, space ){
		date.setMonth(date.getMonth()-1);		
		reloadCalendar(event_type, space, date);
	}
	
	function loadCalendar(event_type, space)
	{
				
		$('calendarYear').innerHTML = Today.getFullYear();
	
		curDate = new Date(); // Today
		thisMonth = new Date();
		date = new Date();
		curDate.setFullYear(curDate.getFullYear(), curDate.getMonth(), 1);
			//set to first day of the week
		curDate.setDate( curDate.getDate() - curDate.getDay()%7 )
		$('calendarContainer').innerHTML = "";
		for (w=getWeek(curDate); w<getWeek(curDate)+6;w++)
				{				
					var weekId = 'Week_' + curDate.getFullYear() + '_' + w;
					var weekId2 = 'Week_' + curDate.getFullYear() + '_' + (w+1);			
					var week = document.createElement('div');
					week.setAttribute('id', weekId);
					week.setAttribute('className', 'calendarWeek');
					week.setAttribute('class', 'calendarWeek');

					$('calendarContainer').appendChild(week);
					for (x=1;x<=7;x++)
					{
						var dayId = 'Day_' + curDate.getFullYear() + '_' + curDate.getMonth() + '_' + curDate.getDate();
						var day = document.createElement('div');
		    			var pars = 'day=' + curDate.getFullYear() + '-' + curDate.getMonth() + '-' + curDate.getDate() + '&event_type=' + event_type + '&space=' + space;
						
						day.setAttribute('id', dayId);
						day.setAttribute('rel', 'lightbox');
		     		day.setAttribute('href', '/events/fullday?' + pars);
						// day.setAttribute('onclick', "alert('" + pars + "');");
		     		
						
						if (Today.getFullYear() == curDate.getFullYear() && Today.getMonth() == curDate.getMonth() && Today.getDate() == curDate.getDate())
						{
							day.setAttribute('className', 'calendarCurrentDay');
							day.setAttribute('class', 'calendarCurrentDay');
						}
						else if (curDate.getMonth() != thisMonth.getMonth()) 
						{
							day.setAttribute('className','calendarOffMonth');
							day.setAttribute('class','calendarOffMonth');
						}
						else
						{
							day.setAttribute('className', 'calendarDay');
							day.setAttribute('class', 'calendarDay');
						}
						
						var title = document.createElement('div');
						title.setAttribute('id', 'title_' + dayId)
						title.setAttribute('className', 'calendarDayTitle');	
						title.setAttribute('class', 'calendarDayTitle');
						
						var detail = document.createElement('div');
						detail.setAttribute('id', 'detail_' + dayId)
						detail.setAttribute('className', 'calendarDayDetail');	
						detail.setAttribute('class', 'calendarDayDetail');	
						
						if (1 == curDate.getDate())
							title.innerHTML = m_names[curDate.getMonth()] + ' ' + curDate.getDate();
						else 
							title.innerHTML = curDate.getDate();
											
						$(weekId).appendChild(day);
						$(dayId).appendChild(title);
						$(dayId).appendChild(detail);
						
						addEvent( $(dayId), 'mouseover', function(){ calendarTeaser(this.id) } );										
						addEvent( $(dayId), 'mouseout', function(){ calendarTeaserHide(this.id) } );
						curDate.setDate(curDate.getDate()+1);
						
						//window.status = 'looping: ' + dayId;
						
					} //end week
			
			populate(weekId2, event_type, space);
			if (curDate.getMonth() != Today.getMonth())
				break;
		}
		initialize(); //reinitialize lightboxes
	}
	
	function reloadCalendar(event_type, space, date)
	{	
		
		curDate.setFullYear(date.getFullYear(), date.getMonth(), 1);
		curDate.setDate( curDate.getDate() - curDate.getDay()%7 );
						
		$('calendarContainer').innerHTML = "";
		$('calendarYear').innerHTML = date.getFullYear();
		
		for (w=getWeek(curDate); w<getWeek(curDate)+6; w++)
				{				
					var weekId = 'Week_' + curDate.getFullYear() + '_' + w;
					var weekId2 = 'Week_' + curDate.getFullYear() + '_' + (w+1);			
					var week = document.createElement('div');
					week.setAttribute('id', weekId);
					week.setAttribute('className', 'calendarWeek');
					week.setAttribute('class', 'calendarWeek');
					
					$('calendarContainer').appendChild(week);
					for (x=1;x<=7;x++)
					{
						var dayId = 'Day_' + curDate.getFullYear() + '_' + curDate.getMonth() + '_' + curDate.getDate();
						var day = document.createElement('div');
		    			var pars = 'day=' + curDate.getFullYear() + '-' + curDate.getMonth() + '-' + curDate.getDate() + '&event_type=' + event_type + '&space=' + space;
						
						day.setAttribute('id', dayId);
						day.setAttribute('rel', 'lightbox');
		     			day.setAttribute('href', '/events/fullday?' + pars);
						
						if (Today.getFullYear() == curDate.getFullYear() && Today.getMonth() == curDate.getMonth() && Today.getDate() == curDate.getDate())
						{
							day.setAttribute('className', 'calendarCurrentDay');
							day.setAttribute('class', 'calendarCurrentDay');
						}
						else if (curDate.getMonth() != date.getMonth()) 
						{
							day.setAttribute('className','calendarOffMonth');
							day.setAttribute('class','calendarOffMonth');
						}
						else
						{
							day.setAttribute('className', 'calendarDay');
							day.setAttribute('class', 'calendarDay');
						}
						
						var title = document.createElement('div');
						title.setAttribute('id', 'title_' + dayId)
						title.setAttribute('className', 'calendarDayTitle');	
						title.setAttribute('class', 'calendarDayTitle');
						
						var detail = document.createElement('div');
						detail.setAttribute('id', 'detail_' + dayId)
						detail.setAttribute('className', 'calendarDayDetail');	
						detail.setAttribute('class', 'calendarDayDetail');	
						
						if (1 == curDate.getDate())
							title.innerHTML = m_names[curDate.getMonth()] + ' ' + curDate.getDate();
						else 
							title.innerHTML = curDate.getDate();
											
						$(weekId).appendChild(day);
						$(dayId).appendChild(title);
						$(dayId).appendChild(detail);
						
						addEvent( $(dayId), 'mouseover', function(){ calendarTeaser(this.id) } );										
						addEvent( $(dayId), 'mouseout', function(){ calendarTeaserHide(this.id) } );
						curDate.setDate(curDate.getDate()+1);
						// console.log('looping: ' + dayId);

					} //end week
					if ( w >= 52 )
						w = 1;
					populate(weekId2, event_type, space);
					
					if (curDate.getMonth() != date.getMonth()) {
						break;
					}

		}
		
		initialize(); //reinitialize lightboxes
	}
		
	function populate(week, event_type, space)
	{
		var pars = 'week=' + week.replace('Week_', '') + '&event_type=' + event_type + '&space=' + space;
		var myAjax = new Ajax.Request( '/events/week', { method: 'post', parameters: pars, onComplete: populateResponse });			
	}
		
	function populateResponse(response)
	{
	    //alert(response.responseText);
		myJSON = eval('(' + response.responseText + ')');

        if (myJSON['week'].length > 0)
        {
            WeekId = myJSON['week'][0].id;            
            //alert(WeekId);
            cnt = myJSON['events'].length;                      
			for(i = 0; i < cnt; i++)
			{
			     //js months are zero based!
			     dayId = 'detail_' + myJSON['events'][i].id;
			     $(dayId).innerHTML += "<ul><li>" + myJSON['events'][i].detail + "</li></ul>";			    
			}        
		}	
	}	
		
	function getWeek(when)
	{
		
		var newYear = new Date(when.getFullYear(),0,1);
		var offset = 7 + 1 - newYear.getDay();
		if (offset == 8) offset = 1;
		var daynum = ((Date.UTC(when.getFullYear(),when.getMonth(),when.getDate(),0,0,0) - Date.UTC(when.getFullYear(),0,1,0,0,0)) /1000/60/60/24) + 1;
		var weeknum = Math.floor((daynum-offset+7)/7);
		if (weeknum == 0) {
			year--;
			var prevNewYear = new Date(year,0,1);
			var prevOffset = 7 + 1 - prevNewYear.getDay();
			if (prevOffset == 2 || prevOffset == 8) weeknum = 53; else weeknum = 52;
		}
		return weeknum;
	}
	
	function setLyr(obj,lyr)
	{
		var newX = findPosX(obj) + 100;
		var newY = findPosY(obj) + 20;
		var x = new getObj(lyr);
		x.style.top = newY + 'px';
		x.style.left = newX + 'px';
	}
	
	function findPosX(obj)
	{
		var curleft = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curleft += obj.offsetLeft
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)
			curleft += obj.x;
		return curleft;
	}
	
	function findPosY(obj)
	{
		var curtop = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curtop += obj.offsetTop
				obj = obj.offsetParent;
			}
		}
		else if (obj.y)
			curtop += obj.y;
		return curtop;
	}
	
	function getObj(name)
	{
	 if (document.getElementById)
	 {
		   this.obj = document.getElementById(name);
		   this.style = document.getElementById(name).style;
	 }
	 else if (document.all)
	 {
		   this.obj = document.all[name];
		   this.style = document.all[name].style;
	 }
	 else if (document.layers)
	 {
		   if (document.layers[name])
		   {
			this.obj = document.layers[name];
			this.style = document.layers[name];
		   }
		   else
		   {
			this.obj = document.layers.testP.layers[name];
			this.style = document.layers.testP.layers[name];
		   }
	 }
	}
