var bspCurMenu = null; var bspIgnoreClick = null; var ie5=document.all && document.getElementById; var ns6=document.getElementById&&!document.all; var onKeydownSaved = document.onkeydown; function findPosX(obj) { var curleft = 0; if (obj.offsetParent) { do { curleft += obj.offsetLeft; } while (obj = obj.offsetParent); } return curleft; } function findPosY(obj) { var curtop = 0; if (obj.offsetParent) { do { curtop += obj.offsetTop; } while (obj = obj.offsetParent); } return curtop; } function callUrlWithKey(ev,keycode,url) { if (ev.keyCode == keycode) { window.location=url; } } function bspMenuCountEntries(obj) { var draggedIndex=0; for (var n=0;n 0 ) { arrowIndex--; changed = true; } if (changed == false) return; bspMenuSetCursor(currObj, arrowIndex); } function bspMenuMainAction(menuId,ev,srcObj,altKey) { var posX = findPosX(srcObj); var posY = findPosY(srcObj); var curobj=ie5? ev.srcElement : ev.target; var curMenu = document.getElementById(menuId); var openedWithKey = curMenu.getAttribute("openedWithKey"); if (ev.keyCode == 9) { return; } if (ev.keyCode == 27) { return bspMenuClose(curMenu); } if ((ev.keyCode == 13 && openedWithKey == 0) || (altKey != null && ev.keyCode == altKey)) { curMenu.style.left = posX + srcObj.offsetWidth - 5; curMenu.style.top = posY + srcObj.offsetHeight - 5; curMenu.style.visibility="visible"; curMenu.setAttribute("openedWithKey", 1); bspMenuSetCursor(curMenu, 0); bspIgnoreClick = curobj; bspCurMenu = curMenu; document.onkeydown=stoppScroll; return false; } else if (ev.keyCode == 40 || ev.keyCode == 38 || ev.keyCode == 13) { return bspMenuKeyAction(curMenu,ev,menuId); } if (ev.type=="click") { if (document.body.scrollLeft != null) { posX -= document.body.scrollLeft; posY -= document.body.scrollTop; } else if(window.pageXOffset != null) { posX -= window.pageXOffset; posY -= window.pageYOffset; } if (ev.clientY < posY || (ev.clientY > (posY + srcObj.offsetHeight)) || ev.clientX < posX || (ev.clientX > (posX + srcObj.offsetWidth))) { return; } return bspMenuShow(menuId,ev); } } function stoppScroll (e) { var e = e || window.event; if(window.captureEvents) { var taste = e.which; } else { var taste = e.keyCode; } if(taste==38 || taste==40) { if(e.preventDefault) e.preventDefault(); else e.returnValue=false; } } function bspMenuHighlight(e){ var curobj=ie5? event.srcElement : e.target; if (curobj.className=="bspMenuItem" || ns6&&curobj.parentNode.className=="bspMenuItem"){ if (ns6&&curobj.parentNode.className=="bspMenuItem") curobj=curobj.parentNode; curobj.style.backgroundColor="highlight"; curobj.style.color="white"; } } function bspMenuUnHighlight(e){ var curobj=ie5? event.srcElement : e.target; if (curobj.className=="bspMenuItem" || ns6&&curobj.parentNode.className=="bspMenuItem"){ if (ns6&&curobj.parentNode.className == "bspMenuItem") curobj=curobj.parentNode; curobj.style.backgroundColor=""; curobj.style.color="black"; window.status=''; } } function bspMenuSelect(e,menuID){ var addParam = ''; var curobj=ie5? event.srcElement : e.target; if (menuID != null && menuID != '') { addParam = "&lastControlID=" + menuID; } if (curobj.className=="bspMenuItem" || ns6&&curobj.parentNode.className=="bspMenuItem"){ if (ns6&&curobj.parentNode.className == "bspMenuItem") curobj=curobj.parentNode; if (curobj.getAttribute("url")) { if (curobj.getAttribute("target")) window.open(curobj.getAttribute("url"),curobj.getAttribute("target")); else window.location=curobj.getAttribute("url") + addParam; } else bspMenuHide(e,0); } } function bspMenuHide(e,force){ var curobj=ie5? event.srcElement : e.target; //alert("bspHideMenu("+bspCurMenu+") - Object"+ curobj); if (force || ((bspIgnoreClick != curobj) && (bspCurMenu != null))){ bspCurMenu.style.visibility = "hidden"; bspCurMenu = null; } bspIgnoreClick = null; } function bspMenuShow(menuId,e) { var curobj=ie5? event.srcElement : e.target; var evtype=ie5? event.type : e.type; var offsetY=(evtype=="mouseover")?10:0; var offsetX=(evtype=="mouseover")?10:0; if (bspCurMenu != null) bspCurMenu.style.visibility="hidden"; bspCurMenu = document.getElementById(menuId); var rightedge=ie5? document.body.clientWidth-event.clientX : window.innerWidth-e.clientX; var bottomedge=ie5? document.body.clientHeight-event.clientY : window.innerHeight-e.clientY; if (rightedge