google.load("gdata", "2.x");
google.setOnLoadCallback(init);

function init()
	{
	google.gdata.client.init(handleGDError);
	loadCalendar('http://www.google.com/calendar/feeds/timbercalendar@gmail.com/public/full');
    }

function handleGDError(e)
	{
/*	if (e instanceof Error)
		{
		alert('Error at line ' + e.lineNumber + ' in ' + e.fileName + '\n' + 'Message: ' + e.message);
		if (e.cause)
			{
			var status = e.cause.status;
			var statusText = e.cause.statusText;
			alert('Root cause: HTTP error ' + status + ' with status text of: ' + statusText);
			}
		}
	else 
		{
		alert(e.toString());
		}*/
	}

function loadCalendar(calendarUrl)
	{
	var service = new google.gdata.calendar.CalendarService('gdata-js-client-timber-calendar');
	var query = new google.gdata.calendar.CalendarEventQuery(calendarUrl);
	query.setOrderBy('starttime');
	query.setSortOrder('ascending');
	query.setFutureEvents(true);
	query.setSingleEvents(true);
	query.setMaxResults(5);
	service.getEventsFeed(query, listCalEvents, handleGDError);
	}

function listCalEvents(feedRoot)
	{
	var entries = feedRoot.feed.getEntries();
	var len = entries.length;
	var count = 0;
	for (var i = 0; i < len; i++)
		{
		var entry = entries[i];

		var title = entry.getTitle().getText();
		var entryLinkHref = entry.getHtmlLink().getHref();

		var times = entry.getTimes();
		if (times.length > 0)
			{
			var startDateTime = times[0].getStartTime();
			if (startDateTime)
				{
				var startJSDate = startDateTime.getDate();
				var day = padNumber(startJSDate.getDate());
				var dateString = day + "." + padNumber(startJSDate.getMonth() + 1) + "." + startJSDate.getFullYear();

				if (!startDateTime.isDateOnly())
					dateString += " " + startJSDate.getHours() + ":" + padNumber(startJSDate.getMinutes());

				var endJSDateTime = times[0].getEndTime();
				if (endJSDateTime && !endJSDateTime.isDateOnly())
					{
					var endJSDate = endJSDateTime.getDate();
					dateString += " - " + endJSDate.getHours() + ":" + padNumber(endJSDate.getMinutes());
					}

				var title = entry.getTitle().getText();

				var url = '.';
				if (entry.getHtmlLink() != null)
					url = entry.getHtmlLink().getHref();

				var monName=["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
				var monthName = monName[startJSDate.getMonth()];

				addCalEvent(monthName, day, dateString, title, url);
				count++
				}
			}
		}
	if (count == 0)
		{
		var errorEntry = document.getElementById('gc_no_events');
		errorEntry.style.display = 'block';		
		}
	}

function addCalEvent($month, $day, $fulldate, $description, $url)
	{
	var calEntry = document.getElementById('gc_up_mod_cal_entry');
	if 	(calEntry)
		{
		var obj = calEntry.cloneNode(true);
		calEntry.parentNode.appendChild(obj);
		
		setChildVal(obj, 'gc_up_mod_month_text', $month);
		setChildVal(obj, 'gc_up_mod_day', $day);
		setChildVal(obj, 'gc_up_mod_event_date_time', $fulldate);
		var link = setChildVal(obj, 'gc_up_mod_event_desc', $description);
		if (link)
			link.href = $url;
		obj.style.display = 'block';
		}
	}
function padNumber(num)
	{
	if (num <= 9)
		{
		return "0" + num;
		}
	return num;
	}
function setChildVal(element, name, value)
	{
	var child = getChild(element, name);
	if (child)
		{
		child.innerHTML = value;
		return child;
		}
	}
function getChild(element, name)
	{
	var children = element.childNodes;
	for(var i = 0; i < children.length; i++)
		{
		if(children.item(i).id == name)
			return children.item(i);
		var sub = getChild(children.item(i), name);
		if (sub)
			return sub;
		}
	}

