/* 
	NAME:		Lockdown.js 
	PURPOSE:	Keyboard shorcut handler
	---------------------------------------------------------
	HISTORY
	DATE		INITIALS	COMMENTS
	01-27-2004	KMN			Original Work
	12-19-2004	KMN			changed to allow f1-f6 for shortcuts
*/



//if (window.Event) // Only Netscape will have the CAPITAL E.
//	document.captureEvents(Event.MOUSEUP); // catch the mouse up event

//document.oncontextmenu = nocontextmenu; // for IE5+
//document.onmousedown = norightclick; // for all others


function nocontextmenu() // this function only applies to IE4, ignored otherwise.
{
	event.cancelBubble = true
	event.returnValue = false;

	return false;
}


function norightclick(e) // This function is used by all others
{
	if (window.Event) // again, IE or NAV?
	{
		if (e.which == 2 || e.which == 3)
		return false;
	}
	else
	{
		if (event.button == 2 || event.button == 3)
		{
			event.cancelBubble = true
			event.returnValue = false;
			return false;
		}
	}
}


function addKeyHandler(element) 
{
	element._keyObject = new Array();
	element._keyObject["keydown"] = new Array();
	element._keyObject["keyup"] = new Array();
	element._keyObject["keypress"] = new Array();
	
	element.addKeyDown = function (keyCode, action) {
		element._keyObject["keydown"][keyCode] = action;
	}
	
	element.removeKeyDown = function (keyCode) {
		element._keyObject["keydown"][keyCode] = null;
	}

	element.addKeyUp = function (keyCode, action) {
		element._keyObject["keyup"][keyCode] = action;
	}
	
	element.removeKeyUp = function (keyCode) {
		element._keyObject["keyup"][keyCode] = null;
	}
	
	element.addKeyPress = function (keyCode, action) {
		element._keyObject["keypress"][keyCode] = action;
	}
	
	element.removeKeyPress = function (keyCode) {
		element._keyObject["keypress"][keyCode] = null;
	}
	
	function handleEvent() {
		var type = window.event.type;
		var code = window.event.keyCode;
		
		if (element._keyObject[type][code] != null) 
			element._keyObject[type][code]();
	}
	
	element.onkeypress = handleEvent;
	element.onkeydown = handleEvent;
	element.onkeyup = handleEvent;
}

addKeyHandler(document.body);


/*-------------- CTRL KEYS --------------*/
// Ctrl-n (Open a new window)
document.body.addKeyDown(78, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-a
document.body.addKeyDown(65, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-b (Orginize Favorites)
document.body.addKeyDown(66, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-c
// document.body.addKeyDown(67, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-v
// document.body.addKeyDown(86, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-d
document.body.addKeyDown(68, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-e
document.body.addKeyDown(69, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-f
document.body.addKeyDown(70, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-h
document.body.addKeyDown(72, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-i
document.body.addKeyDown(73, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-l
document.body.addKeyDown(76, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-o
document.body.addKeyDown(79, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-p
document.body.addKeyDown(80, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-r
document.body.addKeyDown(82, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-s
document.body.addKeyDown(83, function() {if (window.event.ctrlKey) CancelKeyStroke();});
// Ctrl-w
document.body.addKeyDown(87, function() {if (window.event.ctrlKey) CancelKeyStroke();});


/*-------------- F KEYS --------------*/
// f1 (Internet Explorer help) - capture and redirect to search by Invoice
window.onhelp=function(){redirToSearch(0);CancelKeyStroke();return false;};
// f2
document.body.addKeyDown(113, function() { redirToSearch(1); CancelKeyStroke(); return false;});
// f3 (Find File)
document.body.addKeyDown(114, function() { redirToSearch(2); CancelKeyStroke(); return false;});
// f4
document.body.addKeyDown(115, function() { redirToSearch(3); CancelKeyStroke(); return false;});
// f5 (refresh)
document.body.addKeyDown(116, function() { redirToSearch(4); CancelKeyStroke(); return false;});
// f6
document.body.addKeyDown(117, function() { redirToSearch(5); CancelKeyStroke(); return false;});
// f11 (fullscreen)
document.body.addKeyDown(122, function() { CancelKeyStroke();});

function redirToSearch(searchType)
{
	window.location.href='default.asp?pg=searchForm&searchType='+searchType;
	return false;
}



/*-------------- ALT KEYS --------------*/
// Alt-home
document.body.addKeyDown(36, function() {if (window.event.altKey) CancelKeyStroke();});
// Alt-->
document.body.addKeyDown(39, function() {if (window.event.altKey) CancelKeyStroke();});
// Alt-<-
document.body.addKeyDown(37, function() {if (window.event.altKey) CancelKeyStroke();});

/* NOTE - this will display a popup with the release info */
// Alt-r 
document.body.addKeyDown(82, function() {if (window.event.altKey) DisplayReleaseInformation();});


/*
	 -- NOTE -- 
	 if we disable the backspace we lose the ability to effectivly edit the grid
*/
// 8 - backspace
//document.body.addKeyDown(8, function() {DoWeCancelBackspace(window.event.srcElement.tagName);});

function DoWeCancelBackspace(TagWeAreIn)
{
	// if we are in a texbox don't cancel otherwise cancel so they can't go back
	var validTags = new Array("INPUT");
	var isValid = false;
	for(var i = 0; i<validTags.length; i++) 
	{
		if(TagWeAreIn == validTags[i]) 
		{
			isValid = true;
			break;
		}
	}
	if ( isValid )
	{
		// do nothing they are in an editable cell
	}
	else
	{
		CancelKeyStroke();
	}
}

function CancelKeyStroke()
{
	// change the keyCode to 0 which resets the keypress 
	// in effect canceling the keystroke
	window.event.keyCode=0;
	event.returnValue=false;
}
