<PUBLIC:COMPONENT lightWeight? true > <PUBLIC:DEFAULTS contentEditable? false tabStop? true /> <PUBLIC:attach event="ondocumentready" onevent="initElement()" /> <PUBLIC:attach event="onmouseover" onevent="elementOnMouseOver()" /> <PUBLIC:attach event="onmouseout" onevent="elementOnMouseOut()" /> <PUBLIC:attach event="onclick" onevent="elementOnClick()" /> <PUBLIC:attach event="onselectstart" onevent="elementOnSelect()" /> <PUBLIC:attach event="oncontextmenu" onevent="elementOnContextMenu()" /> <PUBLIC:attach event="ondetach" onevent="cleanupElement()" /> <PUBLIC:method name="showMenu" /> <PUBLIC:method name="hideMenu" /> <PUBLIC:method name="setMenuEnabled" /> <PUBLIC:method name="setMenuItem" /> <PUBLIC:method name="getMenuItem" /> <PUBLIC:property name="menuState" value /> <PUBLIC:property name="subMenuState" value /> <script language="jscript"> // ---------------------------------------------------- // 2k3Widgets: 2k3Menu // // Copyright ?002-2004 Stedy Software and Systems // Please see http://www.stedy.com for terms of use. // ---------------------------------------------------- var currentMenuItem = null ; var currentSubMenu = null ; var menuShadowArray = new Array(null, null, null, null) ; function initElement() { element.menuState = makeBooleanOfAttribute("menuState") ; element.subMenuState = makeBooleanOfAttribute("subMenuState") ; /* for (var i = 0; i < element.children[1].children.length; i++) { var childElement = element.children[1].children[i] ; if (childElement.className != "2k3MenuSeperator") { if (!isElementEnabled(childElement)) { showDisabled(childElement) ; } } } */ childElement = null ; for (var i = 3; i >= 0; i--) { menuShadowArray[i] = window.document.createElement("SPAN") ; menuShadowArray[i].className = "2k3ShadowElement" ; element.parentElement.insertAdjacentElement("afterBegin", menuShadowArray[i]) ; } } function cleanupElement() { for (var i = 0; i <= 3; i++) { if (menuShadowArray[i] != null) { menuShadowArray[i].style.visibility = "hidden" ; menuShadowArray[i].removeNode(true) ; menuShadowArray[i] = null ; } } } function elementOnMouseOver() { var el = getRealItem(window.event.srcElement) ; if (el.className == "2k3MenuItem") { if (isElementEnabled(el)) { if (element.subMenuState) { if (currentSubMenu != null) { currentSubMenu.hideMenu() ; currentSubMenu = null ; showNormal(currentMenuItem) ; currentMenuItem = null ; element.subMenuState = false ; } } subMenuName = getElementSubMenu(el) ; if (subMenuName != "") { showSubMenu(el) ; } showOver(el) ; } } } function elementOnMouseOut() { var el = getRealItem(window.event.srcElement) ; if (el != null) { var toEl = getRealItem(window.event.toElement) ; if (el.className == "2k3MenuItemOver") { if (toEl != currentMenuItem && el == currentMenuItem) { if (isElementEnabled(el)) { if (element.subMenuState) { if (toEl.className == "2k3MenuItem") { toEl = toEl.parentElement.parentElement ; } if (toEl != currentSubMenu) { if (currentSubMenu != null) { currentSubMenu.hideMenu() ; currentSubMenu = null ; showNormal(currentMenuItem) ; currentMenuItem = null ; element.subMenuState = false ; } } else { return ; } } showNormal(el) ; } } } } } function elementOnClick() { var el = getRealItem(window.event.srcElement) ; if (el.className == "2k3MenuItemDisabled") { with (window.event) { cancelBubble = true ; returnValue = false ; } } } function elementOnSelect() { with (window.event) { cancelBubble = true ; returnValue = false ; } return false ; } function elementOnContextMenu() { with (window.event) { cancelBubble = true ; returnValue = false ; } return false ; } function getRealItem(el) { if (el != null) { if (el.tagName.toLowerCase() == "img") { return el.parentElement.parentElement ; } if (el.tagName.toLowerCase() == "b") { el = el.parentElement ; } switch (el.className) { case "2k3MenuVerticalSpacerLeft": return el.parentElement ; break ; case "2k3MenuImage": return el.parentElement ; break ; case "2k3MenuCaption": return el.parentElement ; break ; case "2k3MenuMore": return el.parentElement ; break ; case "2k3MenuNoMore": return el.parentElement ; break ; case "2k3MenuVerticalSpacerRight": return el.parentElement ; break ; default: return el ; break ; } } else { return el ; } } function isElementEnabled(el) { if (el.enabled == null) { return true ; } el.enabled = (((el.enabled).toLowerCase() == "true") || el.enabled == "1") ; return (el.enabled) ; } function getElementSubMenu(el) { if (el.subMenu == null) { return "" ; } return el.subMenu ; } function showNormal(el) { el.className = "2k3MenuItem" ; currentMenuItem = null ; } function showOver(el) { el.className = "2k3MenuItemOver" ; currentMenuItem = el ; } function showDisabled(el) { with (el) { if (className == "2k3MenuItemDisabled") { return ; } className = "2k3MenuItemDisabled" ; onbeforecut = onclick ; onclick = null ; } } function showEnabled(el) { with (el) { if (className == "2k3MenuItem") { return ; } className = "2k3MenuItem" ; onclick = onbeforecut ; onbeforecut = null ; } } function setMenuEnabled(elName, blnState) { var el = window.document.getElementById(elName) ; if (el != null) { switch (blnState) { case true: showEnabled(el) ; break ; case false: showDisabled(el) ; break ; } } } function showMenuShadow(el, x, y) { el.style.zIndex = 1000 ; for (var i = 3; i >= 0; i--) { with (menuShadowArray[i].style) { left = x + (4 + i) ; top = y + (4 + i) ; width = el.offsetWidth - (i * 2) ; height = el.offsetHeight - (i * 2) ; zIndex = el.style.zIndex - 1 ; visibility = "visible" ; } } } function hideMenuShadow() { for (var i = 0; i <= 3; i++) { if (menuShadowArray[i] != null) { menuShadowArray[i].style.visibility = "hidden" ; } } } function showMenu(x, y, w) { with (element.style) { left = x ; top = y ; try { if (w != 0) { with (element.children(0).children(0).children(0).children(0).style) { display = "" ; width = w ; top = element.offsetTop - y - 1 ; left = element.offsetLeft - x ; } } else { with (element.children(0).children(0).children(0).children(0).style) { width = 0 ; } } } catch(e) { } showMenuShadow(element, x, y) ; visibility = "visible" ; } element.menuState = true ; } function hideMenu() { if (element.subMenuState) { if (currentSubMenu != null) { currentSubMenu.hideMenu() ; currentSubMenu = null ; } if (currentMenuItem != null) { showNormal(currentMenuItem) ; currentMenuItem = null ; } element.subMenuState = false ; } hideMenuShadow() ; element.style.visibility = "hidden" ; element.menuState = false ; } function showSubMenu(el) { currentSubMenu = window.document.getElementById(el.subMenu) ; if (currentSubMenu != null) { with (element) { var x = offsetLeft + offsetWidth - 1 ; var y = offsetTop + el.offsetTop ; } currentSubMenu.showMenu(x, y, 0) ; currentSubMenu.style.zIndex = element.style.zIndex + 5 ; element.subMenuState = true ; } } function setMenuItem(el) { currentMenuItem = el ; } function getMenuItem() { return currentMenuItem ; } function makeBooleanOfAttribute(attName) { a = element.getAttribute(attName) ; if (typeof(a) == "boolean") { return a ; } else if (a == null) { a = false ; } else if (typeof(a) == "string") { a = a.toLowerCase() ; a = (a == "true" || a == "1" || a == "yes") ; } else { a = new Boolean(a) ; } return a ; } </script> </PUBLIC:COMPONENT>