﻿/// <reference path="~/library/scripts/jquery-1.5.1.min.js" />

var appointmentList = new Array();

$(document).ready(function () {
	//calendar specific vars
	var month, year, cal;
	var appts;
	var apptsTwo;
    var apptsThree;
/*
	//handle search request
	var defaultSearchValue = $(".search-form input").val();
	$(".search-form input").focus(function () {
		if ($(this).val() == defaultSearchValue) {
			$(this).addClass("focused").val("");
		}
	})
	$(".search-form input").blur(function () {
		if ($(this).val() == "") {
			$(this).removeClass("focused").val(defaultSearchValue);
		}
	});

	//handle newsletter request
	var defaultNewsletterValue = $(".newsletter-form input").val();
	$(".newsletter-form input").focus(function () {
		if ($(this).val() == defaultNewsletterValue) {
			$(this).addClass("focused").val("");
		}
	})
	$(".newsletter-form input").blur(function () {
		if ($(this).val() == "") {
			$(this).removeClass("focused").val(defaultNewsletterValue);
		}
	});

	//homepage tabs
	if ($("ul.tabs").length) {
		$("ul.tabs").tabs("ul.panes li");
	}
*/
	if ($("#calendar").length) {
		setTimeout(function () { DoCalendar(); }, 250);
	}
/*
	//rotate background - maintain same wallpaper during session
	var wallpaperCount = 4;
	if (!$.cookie("wallpaper")) {
		$.cookie("wallpaper", "bg" + Math.floor(Math.random() * wallpaperCount));
	}
	$("body").addClass($.cookie("wallpaper"));

	//twitter feed
	getTwitters("twitter", {
		id: "trailnet",
		count: 8,
		enableLinks: true,
		ignoreReplies: true,
		clearContents: true,
		newwindow: true,
		template: '"%text%" <a class="status" href="http://twitter.com/%user_screen_name%/statuses/%id%/">%time%</a>'
	});
*/
});

/*Calendar Stuff*/
function DoCalendar() {
	var now = new Date();
	year = now.getFullYear();
	month = now.getMonth();

	cal = new Calendar(year, month);
	cal.addNavigation = true;
	cal.MinimumDate = now;
	cal.generateHtml();
	$("#calendar").html(cal.getHtml());
	GetCalendarFeed();

	//handle events
	$("#calendar .prev").live("click", function (e) {
		e.preventDefault();
		$("#calendar").empty();
		cal.PreviousMonth();
		cal.generateHtml();
		$("#calendar").html(cal.getHtml());
		if (cal.Year() <= cal.MinimumDate.getFullYear()
					&& cal.Month() <= cal.MinimumDate.getMonth()) {
			$("#calendar .prev").hide();
		}
		ShowApptsOnCalendar();
		filterCalendar("#calendarFilterMenu ul li:first-child a");
		return false;
	});
	$("#calendar .next").live("click", function (e) {
		e.preventDefault();
		$("#calendar").empty();
		cal.NextMonth();
		cal.generateHtml();
		$("#calendar").html(cal.getHtml());
		ShowApptsOnCalendar();
		filterCalendar("#calendarFilterMenu ul li:first-child a");
		return false;
	});
}

function ShowApptsOnCalendar() {
	//title,details,location,start,end
	for (var i = 0; i < appointmentList.length; i++) {
		PopulateCalendar(appointmentList[i]);
	}
}

function GetCalendarFeed() {
	var calendarIds = new Array(5);
	calendarIds[0] = "0m04v6llfgkq6qdl5uim3rddqg%40group.calendar.google.com";
	calendarIds[1] = "u9e37tk4tbo15g8agkgn7ka4ps%40group.calendar.google.com";
	calendarIds[2] = "sls8a8knqleli9ult7kg0besvg%40group.calendar.google.com";
	calendarIds[3] = "t8cpfc1tokrt4jvo27n78qdruo%40group.calendar.google.com";//social services
	calendarIds[4] = "25ii2dqjg6pgqcal5lbvmjp9o4%40group.calendar.google.com";//developmental disabilities

	var onlyFutureEvents = true;
	for (var i = 0; i < calendarIds.length; i++) {
		var feedUrl = "http://www.google.com/calendar/feeds/" 
            + calendarIds[i] + "/public/full?alt=jsonc&futureevents=" 
            + onlyFutureEvents + "&max-results=100&fields=title,items(title,location,details,when(start,end))&callback=?";
		GetCalendarData(feedUrl);
	}
	setTimeout(function () { ShowApptsOnCalendar(); }, 800);
}

function GetCalendarData(url) {
	$.getJSON(url,
		function (msg) {	//onSuccess
			if (msg.data.items != undefined) {
				var title = msg.data.title;
				$.each(msg.data.items, function () {
					if (this.when) {
						var appt = new Appointment(this.title, this.details, this.location,
						this.when[0].start, this.when[0].end, title);
						appointmentList.push(appt);
					}
				});
			}
		}
	);
}

