var moveBar;
var demonstration;
var ieSixLayerHide;

Event.observe(document, 'click', function() {
		check
});

function initNav(){
	liEles = $$(".ofxNav li div a");
	for (i=0; i<liEles.length; i++){
		liEles[i].onmouseover = function(){showMenu(this)}
		liEles[i].onfocus = function(){navCloseAll()}
	}
	ieSixLayerHide = $("ieSixLayerHide");
}

function SmoothMovement(position, target, velocity){
	position = Math.round(position);
	target   = Math.round(target);
	velocity = (velocity ? Math.round(velocity) : 0);
	this.updatePosition = function(){
		position += velocity;
		if (velocity < 0){
			if (position - velocity * (velocity  - 1) / 2 < target){
				velocity++;
			}else if (position - (velocity - 1) * (velocity - 2) / 2 >= target){
				velocity--;
			}
		}else{
			if (position + velocity * (velocity + 1) / 2 > target){
				velocity--;
			}else if (position + (velocity + 1) * (velocity + 2) / 2 <= target){
				velocity++;
			}
		}
		return position;
	}
	this.changeTarget = function(newTarget){
		target = Math.round(newTarget);
	}
	this.getPosition = function(){
		return position;
	}
	this.getVelocity = function(){
		return velocity;
	}
	this.hasStopped = function(){
		return (position == target && velocity == 0);
	}
}

function updateDemonstration(){
	if (moveBar){
		moveBar.style.height  = demonstration.updatePosition() + 'px';
	}
}

function initFooter(){
	var moveBar = $("moveBar");
	if (moveBar){
		var footerContents = $("footerContents");
		demonstration = new SmoothMovement(0,0);
		window.setInterval(updateDemonstration, 20);
		if (window.setTimeout(Cookie.get("footerOpen"),500)=="true"){
			var oLink = $("showHideLink");
			footerContents.show();
			demonstration.changeTarget(260);
			oLink.innerHTML = "Hide site index";
			Element.addClassName(oLink,"ofSelected");
		}
	}
}

function toggleFooter(){
	var oLink = $("showHideLink");
	moveBar = $("moveBar");
	var footerContents = $("footerContents");
	if (oLink.innerHTML == "Show site index"){
		footerContents.show();
		demonstration.changeTarget(260);
		oLink.innerHTML = "Hide site index";
		Element.addClassName(oLink,"ofSelected");
		Cookie.set("footerOpen","true",7776000); // 90 days
	} else {
		demonstration.changeTarget(0);
		footerContents.hide();
		oLink.innerHTML = "Show site index";
		Element.removeClassName(oLink,"ofSelected");
		Cookie.unset("footerOpen");
	}
}

function navCloseAll(){
	if (ieSixLayerHide){
		ieSixLayerHide.hide();
	}

	liEles = $$(".ofxNav")[0].down().childElements();
	for (i=0; i<liEles.length; i++){
		Element.removeClassName(liEles[i],"ofSelected");
	}
	currentlyOpen = false;
}

var lastLinkFocus,lastLinkMouseOver,lastDocMouseMove,MENU_DELAY, MENU_OUT_DELAY,currentlyOpen;
currentlyOpen 	= true;
MENU_DELAY 		= 100;
MENU_OUT_DELAY 	= 2200;

function showMenu(oEle,jawsText){
	if(oEle.target || oEle.srcElement){
		if(oEle.keyCode==13){
			lastLinkMouseOver = src(oEle);
			displayMenu();
		}
	} else {
		lastLinkMouseOver = oEle;
		setTimeout("checkLastMouseMove()", MENU_DELAY);
	}
}

function timedCloseMenu(oEle){
	setTimeout("checkMenu()", MENU_OUT_DELAY);
}

function checkMenu(){
	if(Element.descendantOf( lastDocMouseMove, $$(".ofxNav")[0])){
		return;
	}
	navCloseAll();
}

function watchMenus(){
	if(document.all){
		document.attachEvent("onmousemove", checkMouseLocation);
	} else {
		document.addEventListener("mousemove", checkMouseLocation, false);
	}
	var lis = $$(".ofxNav");
	if (lis.length > 0){
		var lisEls = lis[0].getElementsByTagName("li");
		for(i = 0; i<lisEls.length; i++){
			if(document.all){
				lisEls[i].attachEvent("onmouseout", timedCloseMenu);
			} else {
				lisEls[i].addEventListener("mouseout", timedCloseMenu, false);
			}
		}
		if(document.all){
			lis[0].attachEvent("onmouseout", timedCloseMenu);
		} else {
			lis[0].addEventListener("mouseout", timedCloseMenu, false);
		}
	}
}

/**	Sets the last element that was moused over. */
function checkMouseLocation(event){
	lastDocMouseMove = src(event);
	if(currentlyOpen && !Element.descendantOf(lastDocMouseMove, $$(".ofxNav")[0]))timedCloseMenu();
}

/** Checks whether the last sub context link mouse over lement is the same as the last identifying document mousemove element.*/
function checkLastMouseMove(){
	if(lastLinkMouseOver == lastDocMouseMove && lastLinkMouseOver!= null){
		displayMenu();
	}
}

function setIELayerPosition(x,y,oEle){
	if (ieSixLayerHide){
		var theLayer = oEle.up().next();
		ieSixLayerHide.style.left = x + "px";
		ieSixLayerHide.style.top = y + "px";
		ieSixLayerHide.style.height = theLayer.getHeight() + "px";
		ieSixLayerHide.style.width = theLayer.getWidth() + "px";
		ieSixLayerHide.show();
	}
}

