/**
* Developed using js code copyright 2007 Google
* http://gdata-javascript-client.googlecode.com/svn/trunk/samples/calendar/simple_sample/simple_sample.html
*/

google.load("gdata", "1.x");

function init() {
	// init the Google data JS client library with an error handler
	google.gdata.client.init(handleGDError);
}

var ctime = new Date();
var y = ctime.getFullYear();
var m = ctime.getMonth() + 1;
var d = ctime.getDate();
var startmin = new google.gdata.DateTime.fromIso8661(y.toString()+'-'+m.toString()+'-'+d.toString()+'T00:00:00.00-00:00');
var startmax = new google.gdata.DateTime.fromIso8661(y.toString()+'-'+m.toString()+'-'+d.toString()+'T23:59:59.00-00:00');

function loadCalendar() {
	var service = new google.gdata.calendar.CalendarService('gdata-js-client-samples-simple');

	var query = new google.gdata.calendar.CalendarEventQuery('http://www.google.com/calendar/feeds/dowellshomeplace.com_d3olle88d34c4votg8mj758vqg%40group.calendar.google.com/public/full');
	query.setOrderBy('starttime');
	query.setSortOrder('ascending');
	query.setFutureEvents(true);
	query.setMinimumStartTime(startmin);
	query.setMaximumStartTime(startmax);
	query.setSingleEvents(true);
	query.setMaxResults(3);

	service.getEventsFeed(query, listEvents, handleGDError);
}

/**
* Callback function for the Google data JS client library to call when an error
* occurs during the retrieval of the feed.  Details available depend partly
* on the web browser, but this shows a few basic examples. In the case of
* a privileged environment using ClientLogin authentication, there may also
* be an e.type attribute in some cases.
*
* @param {Error} e is an instance of an Error 
*/
function handleGDError(e) {
	document.getElementById('jsSourceFinal').setAttribute('style', 
	'display:none');
	if (e instanceof Error) {
	/* alert with the error line number, file and message */
	alert('Error at line ' + e.lineNumber +
		' in ' + e.fileName + '\n' +
		'Message: ' + e.message);
	/* if available, output HTTP error code and status text */
	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());
	}
}

/**
* Callback function for the Google data JS client library to call with a feed 
* of events retrieved.
*
* Creates an unordered list of events in a human-readable form.  This list of
* events is added into a div called 'events'.  The title for the calendar is
* placed in a div called 'calendarTitle'
*
* @param {json} feedRoot is the root of the feed, containing all entries 
*/ 
function listEvents(feedRoot) {
	var ctime = new Date();
	var DayNum = ctime.getDate();
	var MonNum = ctime.getMonth() + 1;
	
	var entries = feedRoot.feed.getEntries();
	var eventDiv = document.getElementById('panel');
	/* create a new unordered list */
	var ul = document.createElement('ul');
	/* loop through each event in the feed */
	var len = entries.length;
	for (var i = 0; i < len; i++) {
		var entry = entries[i];
		var title = entry.getTitle().getText();
		var startDateTime = null;
		var stopDateTime = null;
		var startJSDate = null;
		var stopJSDate = null;
		var times = entry.getTimes();
		if (times.length > 0) {
			startDateTime = times[0].getStartTime();
			stopDateTime = times[0].getEndTime();
			startJSDate = startDateTime.getDate();
			stopJSDate = stopDateTime.getDate();
		}
		var entryLinkHref = null;
		if (entry.getHtmlLink() != null) {
			entryLinkHref = entry.getHtmlLink().getHref();
		}
		var dateString = (startJSDate.getMonth() + 1) + "/" + startJSDate.getDate() + " until " + (stopJSDate.getMonth() + 1) + "/" + stopJSDate.getDate();
// 		if (!startDateTime.isDateOnly()) {
// 			dateString += " " + startJSDate.getHours() + ":" +padNumber(startJSDate.getMinutes());
// 				}
		var li = document.createElement('li');
	
		/* if we have a link to the event, create an 'a' element */
		if (entryLinkHref != null) {
			entryLink = document.createElement('a');
			entryLink.setAttribute('href', entryLinkHref);
			entryLink.appendChild(document.createTextNode(title));
			li.appendChild(entryLink);
			li.appendChild(document.createTextNode(' from ' + dateString));
			if (MonNum >= (startJSDate.getMonth()+1)%12 && DayNum >= startJSDate.getDate() ) {
				adLink = document.createElement('a');
				adLink.setAttribute('href', "http://acehardware.shoplocal.com/acehardwarecircular/default.aspx?action=entry&pretailerid=-99385&siteid=477&adref=MyLocalAce&storeid=2433892");
				adLink.setAttribute('target', '_blank');
				adLink.appendChild(document.createTextNode('here'));

				boldLine = document.createElement('b');
				boldLine.appendChild(document.createTextNode(' (Click '));
				boldLine.appendChild(adLink);
				boldLine.appendChild(document.createTextNode(' for a copy of our sale circular)'));
				
				italicLine = document.createElement('i');
				italicLine.appendChild(boldLine);

				li.appendChild(italicLine);
			}
			
		} else {
			li.appendChild(document.createTextNode(title + ' - ' + dateString));
			//li.appendChild(document.createTextNode(title));
		}	    
		
		/* append the list item onto the unordered list */
		ul.appendChild(li);
	}
	if (eventDiv.childNodes.length > 0) {
		eventDiv.removeChild(eventDiv.childNodes[0]);
	}
	
	eventDiv.appendChild(ul);
}

function loadSales() {
	google.setOnLoadCallback(init);
	
	var eventDiv = document.getElementById('panel');
	italicLine = document.createElement('i');
	italicLine.appendChild(document.createTextNode('Loading sales, please wait...'));
	eventDiv.appendChild(italicLine);

	loadCalendar();
}
