function keys_init() {
	document.onkeypress = monthShortcuts;	// keyboard shortcuts for month view mode; separate from note shortcuts
}

function getkey(e)
{
	if (window.event)
		return window.event.keyCode;
	else if (e)
		return e.which;
	else
		return null;
}


function newEventShortcuts(e) {
	if (document.all) var key = getkey(e);		// getkey defined in validate.lite.js
	else {
		if (e.keyCode) var key = e.keyCode;
		else var key = getkey(e);
	}
	switch (key) {
		case 27:		// esc
			cancelSchedHilight();
			break;
		default:
			return true;
			break;
	}
	return false;
}

function schedShortcuts(e) {
	if (document.all) var key = getkey(e);		// getkey defined in validate.lite.js
	else {
		if (e.keyCode) var key = e.keyCode;
		else var key = getkey(e);
	}
	switch (key) {
		case 27:		// esc
			cancelSchedHilight();
			break;
		default:
			return true;
			break;
	}
	return false;
}

function viewShortcuts(e) {
	var re = /\w/;
	if (document.all) var key = getkey(e);		// getkey defined in validate.lite.js
	else {
		if (e.keyCode) var key = e.keyCode;
		else var key = getkey(e);
	}
	switch (key) {
		case 63234: // <- (Safari) - previous month
		case 37:		// <- - previous month
		//case 106:	// j - previous month
			yesterday();
			return false;
			break;
		case 63273: // home (Safari) - today
		case 36: // home - today
		//case 116:
			today();	// t - today
			return false;
			break;
		case 63235: // -> (Safari) - next month
		case 39:		// -> - next month
		//case 107:	// k - next month
			tomorrow();
			return false;
			break;
		default:
			//alert(key);
			return true;
			break;
	}
	return false;
}

function modifyMonthShortcuts(e) {
	var re = /\w/;
	if (document.all) var key = getkey(e);		// getkey defined in validate.lite.js
	else {
		if (e.keyCode) var key = e.keyCode;
		else var key = getkey(e);
	}
	switch (key) {
		case 63234: // <- (Safari) - previous month
		case 37:		// <- - previous month
		//case 106:	// j - previous month
			prevMonthInp();
			return false;
			break;
		case 63235: // -> (Safari) - next month
		case 39:		// -> - next month
		//case 107:	// k - next month
			nextMonthInp();
			return false;
			break;
		default:
			//alert(key);
			return true;
			break;
	}
	return false;
}

function calendarShortcuts(e) {
	var re = /\w/;
	if (document.all) var key = getkey(e);		// getkey defined in validate.lite.js
	else {
		if (e.keyCode) var key = e.keyCode;
		else var key = getkey(e);
	}
	switch (key) {
		case 27:		// esc
			break;
		/*
		case 112: // p - show only personal events
			if (document.getElementById("noteTitle")) {
				var filterSelector = document.forms["calendarForm"]["filter"];
				for (var i = 0; o = document.forms["calendarForm"]["filter"].options[i]; i++) {
					if (o.value == "notes") o.selected = true;
				}
				applyFilter(filterSelector);
				return false;
			} else {
				return true;
			}
			break;
		case 97: // a - show all events
			if (document.getElementById("filter")) {
				var filterSelector = document.forms["calendarForm"]["filter"];
				for (var i = 0; o = document.forms["calendarForm"]["filter"].options[i]; i++) {
					if (o.value == "cancel") o.selected = true;
				}
				applyFilter(filterSelector);
				return false;
			} else {
				return true;
			}
			break;
		case 102: // f - toggle audience filter
			// toggle audience filter
			if (document.getElementById("filter")) {
				var filterSelector = document.forms["calendarForm"]["filter"];
				var filters = "";
				var currentFilter = "";
				var newFilter = "";
				var optionSelected = 0;
				for (var i = 0; o = filterSelector.options[i]; i++) {
					if (re.test(o.value)) {
						filters += o.value + ',';
						if (o.selected) currentFilter = o.value;
					}
				}
				filters = filters.substring(0, filters.length-1).split(',');
				for (var i = 0; f = filters[i]; i++) {
					if (f == currentFilter) {
						if (i == (filters.length - 1)) newFilter = filters[0];
						else newFilter = filters[(i+1)];
					}
				}
				for (var i = 0; o = document.forms["calendarForm"]["filter"].options[i]; i++) {
					if (o.value == newFilter) o.selected = true;
				}
				applyFilter(filterSelector);
				return false;
			} else return true;
			break;
		*/
		case 63234: // <- (Safari) - previous month
		case 37:		// <- - previous month
		//case 106:	// j - previous month
			calendarPrevMonth();
			return false;
			break;
		case 63235: // -> (Safari) - next month
		case 39:		// -> - next month
		//case 107:	// k - next month
			calendarNextMonth();
			return false;
			break;
		/*
		case 108:	// l - logout
			if (document.getElementById("authEnabled")) {
				if (confirm("Logout?")) top.location = "https://weblogin.umich.edu/cgi-bin/logout?http://www.umich.edu/%7Eovpsa";
				return false;
			} else {
				return true;
			}
			break;
		*/
		
		case 63273: // home (Safari) - today
		case 36: // home - today
		//case 116:
			calendarToday();	// t - today
			return false;
			break;
		
		/*
		case 117:	// u - tools
		
			//if (!document.all) {
				tools();
				return false;
			//}
			break;
		case 99:		// c - toggle color mode
			if (document.getElementById("link_colormode")) {
				toggleColorMode();
				return false;
			} else {
				return true;
			}
			break;
		*/
		default:
			//alert(key);
			return true;
			break;
	}
	return false;
}


