var MenuWidth = 120; var ItemHeight = 16; var ItemNumber = 0; function CurNav() { if(window.navigator.userAgent.indexOf("MSIE")>=1) return 'IE'; else if(window.navigator.userAgent.indexOf("Firefox")>=1) return 'FF'; else return 'OT'; } function InsertHtm(op,code,isStart) { if(CurNav()=='IE') { op.insertAdjacentHTML(isStart ? "beforeEnd" : "afterEnd",code); } else { var range=op.ownerDocument.createRange(); range.setStartBefore(op); var fragment = range.createContextualFragment(code); if(isStart) op.insertBefore(fragment,op.firstChild); else op.appendChild(fragment); } } ContextMenu.WebFX_PopUp = null; ContextMenu.WbFX_PopUpcss = null; ContextMenu.intializeContextMenu=function() { InsertHtm(document.body,'',true); if(CurNav()=='IE') WebFX_PopUp = document.frames['WebFX_PopUp']; else WebFX_PopUp = document.getElementById('WebFX_PopUp'); WebFX_PopUpcss = document.getElementById('WebFX_PopUp'); WebFX_PopUpcss.onfocus = function(){WebFX_PopUpcss.style.display="inline"}; WebFX_PopUpcss.onblur = function(){WebFX_PopUpcss.style.display="none"}; if(CurNav()=='IE') document.body.attachEvent("onmousedown",function(){WebFX_PopUpcss.style.display="none"}); else document.addEventListener("onblur",function(){WebFX_PopUpcss.style.display="none"},false); if(CurNav()=='IE') document.attachEvent("onblur",function(){WebFX_PopUpcss.style.display="none"}); else document.addEventListener("onblur",function(){WebFX_PopUpcss.style.display="none"},false); } function ContextSeperator(){} function ContextMenu(){} ContextMenu.showPopup=function(x,y) { WebFX_PopUpcss.style.display = "block" } ContextMenu.display=function(evt,popupoptions) { var eobj,x,y; eobj = evt ? evt:(window.event ? window.event : null); if(CurNav()=='IE') { x = eobj.x;y = eobj.y } else { x = eobj.clientX; y = eobj.clientY; } ContextMenu.populatePopup(popupoptions,window) ContextMenu.showPopup(x,y); ContextMenu.fixSize(); ContextMenu.fixPos(x,y); eobj.cancelBubble = true; eobj.returnValue = false; } //TODO ContextMenu.getScrollTop=function() { return document.body.scrollTop; //window.pageXOffset and window.pageYOffset for moz } ContextMenu.getScrollLeft=function() { return document.body.scrollLeft; } ContextMenu.fixPos=function(x,y) { var docheight,docwidth,dh,dw; if(!x) { x=0; y=0; } docheight = document.body.clientHeight; docwidth = document.body.clientWidth; dh = (WebFX_PopUpcss.offsetHeight+y) - docheight; dw = (WebFX_PopUpcss.offsetWidth+x) - docwidth; if(dw>0) { WebFX_PopUpcss.style.left = (x - dw) + ContextMenu.getScrollLeft() + "px"; } else { WebFX_PopUpcss.style.left = x + ContextMenu.getScrollLeft(); } if(dh>0) { WebFX_PopUpcss.style.top = (y - dh) + ContextMenu.getScrollTop() + "px" } else { WebFX_PopUpcss.style.top = y + ContextMenu.getScrollTop(); } } ContextMenu.fixSize=function() { WebFX_PopUpcss.style.height = ItemHeight * ItemNember + "px"; WebFX_PopUpcss.style.width = MenuWidth + "px"; ItemNember = 0; } ContextMenu.populatePopup=function(arr,win) { var alen,i,tmpobj,doc,height,htmstr; alen = arr.length; ItemNember = alen; if(CurNav()=='IE') doc = WebFX_PopUp.document; else doc = WebFX_PopUp.contentWindow.document; doc.body.innerHTML = ''; if (doc.getElementsByTagName("LINK").length == 0) { doc.open(); doc.write(''); doc.close(); } for(i=0;i' tmpobj.innerHTML = htmstr tmpobj.className = "WebFX-ContextMenu-Disabled"; tmpobj.onmouseover = function(){this.className="WebFX-ContextMenu-Disabled-Over"} tmpobj.onmouseout = function(){this.className="WebFX-ContextMenu-Disabled"} } else { tmpobj.innerHTML = arr[i].text; tmpobj.onclick = (function (f) { return function () { win.WebFX_PopUpcss.style.display='none' if (typeof(f)=="function"){ f(); } }; })(arr[i].action); tmpobj.onmouseover = function(){this.className="WebFX-ContextMenu-Over"} tmpobj.onmouseout = function(){this.className="WebFX-ContextMenu-Item"} } doc.body.appendChild(tmpobj); } else { doc.body.appendChild(doc.createElement("DIV")).className = "WebFX-ContextMenu-Separator"; } } doc.body.className = "WebFX-ContextMenu-Body" ; doc.body.onselectstart = function(){return false;} } function ContextItem(str,fnc,disabled) { this.text = str; this.action = fnc; this.disabled = disabled || false; }