// Edeptive Events Calendar Gadget - event handler functions (for HTML pages)
// Copyright (c) 2007 Edeptive
// www.edeptive.com

// globals
var gsCurrentDate = "";
var gsActiveCategories = "";

function initCalendar() {
	if(document.getElementById("eventscalendar") == null) return; // no calendar on this page
	
	try {
		if (gsFilterParam != "") {
			gsActiveCategories = gsFilterParam;
		}
		getEventXml(null, null, null, null, "1,0,3,0");
		// Check that the event was not specified
		if (location.href.indexOf("event=")==-1){
			if (gsFilterParam == "") {
				getEventsFormatted(gsDay, kGetModeWeek, null, null, "1,0,3,0");
			} else {
				getEventsFormatted(gsDay, kGetModeYear, null, null, "1,0,3,0");
			}
		}
	} catch(e) {
		displayError(e.description);
	}
}
// called by getPersistentSetting when loading cookie
function loadRefreshPatternCallback(sValue) {
	if(sValue) {
		// get from cookie
	}
}
// updates refresh pattern and stores it in cookie
function storeRefreshPattern(iPattern) {
	gCalendarSettings.iRefreshPattern = iPattern;
	// store in cookie
}

// displays an error message in the message area
function displayError(sMessage) {
	alert(sMessage);
}
function displayMessage(sMessage) {
	if(document.getElementById("calMessages")) {
		document.getElementById("calMessages").innerHTML = sMessage;
	}
}

// user moved mouse over a date with events => show event titles in message area
function onEventRollOn(sDate) {
	var aEvents = gCalendarSettings.aEventsDates[sDate];
	var sHtml = "";
	
	if(document.getElementById("calMessages")) {
		for(var i = 0; i < aEvents.length; i++) {
			sHtml += (sHtml != "" ? "..." : "") + aEvents[i].sTitle;
		}
		displayMessage(sHtml);
	}
} // end onEventRollOn

// user moved mouse off a date with events => clear message area
function onEventRollOff(sDate) {
	if(document.getElementById("calMessages")) {
		document.getElementById("calMessages").innerHTML = "";
	}
} // end onEventRollOff

// user clicked on a date with events => display event details in main pane
function onEventClick(sDate) {
	//if(sDate != gsCurrentDate) {
		gsCurrentDate = sDate;
		addContentToMainPane(sDate);
	//}
	show('events');
	
} // end onEventClick

// show the selected events in the flyout area
function addContentToMainPane(sDate) {
	try {
		getEventsFormatted(sDate.substring(6) + "/" + sDate.substring(4,6) + "/" + sDate.substring(0,4), kGetModeDay, gsActiveCategories, null, "1,0,3,0");
	} catch (e) {
		displayError(e.message);
	}
} // end addContentToMainPane

// Event Toggle Div
function eventToggleDiv(id) {
	var imageDown = 'assets/images/toggle_up.jpg';
	var imageRight = 'assets/images/toggle_down.jpg';
	var eventDetails = document.getElementById(id);
	var eventOpen = (eventDetails.style.display == "block");
	var eventArrow = document.getElementById('image' + id);
	var eventSummary = document.getElementById('summary' + id);
	
	
	eventDetails.style.display = (eventOpen ? "none" : "block");
	eventArrow.src = (eventOpen ? imageRight : imageDown);
	eventArrow.alt = (eventOpen ? 'View details' : 'Close details');
	eventArrow.title = (eventOpen ? 'View details' : 'Close details');
	if(eventSummary) {
		eventSummary.style.display = (eventSummary.style.display  != "none" ? "none" : "block");
	}
}

// display a specified day
function jumpToDay() {

	var elementDay = document.getElementById('jumpDay');
	var elementMonth = document.getElementById('jumpMonth');
	var elementYear = document.getElementById('jumpYear');
	
	var day = trim(elementDay.value);
	var month = trim(elementMonth.value);
	var year = trim(elementYear.value);
	
	if (day == '') {
		alert("Please enter a Day");
		elementDay.focus();
		return false;
	}
	else if (day.replace(/\d+/gi,'').length > 0 || day.length > 2 || parseInt(day,10) < 1 || parseInt(day,10) > 31 ) {
		alert(day + ' is not a correct Day, please enter a value between 01 - 31');
		elementDay.focus();
		return false;
	}
	else if (month == '') {
		alert("Please enter a Month");
		elementMonth.focus();
		return false;
	}
	else if (month.replace(/\d+/gi,'').length > 0 || parseInt(month,10) < 1 || parseInt(month,10) > 12 ) {
		alert(month + ' is not a correct Month, please enter a value between 01 - 12');
		elementMonth.focus();
		return false;
	}
	else if (year == '') {
		alert("Please enter a Year");
		elementYear.focus();
		return false;
	}
	else if (year.replace(/\d+/gi,'').length > 0 || year.length > 4 || parseInt(year,10) < 1900 ) {
		alert(year + ' is not a correct Year, please enter a year after 1900');
		elementYear.focus();
		return false;
	}
	else {
		var jumpDay = new Date(parseInt(year,10),parseInt(month,10)-1,parseInt(day,10));
		var jumpDayStr =(jumpDay.getDate()<10?"0":"")+jumpDay.getDate()+"/"+(jumpDay.getMonth()<9?"0":"")+(jumpDay.getMonth()+1)+"/"+jumpDay.getFullYear();
		getEventsFormatted(jumpDayStr, kGetModeDay);
		return false;
	}
}

// display events from the chosen filter options
function filterEvents(catId, FromDate, ToDate) {
	var strFromDate = '';
	var strToDate = '';
	//alert(strFromDate);
	if (catId) {
		gsActiveCategories = catId;
		getEventXml(giYear, giMonth, null, null, "1,0,3,0");
		getEventsInDateRangeFormatted(gsFromDate, giGetMode, gsActiveCategories, null, null, "1,0,3,0");
	}
	else {
		// Make sure the form dosn't submit anywhere
		document.getElementById('frmFilter').action = '';
		// Make a comma seperated list of options slected
		setCategoriesFromSelect();
		getEventXml(giYear, giMonth, null, null, "1,0,3,0");
		getEventsInDateRangeFormatted(gsFromDate, giGetMode, gsActiveCategories, null, null, "1,0,3,0");
		return false;
	}
}


// clear all filters 
function clearFilterEvents() {
	gsActiveCategories = '';
	gsFromDate = gsDay;
	gsToDate = null;
	giGetMode = kGetModeWeek;
	giYear = now.getFullYear();
	giMonth = now.getMonth() + 1;
	getEventXml(giYear, giMonth);
	getEventsFormatted();
	//checklistDeselectAll('filter');
}