function initialiseMenu() { // Second tier nav object which was last opened lastExpandedObject =null; // Third tier nav objects which were last opened lastFlyoutObject = null; flyOutNavsDisplayed=null; lastFlyoutBridgeObject = null; netscapeBrowser = (navigator.appName == "Netscape"); // Initialise x and y co-ordinate values for user's mouse xPosition = 0; yPosition = 0; if (netscapeBrowser) { document.captureEvents(Event.MOUSEMOVE); } document.onmousemove = getMouseCoordinates; if (netscapeBrowser) { document.captureEvents(Event.MOUSEDOWN); } document.onmousedown = listenForMouseClick; // If a fly out navigation block is partially off the bottom of the browser window store the difference difference = 0; thirdTierDisplayed = new Array(); // Initialise array object used to store whether the IFRAME DIV element has been added to a fly out block thirdTierIframeAdded = new Array(); milliseconds = 800; flyOutNavsDisplayed = false; lastHeight = new Array(); lastWindowHeight = new Array(); lastScrolledHeight = new Array(); // Which second tier block needs to be expanded when the page is loaded if (getCookieValue("siteStoreExpandableState")) { idStoredInCookie = getCookieValue("siteStoreExpandableState"); if(document.getElementById(idStoredInCookie)) { lastExpandedObject=document.getElementById(idStoredInCookie); lastExpandedObject.style.display = "block"; } } if (getCookieValue('Basket')) { document.getElementById('AA5_second_tier').style.display = "block"; } } function getMouseCoordinates(e) { if (navigator.appName.match("Netscape")) { xPosition = e.pageX; yPosition = e.pageY; } else { xPosition = event.clientX; yPosition = event.clientY; } } function listenForMouseClick(e) { if (!e) { if( window.event ) { // DOM e = window.event; } else { // Cannot reference event return; } } if (e.target) { targetElement = e.target; } if (e.srcElement) { targetElement = e.srcElement; } if(typeof(e.which) == 'number') { // Netscape e = e.which; } else { if(typeof(e.button) == 'number') { // DOM e = e.button; } else { // Cannot determine return; } } // Check first mouse button is clicked if (e == 1) { if (xPosition == null && !(isNaN(xPosition))) { xPosition = 176; } if (xPosition <= 175 && !flyOutNavsDisplayed ) { if ( targetElement != null && targetElement.parentNode.parentNode.id.match("/_second_tier/g")) writeSessionCookie('siteStoreExpandableState',lastExpandedObject.id); else writeSessionCookie('siteStoreExpandableState',''); } else { if (flyOutNavsDisplayed) { writeSessionCookie('siteStoreExpandableState', lastFlyoutObject.parentNode.parentNode.id); } } } } function writeSessionCookie (cookieName, cookieValue) { if (testSessionCookie()) { document.cookie = escape(cookieName) + "=" + escape(cookieValue) + "; path=/thconline.cgi"; return true; } else { return false; } } function deleteCookie (cookieName ) { var cookie_date = new Date ( ); // current date & time cookie_date.setTime ( cookie_date.getTime() - 1 ); document.cookie = cookieName += "=; expires=" + cookie_date.toGMTString(); } function getCookieValue (cookieName) { var exp = new RegExp (escape(cookieName) + "=([^;]+)"); if (exp.test (document.cookie + ";")) { exp.exec (document.cookie + ";"); return unescape(RegExp.$1); } else { return false; } } function testSessionCookie () { document.cookie ="testSessionCookie=Enabled"; if (getCookieValue("testSessionCookie")=="Enabled") { return true; } else { return false; } } function showNavs(navObject) { var secondTierObject = null; var secondTierName = navObject.id + "_second_tier"; if (document.getElementById(secondTierName)) { secondTierObject = document.getElementById(secondTierName); var navArrowName = navObject.id + "_arrow"; var navArrowObject = document.getElementById(navArrowName); } if (lastExpandedObject != null && secondTierObject != lastExpandedObject) { // Collapse previously expanded second tier block if still visible lastExpandedObject.style.display = "none"; var lastExpandedObjectArrowName = lastExpandedObject.id; lastExpandedObjectArrowName = lastExpandedObjectArrowName.substr(0,lastExpandedObjectArrowName.length - 12) + "_arrow"; if (document.getElementById(lastExpandedObjectArrowName)) { var lastExpandedObjectArrow = document.getElementById(lastExpandedObjectArrowName); lastExpandedObjectArrow.className = "arrowUp"; } } if (lastFlyoutObject != null) { // Previously opened third tier flyout block must dispappear lastFlyoutObject.style.display = "none"; } if (secondTierObject != null) { // Determine whether to expand or collapse second tier block if (secondTierObject.style.display == "none") { secondTierObject.style.display = "block"; if (navArrowObject) navArrowObject.className = "arrowDown"; lastExpandedObject = secondTierObject; } else { secondTierObject.style.display = "none"; if (navArrowObject) navArrowObject.className = "arrowDown"; } lastExpandedObject = secondTierObject; } } function showAmen(navObject) { var secondTierObject = null; var secondTierName = navObject.id + "_second_tier"; if (document.getElementById(secondTierName)) { secondTierObject = document.getElementById(secondTierName); var navArrowName = navObject.id + "_arrow"; var navArrowObject = document.getElementById(navArrowName); } if (lastFlyoutObject != null) { // Previously opened third tier flyout block must disappear lastFlyoutObject.style.display = "none"; } if (secondTierObject != null) { // Determine whether to expand or collapse second tier block if (secondTierObject.style.display == "none") { secondTierObject.style.display = "block"; if (navArrowObject) { navArrowObject.className = "arrowDown"; } } else { secondTierObject.style.display = "none"; if (navArrowObject) { navArrowObject.className = "arrowDown"; } } } } function MoveNav(navObjectId,x) { var thirdTierObject2 = document.getElementById(navObjectId); if (x < 175) { x++; x++; x++; x++; thirdTierObject2.style.left=x+'px'; eval("setTimeout('MoveNav(\""+navObjectId+"\", \""+x+"\")',"+1+")"); } } function flyoutNavs(navObject,displayNavs) { var thirdTierObject = null; var thirdTierName = navObject.id + "_third_tier"; var thirdTierBridge = navObject.id + "_bridge"; thirdTierDisplayed[navObject.id] = displayNavs; flyOutNavsDisplayed = true;//displayNavs; if (document.getElementById(thirdTierName)) { thirdTierObject = document.getElementById(thirdTierName); thirdTierBridgeObject = document.getElementById(thirdTierBridge); } if (thirdTierObject != null) { if (displayNavs == 1) { if (lastFlyoutObject != null && lastFlyoutObject != thirdTierObject) { lastFlyoutObject.style.display = "none"; lastFlyoutObject.style.marginTop = "-15px"; if (lastFlyoutBridgeObject != null) { lastFlyoutBridgeObject.style.display = "none"; } difference = 0; } thirdTierObject.omouseover= ""; if(thirdTierObject.style.display !="block") { thirdTierObject.onmouseout= ""; thirdTierObject.style.display = "block"; eval("setTimeout('MoveNav(\""+thirdTierName+"\", 100)',"+1+")"); } thirdTierObject.onmouseover= "flyoutNavs(this,1)"; thirdTierObject.onmouseout= "flyoutNavs(this,0)"; thirdTierObject.style.zIndex = "10"; // thirdTierBridgeObject.style.display = "block"; // thirdTierBridgeObject.style.left = "147px"; // thirdTierBridgeObject.style.marginTop = "-18px"; // thirdTierBridgeObject.style.zIndex = "11"; if (difference == 0 && xPosition <= 150) { var browserWindowHeight = getWindowHeight(); var scrolledHeight = getScrollHeight(); var numberOfElements = getNumberOfElements(thirdTierObject); // Third tier link height is 20 pixels var flyOutNavsHeight = eval(numberOfElements * 20); if ((thirdTierIframeAdded[navObject.id] == null || !(thirdTierIframeAdded[navObject.id])) && !(netscapeBrowser) && !(isNaN(flyOutNavsHeight))) { backgroundWithIframe = '
' + '
'; thirdTierObject.innerHTML = backgroundWithIframe + thirdTierObject.innerHTML; thirdTierIframeAdded[navObject.id] = true; } difference = eval(yPosition + flyOutNavsHeight + 5 - browserWindowHeight); if (netscapeBrowser) { difference -= scrolledHeight; } // If browser window height and scrolled height values are unchanged then use the previous height difference value if (lastWindowHeight[thirdTierName] != null && lastScrolledHeight[thirdTierName] != null) { if (lastWindowHeight[thirdTierName] == browserWindowHeight && lastScrolledHeight[thirdTierName] == scrolledHeight) { difference = lastHeight[thirdTierName]; } } // Remember the current height difference, browser window height and scrolled height values lastHeight[thirdTierName] = difference; lastWindowHeight[thirdTierName] = browserWindowHeight; lastScrolledHeight[thirdTierName] = scrolledHeight; // Only move the third tier fly out block if part of the links are cut off if (difference > 0) { // Make sure the bridge object locks at the bottom of the fly out block var offsetAmount = 0; if ((15 + difference) > flyOutNavsHeight) { offsetAmount = eval((15 + difference) - flyOutNavsHeight) ; } thirdTierObject.style.marginTop = eval(offsetAmount - 15 - difference)+"px"; } else { thirdTierObject.style.marginTop = "-15px"; } } } else { eval("setTimeout('hideObject(\""+navObject.id+"\")',"+milliseconds+")"); } } lastFlyoutObject = thirdTierObject; lastFlyoutBridgeObject = thirdTierBridgeObject; } function hideObject(navObjectID) { var thirdTierName = navObjectID + "_third_tier"; var thirdTierBridge = navObjectID + "_bridge"; if (document.getElementById(thirdTierName)) { thirdTierObject = document.getElementById(thirdTierName); thirdTierBridgeObject = document.getElementById(thirdTierBridge); // If cursor is still off third tier block and its parent nav after the delay then make it disappear if (thirdTierDisplayed[navObjectID] == 0) { thirdTierObject.style.display = "none"; // thirdTierBridgeObject.style.display = "none"; difference = 0; } } flyOutNavsDisplayed = false; } function getNumberOfElements(nodeObject) { var countElements = 0; var children = nodeObject.childNodes; for(var i=0; i < children.length; i++) { if (children[i].className != null && children[i].className == "navLeftThird") { countElements++; } // Recursively call this function countElements += getNumberOfElements(children[i]); } return countElements; } function getWindowHeight() { var browserWinWidth = 0, browserWinHeight = 0; if( typeof( window.innerWidth ) == 'number' ) { // Non-IE browserWinWidth = window.innerWidth; browserWinHeight = window.innerHeight; } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { // IE 6+ browserWinWidth = document.documentElement.clientWidth; browserWinHeight = document.documentElement.clientHeight; } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { // IE 4 browserWinWidth = document.body.clientWidth; browserWinHeight = document.body.clientHeight; } return browserWinHeight; } function getScrollHeight() { var scrolledWidth = 0, scrolledHeight = 0; if ( typeof( window.pageYOffset ) == 'number' ) { // Netscape scrolledHeight = window.pageYOffset; scrolledWidth = window.pageXOffset; } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) { // DOM scrolledHeight = document.body.scrollTop; scrolledWidth = document.body.scrollLeft; } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) { // IE6 scrolledHeight = document.documentElement.scrollTop; scrolledWidth = document.documentElement.scrollLeft; } return scrolledHeight; } initialiseMenu();