// JavaScript Document


Date.prototype.setISO8601 = function (string) {
    var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
        "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
        "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
    var d = string.match(new RegExp(regexp));

    var offset = 0;
    var date = new Date(d[1], 0, 1);

    if (d[3]) { date.setMonth(d[3] - 1); }
    if (d[5]) { date.setDate(d[5]); }
    if (d[7]) { date.setHours(d[7]); }
    if (d[8]) { date.setMinutes(d[8]); }
    if (d[10]) { date.setSeconds(d[10]); }
    if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
    if (d[14]) {
//	alert(date.getHours() + '|' + d[14] + '|' + d[15] + '|' + d[16] + '|' + d[17]);
	offset = (Number(d[16]) * 60) + Number(d[17]);
        offset *= ((d[15] == '-') ? 1 : -1 );
	
}

    offset -= date.getTimezoneOffset();


	time = (Number(date) + ( offset* 60 * 1000));
    this.setTime(Number(time));

}
//Code taken from http://hansdebano.net/google/feedapi/calendarfeeds.html
function handleSummaryTitleClicked()
{
	//fetch the div node
	var div = this.parentNode.childNodes[this.parentNode.childNodes.length-1];
	if(div.style.display == 'block')
	{
		div.style.display = 'none'
	}
	else
	{
		div.style.display = 'block'
	}
	return false;
}

function loadCalendar(calendarURL, containerId, numEntries)
{
	var feed = new google.feeds.Feed(calendarURL);
	feed.setResultFormat(google.feeds.Feed.XML_FORMAT); 
       feed.setNumEntries(numEntries); 
       feed.load(function(result) { 
       var container = document.getElementById(containerId); 
       if (!result.error) { 
         var whenstring = ''; 
         var entries = google.feeds.getElementsByTagNameNS(result.xmlDocument, "http://www.w3.org/2005/Atom", "entry"); 
         var ul = document.createElement("ul"); 
		 if(entries.length == 0)
		 {
			container.innerHTML = "<i>No Upcoming Events</i>"; 
		 }
         for (var i = 0; i < entries.length; i++) {
           var titleElement = google.feeds.getElementsByTagNameNS(entries[i], "http://www.w3.org/2005/Atom", "title")[0]; 
           var title = titleElement.firstChild.nodeValue; 
           var mylinkElement = google.feeds.getElementsByTagNameNS(entries[i], "http://www.w3.org/2005/Atom", "link")[0]; 
           var entryURL = mylinkElement.getAttribute('href'); 
           var whenElement = google.feeds.getElementsByTagNameNS(entries[i], "http://schemas.google.com/g/2005", "when")[0]; 
           var starttime = whenElement.getAttribute('startTime'); 
           var endtime = whenElement.getAttribute('endTime'); 
			   var descriptionElement = google.feeds.getElementsByTagNameNS(entries[i],"http://www.w3.org/2005/Atom", "content"); 
		   var description = "";
		   if(descriptionElement.length > 0)
		   {
			description = descriptionElement[0].firstChild.nodeValue;   
		   }
           var startdate = new Date(); 
           startdate.setISO8601(starttime, "-0800" ); 
           var enddate = new Date(); 
           enddate.setISO8601(endtime, "-0800" ); 
           //embed the event date in a span element with class="when" 
           // var spanwhen = document.createElement("p"); 
           var startstring = (startdate.getMonth() + 1) + '/' + (startdate.getDate()) + '/' + startdate.getFullYear(); 
           var endstring = (enddate.getMonth() + 1) + '/' + (enddate.getDate() ) + '/' + enddate.getFullYear();
           //each feed entry is embedded in an HTML li element 
           var li = document.createElement("li"); 
		   var a = document.createElement("a"); 
		   a.setAttribute("target","_blank");
           a.setAttribute("href", entryURL);
		   // spanwhen.setAttribute("class", "when"); 
		   //change a of "a.appendChild(document.createTextNode(startstring + ': '));"  to spanwhen. to make date outside of link box.
           a.appendChild(document.createTextNode(startstring + ': ')); 
		   a.setAttribute("calTitle",title);
		   a.onclick = handleSummaryTitleClicked;
           a.appendChild(document.createTextNode(title + ' ')); 
           // li.appendChild(spanwhen); 
           li.appendChild(a); 
		   
		   //create div that contains details
		   var div = document.createElement("div");
		   div.style.display = 'none';
		   var innerHTML = "<i>" + formatTimeForDate(startdate) + "</i>";
		   //to include end time: var innerHTML = "<i>" + formatTimeForDate(startdate) + ' - ' + formatTimeForDate(enddate) + "</i>";

		   if(description.length  >0)
		   {
		   	innerHTML = innerHTML + "<br/>" + description ;
		   }
		   innerHTML = innerHTML + "<br/>" + "<a href=\""+entryURL + "\" target=\"blank\">Details</a>";
		   div.innerHTML = innerHTML;
		   li.appendChild(div);
           ul.appendChild(li); 
           } 
        container.appendChild(ul); 
        } 
     }); 
	
}


function formatTimeForDate(inDate)
{
	//alert(inDate);
	var hours;
	var ampm;
	var mins;
	if(inDate.getHours() > 12)
	{
		hours =  "" + (inDate.getHours()-12);
		ampm= "PM";	
	}
	else if(inDate.getHours() == 12)
	{
		hours =  "" + (inDate.getHours());
		ampm= "PM";
	}
	else
	{
		hours = (inDate.getHours()) ;
		ampm = "AM";			
	}
	if(inDate.getMinutes() == 0)
	{
		mins = "";	
	}
	if(inDate.getMinutes() < 10)
	{
		mins = ":0" + inDate.getMinutes();
	}
	else
	{
		mins = ":" + inDate.getMinutes();	
	}
	return hours+mins+ampm;
}
