<!--
// Suppress error messages
function suppresserrors(){
	return true;
}
window.onerror=suppresserrors;


// Keyboard navigation for menus
var keynav="no";
var activemenu=1;
var activeitem=0;
var modkey="";
function handlekey(e){
	modkey="";
	if(!e){
		if(window.event){
			e=event;
		} else {
			e=null;
			event.returnValue=true;
			e.returnValue=true;
			return true;
		}
	}
	if(e.charCode){
		keypressed=e.charCode;
	} else {
		if(e.keyCode){
			keypressed=e.keyCode;
			if(e.altKey||e.ctrlKey){
				modkey="yes";
			}
		} else {
			if(e.which){
				window.alert("Using which");
				keypressed=e.which;
				if (e.modifiers & Event.ALT_MASK){
      				modkey="yes";
				}
				if (e.modifiers & Event.CTRL_MASK){
      				modkey="yes";
				}
				if (e.modifiers & Event.META_MASK){
      				modkey="yes";
				}
			} else {
				event.returnValue=true;
				e.returnValue=true;
				return true;
			}
		}
	}
	if(keynav=="yes"){
		if(keypressed==40&&modkey=="yes"){
			itemout(activemenu,activeitem);
			for(closing=1;closing<=menus;closing++){
				nameout(closing);
			}
			keynav="no";
			event.returnValue=false;
			event.preventDefault=true;
			return false;
		}
		if(keypressed==37){
			// Left
			itemout(activemenu,activeitem);
			nameout(activemenu);
			activemenu=activemenu-1;
			if(activemenu==0){
				activemenu=menus;
			}
			nameover(activemenu);
			activeitem=1;
			itemover(activemenu,activeitem);
			event.returnValue=false;
			event.preventDefault=true;
			return false;
		}
		if(keypressed==39){
			// Right
			itemout(activemenu,activeitem);
			nameout(activemenu);
			activemenu=activemenu+1;
			if(activemenu>menus){
				activemenu=1;
			}
			nameover(activemenu);
			activeitem=1;
			itemover(activemenu,activeitem);
			event.returnValue=false;
			event.preventDefault=true;
			return false;
		}
		if(keypressed==38){
			// Up
			itemout(activemenu,activeitem);
			activeitem=activeitem-1;
			if(activeitem==0){
				activeitem=(eval('menu' + activemenu + '.length')-1);
			}
			itemover(activemenu,activeitem);
			event.returnValue=false;
			event.preventDefault=true;
			return false;
		}
		if(keypressed==40){
			// Down
			itemout(activemenu,activeitem);
			activeitem=activeitem+1;
			if(activeitem>=eval('menu' + activemenu + '.length')){
				activeitem=1;
			}
			itemover(activemenu,activeitem);
			event.returnValue=false;
			event.preventDefault=true;
			return false;
		}
		if(keypressed==13){
			// Enter
			itemclick(activemenu,activeitem);
			event.returnValue=false;
			event.preventDefault=true;
			return false;
		}
		return true;
	} else {
		if(keypressed==40&&modkey=="yes"){
			keynav="yes";
			for(closing=1;closing<=menus;closing++){
				nameout(closing);
			}
			nameover(1);
			menuover(1);
			activemenu=1;
			activeitem=1;
			itemover(activemenu,activeitem);
			event.returnValue=false;
			e.returnValue=false;
			return false;
		}
		event.returnValue=true;
		e.returnValue=true;
		return true;
	}
}
if(document.captureEvents){
	if(Event.KEYDOWN){
		document.captureEvents(Event.KEYDOWN);
    }
    document.onKeyDown=handlekey;
}

