/*
 * Script based on FullCalendar v1.4.7 Google Calendar Extension
 *
 * Copyright (c) 2009 Adam Shaw
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Date: Mon Jul 5 16:07:40 2010 -0700
 *
 */

(function($) {
	$.fullCalendar.gcalFeed = function(feedUrl, options) {
		options = options || {};
		return function(start, end, callback) {
	    $.ajax({
		type: "POST",
		url: feedUrl,
		dataType: ($.browser.msie) ? "text" : "xml",
		success: function(data) {
			var events = [];
			
     if (typeof data == "string") {
       xml = new ActiveXObject("Microsoft.XMLDOM");
       xml.async = false;
       xml.loadXML(data);
     } else {
       xml = data;
     }

			
			
			$(xml).find('entry').each(function(index){
											   
				var id = $(this).find('id').text(); 	
				var title = $(this).find('title').text(); 
				var url = $(this).find('url').text(); 
				var desc = $(this).find('description').text();
				var start_time = $(this).find('start_time').text();
				var end_time = $(this).find('end_time').text();
				var start_date = $(this).find('start_date').text();
				var end_date = $(this).find('end_date').text();
				
				/*takes in time as 7:00pm and turns it into 19:00:00Z*/
				function parsetime(time) {
					var hrs = time.split(":")[0];
					var mins = time.split(":")[1];
					var amr = new RegExp('am', 'i');
					var pmr = new RegExp('pm', 'i');
					var ami = time.search(amr);
					var pmi = time.search(pmr);
					if(pmi != -1) { if(hrs != '12') { hrs= new Number(hrs)+12;} var pm = time.substr(pmi); mins=$.trim(mins.split(pm)[0]); } 
					else { var am = time.substr(ami); mins= $.trim(mins.split(am)[0]); }
					if(hrs.length == 1){hrs = '0'+hrs; }
					var str = hrs+':'+mins+":00Z"; 
					return str; 
					}
				
				if(start_time != null && start_time != '') {
					var start = start_date+'T'+parsetime(start_time);
					start = $.fullCalendar.parseISO8601(start, true);
				} else {
					var start = $.fullCalendar.parseISO8601(start_date, true);
				}
				
				if(end_time != null && end_time != '') {
					if(end_date !='' && end_date != null) {
					var end = end_time+'T'+parsetime(end_time);
					end = $.fullCalendar.parseISO8601(end, true);
					} else { 
					var end = start_date+'T'+parsetime(end_time);
					end = $.fullCalendar.parseISO8601(end, true);
					}
				}else {
					var end = $.fullCalendar.parseISO8601(end_date, true);
				}
				
				if(start_time == '' && end_time == '') { var allDay = true} else {var allDay = false; }
				var className = $(this).find('category').text();

				events.push({
							id: id,
							title: title,
							url: url,
							start: start,
							end: end,
							allDay: allDay,
							location: '',
							description: desc,
							className: className,
							editable: options.editable || false
						});
						
			});
			callback(events);
		},
		  error:function (xhr, ajaxOptions, thrownError){
                    alert(xhr.status+' '+ajaxOptions+'error: '+thrownError);
         }    
	});
		
	}
	}

})(jQuery);

