	/* This Nice Function has been entirely coded by David Linke */
	/* It connects to google calendar and displays it's content in graphical calendar style */
	/* The information of the activities is displayed in hover mode using the tooltip jquery plugin*/
	/* you can find the script at www.linke.com.ve to download */
	/* you are free to use this script the way you want (and i'm not responsable if you mess up something) */
	/* please leave theese credits for people to come to my site */
	/* enjoy the script and thanks for using it */
	function activateCal(calUserId){
		$(".activeDay").tooltip({
			track: true, 
		    delay: 0, 
		    showURL: false, 
		    showBody: " - "
		});
		$(".backArrow").click(function(){
			var curMonth = parseInt($(this).siblings(".monthSpan").text());
			var curYear = parseInt($(this).siblings(".yearSpan").text());
			var curDiv = $(this).parent().parent().parent();
			var nextMonth;
			var nextYear;
			if(curMonth==1){
				nextMonth = 11;
				nextYear = curYear - 1;
			} else {
				nextMonth = curMonth -2;
				nextYear = curYear;
			}
			$(curDiv).html(fillCalendar(calUserId, nextYear, nextMonth));
		});
		$(".forwArrow").click(function(){
			var curMonth = parseInt($(this).siblings(".monthSpan").text());
			var curYear = parseInt($(this).siblings(".yearSpan").text());
			var curDiv = $(this).parent().parent().parent();
			var nextMonth;
			var nextYear;
			if(curMonth==12){
				nextMonth = 0;
				nextYear = curYear + 1;
			} else {
				nextMonth = curMonth;
				nextYear = curYear;
			}
			$(curDiv).html(fillCalendar(calUserId, nextYear, nextMonth));
		});
		
		//comment this if you want to display months in numbers
		var monthTagsArray = new Array("","Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
		var curMonth = parseInt($(".monthSpan").text());
		$(".monthSpan").after("<div class='monthText'>"+monthTagsArray[curMonth]+"</div>");
		$(".monthSpan").hide();
	}
	function replaceChars(chStr, chIn, chOut) {
	  var newString = chStr.split(chIn);
	  newString = newString.join(chOut);
	  return newString;
	}
	function showCalInfo(){
	}
	function hideCalInfo(){
	}
	function displayCalInfo(){
	};
	function fillCalendar(calUserId, calYear, calMonth) {
		
		//find specific date
		var realMonth = calMonth+1;
		var firstMonthDay = new Date(calYear,calMonth, 1);
		var lastMonthDayDate = new Date(calYear, realMonth, 0);
		var lastMonthDay = lastMonthDayDate.getDate();
		var monthToPrint = realMonth.toString();
		if (monthToPrint.length == 1) {
			monthToPrint = "0" + monthToPrint;
		}
		nextMonth = calMonth + 2;
		nextMonthToPrint = nextMonth.toString();
		if (nextMonthToPrint.length == 1){
			nextMonthToPrint = "0" + nextMonthToPrint;
		}
		var calendarDiv = document.createElement("div");
		// create navigation
		var calNav = document.createElement("div");
		calNav.className = "calNav";
		
		var backArrow = document.createElement("div");
		backArrow.innerHTML = "&laquo;"
		backArrow.className = "backArrow";
		
		var forwArrow = document.createElement("div");
		forwArrow.innerHTML = "&raquo;"
		forwArrow.className = "forwArrow";
		
		var mothSpanText = document.createTextNode(realMonth);
		var monthSpan = document.createElement("div");
		monthSpan.className = "monthSpan";
		monthSpan.appendChild(mothSpanText);
		
		var yearSpanText = document.createTextNode(calYear);
		var yearSpan = document.createElement("div");
		yearSpan.className = "yearSpan";
		yearSpan.appendChild(yearSpanText);
		
		calNav.appendChild(backArrow);
		calNav.appendChild(monthSpan);
		calNav.appendChild(yearSpan);
		calNav.appendChild(forwArrow);
		
		calendarDiv.appendChild(calNav);
		
		//get the feed
		calendarAdress = "http://www.google.com/calendar/feeds/" + calUserId + "/public/full?start-min=" + calYear + "-" + monthToPrint + "-01&start-max=" + calYear + "-" + nextMonthToPrint+ "-01&orderby=starttime&sortorder=ascending&singleevents=false&max-results=2000&alt=json-in-script&callback=?";
		//parse the feed and display info
		jQuery.getJSON(calendarAdress,function(calroot){
			//create calendar
			//determine current month
			var getMonthFeed = calroot.feed.link[3].href;
			var stocc = getMonthFeed.indexOf("start-min=");
			getMonthFeed = getMonthFeed.substring(stocc);
			stocc = getMonthFeed.indexOf("&");
			getMonthFeed = getMonthFeed.substring(0, stocc);
			getMonthFeed = getMonthFeed.replace("start-min=", "");
			var feedDate = getMonthFeed.split("-");
			var realMonth = parseInt(feedDate[1])-1;
			var firstMonthDay = new Date(feedDate[0],realMonth, 1);
			var lastMonthDayDate = new Date(feedDate[0], feedDate[1], 0);
			var lastMonthDay = lastMonthDayDate.getDate();
			var firstMonthWeekDay = firstMonthDay.getDay();
			//create calendar shell
			for (var i=0;i<firstMonthWeekDay;++i){
				var calEmptyDay = document.createElement("div");
				calEmptyDay.className = "prevMonthDay";
				calendarDiv.appendChild(calEmptyDay);
			}
			for(i=1;i<=lastMonthDay;++i){
				var zeI = i.toString();
				if (zeI.length<2) {
					zeI = "0"+zeI;
				}
				var calMonthDayText = document.createTextNode(i);
				var calMonthDaySpan = document.createElement("div");
				calMonthDaySpan.className="calDay";
				calMonthDaySpan.title = "";
				calMonthDaySpan.appendChild(calMonthDayText);
				var calMonthDay = document.createElement("div");
				var divToHandle = calYear+""+feedDate[1]+""+zeI;
				calMonthDay.id = divToHandle;
				calMonthDay.className = "monthDay";
				calMonthDay.appendChild(calMonthDaySpan);
				calendarDiv.appendChild(calMonthDay);
			}
			    
			//parse feed and append output
			
			var calFeed = calroot.feed;
			var calFeedItems = calroot.feed.openSearch$totalResults.$t;
			var todaysDate = new Date;
			var todaysDateString = "" + todaysDate.getFullYear() + (todaysDate.getMonth()) + todaysDate.getDate() + "";
			var calOutput = ""
			//alert(todaysDateString)
			if (calFeedItems > 0) {
				var calEntries = calFeed.entry || [];
				var numEvents = calFeed.entry.length;
				var eventNum = 0;
				var entriesArray=new Array();
				for (var i = 0; i < numEvents; ++i) {
					var calEntry = calFeed.entry[i];
					var eventTitle = calEntry.title.$t;
					var eventDescription = calEntry.content.$t;
					var eventPlace = calEntry.gd$where[0].valueString;
					//find recursivity
					var datesArray =  calEntry.gd$when || [];
					var numEntries = calEntry.gd$when.length;
					for (j=0;j<numEntries;++j){
						var eventFeedDate = calEntry.gd$when[j].startTime;
						
						eventFeedDate = replaceChars(eventFeedDate, "T", ",");
						eventFeedDate = replaceChars(eventFeedDate, "-", ",");
						eventFeedDate = replaceChars(eventFeedDate, ":", ",");
						eventFeedDate = eventFeedDate.split(",");
						
						efdLen = eventFeedDate.length;
						
						eventFeedMonth = parseInt(eventFeedDate[1])-1;
						var eventDate = new Date(eventFeedDate[0],eventFeedMonth,eventFeedDate[2],eventFeedDate[3],eventFeedDate[4]);
						entriesArrayNum = eventFeedDate[0]+""+eventFeedDate[1]+""+eventFeedDate[2];
						entriesArrayNumeric = parseInt(entriesArrayNum);
						ampm = " AM";
						realHour = eventDate.getHours();
						//alert(realHour);
						if (realHour>12){
							realHour = eventDate.getHours()-12;
							ampm = " PM";
						}
						calItemDescriptionText = document.createTextNode(eventDescription);
						calItemDescription = document.createElement("span");
						calItemDescription.className = "calItemDescription";
						calItemDescription.appendChild(calItemDescriptionText);
						calItemPlaceText = document.createTextNode(eventPlace);
						calItemPlace = document.createElement("span");
						calItemPlace.className = "calItemPlace";
						calItemPlace.appendChild(calItemPlaceText);
						calItemTitleText = document.createTextNode(eventTitle);
						calItemTitle = document.createElement("span");
						calItemTitle.className = "calItemTitle";
						calItemTitle.appendChild(calItemTitleText);
						calItem = document.createElement("div");
						calItem.className = "entryData";
							calItemDateText = document.createTextNode(eventDate.getDate()+"/"+(eventDate.getMonth()+1)+"/"+eventDate.getFullYear()+" ("+realHour+":"+eventFeedDate[4]+ ampm +")");
							calItemDate = document.createElement("span");
							calItemDate.className = "calItemDate";
							calItemDate.appendChild(calItemDateText);
							calItem.appendChild(calItemDate);
						calItem.appendChild(calItemTitle);
						calItem.appendChild(calItemPlace);
						calItem.appendChild(calItemDescription);
						
						if(efdLen>3){
							toolTipText = " - " + eventTitle +" ("+realHour+":"+eventFeedDate[4]+ ampm +")";
						} else {
							toolTipText = " - " + eventTitle +" (Todo El Dia)";
						}
						
						idToAppend = eventFeedDate[0]+""+eventFeedDate[1]+""+eventFeedDate[2];
						//alert(idToAppend);
						objectToAppend = document.getElementById(idToAppend);
						//alert(objectToAppend);
						
						if (objectToAppend) {
							curObj = objectToAppend.childNodes[0];
							curObjClass = curObj.getAttribute("class");
							if (curObjClass.indexOf("activeDay")<0){
								curObj.className = curObjClass + " activeDay";
							}
							curObj.onmouseover = showCalInfo;
							curObj.onmouseout = hideCalInfo;
							curObj.onclick = displayCalInfo;
							curObj.title = curObj.getAttribute("title") + toolTipText;
							// change todays class
							if ((eventDate.getMonth() == todaysDate.getMonth()) && (eventDate.getDate() == todaysDate.getDate()) && (eventDate.getYear() == todaysDate.getYear())){
								curObj.className= curObj.getAttribute("class") + " isToday";
							}
							objectToAppend.appendChild(calItem);
						}	
						
					}//end for
				}// end for numevents
			} // end if (calFeedItems > 0) 
			activateCal(calUserId);
		});
		return calendarDiv;
	};
	jQuery(document).ready(function(){
		var zeDate = new Date();
		jQuery("#linkeCalendar").html(fillCalendar("alcaldiadesucre@gmail.com", zeDate.getFullYear(), zeDate.getMonth()));
	});