// Nasty browser hack functions
function hideselects(xpos){
	for(i=0;i<document.forms.length;i++){
		for(j=0;j<document.forms[i].elements.length;j++){
			var formel=document.forms[i].elements[j];
			
			if(formel.type=="select-one"){
				var testobj=formel;
				var formpos=0;
				while (testobj.offsetParent){
					formpos += testobj.offsetLeft;
					testobj = testobj.offsetParent;
				}
				if(formpos<(xpos+100)){
					formel.style.visibility="hidden";
				}
			}
		}
	}
}
function showselects(){
	for(i=0;i<document.forms.length;i++){
		for(j=0;j<document.forms[i].elements.length;j++){
			var formel=document.forms[i].elements[j];
			if(formel.type=="select-one"){
				formel.style.visibility="visible";
			}
		}
	}
}


// Menu function definitions
var sticky=0;
var closesticky=0;

function itemover(menu,item){
	var target=eval('target' + menu + '[' + item + ']');
	if (target.length>0){
		document.getElementById('menu' + menu + 'item' + item).className='selectedmenuitem';
		var statbar=eval('target' + menu + '[' + item + ']');
		if((target.indexOf("srcf.ucam.org/sidneymcr")==-1) && (target.indexOf("students.sid.cam.ac.uk/~mcr/")==-1)){
			statbar=statbar + " - The target of this link is outside the MCR website";
		}
		if(restricted.indexOf("|"+menu+"-"+item+"|")!=-1){
			statbar=statbar + " - Access is restricted by Raven password or to cam.ac.uk";
		}
		window.status=statbar;
	}
}
function itemout(menu,item){
	document.getElementById('menu' + menu + 'item' + item).className='menuitem';
	window.status="";
}
function itemclick(menu,item){
	document.getElementById('menu' + menu + 'item' + item).className='clickedmenuitem';
	var target=eval('target' + menu + '[' + item + ']');
	if (target.length>0){
		parent.self.location=eval('target' + menu + '[' + item + ']');
	}
}
function menuover(menu){
	document.getElementById('name' + menu).className='selectedmenu'
	document.getElementById('menu' + menu).style.visibility='visible';
	// Nasty IE hack
	if(navigator.appVersion.indexOf("MSIE")!=-1){
		var obj=document.getElementById('name' + menu);
		var xpos=0;
		while (obj.offsetParent){
			xpos += obj.offsetLeft;
			obj = obj.offsetParent;
		}
		hideselects(xpos);
	}
}
function menuout(menu){
	if(sticky==menu){
		return false;
		// Abort menu out call for active 'sticky' menu.
	}
	document.getElementById('name' + menu).className='menu';
	document.getElementById('menu' + menu).style.visibility='hidden';
	// Nasty IE hack
	if(navigator.appVersion.indexOf("MSIE")!=-1){
		showselects();
	}
}
function nameover(menu){
	if(sticky!=menu){
		closesticky=sticky;
		sticky=0;
		menuout(closesticky);
		closesticky=0;
		// Cancel sticky mode on hovering over a different menu name - 'stickiness' is not persistent beyond current menu
	}
	document.getElementById('name' + menu).className='selectedmenu';
	var obj=document.getElementById('name' + menu);
	var xpos=0;
	while (obj.offsetParent){
		xpos += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	document.getElementById('menu' + menu).style.left=xpos + "px";
	document.getElementById('menu' + menu).style.visibility='visible';
	
	// Nasty IE hack
	if(navigator.appVersion.indexOf("MSIE")!=-1){
		hideselects(xpos);
	}
}
function nameout(menu){
	if(sticky==menu){
		return false;
		// Cancel menu close for the active menu in sticky mode
	}
	document.getElementById('name' + menu).className='menu';
	document.getElementById('menu' + menu).style.visibility='hidden';
	
	// Nasty IE hack
	if(navigator.appVersion.indexOf("MSIE")!=-1){
		showselects();
	}
}
function nameclick(menu){
	if(sticky==0){
		sticky=menu;
		nameover(menu);
	} else {
		if(sticky==menu){
			sticky=0;
			nameout(menu);
			// Stickiness may be cancelled by clicking on any menu name, or by hovering on a menu name other than the current one.
		} else {
			nameout(sticky);
			sticky=menu;
			nameover(menu);
		}
	}
}
//-->
