| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Program Files (x86)/Mail Enable/Bin/NETWebMail/Mondo/lang/sys/scripts/ |
Upload File : |
//
// We need to make an array of popupitems
//
var isMenu = false;
var menuSelObj = null;
var overpopupmenu = false;
var menuState=0;
var gPopupMenuActive = true;
var gPopupItemsCount = 0; // this needs to be updated when a menu item is added.
function PopUp_ClearItems(PopupMenuID) {
var oTable = document.getElementById(PopupMenuID);
if (oTable) {
try {
var oTBody = oTable.getElementsByTagName("TBODY")[0];
var oUL = oTBody.getElementsByTagName("UL")[0];
if (oUL) {
clearChildNodes(oUL);
gPopupItemsCount = 0;
}
} catch (ex) { }
}
}
function PopUp_AddItem(PopupMenuID, Index, Command, Text, IconClass)
{
// add the following popup row item
// <div id="MEPUR_0" onclick="ProcessPopUp('Open')" class="rightClickMenu_item"><li class="dropDown_icon_read">Open</li></div>
var oTable = document.getElementById(PopupMenuID);
if (oTable) {
try {
var oTBody = oTable.getElementsByTagName("TBODY")[0];
var oUL = oTBody.getElementsByTagName("UL")[0];
if (oUL) {
var oDiv = document.createElement("DIV");
var oLI = document.createElement("LI");
oDiv.id = "MEPUR_" + Index;
oDiv.className = "rightClickMenu_item";
oLI.className = IconClass;
oLI.appendChild(document.createTextNode(Text));
oDiv.appendChild(oLI);
addEvent(oDiv, 'click', function () { ProcessPopUp(Command); }, true);
oUL.appendChild(oDiv);
gPopupItemsCount += 1;
return 1;
}
} catch (ex) {
console.log('PopUp_AddItem::Exception: ' + ex.message);
}
} else {
console.log('PopUp_AddItem::Item not found');
}
return 0;
}
function PopUp_AddSeparator(PopupMenuID) {
// add the following separator/divider element
// <div class="rightClickMenu_hr"></div>
var oTable = document.getElementById(PopupMenuID);
if (oTable) {
try {
var oTBody = oTable.getElementsByTagName("TBODY")[0];
var oUL = oTBody.getElementsByTagName("UL")[0];
if (oUL) {
var oDiv = document.createElement("DIV");
oDiv.className = "rightClickMenu_hr";
oUL.appendChild(oDiv);
return 1;
}
} catch (ex) { }
}
return 0;
}
function PopUp_MenuSetState(menuMode)
{
// console.log("PopUp_MenuSetState: " + menuMode)
if (menuMode==1)
{
// we are in a state where the menu has been brought up, but no one has accessed
if (menuState==0)
{
menuState=1;
}
}
if (menuMode==2)
{
// we are in a state where the menu has been brought up, but no one has accessed
overpopupmenu=true;
}
return false;
}
function PopUp_MenuOutOfScope(evt, menudivID)
{
//console.log('PopUp_MenuOutOfScope: ' + menudivID);
var lclientX, lclientY;
var menuLeft, menuTop;
var menuHeight, menuWidth;
var ns6 = document.getElementById && !document.all;
// special case of IE9
if (IsIE(gBrowserType) && GetIEVerNum() >= 9)
{
// even though IE9 passes the event object we still need to reference window.event
// in order to get the clientX/clientY values
evt = window.event;
}
var item = document.getElementById(menudivID);
if (ns6) {
// All browsers other than IE
lclientX = evt.clientX;
lclientY = evt.clientY;
menuLeft = item.style.left;
menuTop = item.style.top;
menuWidth = item.clientWidth;
menuHeight = item.clientHeight;
menuLeft = parseInt(menuLeft.replace('px', ''));
menuTop = parseInt(menuTop.replace('px', ''));
}
else {
// IE browser
lclientX = event.clientX;
lclientY = event.clientY;
menuLeft = item.style.pixelLeft;
menuTop = item.style.pixelTop;
menuWidth = item.clientWidth;
menuHeight = item.clientHeight;
}
overpopmenu = false;
if ((lclientX + document.body.scrollLeft) < menuLeft) {
PopUp_HideMenu(menudivID);
}
if ((lclientX + document.body.scrollLeft) > menuLeft + (menuWidth - 1)) {
PopUp_HideMenu(menudivID);
}
if ((lclientY + document.body.scrollTop) < menuTop) {
PopUp_HideMenu(menudivID);
}
if ((lclientY + document.body.scrollTop) > (menuTop + (menuHeight - 1))) {
PopUp_HideMenu(menudivID);
}
return true;
}
function DropDown_ShowMenu(menudivID, sKey) {
var active;
var menuItemNode;
gPopupItemID = sKey;
for (var i = 0; i < 22; i++) {
active = IsPopupMenuCommandActive(sKey, i);
menuItemNode = document.getElementById('MEDD_' + i);
if (menuItemNode) {
menuItemNode.style.display = active ? 'block' : 'none';
}
}
return;
}
function PopUp_ShowMenu(evt, menudivID, oSourceObj, sKey)
{
//
// This function shows the Context Menu popup;
// with only the relevant/applicable actions.
//
evt = evt || window.event;
// special case of IE9
if (IsIE(gBrowserType) && GetIEVerNum() >= 9)
{
// even though IE9 passes the event object we still need to reference window.event
// in order to get the clientX/clientY values
evt = window.event;
}
oTarget = evt.target || evt.srcElement;
if (gPopupMenuActive && IsPopupMenuActive(oTarget))
{
var ns6 = document.getElementById&&!document.all;
gPopupItemID = sKey;
menuState=0;
menuSelObj = oSourceObj;
var omenu = document.getElementById(menudivID);
var left = evt.clientX + document.body.scrollLeft;
var top = evt.clientY + document.body.scrollTop;
if (!omenu) return false;
// N.B. we subtract 10 because of padding
if (ns6)
{
omenu.style.left = left - 10 + "px";
omenu.style.top = top - 10 + "px";
}
else
{
omenu.style.pixelLeft = left - 10;
omenu.style.pixelTop = top - 10;
}
var bAllInactive = true;
var bFolderOptions1stExist = false; // whether 1st batch of popup menu options (Create / Rename folder) exists
var bFolderOptions2ndExist = false; // whether 2nd batch of popup menu options (Delete / Empty folder) exists
var bFolderOptions3rdExist = false; // whether 3rd batch of popup menu options (Share Folder / Empty folder) exists
var bMsgOptions1stExist = false; // whether 1st batch of popup menu options (for message) exists
var bMsgOptions2ndExist = false; // whether 2nd batch of popup menu options (for message) exists
var bMsgOptions3rdExist = false; // whether 3rd batch of popup menu options (for message) exists
var bMsgOptions4thExist = false; // whether 4th batch of popup menu options (for message) exists
// Hide any context menu actions that are NOT applicable to the selected item(s)
for (var i = 0; i < gPopupItemsCount; i++)
{
menuItemNode = document.getElementById('MEPUR_' + i);
if (IsElementAAncestorOfElementB(omenu, menuItemNode))
{
var active = IsPopupMenuCommandActive(sKey, i);
if ( (menudivID == "folderTreeContextMenuDiv") && document.getElementById("MEPUHR_0") )
{
if (active)
{
switch (i)
{
case POPUP_MENU_ID_CREATE_FOLDER:
case POPUP_MENU_ID_RENAME_FOLDER:
bFolderOptions1stExist = true;
break;
case POPUP_MENU_ID_DELETE_FOLDER:
case POPUP_MENU_ID_EMPTY_FOLDER:
bFolderOptions2ndExist = true;
break;
case POPUP_MENU_ID_SHARE_FOLDER:
case POPUP_MENU_ID_UNSHARE_FOLDER:
case POPUP_MENU_ID_SET_PERMISSIONS:
case POPUP_MENU_ID_DISCONNECT:
case POPUP_MENU_ID_PASTE_INTO_FOLDER:
bFolderOptions3rdExist = true;
break;
}
}
}
else if ( (menudivID == "menudiv") && document.getElementById("menudiv_hr0") )
{
// message list popup menu items
if (active)
{
switch (i)
{
case POPUP_MENU_ID_MARK_AS_READ:
case POPUP_MENU_ID_MARK_AS_UNREAD:
bMsgOptions1stExist = true;
break;
case POPUP_MENU_ID_DELETE:
bMsgOptions2ndExist = true;
break;
case POPUP_MENU_ID_ADD_CONTACT:
case POPUP_MENU_ID_WHITELIST:
case POPUP_MENU_ID_VIEW_HEADERS:
bMsgOptions3rdExist = true;
break;
case POPUP_MENU_ID_COPY:
bMsgOptions4thExist = true;
break;
}
}
}
bAllInactive = bAllInactive && !active;
menuItemNode.style.display = active ? 'block' : 'none';
}
}
if ( (menudivID == "folderTreeContextMenuDiv") && document.getElementById("MEPUHR_0") )
{
document.getElementById("MEPUHR_0").style.display = (bFolderOptions1stExist && bFolderOptions2ndExist) ? "" : "none";
document.getElementById("MEPUHR_1").style.display = (bFolderOptions2ndExist && bFolderOptions3rdExist) ? "" : "none";
}
if ( (menudivID == "menudiv") && document.getElementById("menudiv_hr0") )
{
document.getElementById("menudiv_hr0").style.display = (bMsgOptions1stExist && bMsgOptions2ndExist) ? "" : "none";
document.getElementById("menudiv_hr1").style.display = (bMsgOptions2ndExist && bMsgOptions3rdExist) ? "" : "none";
document.getElementById("menudiv_hr2").style.display = ((bMsgOptions2ndExist || bMsgOptions3rdExist) && bMsgOptions4thExist) ? "" : "none";
}
if (!bAllInactive)
{
PopUp_Show(menudivID);
}
PopUp_SetPosition(menudivID,evt);
isMenu = true;
}
return true;
}
function PopUp_Show(menudivID) {
// show the Context Menu
var item = document.getElementById(menudivID);
if (item) {
item.style.display = "";
} else {
console.log('PopUp_Show::Item not found');
}
}
function PopUp_SetPosition(menudivID, evt) {
if (IsIE(gBrowserType) && GetIEVerNum() >= 9) {
// even though IE9 passes the event object we still need to reference window.event
// in order to get the clientX/clientY values
evt = window.event;
} else {
evt = evt || window.event;
}
var omenu = document.getElementById(menudivID);
if (omenu) {
var left = evt.clientX + document.body.scrollLeft;
var top = evt.clientY + document.body.scrollTop;
var ns6 = document.getElementById && !document.all;
// N.B. we subtract 10 because of padding
if (ns6) {
omenu.style.left = left - 10 + "px";
omenu.style.top = top - 10 + "px";
}
else {
omenu.style.pixelLeft = left - 10;
omenu.style.pixelTop = top - 10;
}
// We also need to adjust the position of the menu to
// make sure all of it is visible; especially when
// the mouse cursor is too close to the bottom of the screen.
var menuHeight = omenu.offsetHeight;
var windowHeight = getWindowHeight();
var posY = evt.clientY;
// console.log('ypos:' + posY);
if ((posY + menuHeight) >= windowHeight) {
// Set the vertical position of the Context Menu popup
// to be above the mouse cursor's vertical position.
top = top + 10 - menuHeight;
if (top < 0) top = 0;
if (ns6) {
omenu.style.top = top + "px";
}
else {
omenu.style.pixelTop = top;
}
}
// console.log('toppos2:' + top);
} else {
console.log('PopUp_SetPosition::Item not found');
}
}
function PopUp_HideMenu(menudivID) {
// console.log('PopUp_HideMenu: ' + menudivID);
overpopupmenu = false;
document.getElementById(menudivID).style.display = "none";
return true;
}