/*
###############################################################################
##
##	Type		:	Class
##	Description	:	Browser Detection
##	Author		:	www.quirksmode.org
##
###############################################################################
*/
var events;

	var BrowserDetect = {
		init: function () {
			this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
			this.version = this.searchVersion(navigator.userAgent)
				|| this.searchVersion(navigator.appVersion)
				|| "an unknown version";
			this.OS = this.searchString(this.dataOS) || "an unknown OS";
		},
		searchString: function (data) {
			for (var i=0;i<data.length;i++)	{
				var dataString = data[i].string;
				var dataProp = data[i].prop;
				this.versionSearchString = data[i].versionSearch || data[i].identity;
				if (dataString) {
					if (dataString.indexOf(data[i].subString) != -1)
						return data[i].identity;
				}
				else if (dataProp)
					return data[i].identity;
			}
		},
		searchVersion: function (dataString) {
			var index = dataString.indexOf(this.versionSearchString);
			if (index == -1) return;
			return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
		},
		dataBrowser: [
			{
				string: navigator.vendor,
				subString: "Apple",
				identity: "Safari"
			},
			{
				prop: window.opera,
				identity: "Opera"
			},
			{
				string: navigator.vendor,
				subString: "iCab",
				identity: "iCab"
			},
			{
				string: navigator.vendor,
				subString: "KDE",
				identity: "Konqueror"
			},
			{
				string: navigator.userAgent,
				subString: "Firefox",
				identity: "Firefox"
			},
			{	// for newer Netscapes (6+)
				string: navigator.userAgent,
				subString: "Netscape",
				identity: "Netscape"
			},
			{
				string: navigator.userAgent,
				subString: "MSIE",
				identity: "Explorer",
				versionSearch: "MSIE"
			},
			{
				string: navigator.userAgent,
				subString: "Gecko",
				identity: "Mozilla",
				versionSearch: "rv"
			},
			{ 	// for older Netscapes (4-)
				string: navigator.userAgent,
				subString: "Mozilla",
				identity: "Netscape",
				versionSearch: "Mozilla"
			}
		],
		dataOS : [
			{
				string: navigator.platform,
				subString: "Win",
				identity: "Windows"
			},
			{
				string: navigator.platform,
				subString: "Mac",
				identity: "Mac"
			},
			{
				string: navigator.platform,
				subString: "Linux",
				identity: "Linux"
			}
		]
	
	};	
	
	function loadCalendar(dateidentifier)
	{
		var loadSuccess = function(o){ 
			events = eval('(' + o.responseText + ')');
			document.getElementById('calendarHeader').innerHTML = events.month;
			var navLinks = [];

			navLinks.push('<a href="javascript:loadCalendar(\'' + nextMonth(dateidentifier) +'\');" class="next" title="Next Month">&nbsp;</a>');
			navLinks.push('<a href="javascript:loadCalendar(\'' + previousMonth(dateidentifier) +'\');" class="previous" title="Previous Month">&nbsp;</a>');			
			
			document.getElementById('calendarNav').innerHTML = navLinks.join('');
			output = [];
			var a = '';
			for (var i =0;i < events.days.length; i++)
			{
				if (events.days[i].today != null)
				{
					if (events.days[i].id != null)
					{
						viewEvent(i);	
					}
					else
					{
						noEvent(i);
					}
				}
				
				a = '<a ';
				if (events.days[i] == 'empty') 
				{
					a = a + ' class="empty" >&nbsp';
				}
				else if (events.days[i].id != null)
				{
					a = a + 'href="javascript:viewEvent('+i+');" class="current" >' + events.days[i].day;
				}
				else
				{
					a = a + 'href="javascript:void(0);" onClick="noEvent('+i+');" >' + events.days[i].day;
				}
			
				a = a + '</a>';

				output.push(a);
				a= '';
			};
			document.getElementById('calendarDays').innerHTML = output.join('');
		};
		
		var loadFailure = function(o){ alert('Error Loading Events Calendar');};
		YAHOO.util.Connect.asyncRequest('GET','modules/calendarload.php?m=' +dateidentifier, {success: loadSuccess, failure: loadFailure});
		
		function previousMonth(month) {
			var details = month.split('-');
			var returnMonth = details;
			if (details[0] > 0) { 
				returnMonth[0] = parseInt(details[0])-1;
			} else { 
				details[0]=11; 
				details[1] = parseInt(details[1])-1;
			}
			return returnMonth.join('-');
		
		}
		function nextMonth(month) {
			var details = month.split('-');
			var returnMonth = details;
			if (details[0] < 11) { 
				returnMonth[0] = parseInt(details[0])+1;
			} else { 
				details[0]=0; 
				details[1] = parseInt(details[1])+1;
			}
			return returnMonth.join('-');
		}
		
	}
	
	
	function viewEvent(id)
	{
		document.getElementById('calendarDate').innerHTML = events.days[id].date;
		document.getElementById('calendarTitle').innerHTML = '<a href="?m=23&id=' + events.days[id].id + '">' + events.days[id].title + '</a>';
		document.getElementById('calendarIntro').innerHTML = events.days[id].intro;
		
	}
	
	function noEvent(id)
	{
		document.getElementById('calendarDate').innerHTML = events.days[id].date;
		document.getElementById('calendarTitle').innerHTML = '';
		document.getElementById('calendarIntro').innerHTML = 'Nothing scheduled';	
	}