function monthShortcuts(e) {
	var re = /\w/;
	if (document.all) var key = getkey(e);		// getkey defined in validate.lite.js
	else {
		if (e.keyCode) var key = e.keyCode;
		else var key = getkey(e);
	}
	switch (key) {
		case 27:		// esc
			clearAll();
			break;
		/*
		case 112: // p - show only personal events
			if (document.getElementById("noteTitle")) {
				var filterSelector = document.forms["calendarForm"]["filter"];
				for (var i = 0; o = document.forms["calendarForm"]["filter"].options[i]; i++) {
					if (o.value == "notes") o.selected = true;
				}
				applyFilter(filterSelector);
				return false;
			} else {
				return true;
			}
			break;
		case 97: // a - show all events
			if (document.getElementById("filter")) {
				var filterSelector = document.forms["calendarForm"]["filter"];
				for (var i = 0; o = document.forms["calendarForm"]["filter"].options[i]; i++) {
					if (o.value == "cancel") o.selected = true;
				}
				applyFilter(filterSelector);
				return false;
			} else {
				return true;
			}
			break;
		case 102: // f - toggle audience filter
			// toggle audience filter
			if (document.getElementById("filter")) {
				var filterSelector = document.forms["calendarForm"]["filter"];
				var filters = "";
				var currentFilter = "";
				var newFilter = "";
				var optionSelected = 0;
				for (var i = 0; o = filterSelector.options[i]; i++) {
					if (re.test(o.value)) {
						filters += o.value + ',';
						if (o.selected) currentFilter = o.value;
					}
				}
				filters = filters.substring(0, filters.length-1).split(',');
				for (var i = 0; f = filters[i]; i++) {
					if (f == currentFilter) {
						if (i == (filters.length - 1)) newFilter = filters[0];
						else newFilter = filters[(i+1)];
					}
				}
				for (var i = 0; o = document.forms["calendarForm"]["filter"].options[i]; i++) {
					if (o.value == newFilter) o.selected = true;
				}
				applyFilter(filterSelector);
				return false;
			} else return true;
			break;
		*/
		case 63234: // <- (Safari) - previous month
		case 37:		// <- - previous month
		//case 106:	// j - previous month
			prevMonthInp();
			return false;
			break;
		case 63235: // -> (Safari) - next month
		case 39:		// -> - next month
		//case 107:	// k - next month
			nextMonthInp();
			return false;
			break;
		/*
		case 108:	// l - logout
			if (document.getElementById("authEnabled")) {
				if (confirm("Logout?")) top.location = "https://weblogin.umich.edu/cgi-bin/logout?http://www.umich.edu/%7Eovpsa";
				return false;
			} else {
				return true;
			}
			break;
		*/
		/*
		case 63273: // home (Safari) - today
		case 36: // home - today
		case 116:
			today();	// t - today
			return false;
			break;
		*/
		/*
		case 117:	// u - tools
		
			//if (!document.all) {
				tools();
				return false;
			//}
			break;
		case 99:		// c - toggle color mode
			if (document.getElementById("link_colormode")) {
				toggleColorMode();
				return false;
			} else {
				return true;
			}
			break;
		*/
		default:
			//alert(key);
			return true;
			break;
	}
	return false;
}
