/*
Copyright DHTMLX LTD. http://www.dhtmlx.com
You allowed to use this component or parts of it under GPL terms
To use it on other terms or get Professional edition of the component please contact us at sales@dhtmlx.com
*/

 
function dhtmlXContextMenuObject(width,height,gfxPath,httpsdummy){this.menu=new dhtmlXMenuBarObject(document.body,width,height,"",1,gfxPath,httpsdummy);this.menu.setMenuMode("popup");this.menu.hideBar();this.menu.contextMenu=this;this.menu.enableWindowOpenMode(false);this.menu.setOnClickHandler(this._innerOnClick);this.aframes=new Array();this.registerFrame(window);return this};dhtmlXContextMenuObject.prototype.registerFrame=function(awin){this.aframes[this.aframes.length]=awin};dhtmlXContextMenuObject.prototype.setContextMenuHandler=function(func){if (typeof(func)=="function") this.onClickHandler=func;else this.onClickHandler=eval(func)};dhtmlXContextMenuObject.prototype.openAt=function(x,y,id,smartPosition){this.espc=convertStringToBoolean(smartPosition);var f=new Object;f.button=2;f.clientX=x;f.clientY=y;var start=new Object;start.contextMenuId=id;start.contextMenu=this;start.a=this._contextStart;start.a(document.body,f);this.espc=null};dhtmlXContextMenuObject.prototype.disableMenu=function(mode){this._dsbd=convertStringToBoolean(mode)};dhtmlXContextMenuObject.prototype.setOnShowMenuHandler=function(func){if (typeof(func)=="function") this.onShowHandler=func;else this.onShowHandler=eval(func)};dhtmlXContextMenuObject.prototype.setContextMenuPosition=function(left,top){this._msTop=parseInt(top);this._msLeft=parseInt(left)};dhtmlXContextMenuObject.prototype._innerOnClick=function(id){var that=document.body.contextMenu;if (that.contextZone.ownerDocument){if (that.contextZone.ownerDocument.body.onclick)that.contextZone.ownerDocument.body.onclick()}else if (document.body.onclick)document.body.onclick();if (that.onClickHandler)return that.onClickHandler(id,that.zoneId,that.contextZone);return true};dhtmlXContextMenuObject.prototype.setContextZone=function(htmlObject,zoneId){if (typeof(htmlObject)!="object") 
 htmlObject=document.getElementById(htmlObject);if (!htmlObject.contextMenu)htmlObject.contextOnclick=htmlObject.onmouseup;htmlObject.selfobj = this;htmlObject[_isMacOS?"oncontextmenu":"onmouseup"]= function(e){this.selfobj._contextStart(this,e)};htmlObject.contextMenu=this;htmlObject.contextMenuId=zoneId};dhtmlXContextMenuObject.prototype._contextStart=function(obj,e){if ((_isIE)&&(window.event))
 event.srcElement.oncontextmenu = function(){event.cancelBubble=true;return false};if (e && e.preventDefault)e.preventDefault();if(!this.contextMenu)this.contextMenu = this;var win = obj.ownerDocument?obj.ownerDocument.parentWindow:window;if(!win){win = obj.ownerDocument.defaultView};var a=this.contextMenu.menu.topNod;a.style.position="absolute";if (!e){e=win.event};if (document.body.onclick)document.body.onclick();if ((!_isMacOS)&&((!e)||(e.button!=2)))
 {if (obj.contextOnclick)obj.contextOnclick();return true}else {if (this.contextMenu._dsbd)return true;if (this.contextMenu.onShowHandler){var z=this.contextMenu.onShowHandler(obj.contextMenuId);if ((typeof(z)=="boolean")&&(!z)) return};this.contextMenu.menu.showBar()};var winScreenTop = window.screenTop;if ((!winScreenTop)&&(winScreenTop!=0)){winScreenTop = window.screenY+window.outerHeight-window.innerHeight};var winScreenLeft = window.screenLeft;if((!winScreenLeft)&&(winScreenLeft!=0)){winScreenLeft = window.screenX+window.outerWidth-window.innerWidth-4};var dEl0=window.document.documentElement;var dEl1=window.document.body;if(e.screenY-winScreenTop+a.offsetHeight-(dEl0.scrollTop||dEl1.scrollTop)> (dEl0.clientHeight||dEl1.clientHeight)){var verCor = a.offsetHeight
 }else
 var verCor = ((this.contextMenu._msTop*(-1))||0);var corrector = new Array((dEl0.scrollLeft||dEl1.scrollLeft)+(this.contextMenu._msLeft||0),verCor-(dEl0.scrollTop||dEl1.scrollTop));if ((!e.screenY)&&(e.clientX))
 {a.style.top = e.clientY+"px";a.style.left = e.clientX+"px"}else
 {a.style.top = e.screenY-winScreenTop-corrector[1]+"px";a.style.left = e.screenX-winScreenLeft+corrector[0]+"px"};if(!_isIE){a.style.top = e.clientY-corrector[1]+"px";a.style.left = e.clientX+corrector[0]+"px"};this.contextMenu.correctMenuPosition(a);if (a.ieFix){a.ieFix.style.top=a.style.top;a.ieFix.style.left=a.style.left};win.document.body.oncontextmenu=new Function("document.body.oncontextmenu=new Function('if (document.body.onclick)document.body.onclick();return false;');return false;");for (var i=0;i<this.contextMenu.aframes.length;i++){if (this.contextMenu.aframes[i].document)this.contextMenu.aframes[i].document.body.selfobj = this;this.contextMenu.aframes[i].document.body.onclick=function(e){this.selfobj.contextMenu._contextEnd(e)}};document.body.contextMenu=this.contextMenu;this.contextMenu.contextZone=obj;this.contextMenu.zoneId=obj.contextMenuId;return false};dhtmlXContextMenuObject.prototype.correctMenuPosition=function(panel,mode){var xs=document.body.offsetWidth+document.body.scrollLeft;var ys=document.body.offsetHeight-15+document.body.scrollTop;if ((panel.offsetWidth+parseInt(panel.style.left))>xs)
 {var z=parseInt(panel.style.left)-panel.offsetWidth;if ((z<0)||(this.espc))
 z=xs-panel.offsetWidth;if (z<0)z=0;panel.style.left=z+"px";if (panel.ieFix)panel.ieFix.style.left=z+"px"};if ((panel.offsetHeight+parseInt(panel.style.top))>ys)
 {var z=parseInt(panel.style.top) - panel.offsetHeight;if ((z<0)||(this.espc))
 z=ys-panel.offsetHeight;if (z<0)z=0;panel.style.top=z+"px";if (panel.ieFix)panel.ieFix.style.top=z+"px"};if (!mode)this.correctMenuPosition(panel,1)};dhtmlXMenuBarObject.prototype.correctMenuPosition=dhtmlXContextMenuObject.prototype.correctMenuPosition;dhtmlXContextMenuObject.prototype._contextEnd=function(e){var menu=this.menu;menu._closePanel(menu);menu.lastOpenedPanel="";menu.lastSelectedItem=0;menu.hideBar();for (var i=0;i<this.aframes.length;i++)if (this.aframes[i].document){this.aframes[i].document.body.onclick=null;this.aframes[i].document.body.oncontextmenu=null};return false};
/*
Copyright DHTMLX LTD. http://www.dhtmlx.com
You allowed to use this component or parts of it under GPL terms
To use it on other terms or get Professional edition of the component please contact us at sales@dhtmlx.com
*/