function displayMenu(){
	closeAllTopMenus();
	navCloseAll();
	var theEle = $(lastLinkMouseOver);
	
	var yPos = Element.positionedOffset(theEle)[1];
	var xPos = Element.positionedOffset(theEle)[0];
	
	theEle.up().next().style.top = yPos + 38 + "px";
	
	if( Element.hasClassName(theEle.up(1),"ofLastChild") ){ // keep the last menu from displaying outside the window
			if(navigator.userAgent.indexOf('MSIE 6') == -1){ // move it over a bit if its IE6
				theEle.up().next().style.left = xPos - 53 + "px";
				setIELayerPosition(xPos - 53,yPos + 38,theEle);
			}else{
				theEle.up().next().style.left = xPos - 64 + "px";
				setIELayerPosition(xPos - 64,yPos + 38,theEle);
			}
		
		} else {
			theEle.up().next().style.left = xPos + "px";
			setIELayerPosition(xPos,yPos + 38,theEle);
		}
	Element.addClassName(theEle.up(1),"ofSelected");
	currentlyOpen = true;
}

function check(e){
	var navObjs = $$(".ofxNav");
	var target = (e && e.target) || (event && event.srcElement); 
	if (navObjs.length > 0){
		if(target!=navObjs[0] && getParent2(target,navObjs[0])!=navObjs[0]) {
			navCloseAll();
		}
	}
	var closeTopLinks = true;
	if (getParentByClassName(target,"ofxTopMenu") != null){closeTopLinks = false}
	if (getParentByClassName(target,"ofxTopMenuLinks") != null){closeTopLinks = false}
	if (Element.hasClassName(target,"ofxTopMenu")){closeTopLinks = false}
	if (Element.hasClassName(target,"ofxTopMenuLinks")){closeTopLinks = false}
	//alert("test " + closeTopLinks)
	if (closeTopLinks == true){closeAllTopMenus()}
}

function closeAllTopMenus(){
	linkEles = $$("div#ofxTopMenuLinks a");
	for (i=0; i<linkEles.length; i++){
		$(linkEles[i].id.replace("menuLink","menuDiv")).hide();
		Element.removeClassName(linkEles[i],"ofSelected")
	}
	// Also close the site switcher
	closechangeSite();
}

function openTopMenu(id){
	var linkEle = $("menuLink_"+ id);
	var divEle = $("menuDiv_"+ id);
	if (Element.hasClassName(linkEle,"ofSelected")){
		closeTopMenu(id);
	}else{
		closeAllTopMenus();
		Element.addClassName(linkEle,"ofSelected");
		$$("#menuDiv_"+ id +" .ofxTabConnect")[0].style.width = linkEle.getWidth() - 2 + "px";
		divEle.show();
		divEle.style.top = Element.positionedOffset(linkEle)[1] + linkEle.getHeight()  + "px";
		divEle.style.left = Element.positionedOffset(linkEle)[0] - divEle.getWidth() + linkEle.getWidth() + "px";
		$$("a#menuLink_"+ id +" img")[0].alt = "Menu opened";
	}
}

function closeTopMenu(id){
	var linkEle = $("menuLink_"+ id);
	var divEle = $("menuDiv_"+ id);
	Element.removeClassName(linkEle,"ofSelected");
	divEle.hide();
	$$("a#menuLink_"+ id +" img")[0].alt = "Menu closed";
}

function searchKeyPress(linkIndex){
	if (linkIndex > 0){
		if(event.keyCode==40){
			$$("div#recent a")[linkIndex].focus()
		}
		if(event.keyCode==38){$$("div#recent a")[linkIndex-1].focus()}
	} else {
		if(event.keyCode==40 || event.keyCode==9) $$("div#recent a")[linkIndex].focus();
		if(event.keyCode==38){$("search").focus()}
	}
}

// Duplicate functions added by FEB for site switcher
function openchangeSite(oEle){
	theEle = $(oEle);
	if (Element.hasClassName(theEle,"ofSelected")){
		closechangeSite();
	} else {
		closeAllTopMenus();
		helpSuppDiv = $("changeSite");
		Element.addClassName(theEle,"ofSelected");
		helpSuppDiv.show();
		helpSuppDiv.style.top = Element.positionedOffset(theEle)[1] + theEle.getHeight()  + "px";
		helpSuppDiv.style.left = Element.positionedOffset(theEle)[0] - helpSuppDiv.getWidth() + theEle.getWidth() + "px";
		$$("a#changeSiteLink img")[0].alt = "Menu opened";
	}
}

function closechangeSite(){
	if ($("changeSite")){
		helpSuppDiv = $("changeSite");
		helpSuppLink = $("changeSiteLink");
		Element.removeClassName(helpSuppLink,"ofSelected");
		helpSuppDiv.hide();
		$$("a#changeSiteLink img")[0].alt = "Menu closed";
	}
}

function submitenter(myfield,e,param)
{
var formObj = $(myfield).up("form");
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
   {
	if(param == 'AM'){
		if(isRemembered){Cookie.set("LoginPage","loginWithRememberedPersonalDetails",YEAR_MS);}
		if(formObj.id == "loginCDBForm" && !isRemembered ){Cookie.set("LoginPage","loginWithCDB",YEAR_MS);}
		if(formObj.id == "loginPersonalDetailsForm" ){Cookie.set("LoginPage","loginWithPersonalDetails",YEAR_MS);}
	}
	else{
		if(isRemembered){
			Cookie.set("LoginPage","loginWithRememberedPersonalDetails",YEAR_MS);
		}else{
			Cookie.set("LoginPage","loginWithCDB",YEAR_MS);
		}
	}
   formObj.submit();
   return false;
   }
else
   return true;
}