function PopulateCalendar(appt) {
	//date format: 2010-12-15T12:00:00.000-06:00
	var cleanRegex = /\..+$/;
	var datetime = appt.Start().replace(cleanRegex, "");
	var newdate = new Date(getDateFromFormat(datetime, "y-M-dTH:m:s"));
	//get parts
	var itemMonth = newdate.getMonth();
	var itemDay = newdate.getDate();
	var itemYear = newdate.getFullYear();
	var itemMinute = newdate.getMinutes();
	var itemHour = newdate.getHours();
	//place on calendar
	if (itemYear == cal.Year() && itemMonth == cal.Month()) {
		//iterate through calendar days(cells)
		$("#calendar td").each(function () {
			if ($(this).text() == itemDay) {
				//place calendar items
				var className = appt.Class().replace(/ /g, "").replace("/", "").replace("&", "");
				$(this).append($("<a/>", { 'class': className, 'title': appt.Title })
				//add tooltip functionality
				.tooltip({
					onBeforeShow: function () {
						$(".tooltip").empty();
						//format minutes to 2 digits
						itemMinute += "";
						if (itemMinute.length == 0)
						{ itemMinute = "00"; }
						if (itemMinute.length == 1)
						{ itemMinute = "0" + itemMinute; }
						var meridiam = "am";
						if (itemHour >= 12)
							meridiam = "pm";
						var displayHour = itemHour;
						if (itemHour > 12)
							displayHour -= 12;
						//update tooltip text
						$(".tooltip").append("<div class='tCornerLeft'><div class='tCornerRight'><div class='center'></div></div></div><div class='content'><strong>" + appt.Title() + "</strong><br />"
							+ "<b>Location:</b> " + appt.Location() + "<br />"
							+ appt.Details() + "<br />"
							+ "<b>Time:</b> " + displayHour + ":" + itemMinute + " " + meridiam + "</div>"
							+ "<div class='bCornerLeft'><div class='bCornerRight'><div class='center'></div></div></div>");
					},
					onHide: function () { /*$(".tooltip").empty();*/ }
				}));
			}
		});
	}
}

function filterCalendar(selected) {
	$('.calendar td a').hide();
	if( $(selected).text() == "Special Events") {
		$('.SpecialEvents').css("display", "block");
	} else if ( $(selected).text() == "Volunteer Activities") {
        $('.VolunteerActivities').show()
	} else if ( $(selected).text() == "Program Trainings & Activities") {
        $('.ProgramTrainingsActivities').show()
	} else if ( $(selected).text() == "Social Services") {
        $('.SocialServices').show()
	} else if ( $(selected).text() == "Developmental Disabilities") {
        $('.DevelopmentalDisabilities').show()
    } else {//default:show all
		$('.calendar td a').show();
	}
}

// Calendar Filter Menu -->>
function sortList(selected) {
	filterCalendar(selected);

	var MenuList = new Array();
	$('#calendarFilterMenu ul li').each(function() {
		MenuList.push($(this).text());
	});
	MenuList.splice(0,0,$(selected).text());
	for(var i=1; i<= MenuList.length; i++) {
		if( MenuList[0] == MenuList[i] ) {
            MenuList.splice(i,1);
		}
	}
    for( var z=0; z <= MenuList.length; z++) {
        if( MenuList[z] == "Show All Events" && MenuList[0] != "Show All Events" ) {
            MenuList.splice(z,1);
            MenuList.splice(1,0, "Show All Events");
		}
	}
	for(var x=0; x < MenuList.length; x++) {
		$('#calendarFilterMenu ul li:eq('+x+') a').text(MenuList[x]);
	}
}

function openCloseMenu() {
	if( $('#calendarFilterMenu ul li:not(:first-child)').css("display") == "none") {
		$('#calendarFilterMenu ul li:not(:first-child)').each( function() {
			$(this).show();
			//open menu
		});
		$('#calendarFilterMenu ul').css("border-bottom", "2px solid #28638d");
		$('#calendarFilterMenu ul li:first-child').css("background-position", "right -35px");
		$('#calendarFilterMenu ul li:last-child').css("border-bottom", "none");
	} else {
		$('#calendarFilterMenu ul li:not(:first-child)').each( function() {
			$(this).hide();
			// close menu
		});
		$('#calendarFilterMenu ul').css("border-bottom", "none");
		$('#calendarFilterMenu ul li:first-child').css("background-position", "right 0");
	}
}

$(document).ready( function() {
	
	// start page w/ filter menu closed
	openCloseMenu();
	
	// reorder filter menu event
	$('#calendarFilterMenu ul li:not(:first-child) a').click( 
		function(event)
		{
			event.preventDefault();
			sortList(this);
			openCloseMenu();
		} 
	);
	// open/close filter menu event
	$('#calendarFilterMenu ul li:first-child').click(
		function(event)
		{
			event.preventDefault();
			openCloseMenu();
		}
	);
});



// GOOGLE CALENDAR EVENTS-------------------------------------------------------------------------------------------->>
$(document).ready(function () {
	if ($(".showCalendarFeed").length > 0) {
		BuildEventList($(".showCalendarFeed"));
	}
});
