<!--
function init() {

	if (document.all) {
			for (i=0;i<document.links.length;i++) {
				document.links[i].onfocus = setLinkFocus;
				document.links[i].onblur = resetLinkFocus;
			}

		}

	for (j=0; j<document.forms.length;j++)
	{

		formObj = document.forms[j];
		if (formObj != null)
		{

			with(formObj)
		   {
		      for (i=0;i<formObj.elements.length;i++)
	   	   {
	      	   switch(formObj.elements[i].type)
	         	{
	   	      		case "hidden"     : formObj.elements[i].onfocus = isHiddenFocus;
													  formObj.elements[i].onblur = isBlur;
	      	   				              break;
		         		case "text"       : formObj.elements[i].onfocus = isTextFocus;
													  formObj.elements[i].onblur = isBlur;
	   	      				    			  break;
	      	      	case "password"   : formObj.elements[i].onfocus = isPasswordFocus;
													  formObj.elements[i].onblur = isBlur;
		         				    			  break;
	   	      		case "textarea"   : formObj.elements[i].onfocus = isTextAreaFocus;
													  formObj.elements[i].onblur = isBlur;
	      	   				    			  break;
		         		case "select-one" : formObj.elements[i].onfocus = isSelectOneFocus;
													  formObj.elements[i].onblur = isBlur;
	   	      								  break;
	      	      	case "checkbox"   : formObj.elements[i].onfocus = isCheckboxFocus;
													  formObj.elements[i].onblur = isBlur;
													  break;
	         			case "radio"      : formObj.elements[i].onfocus = isRadioFocus;
													  formObj.elements[i].onblur = isBlur;
	         									  break;
			         	case "button"		: formObj.elements[i].onfocus = isButtonFocus;
													  formObj.elements[i].onblur = isBlur;
	   	      								  break;
	   		      	default           : formObj.elements[i].onfocus = isOtherFocus;
													  formObj.elements[i].onblur = isBlur;
	         									  break;
	         	}
	      	}
	      }
		}
	}

	if ( typeof(localinit)=="function"){
		localinit();
	}
}


var isNN = document.layers;
var isIE = document.all;
var d = document.location.pathname;
var curChapter;
var curPages;
curChapter = d.substring(0,d.lastIndexOf("/"));
curChapter = curChapter.substring(curChapter.lastIndexOf("/")+1, curChapter.length);
curPages = d.substring(d.lastIndexOf("/")+1, d.length);


function shortCutdef (chapter, page, shortcut, url) {
	this.chapter = chapter;
	this.page = page;
	this.shortcut = shortcut;
	this.url = url;
}

function getKey(keyStroke) {

//	Check the chapter
//	if right, kcode will store the correct shortcut
	if (isNN) {
		eventChooser = keyStroke.which;
	} else if (isIE) {
		eventChooser = event.keyCode;
	}
	which = String.fromCharCode(eventChooser).toLowerCase();

//	alert(curPages);
//	alert(curChapter);
	for (i=0;i<sitemap.length;i++) {
		for (j=0;j<sitemap[i].length;j++) {
			if (sitemap[i][j].chapter == curChapter && sitemap[i][j].page == curPages && sitemap[i][j].shortcut != null && sitemap[i][j].url != null) {
				for (k=0;k<sitemap[i][j].shortcut.length;k++) {
					kcode[sitemap[i][j].shortcut[k]] = sitemap[i][j].url[k];
				}
			}
		}
	}
		
	stopBookmark = false;

	var ishandled=false;

	if ((!(flag || (focuselementtype == "text" && which.charCodeAt(0) == 13))) || (focuselementtype == "links" && which.charCodeAt(0) == 13) || (focuselementtype == "textarea" && which.charCodeAt(0) == 13)) {
		return;
	} else if (!flag && focuselementtype == "text" && which.charCodeAt(0) == 13) {
		if ( ! ishandled){
			if ( typeof(externalKeys)=="function"){
				externalKeys(which);
			}
		}
	} else {
		for (var k in kcode) {
			if (!stopBookmark) {
				if (which == "z") {
					addFavourite();
					stopBookmark = true;
					ishandled=true;
				} else if (which == k) {
					window.location = kcode[k];
					ishandled=true;
				}
			}
		}

		if ( ! ishandled){
			if ( typeof(externalKeys)=="function"){
				externalKeys(which);
			}

		}


	}
}

//Register event handler for window, document
if (document.layers) {	document.captureEvents(Event.KEYDOWN); }
document.onkeypress = getKey;
window.onkeypress = getKey;

function setLinkFocus() {
	focuselementtype = "links";
}

function resetLinkFocus() {
	focuselementtype = "";
}

var flag = true;
var focuselementtype = "";

function isBlur() {

	flag = true;
	focuselementtype = "";
	if (document.layers) {	document.captureEvents(Event.KEYDOWN); }
}

function isFocus() {

	flag = false;
	if (document.layers) {	document.releaseEvents(Event.KEYDOWN); }
}

function isHiddenFocus() {

	flag = false;
	focuselementtype = "hidden";
	if (document.layers) {	document.releaseEvents(Event.KEYDOWN); }
}

function isTextFocus() {

	flag = false;
	focuselementtype = "text";
	if (document.layers) {	document.releaseEvents(Event.KEYDOWN); }
}

function isPasswordFocus() {

	flag = false;
	focuselementtype = "password";
	if (document.layers) {	document.releaseEvents(Event.KEYDOWN); }
}

function isTextAreaFocus() {

	flag = false;
	focuselementtype = "textarea";
	if (document.layers) {	document.releaseEvents(Event.KEYDOWN); }
}

function isSelectOneFocus() {

	flag = false;
	focuselementtype = "select-one";
	if (document.layers) {	document.releaseEvents(Event.KEYDOWN); }
}

function isCheckboxFocus() {

	flag = false;
	focuselementtype = "checkbox";
	if (document.layers) {	document.releaseEvents(Event.KEYDOWN); }
}

function isRadioFocus() {

	flag = false;
	focuselementtype = "radio";
	if (document.layers) {	document.releaseEvents(Event.KEYDOWN); }
}

function isButtonFocus() {

	flag = false;
	focuselementtype = "button";
	if (document.layers) {	document.releaseEvents(Event.KEYDOWN); }
}

function isOtherFocus() {

	flag = false;
	focuselementtype = "other";
	if (document.layers) {	document.releaseEvents(Event.KEYDOWN); }
}


window.onload=init;
//-->