var menuItemName = ''; var nid = -1; var parentNid = -1; var ysnContent = 0; var objectStatus = 0; // Ignore these, they're used internally, use the change... variables (e.g. changeType instead of moveType): var moveNid, moveParentNid, moveType, moveColor, moveBorder, movePadding; var submitCommandsTo = 'PageMenu.aspx'; var frmSubmitTo = document.frmCategories; var changeParentID = -1; // Item / Category that is being moved var changeType = -1; // Values: 1 = Category, 2 = Item var childType = -1; // Ditto var currentRightsChar = ''; var changeWasBullpen = false; // Agenda Creator: Set to true if coming from bullpen, else false. var lastType = -1; // Ditto var lastNid, lastSelf, spawnMode; var homenodes = new Array(); var openToNodes = new Array(); // AJAX var openToNodePointer = -1; // AJAX var openToSwitchType = 0xffff; var whenCounterZero = null; var lastMouseX, lastMouseY; var moduleMode; // Agenda Creator: 2 = Complex, 1 = Only Uploaded File Agendas. // Menu items: var divSubmenus, divSubMenuOwner, mnuAdd, mnuAddChild, mnuAddAbove, mnuAddFirst, mnuAddLast, mnuAddChildAbove, mnuAddChildBelow, mnuAddChildFirst, mnuAddChildLast, mnuViewContentList, mnuEditPublishedContent, mnuProperties, mnuItemProperties, mnuDelete, mnuMove, mnuExitMove, mnuExitMoveMode, mnuInsertAbove, mnuInsertBelow, mnuInsertFirst, mnuInsertLast, mnuInsertChildAbove, mnuInsertChildBelow, mnuInsertChildFirst, mnuInsertChildLast, mnuPageAddress, mnuRejectToggle, mnuSubmitToggle, mnuMoveMenuItem, mnuUnpublishToggle, mnuPublishToggle, mnuAddressHold, mnuCopy, mnuCopyPiece, mnuViewArchived, mnuDivider, mnuDividerII, mnuDividerIII, mnuDividerIIII, mnuDividerV, mnuAddWindow, mnuAddWindowSpawner, mnuAddII, mnuArchivePub, mnuArchiveHid, elemFName, mnuAddBelow, mnuPermissions, mnuCopyName, mnuViewItemSubItems, mnuAddPiece, mnuDeclineToggle, mnuPostponeToggle, mnuApproveToggle, mnuRemoveFromAgenda, mnuViewPiece, mnuPreviewItem, mnuInsertPieceAbove, mnuInsertPieceBelow, mnuInsertPieceFirst, mnuInsertPieceLast, mnuUploadMinutes, mnuAddPieceAbove, mnuAddPieceBelow, mnuAddPieceFirst, mnuAddPieceLast, mnuPublishToggle2, mnuRejectToggle2, mnuViewItem, mnuViewHistory, mnuUnPublish; // Debug variables: var debugPresent = false; var debugOpenArgs = ''; var debugMenuStatus = 'N/A'; var debugMenuPerms = 'N/A'; var debugMenuParentPerms = 'N/A'; var debugMenuType = 'N/A'; var debugCallNum = 0; // From AJAX Changes: var allowPieceChildren = false; var hasMinutes = false; var moduleID = 0; var imagesPath = '/common/images/PageMenu/'; var usageFlag = 1; var extraParam1 = 0; var extraParam2 = 0; // Globalization Languages EN-US, EN-UK, EN-AU: var EXPAND_TEXT_EN = 'Expand Current View'; var COLLAPSE_TEXT_EN = 'Collapse Current View'; function SetPagePermissionsCheck(ch, id, type) { if (ch) { switch (type) { // The break tags after each section are intentionally missing case 'owner': { document.getElementById('ysnPublish_' + id).checked = true; document.getElementById('ysnPublish_' + id).disabled = true; } case 'publish': { document.getElementById('ysnAuthor_' + id).checked = true; document.getElementById('ysnAuthor_' + id).disabled = true; } case 'author': { document.getElementById('ysnView_' + id).checked = true; document.getElementById('ysnView_' + id).disabled = true; } default: break; } } else { switch (type) { case 'owner': { document.getElementById('ysnPublish_' + id).disabled = false; break; } case 'publish': { document.getElementById('ysnAuthor_' + id).disabled = false; break; } case 'author': { document.getElementById('ysnView_' + id).checked = false; break; } default: break; } } } function copyName() { showCopyLinkWindowUsingRelatedLink(menuItemName); } function elemNameByType(elemType) { switch (elemType) { case 1: return 'category'; case 2: return 'item'; case 3: return 'piece'; default: return '???'; } } window.lastICID = -2; window.crapICID = -3; function changeMenuTextHighlight(icID, elemType, isHighlighted) { var txt1 = elemNameByType(elemType) + icID, txt2 = (isHighlighted ? '#6ea8d8' : ''); setTimeout('var elemTmp = document.getElementById("' + txt1 + '"); if (elemTmp) elemTmp.style.backgroundColor = "' + txt2 + '"', 15); } function topMostParent(nodeChild) { var elemFallBack = document.getElementById('div0'); while (nodeChild) { if (nodeChild && nodeChild.className && nodeChild.className == 'topmenu') return nodeChild; nodeChild = nodeChild.parentNode; } return elemFallBack; } function addSubMenusDepartmentList(nid) { if (document.getElementById("menuline" + lastNid)) document.getElementById("menuline" + lastNid).style.backgroundColor = ''; if (document.getElementById("category" + lastNid)) document.getElementById("category" + lastNid).style.backgroundColor = ''; document.getElementById("menuline" + nid).style.backgroundColor = '#6ea8d8'; document.getElementById("category" + nid).style.backgroundColor = '#6ea8d8'; } function addSubMenusGroupAdmin(nid) { if (lastNid > 0) { document.getElementById("menuline" + lastNid).style.backgroundColor = ''; document.getElementById("category" + lastNid).style.backgroundColor = ''; } document.getElementById("menuline" + nid).style.backgroundColor = '#6ea8d8'; document.getElementById("category" + nid).style.backgroundColor = '#6ea8d8'; } // == Displays Category Sub-Menu == // spawnMethod: method used to bring up menu, /w values // 1 = moused over // 2 = right clicked // fname: display name for menu (Home) // x: menu id (category1) // content: is there content (1, 0), pages-specific functionality // status: status // mode: user mode (ad, o, p, a, v) // modeParent: user mode for parent (ad, o, p, a, v) // parent: is this menu item a parent (true, false) // // Security Note (LU - April 30th, 2007): // Parent permissions mean nothing to categories // the security protects the items, not the categories // that's why categories can be added to categories // a user only has view permissions for. There is no // true inheritance and sub-categories are an illusion. // function addSubMenus(spawnMethod, usageFlag, fname, x, content, hasArchived, status, mode, modeParent, parent) { defineMenuVariables(); //var startTimeUnix, endTimeUnix; //startTimeUnix = (new Date()).getTime(); if (spawnMethod != spawnMode) return; if (lastSelf) lastSelf.style.backgroundColor = ''; if (spawnMethod == 1) spawnMode = 1; else if (spawnMethod == 2) spawnMode = 2; else return; if (debugPresent) { debugMenuStatus = status; debugMenuPerms = mode; debugMenuParentPerms = 'N/A'; debugMenuType = 'Category'; } var idText; switch (usageFlag) { case 1: case 2: idText = 'NID'; break; case 3: case 4: idText = 'DID'; break; case 5: case 6: case 11: case 12: case 17: case 19: case 20: idText = 'CID'; break; case 7: case 8: idText = 'ACID'; break; case 15: case 16: idText = 'CCID'; break; default: idText = '#!UNDEF#'; } childType = 1; // Category. objectStatus = status; mnuExitMove.style.display = 'none'; menuItemName = unescape(fname).replace("'", "'"); if (mnuPublishToggle) mnuPublishToggle.innerHTML = 'Publish'; var elemTmp; if (lastNid || lastNid == 0) { if (lastType == 1) elemTmp = document.getElementById((lastNid > -1 && usageFlag < 4 ? 'category' : 'catLine') + lastNid); else elemTmp = document.getElementById('divItem' + lastNid) if (elemTmp) elemTmp.style.backgroundColor = ''; } currentRightsChar = mode; nid = x.substr(3); if (nid > 0) { parentNid = document.getElementById("div" + nid).parentNode.id.substr(3); } else { parentNid = -1; } ysnContent = content; if (!elemFName) elemFName = document.getElementById("fname"); var builtHTML = menuItemName; if (nid > 0) { builtHTML += ' ( ' + idText + ' = ' + nid + ' )'; } builtHTML += ''; } elemFName.innerHTML = builtHTML; node = document.getElementById(x); pnode = node.parentNode; // div var ysnMenuDOMChildren = isMenuDOMChildren(node, ''); var ysnHasSubCats = isMenuDOMChildren(node, '_c'); var ysnHasSubItems = isMenuDOMChildren(node, '_i'); var ysnHasEditPubCon = mnuEditPublishedContent; var elemSubMenus = divSubmenus; var ysnCanHaveChildrenCats = (usageFlag != 5 || usageFlag == 5 && nid == 0); var notHomeNode = !isHomenode(nid); if (usageFlag == 1) document.frmCategories.lngCategoryID.value = node.getAttribute("id").substr(8); elemSubMenus.className = "nodisplay"; elemSubMenus.style.cssText = "width: 100px;" if (mnuViewContentList) mnuViewContentList.style.display = "none"; if (ysnHasEditPubCon) mnuEditPublishedContent.style.display = "none"; hideAllChildren(); if (nid != null) { if (changeParentID < 1) { if (mnuCopyName) mnuCopyName.style.display = "block"; } // Normal Mode switch (mode) { case "ad": case "o": if (usageFlag == 7) { if (changeParentID < 1) { mnuAddFirst.style.display = "inline"; if (ysnHasSubCats) mnuAddLast.style.display = "inline"; mnuAddII.style.display = "inline"; mnuAddWindowSpawner.style.display = "block"; mnuDividerII.style.display = "block"; if (notHomeNode) { mnuAdd.style.display = "block"; mnuAddAbove.style.display = "inline"; mnuAddBelow.style.display = "inline"; mnuMove.style.display = "block"; if (document.getElementById("category" + nid).getAttribute("cn") == 1) mnuDelete.style.display = "block"; mnuProperties.style.display = "block"; if (mnuPermissions) mnuPermissions.style.display = "block"; } } else { // Move Mode var modeNode = document.getElementById("divItem" + moveNid); mnuMove.style.display = "none"; if (changeType == 2) { mnuDivider.style.display = "block"; mnuExitMove.style.display = 'block'; mnuExitMoveMode.style.display = "block"; } else if (changeType == 1) { // Cannot do these to self or make parental circular reference. if (moveNid != nid && noParentCircularRef(node, moveNid)) { if (ysnCanHaveChildrenCats) { if (content) mnuInsertFirst.style.display = "block"; if (firstCategoryChild(node) != null) mnuInsertLast.style.display = "block"; } if (notHomeNode) { mnuInsertAbove.style.display = "block"; mnuInsertBelow.style.display = "block"; } } mnuExitMove.style.display = 'block'; mnuDivider.style.display = "block"; mnuExitMoveMode.style.display = "block"; } else if (changeType == 3) { mnuDivider.style.display = "block"; mnuExitMoveMode.style.display = "block"; } } } else { if (changeParentID < 1) { if (content == 1) { mnuDividerII.style.display = "block"; if (ysnCanHaveChildrenCats) { mnuAddFirst.style.display = "inline"; if (ysnHasSubCats) mnuAddLast.style.display = "inline"; mnuAddII.style.display = "inline"; } if (ysnHasEditPubCon) mnuEditPublishedContent.style.display = "block"; if (notHomeNode) { if (mnuAddChild) { mnuAddChild.style.display = "block"; mnuAddChildFirst.style.display = "inline"; if (ysnHasSubItems) mnuAddChildLast.style.display = "inline"; } var hasLastDivider; if (status > 19 && !ysnMenuDOMChildren && mnuArchivePub) { if (mnuArchivePub) { mnuArchivePub.style.display = "block"; mnuArchiveHid.style.display = "block"; } else mnuDelete.style.display = "block"; hasLastDivider = true; } if (mnuPublishToggle) { if (status == 14) { mnuRejectToggle.style.display = "block"; hasLastDivider = true; } if (status > 19) { mnuUnpublishToggle.style.display = "block"; hasLastDivider = true; } if (status > 9 && status < 20) { mnuPublishToggle.style.display = "block"; hasLastDivider = true; } } if (hasLastDivider) mnuDividerIII.style.display = "block"; } if (nid != 0 && mnuViewContentList) // Staff Directory, Facilities mnuViewContentList.style.display = "block"; if (mnuPageAddress) { mnuDivider.style.display = "block"; mnuPageAddress.style.display = "block"; } if (mnuViewArchived && hasArchived) mnuViewArchived.style.display = "block"; if (usageFlag == 5 || usageFlag == 3 || usageFlag == 17 || usageFlag == 19) { if (mnuPermissions && notHomeNode) mnuPermissions.style.display = "block"; } else { if (mnuPermissions && notHomeNode) mnuPermissions.style.display = "block"; if (status >= 20) { if (mnuUnPublish != null) mnuUnPublish.style.display = 'block'; } } } if (notHomeNode) { mnuAddAbove.style.display = "inline"; mnuAddBelow.style.display = "inline"; mnuAdd.style.display = "block"; mnuProperties.style.display = "block"; if (!ysnMenuDOMChildren && ((status < 40 && usageFlag < 5) || ((usageFlag > 4) && (usageFlag < 11)) || (status < 40 && usageFlag > 10 && usageFlag < 13))) mnuDelete.style.display = "block"; else if (!ysnMenuDOMChildren && (usageFlag == 17 || usageFlag == 19)) mnuDelete.style.display = "block"; mnuMove.style.display = "block"; } if (notHomeNode || ysnCanHaveChildrenCats) mnuAddWindowSpawner.style.display = "block"; } else { // Move Mode var modeNode = document.getElementById("divItem" + moveNid); mnuMove.style.display = "none"; if (changeType == 2) { mnuInsertChildFirst.style.display = "block"; mnuInsertChildLast.style.display = "block"; mnuDivider.style.display = "block"; mnuExitMove.style.display = 'block'; mnuExitMoveMode.style.display = "block"; } else if (changeType == 1) { // Cannot do these to self or make parental circular reference. if (moveNid != nid && noParentCircularRef(node, moveNid)) { if (ysnCanHaveChildrenCats) { if (content) mnuInsertFirst.style.display = "block"; if (firstCategoryChild(node) != null) mnuInsertLast.style.display = "block"; } if (notHomeNode) { mnuInsertAbove.style.display = "block"; mnuInsertBelow.style.display = "block"; } } mnuExitMove.style.display = 'block'; mnuDivider.style.display = "block"; mnuExitMoveMode.style.display = "block"; } else if (changeType == 3) { mnuDivider.style.display = "block"; mnuExitMoveMode.style.display = "block"; } } break; } case "p": if (usageFlag == 7) { if (notHomeNode && (changeParentID < 1)) { if (mnuAddChild) { mnuAddChildFirst.style.display = "inline"; if (firstItemChild(node) != null) mnuAddChildLast.style.display = "inline"; mnuAddChild.style.display = "block"; } mnuDividerII.style.display = "block"; mnuAddWindowSpawner.style.display = "block"; } } else if (changeParentID > 0) { if (changeType == 2) { mnuInsertChildFirst.style.display = "block"; mnuInsertChildLast.style.display = "block"; } } else if (usageFlag == 1 && status > 20) mnuUnPublish.style.display = 'block'; case "a": if (usageFlag == 7) { if (changeParentID < 1 && mnuPageAddress) { mnuDivider.style.display = "block"; mnuPageAddress.style.display = "block"; } break; } else { if (content == 1) { if (ysnCanHaveChildrenCats) { mnuAddFirst.style.display = "inline"; if (ysnHasSubCats) mnuAddLast.style.display = "inline"; mnuAddII.style.display = "inline"; mnuAddWindowSpawner.style.display = "block"; mnuDividerII.style.display = "block"; } if (ysnHasEditPubCon) mnuEditPublishedContent.style.display = "block"; if (notHomeNode) { if (mnuAddChild) { if (usageFlag == 17 || usageFlag == 19) { if (status > 19) { mnuAddChildFirst.style.display = "inline"; if (firstItemChild(node) != null) mnuAddChildLast.style.display = "inline"; mnuAddChild.style.display = "block"; } } else { mnuAddChildFirst.style.display = "inline"; if (firstItemChild(node) != null) mnuAddChildLast.style.display = "inline"; mnuAddChild.style.display = "block"; } } mnuDividerII.style.display = "block"; } if ((usageFlag == 3 || usageFlag == 5 || usageFlag == 11 || usageFlag == 12 || usageFlag == 15 || usageFlag == 17 || usageFlag == 19) && status < 20 && status != 14) { mnuSubmitToggle.style.display = "block"; mnuDividerIII.style.display = "block"; } if (nid != 0 && mnuViewContentList) // Staff Directory, Facilities mnuViewContentList.style.display = "block"; if (mnuViewArchived && hasArchived) mnuViewArchived.style.display = "block"; if (mnuPageAddress) { mnuDivider.style.display = "block"; mnuPageAddress.style.display = "block"; } } if (notHomeNode) { mnuAdd.style.display = "block"; mnuAddAbove.style.display = "inline"; mnuAddBelow.style.display = "inline"; } if (notHomeNode || ysnCanHaveChildrenCats) mnuAddWindowSpawner.style.display = "block"; break; } case "v": if (content == 1) { if (mnuPageAddress) { mnuDivider.style.display = "block"; mnuPageAddress.style.display = "block"; } if (mnuViewArchived && hasArchived) mnuViewArchived.style.display = "block"; } break; } // end of switch() } // end of nid != null check. var subMenuStyles = elemSubMenus.style; if (mnuAdd) pipedChildList(mnuAdd); if (mnuAddII) pipedChildList(mnuAddII); if (mnuAddChild) pipedChildList(mnuAddChild); var dsmOwner = divSubMenuOwner; var dsmStyle = divSubMenuOwner.style; if (spawnMethod == 1) { var elemFirstChild = firstDivChild(node); dsmStyle.marginLeft = '10px'; if (elemFirstChild) node.insertBefore(dsmOwner, elemFirstChild); else node.appendChild(dsmOwner); } else { var rootItem = topMostParent(node); rootItem.insertBefore(dsmOwner, rootItem.firstChild); dsmStyle.position = 'absolute'; dsmStyle.left = (lastMouseX + 2) + 'px'; dsmStyle.top = (lastMouseY + 2) + 'px'; } elemFName.style.textAlignment = 'center'; elemFName.style.display = 'block'; subMenuStyles.position = 'absolute'; subMenuStyles.border = '1px solid black'; subMenuStyles.background = '#eaf0f4'; subMenuStyles.width = '234px'; subMenuStyles.display = (isie6or7 ? 'inline' : 'table'); dsmStyle.display = 'inline'; //endTimeUnix = (new Date()).getTime(); //alert('Operation took ' + (endTimeUnix - startTimeUnix) + ' milliseconds.'); } // == Displays Item Sub-Menu == // spawnMethod: method used to bring up menu, /w values // 1 = moused over // 2 = right clicked // displayName: display name for menu (Home) // menuID: menu id (category1) // status: status // userPermLevel: user mode (ad, o, p, a, v) // extraParam1: used by group admin, used by agenda creator to distiguish between normal agendas and bullpen. -KB // function addItemSubMenus(spawnMethod, usageFlag, displayName, menuID, hasArchived, status, userPermLevel, extraParam1) { defineMenuVariables(); if (lastSelf) lastSelf.style.backgroundColor = ''; if (spawnMethod != spawnMode) return; if (debugPresent) { debugMenuStatus = status; debugMenuPerms = 'N/A'; debugMenuParentPerms = userPermLevel; debugMenuType = 'Item'; } var idText; switch (usageFlag) { case 1: case 2: idText = 'NID'; break; case 3: case 4: idText = 'EID'; break; case 5: case 6: idText = 'RID'; break; case 7: case 8: idText = 'AGID'; break; case 11: idText = 'IID'; break; case 12: idText = 'LID'; break; case 17: case 19: idText = ''; break; case 15: case 16: idText = 'CAID'; break; default: idText = '#!UNDEF#'; } childType = 2; // Item. objectStatus = status; mnuExitMove.style.display = 'none'; menuItemName = unescape(displayName).replace("'", "'"); if (mnuPublishToggle) mnuPublishToggle.innerHTML = (usageFlag == 15 ? 'Process' : 'Publish'); var elemTmp; if (lastNid || lastNid == 0) { if (lastType == 1) { if (lastNid > -1 && usageFlag < 4) elemTmp = document.getElementById('category' + lastNid); else elemTmp = document.getElementById('catLine' + lastNid); } else elemTmp = document.getElementById('divItem' + lastNid); if (elemTmp) elemTmp.style.backgroundColor = ''; } currentRightsChar = userPermLevel; nid = menuID.substr(7); if (nid > 0) parentNid = document.getElementById("divItem" + nid).parentNode.id.substr(3); else parentNid = -1; var builtHTML = menuItemName; if (nid > 0) { builtHTML += ' ( ' + idText + ' = ' + nid + ' )'; } elemFName.innerHTML = builtHTML; node = document.getElementById(menuID); pnode = node.parentNode; // always a div. if (usageFlag == 7) { allowPieceChildren = (node.getAttribute("cnAllowChildren") == "1" && (moduleMode > 1)); hasMinutes = (node.getAttribute("cnHasMinutes") == "1"); } else { allowPieceChildren = false; hasMinutes = false; } var elemSubMenus = divSubmenus; elemSubMenus.className = "nodisplay"; elemSubMenus.style.cssText = "width: 100px;" hideAllChildren(); if (mnuAddChild) { if (changeParentID <= 0 && mnuViewItemSubItems && usageFlag != 7) { mnuViewItemSubItems.style.display = "block"; mnuDividerII.style.display = "block"; } switch (userPermLevel) { case "ad": case "o": if (usageFlag == 7) { if (status >= 10 && status < 20 && (changeParentID < 1) && !extraParam1) mnuPublishToggle.style.display = "block"; if (status > 19 && !hasMinutes && (changeParentID < 1) && !extraParam1) mnuUploadMinutes.style.display = "block"; } case "p": if (usageFlag == 7) { if (changeParentID < 1) { mnuAddWindowSpawner.style.display = "block"; mnuAddChildBelow.style.display = "inline"; mnuAddChild.style.display = "block"; if (extraParam1 < 1) mnuCopy.style.display = "block"; if (status > 9 && status < 20) mnuPreviewItem.style.display = "block"; if (!extraParam1) { mnuAddChildAbove.style.display = "inline"; mnuDividerIII.style.display = "block"; mnuMove.style.display = "block"; //if (status < 20) mnuDelete.style.display = "block"; if (status > 9 && status < 20 && mnuItemProperties) mnuItemProperties.style.display = "block"; } } else { // Move mode. mnuMove.style.display = "none"; if (changeType == 2) { if (nid != moveNid && parentNid == moveParentNid) { // Moving above or below *itself* is pointless (no-op). if (mnuInsertChildAbove) { if (!extraParam1) mnuInsertChildAbove.style.display = 'block'; mnuInsertChildBelow.style.display = 'block'; } } mnuExitMove.style.display = 'block'; } else if (changeType == 3 && allowPieceChildren && (status < 20 || node == getBullpenForCatNode(node.parentNode))) { mnuInsertPieceFirst.style.display = "block"; if (firstPieceChild(node) != null) mnuInsertPieceLast.style.display = "block"; mnuExitMove.style.display = 'block'; } mnuDivider.style.display = "block"; mnuExitMoveMode.style.display = "block"; } } else { if (changeParentID <= 0) { // Normal mode. if (nid != 0) { if (usageFlag == 19) { mnuMove.style.display = "block"; } else { mnuDividerIII.style.display = "block"; mnuAddChildAbove.style.display = "inline"; mnuAddChildBelow.style.display = "inline"; mnuAddChild.style.display = "block"; mnuAddWindowSpawner.style.display = "block"; if (mnuItemProperties && usageFlag != 15) mnuItemProperties.style.display = "block"; if (mnuPreviewItem) mnuPreviewItem.style.display = "block"; if (status > 19) { if (mnuArchivePub) { mnuArchivePub.style.display = "block"; mnuArchiveHid.style.display = "block"; } else if (usageFlag != 17) mnuDelete.style.display = "block"; } if (usageFlag == 17) { if (status == 14) { mnuRejectToggle2.style.display = "block"; mnuPublishToggle2.style.display = "block"; } else if (status != 14) mnuDelete.style.display = "block"; mnuViewItem.style.display = "block"; } else if (usageFlag != 12) { if (status == 14) if (usageFlag == 15 && status == 14) mnuDeclineToggle.style.display = "block"; else mnuRejectToggle.style.display = "block"; if (status >= 20 && usageFlag != 15) mnuUnpublishToggle.style.display = "block"; if (status >= 10 && status < 20 && (usageFlag != 15 || (usageFlag == 15 && status != 13))) mnuPublishToggle.style.display = "block"; } mnuMove.style.display = "block"; if (mnuCopy && (usageFlag != 14)) mnuCopy.style.display = "block"; if (usageFlag == 15 && status != 14 && status < 20) mnuDelete.style.display = "block"; else if (usageFlag != 15 && usageFlag != 17) { if ((status < 40) && ((usageFlag < 5) || (usageFlag > 10))) mnuDelete.style.display = "block"; else if ((status < 40) && (usageFlag > 4) && (usageFlag < 11)) mnuDelete.style.display = "block"; } } if (mnuViewArchived && hasArchived) { mnuDividerII.style.display = "block"; mnuViewArchived.style.display = "block"; } if (mnuPageAddress) { mnuDivider.style.display = "block"; mnuPageAddress.style.display = "block"; } } } else { // Move mode (items do not have children, do not need to check for circ. ref). mnuMove.style.display = "none"; if (changeType == 2) { if (nid != moveNid) { // Moving above or below *itself* is pointless (no-op). //if (usageFlag == 7 && INSERT DOS HERE <- LOL if (mnuInsertChildAbove) { mnuInsertChildAbove.style.display = 'block'; mnuInsertChildBelow.style.display = 'block'; } } mnuExitMove.style.display = 'block'; } mnuDivider.style.display = "block"; mnuExitMoveMode.style.display = "block"; } break; } case "a": if (usageFlag == 7) { if (nid != 0) { if (changeParentID < 1) { if (extraParam1) { mnuDividerII.style.display = "block"; if (moduleMode > 1) { mnuAddPiece.style.display = "block"; mnuAddPieceFirst.style.display = "inline"; if (firstPieceChild(node) != null) mnuAddPieceLast.style.display = "inline"; mnuAddWindowSpawner.style.display = "block"; } } else { if (mnuPageAddress) { mnuDivider.style.display = "block"; mnuPageAddress.style.display = "block"; } } } } break; } else if (usageFlag == 17) { if (nid != 0) { mnuAddChildAbove.style.display = "inline"; mnuAddChildBelow.style.display = "inline"; mnuAddChild.style.display = "block"; mnuViewItem.style.display = "block"; } } else if (usageFlag == 19) { } else { if (nid != 0) { mnuAddChildAbove.style.display = "inline"; mnuAddChildBelow.style.display = "inline"; mnuAddChild.style.display = "block"; var showDivIII = false; if ((status < 20) && (status != 14) && (usageFlag != 12) && (usageFlag != 15 || (usageFlag == 15 && status != 13))) { mnuSubmitToggle.style.display = "block"; showDivIII = true; } if (usageFlag != 15 && status < 20 && mnuItemProperties && usageFlag != 15) { mnuItemProperties.style.display = "block"; showDivIII = true; } if (mnuCopy) { mnuCopy.style.display = "block"; showDivIII = true; } mnuAddWindowSpawner.style.display = "block"; if (showDivIII) mnuDividerIII.style.display = "block"; } if (mnuPageAddress) { mnuDivider.style.display = "block"; mnuPageAddress.style.display = "block"; } if (status < 20 && (usageFlag != 15 || (usageFlag == 15 && status != 14))) { mnuDelete.style.display = "block"; } if (mnuViewArchived && hasArchived) { mnuDividerII.style.display = "block"; mnuViewArchived.style.display = "block"; } break; } case "v": if (mnuPageAddress) { mnuDivider.style.display = "block"; mnuPageAddress.style.display = "block"; } if (mnuViewArchived && hasArchived) mnuViewArchived.style.display = "block"; break; } // end of switch() } // end of mnuAddChild check var subMenuStyles = elemSubMenus.style; if (mnuAdd) pipedChildList(mnuAdd); if (mnuAddII) pipedChildList(mnuAddII); if (mnuAddChild) pipedChildList(mnuAddChild); if (mnuAddPiece) pipedChildList(mnuAddPiece); var dsmOwner = divSubMenuOwner; var dsmStyle = divSubMenuOwner.style; if (spawnMethod == 1) { dsmStyle.marginLeft = '10px'; node.insertBefore(dsmOwner, firstDivChild(node)); } else { var rootItem = topMostParent(node); rootItem.insertBefore(dsmOwner, rootItem.firstChild); dsmStyle.position = 'absolute'; dsmStyle.left = (lastMouseX + 2) + 'px'; dsmStyle.top = (lastMouseY + 2) + 'px'; } elemFName.style.textAlignment = 'center'; elemFName.style.display = 'block'; subMenuStyles.position = 'absolute'; subMenuStyles.border = '1px solid black'; subMenuStyles.background = '#eaf0f4'; subMenuStyles.width = '234px'; subMenuStyles.display = (isie6or7 ? 'inline' : 'table'); dsmStyle.display = 'inline'; } // == Displays Piece Sub-Menu == // For More Information, See Agenda Creator. function addPieceSubMenus(spawnMethod, usageFlag, displayName, menuID, hasArchived, status, userPermLevel, extraParam1) { defineMenuVariables(); if (lastSelf) lastSelf.style.backgroundColor = ''; if (spawnMethod != spawnMode) return; if (debugPresent) { debugMenuStatus = status; debugMenuPerms = 'N/A'; debugMenuParentPerms = userPermLevel; debugMenuType = 'Piece'; } var idText; switch (usageFlag) { case 7: case 8: idText = 'AIID'; break; default: idText = '#!UNDEF#'; } childType = 3; // Piece. objectStatus = status; mnuExitMove.style.display = 'none'; menuItemName = unescape(displayName).replace("'", "'"); if (mnuPublishToggle) mnuPublishToggle.innerHTML = 'Publish'; var elemTmp; if (lastNid || lastNid == 0) { if (lastType == 1) { if (lastNid > -1 && usageFlag < 4) elemTmp = document.getElementById('category' + lastNid); else elemTmp = document.getElementById('catLine' + lastNid); } else elemTmp = document.getElementById('divPiece' + lastNid); if (elemTmp) elemTmp.style.backgroundColor = ''; } currentRightsChar = userPermLevel; nid = menuID.substr(8); var builtHTML = menuItemName; if (nid > 0) { builtHTML += ' ( ' + idText + ' = ' + nid + ' )'; } elemFName.innerHTML = builtHTML; node = document.getElementById(menuID); pnode = node.parentNode; // Always a
. var elemSubMenus = divSubmenus; elemSubMenus.className = "nodisplay"; elemSubMenus.style.cssText = "width: 100px;"; hideAllChildren(); var tmpAgenda = getAgendaForAgendaItem(nid); var bullpenAGID = getBullpenForAgendaItem(nid).id.substr(7); var defaultAGID = getDefaultForAgendaItem(nid).id.substr(7); var agendaStatus = parseInt(tmpAgenda.getAttribute("cnStatus")); var myAGID = tmpAgenda.id.substr(7); var isInsideBullpen = (bullpenAGID == myAGID); var isInsideDefault = (defaultAGID == myAGID); var ysnCanHaveChildrenPieces = !(isInsideBullpen || isInsideDefault); var ownerAgendaPublished = (parseInt(tmpAgenda.getAttribute("cnStatus")) > 19); switch (userPermLevel) { case "ad": case "o": case "p": if (changeParentID < 1) { mnuViewHistory.style.display = "block"; if (isInsideBullpen || isInsideDefault) { if (isInsideBullpen) { if (status == 14) { // agenda item is submitted inside "Default Items". mnuPostponeToggle.style.display = "block"; // status will become 12. mnuDeclineToggle.style.display = "block"; // status will become 13. mnuDividerIIII.style.display = "block"; if (userPermLevel == "ad" || userPermLevel == "o") { if (mnuItemProperties) mnuItemProperties.style.display = "block"; } else mnuViewPiece.style.display = "block"; } else if (status == 15) { // agenda item is waiting for approval inside "Default Items". if (node.getAttribute("cnUser") == document.forms.ContentMenu.lngUserID.value) { // user is next in line to reject/accept the agenda item. if (mnuItemProperties) mnuItemProperties.style.display = "block"; mnuApproveToggle.style.display = "block"; mnuPostponeToggle.style.display = "block"; // status will become 12. mnuDeclineToggle.style.display = "block"; // status will become 13. mnuDividerIIII.style.display = "block"; } else mnuViewPiece.style.display = "block"; } else { // agenda item is draft inside "Default Items". mnuSubmitToggle.style.display = "block"; mnuDividerIIII.style.display = "block"; if (mnuItemProperties) mnuItemProperties.style.display = "block"; mnuViewPiece.style.display = "block"; } } else { if (status == 14) { // agenda item is submitted inside "Submitted Items". mnuPostponeToggle.style.display = "block"; // status will become 12. mnuDeclineToggle.style.display = "block"; // status will become 13. mnuDividerIIII.style.display = "block"; if (userPermLevel == "ad" || userPermLevel == "o") { if (mnuItemProperties) mnuItemProperties.style.display = "block"; } else mnuViewPiece.style.display = "block"; } else if (status == 15) { // agenda item waiting for approval inside "Submitted Items". if (node.getAttribute("cnUser") == document.forms.ContentMenu.lngUserID.value) { // user is next in line to reject/accept the agenda item. if (mnuItemProperties) mnuItemProperties.style.display = "block"; mnuApproveToggle.style.display = "block"; mnuPostponeToggle.style.display = "block"; // status will become 12. mnuDeclineToggle.style.display = "block"; // status will become 13. mnuDividerIIII.style.display = "block"; } else mnuViewPiece.style.display = "block"; } else { // agenda item is draft inside "Submitted Items". mnuSubmitToggle.style.display = "block"; mnuDividerIIII.style.display = "block"; if (mnuItemProperties) mnuItemProperties.style.display = "block"; } mnuCopyPiece.style.display = "block"; } if (moduleMode > 1) { // if agenda module allows agenda items (not in simple agenda mode). mnuAddWindowSpawner.style.display = "block"; mnuAddPiece.style.display = "block"; mnuAddPieceAbove.style.display = "inline"; mnuAddPieceBelow.style.display = "inline"; } if (isInsideBullpen && (moduleMode > 1)) { if (status != 15 && status != 12 && status != 13) { // waiting for approval, declined, and postponed // agenda items inside "Default Items" cannot be moved out of it. mnuMove.style.display = "block"; } mnuCopyPiece.style.display = "block"; } mnuDelete.style.display = "block"; mnuDividerIII.style.display = "block"; } // end if(isInsideBullpen || isInsideDefault) else if (ownerAgendaPublished) { // Inside published agenda. mnuViewPiece.style.display = "block"; if (moduleMode > 1) mnuCopyPiece.style.display = "block"; mnuDividerV.style.display = "block"; } else { // Inside unpublished agenda. if (moduleMode > 1) { mnuMove.style.display = "block"; mnuCopyPiece.style.display = "block"; } if (userPermLevel == "ad" || userPermLevel == "o") { if (mnuItemProperties) mnuItemProperties.style.display = "block"; } else mnuViewPiece.style.display = "block"; mnuDividerIII.style.display = "block"; mnuDividerV.style.display = "block"; mnuRemoveFromAgenda.style.display = "block"; } } else { // Move Mode var modeNode = document.getElementById("divPiece" + moveNid); var moveAGID = getAgendaForAgendaItem(moveNid).id.substr(7); if (moduleMode > 1) mnuMove.style.display = "none"; if (changeType == 3) { // Cannot do these to self or make parental circular reference. Cannot move into a published agenda. if ((agendaStatus < 20 && (moduleMode > 1) && moveNid != nid && noParentCircularRef(node, moveNid)) || (moveAGID == myAGID || (changeWasBullpen && agendaStatus < 20))) { if (ysnCanHaveChildrenPieces) { mnuInsertPieceFirst.style.display = "block"; if (firstPieceChild(node) != null) mnuInsertPieceLast.style.display = "block"; } mnuInsertPieceAbove.style.display = "block"; mnuInsertPieceBelow.style.display = "block"; } mnuExitMove.style.display = 'block'; } mnuDivider.style.display = "block"; mnuExitMoveMode.style.display = "block"; } break; case "a": mnuViewHistory.style.display = "block"; if (isInsideBullpen) { if ((status != 14) && (status != 15)) { mnuSubmitToggle.style.display = "block"; mnuDividerIIII.style.display = "block"; if (mnuItemProperties) mnuItemProperties.style.display = "block"; } else if (status == 15) { if (node.getAttribute("cnUser") == document.forms.ContentMenu.lngUserID.value) { if (mnuItemProperties) mnuItemProperties.style.display = "block"; mnuApproveToggle.style.display = "block"; mnuPostponeToggle.style.display = "block"; // status will become 12. mnuDeclineToggle.style.display = "block"; // status will become 13. mnuDividerIIII.style.display = "block"; } else mnuViewPiece.style.display = "block"; mnuDividerIII.style.display = "block"; } else mnuViewPiece.style.display = "block"; if (moduleMode > 1) { mnuAddWindowSpawner.style.display = "block"; mnuAddPiece.style.display = "block"; mnuAddPieceAbove.style.display = "inline"; mnuAddPieceBelow.style.display = "inline"; } if ((status != 15)) mnuDelete.style.display = "block"; mnuCopyPiece.style.display = "block"; mnuDividerIII.style.display = "block"; } else { if (isInsideDefault && status != 14 && status != 15) { mnuSubmitToggle.style.display = "block"; } else if (isInsideDefault && status == 15) { if (node.getAttribute("cnUser") == document.forms.ContentMenu.lngUserID.value) { if (mnuItemProperties) mnuItemProperties.style.display = "block"; mnuApproveToggle.style.display = "block"; mnuPostponeToggle.style.display = "block"; // status will become 12. mnuDeclineToggle.style.display = "block"; // status will become 13. mnuDividerIIII.style.display = "block"; } else mnuViewPiece.style.display = "block"; } mnuCopyPiece.style.display = "block"; mnuDividerV.style.display = "block"; } break; case "v": mnuViewHistory.style.display = "block"; mnuViewPiece.style.display = "block"; mnuDividerV.style.display = "block"; mnuCopyPiece.style.display = "block"; break; } var subMenuStyles = elemSubMenus.style; if (mnuAddPiece) pipedChildList(mnuAddPiece); var dsmOwner = divSubMenuOwner; var dsmStyle = divSubMenuOwner.style; if (spawnMethod == 1) { dsmStyle.marginLeft = '10px'; node.insertBefore(dsmOwner, firstDivChild(node)); } else { var rootItem = topMostParent(node); rootItem.insertBefore(dsmOwner, rootItem.firstChild); dsmStyle.position = 'absolute'; dsmStyle.left = (lastMouseX + 2) + 'px'; dsmStyle.top = (lastMouseY + 2) + 'px'; } elemFName.style.textAlignment = 'center'; elemFName.style.display = 'block'; subMenuStyles.position = 'absolute'; subMenuStyles.border = '1px solid black'; subMenuStyles.background = '#eaf0f4'; subMenuStyles.width = '234px'; subMenuStyles.display = (isie6or7 ? 'inline' : 'table'); dsmStyle.display = 'inline'; } // Get agenda the agenda item resides within. function getAgendaItemsAgendaItemParentID(theAIID) { var theNode = document.getElementById('divPiece' + theAIID).parentNode; if (theNode.id.substr(0, 8) == 'divPiece') return theNode.id.substr(8); else return ''; } // Get agenda the agenda item resides within. function getAgendaForAgendaItem(theAIID) { var theNode = document.getElementById('divPiece' + theAIID).parentNode; while (theNode != null && theNode.id && theNode.id.substr(0, 7) != 'divItem') theNode = theNode.parentNode; return theNode; } // Get category the agenda item resides within. function getCategoryForAgendaItem(theAIID) { var theNode = document.getElementById('divPiece' + theAIID).parentNode; while (theNode != null && theNode.id && theNode.id.substr(0, 7) != 'divItem') theNode = theNode.parentNode; return theNode.parentNode; } // Get parent category, then get default agenda for it. function getDefaultForAgendaItem(theAIID) { var divCategory = getCategoryForAgendaItem(theAIID); return getDefaultForCatNode(divCategory); } // Get parent category, then get bullpen for it. function getBullpenForAgendaItem(theAIID) { var divCategory = getCategoryForAgendaItem(theAIID); return getBullpenForCatNode(divCategory); } // Get bullpen for a category DOM node. function getBullpenForCatNode(catNode) { var lstChildren = catNode.childNodes; var childNode; for (var cv = 0; cv < lstChildren.length; cv++) { childNode = lstChildren[cv]; if (childNode.id && childNode.id.substr(0, 7) == 'divItem') return childNode; } return null; } // Get default for a category DOM node. function getDefaultForCatNode(catNode) { var lstChildren = catNode.childNodes; var childNode, counter = 0; for (var cv = 0; cv < lstChildren.length; cv++) { childNode = lstChildren[cv]; if (childNode.id && childNode.id.substr(0, 7) == 'divItem') { if (counter < 1)++counter; else return childNode; } } return null; } // n is a node function isHomenode(n) { if (n) { for (var i = 0; i < homenodes.length; i++) if ((n.id && n.id.substr(3) == homenodes[i]) || n == homenodes[i]) return 1; } return 0; } // checks if anode is below bnode // pnode.id.substr(3), changeParentID function isChild(anodeId, bnodeId) { anode = document.getElementById('div' + anodeId); bnode = document.getElementById('div' + bnodeId); if (isHomenode(anode)) return false; while (!isHomenode(anode.parentNode) && anode.parentNode.id != bnode.id) if (isChild(anode.parentNode.id.substr(3), bnodeId)) return true; return (anode.parentNode.id == bnode.id) } function firstDivChild(aNode) { var k = 0, anElemNode var cLen = aNode.childNodes.length; for (; k < cLen; k++) { anElemNode = aNode.childNodes[k]; if (anElemNode.nodeType == 1 && anElemNode.id.substr(0, 3) == 'div') return anElemNode; } return null; } function firstPieceChild(aNode) { var k = 0, anElemNode; var cLen = aNode.childNodes.length; for (var cv = 0; cv < cLen; cv++) { anElemNode = aNode.childNodes[cv]; if (anElemNode.nodeType == 1 && anElemNode.id.substr(0, 8) == 'divPiece') return anElemNode; } return null; } function firstItemChild(aNode) { var k = 0, anElemNode; var cLen = aNode.childNodes.length; for (var cv = 0; cv < cLen; cv++) { anElemNode = aNode.childNodes[cv]; if (anElemNode.nodeType == 1 && anElemNode.id.substr(0, 7) == 'divItem') return anElemNode; } return null; } function firstCategoryChild(aNode) { var k = 0, anElemNode; var cLen = aNode.childNodes.length; for (var cv = 0; cv < cLen; cv++) { anElemNode = aNode.childNodes[cv]; if (anElemNode.nodeType == 1 && anElemNode.id.substr(0, 3) == 'div' && anElemNode.id.charAt(3) != 'I' && anElemNode.id.charAt(3) != 'P') return anElemNode; } return null; } function noParentCircularRef(aNode, matchNid) { var pNode = aNode.parentNode; var matchElemID = 'div' + matchNid; while (pNode != null) { if (pNode.id == matchElemID) return false; pNode = pNode.parentNode; } return true; } function dropSubMenus(eventObj) { defineMenuVariables(); if (lastSelf) lastSelf.style.backgroundColor = ""; //For old page menu if (divSubmenus.parentNode && divSubmenus.parentNode.style.backgroundColor) divSubmenus.parentNode.style.backgroundColor = ""; divSubmenus.className = "nodisplay"; divSubmenus.style.display = 'none'; divSubMenuOwner.style.display = 'none'; } //Show command menu pop-up for adding cats/items/subcats. function addWindow_MouseOver(sender, e) { if (window.event) e = window.event; mnuAddWindow.style.display = 'block'; var diff = getAbsPosition(mnuAddWindowSpawner)[1] - getAbsPosition(mnuAddWindow)[1] mnuAddWindow.style.top = (parseInt(mnuAddWindow.style.top.replace('px', '')) + diff) + 'px'; mnuAddWindowSpawner.style.backgroundColor = '#6ea8d8'; return false; } //Hide command menu pop-up for adding cats/items/subcats. function addWindow_MouseOut(sender, e) { //Get event object and event target (browser-specific) var mouseX, mouseY, isMSIE = window.event && !window.opera; if (isMSIE) { e = window.event; elemTarget = event.srcElement; } else { elemTarget = e.target; } mouseX = e.clientX; mouseY = e.clientY; //Figure boundries for mouse cursor var rect; if (document.body.getBoundingClientRect) { rect = (elemTarget == mnuAddWindowSpawner ? mnuAddWindowSpawner : mnuAddWindow).getBoundingClientRect(); boundLeft = rect.left; boundTop = rect.top; boundRight = rect.right - 2; boundBottom = rect.bottom - 2; } else if (document.getBoxObjectFor) { rect = document.getBoxObjectFor(elemTarget == mnuAddWindowSpawner ? mnuAddWindowSpawner : mnuAddWindow); boundLeft = rect.x; boundTop = rect.y; boundRight = rect.x + rect.width - 2; boundBottom = rect.y + rect.height - 2; } //Debugging code // elemFName.innerHTML = (new Array(boundLeft,boundTop,boundRight,boundBottom)).join(', ') + ' ['+mouseX+', '+mouseY+']' //If mouse left the bounds, destroy the window //(sometimes mouseout gets fired when they are still inside). if (mouseX < boundLeft || mouseY < boundTop || mouseX > boundRight || mouseY > boundBottom) { mnuAddWindow.style.display = 'none'; mnuAddWindowSpawner.style.backgroundColor = ''; } } function eventMouseOver(self) { if (lastSelf) lastSelf.style.backgroundColor = ''; } function eventMouseOut(self, theType, theNid) { lastType = theType; lastNid = theNid; lastSelf = self; if (divSubmenus) if (divSubmenus.style.display == 'none') self.style.backgroundColor = ''; } //Returns array with absolute positions of static object. //[0] = left/x in pixels, [1] = top/y in pixels. function getAbsPosition(elem) { var retVal = new Array(); if (elem == null) { retVal.push(0); retVal.push(0); } else { var retVal2; retVal.push(elem.offsetLeft); retVal.push(elem.offsetTop); if (elem.offsetParent != null) { retVal2 = getAbsPosition(elem.offsetParent); retVal[0] += retVal2[0]; retVal[1] += retVal2[1]; } } return retVal; } //Invoked whenever the context menu event occurs. function eventContextMenu(e) { if (divSubmenus) { var jsCode, elemTarget, elemDiv, rootDiv; var subMenuStyle = divSubmenus.style; if (!document.all && e != null) { elemTarget = e.target; elemDiv = elemTarget.parentNode; rootDiv = topMostParent(elemTarget); var coords = getAbsPosition(rootDiv); lastMouseX = e.pageX - coords[0]; lastMouseY = e.pageY - coords[1]; for (var xx = 1; xx < 3; xx++) { if (elemDiv.tagName != 'DIV' && elemDiv.parentNode) { elemTarget = elemDiv; elemDiv = elemDiv.parentNode; } else break; } if (elemDiv.id && elemDiv.id.substr(0, 3) == 'div') { if (e.preventDefault) e.preventDefault(); // Stop context menu for Konquerer and Safari. if (e.stopPropagation) e.stopPropagation(); // Stop context menu for Firefox. jsCode = elemTarget.getAttribute('onmouseover'); } } else { elemTarget = event.srcElement; elemDiv = elemTarget.parentNode; rootDiv = topMostParent(elemTarget); var coords = getAbsPosition(rootDiv); lastMouseX = e.clientX - coords[0] + document.documentElement.scrollLeft; lastMouseY = e.clientY - coords[1] + document.documentElement.scrollTop; if (elemDiv.tagName != 'DIV' && elemDiv.parentNode) { elemTarget = elemDiv; elemDiv = elemDiv.parentNode; } if (elemDiv.id && elemDiv.id.substr(0, 3) == 'div') { if (elemTarget.getAttribute('onmouseover') != null) { jsCode = elemTarget.getAttribute('onmouseover').toString() + ';'; } } } if (jsCode && elemDiv.id) { jsCode = jsCode.replace(/SubMenus\(1, /g, "SubMenus(2, "); jsCode = jsCode.replace(/this\.style/g, "document.getElementById('" + elemTarget.id + "').style"); var ie8WrapperCompatMode = "function onmouseover()\n{"; // for ie8 running under IE7 document standards. VB if (navigator.appVersion.indexOf("MSIE 7.0") > -1 || navigator.appVersion.indexOf("MSIE 6.0") > -1) { var ieWrapper = "function anonymous()\n{"; // IE 7 (Real) if (jsCode.indexOf(ieWrapper) == 0) jsCode = jsCode.substr(ieWrapper.length); else jsCode = jsCode.substr(ieWrapper.length + 2); // IE 7 Compat mode jsCode = jsCode.substring(0, jsCode.lastIndexOf("}") - 1) + ""; } if (jsCode.indexOf(ie8WrapperCompatMode) == 0) { jsCode = jsCode.substr(ie8WrapperCompatMode.length); jsCode = jsCode.substring(0, jsCode.lastIndexOf("}") - 1) + ""; } eval(jsCode); if (e.preventDefault) { e.preventDefault(); } return false; // Stop context menu for MSIE. } } return true; } // Use right-click mode for admin popup menu. function spawnUseRightClick() { if (spawnMode == 2) return; spawnMode = 2; addEvent(document, 'contextmenu', eventContextMenu, true); } // Use mouse-over mode for admin popup menu. function spawnUseMouseOver() { if (spawnMode == 1) return; spawnMode = 1; removeEvent(document, 'contextmenu', eventContextMenu, true); } // Defines element variables if divSubMenus is undefined. function defineMenuVariables() { if (divSubmenus) return; divSubmenus = document.getElementById("submenus"); divSubMenuOwner = document.getElementById("submenuMain"); mnuAdd = document.getElementById("add"); mnuAddII = document.getElementById("addII"); mnuAddChild = document.getElementById("addChild"); mnuAddAbove = document.getElementById("addAbove"); mnuAddBelow = document.getElementById("addBelow"); mnuAddFirst = document.getElementById("addFirst"); mnuAddLast = document.getElementById("addLast"); mnuAddChildAbove = document.getElementById("addChildAbove"); mnuAddChildBelow = document.getElementById("addChildBelow"); mnuAddChildFirst = document.getElementById("addChildFirst"); mnuAddChildLast = document.getElementById("addChildLast"); mnuAddPieceAbove = document.getElementById("addPieceAbove"); mnuAddPieceBelow = document.getElementById("addPieceBelow"); mnuAddPieceFirst = document.getElementById("addPieceFirst"); mnuAddPieceLast = document.getElementById("addPieceLast"); mnuArchivePub = document.getElementById("archivePub"); mnuArchiveHid = document.getElementById("archiveHid"); mnuViewItemSubItems = document.getElementById("viewItemSubItems"); mnuViewHistory = document.getElementById("viewHistory"); mnuViewContentList = document.getElementById("viewContentList"); mnuEditPublishedContent = document.getElementById("editPublishedContent"); mnuProperties = document.getElementById("properties"); mnuItemProperties = document.getElementById("itemproperties"); mnuUploadMinutes = document.getElementById("uploadMinutes"); mnuViewPiece = document.getElementById("viewPiece"); mnuPreviewItem = document.getElementById("previewItem"); mnuRemoveFromAgenda = document.getElementById("removeFromAgenda"); mnuDelete = document.getElementById("delete"); mnuMove = document.getElementById("move"); mnuExitMove = document.getElementById("exitMove"); mnuExitMoveMode = document.getElementById("exitMoveMode"); mnuInsertAbove = document.getElementById("insertAbove"); mnuInsertBelow = document.getElementById("insertBelow"); mnuInsertFirst = document.getElementById("insertFirst"); mnuInsertLast = document.getElementById("insertLast"); mnuInsertChildAbove = document.getElementById("insertChildAbove"); mnuInsertChildBelow = document.getElementById("insertChildBelow"); mnuInsertChildFirst = document.getElementById("insertChildFirst"); mnuInsertChildLast = document.getElementById("insertChildLast"); mnuInsertPieceAbove = document.getElementById("insertPieceAbove"); mnuInsertPieceBelow = document.getElementById("insertPieceBelow"); mnuInsertPieceFirst = document.getElementById("insertPieceFirst"); mnuInsertPieceLast = document.getElementById("insertPieceLast"); mnuDivider = document.getElementById("divider"); mnuDividerII = document.getElementById("dividerII"); mnuDividerIII = document.getElementById("dividerIII"); mnuDividerIIII = document.getElementById("dividerIIII"); // dividerIV mnuDividerV = document.getElementById("dividerV"); mnuPageAddress = document.getElementById("pageAddress"); mnuRejectToggle = document.getElementById("rejectToggle"); mnuSubmitToggle = document.getElementById("submitToggle"); mnuUnpublishToggle = document.getElementById("unpublishToggle"); mnuPublishToggle = document.getElementById("publishToggle"); mnuDeclineToggle = document.getElementById('declineToggle'); mnuPostponeToggle = document.getElementById('postponeToggle'); mnuApproveToggle = document.getElementById('approveToggle'); mnuAddressHold = document.getElementById("addressHold"); mnuCopy = document.getElementById("copyChild"); mnuCopyPiece = document.getElementById("copyPiece"); mnuViewArchived = document.getElementById("viewArchived"); mnuMoveMenuItem = document.getElementById("moveMenuItem"); mnuAddWindow = document.getElementById('addWindow'); mnuAddWindowSpawner = document.getElementById('addShow'); mnuPermissions = document.getElementById('editPermissions'); mnuCopyName = document.getElementById('copyName'); mnuAddPiece = document.getElementById('addPiece'); elemFName = document.getElementById("fname"); mnuPublishToggle2 = document.getElementById("publishToggle2"); mnuRejectToggle2 = document.getElementById("rejectToggle2"); mnuViewItem = document.getElementById("viewItem"); mnuUnPublish = document.getElementById("unPublish"); } //Adds pipe delimiter to addition links (for add: above | below | ... etc). function pipedChildList(elemParent) { var anchorList = new Array(); var elem, elemDelim, cv, listLen; //Remove existing delimiters listLen = elemParent.childNodes.length; for (cv = 0; cv < listLen; cv++) { elem = elemParent.childNodes[cv]; if (elem.nodeType == 1) { if (elem.nodeName == "SPAN") { elemParent.removeChild(elem); listLen = elemParent.childNodes.length; --cv; } } } anchorList = elemParent.getElementsByTagName("a"); listLen = anchorList.length; //Calc total displayed. var totalDisplayed = 0, totalSoFar = 0; for (cv = 0; cv < listLen; cv++) if (anchorList[cv].style.display != 'none')++totalDisplayed; //Insert delimiters. for (cv = 0; cv < listLen; cv++) { if (anchorList[cv].style.display != 'none' && totalSoFar < totalDisplayed) { if (totalSoFar + 1 < totalDisplayed) { elemDelim = document.createElement("span"); elemDelim.innerHTML = " | "; elemParent.insertBefore(elemDelim, anchorList[cv].nextSibling); } ++totalSoFar; } } } function hideAllChildren() { if (mnuAddChild) { mnuAddChild.style.display = "none"; mnuAddChildAbove.style.display = "none"; mnuAddChildBelow.style.display = "none"; mnuAddChildFirst.style.display = "none"; mnuAddChildLast.style.display = "none"; if (mnuInsertChildAbove) { mnuInsertChildAbove.style.display = "none"; mnuInsertChildBelow.style.display = "none"; mnuInsertChildFirst.style.display = "none"; mnuInsertChildLast.style.display = "none"; } } if (mnuInsertPieceAbove) { mnuInsertPieceAbove.style.display = "none"; mnuInsertPieceBelow.style.display = "none"; mnuInsertPieceFirst.style.display = "none"; mnuInsertPieceLast.style.display = "none"; mnuAddPieceAbove.style.display = "none"; mnuAddPieceBelow.style.display = "none"; mnuAddPieceFirst.style.display = "none"; mnuAddPieceLast.style.display = "none"; } if (mnuAddII) mnuAddII.style.display = "none"; if (mnuAddWindowSpawner) mnuAddWindowSpawner.style.display = "none"; mnuAdd.style.display = "none"; mnuInsertAbove.style.display = "none"; mnuInsertBelow.style.display = "none"; mnuInsertFirst.style.display = "none"; mnuInsertLast.style.display = "none"; mnuAddAbove.style.display = "none"; mnuAddBelow.style.display = "none"; mnuAddFirst.style.display = "none"; mnuAddLast.style.display = "none"; mnuProperties.style.display = "none"; if (mnuItemProperties) mnuItemProperties.style.display = "none"; if (mnuUploadMinutes) mnuUploadMinutes.style.display = "none"; mnuDelete.style.display = "none"; mnuMove.style.display = "none"; mnuExitMove.style.display = "none"; mnuExitMoveMode.style.display = "none"; mnuDivider.style.display = "none"; mnuDividerII.style.display = "none"; mnuDividerIII.style.display = "none"; if (mnuPreviewItem) mnuPreviewItem.style.display = "none"; if (mnuDividerIIII) mnuDividerIIII.style.display = "none"; if (mnuDividerV) mnuDividerV.style.display = "none"; if (mnuPageAddress) mnuPageAddress.style.display = "none"; if (mnuAddWindow) mnuAddWindow.style.display = "none"; if (mnuArchivePub) { mnuArchivePub.style.display = "none"; mnuArchiveHid.style.display = "none"; } if (mnuViewHistory) mnuViewHistory.style.display = "none"; if (mnuViewItemSubItems) mnuViewItemSubItems.style.display = "none"; if (mnuCopyName) mnuCopyName.style.display = "none"; if (mnuCopyPiece) mnuCopyPiece.style.display = "none"; if (mnuPermissions) mnuPermissions.style.display = "none"; if (mnuUnPublish) mnuUnPublish.style.display = "none"; if (mnuCopy) mnuCopy.style.display = "none"; if (mnuViewArchived) mnuViewArchived.style.display = "none"; if (mnuViewContentList) mnuViewContentList.style.display = "none"; if (mnuEditPublishedContent) mnuEditPublishedContent.style.display = "none"; if (mnuRejectToggle) { mnuRejectToggle.style.display = 'none'; mnuSubmitToggle.style.display = 'none'; mnuUnpublishToggle.style.display = 'none'; mnuPublishToggle.style.display = 'none'; } if (mnuDeclineToggle) mnuDeclineToggle.style.display = "none"; if (mnuRemoveFromAgenda) { mnuApproveToggle.style.display = "none"; mnuPostponeToggle.style.display = "none"; mnuViewPiece.style.display = "none"; mnuRemoveFromAgenda.style.display = "none"; } if (mnuAddPiece) mnuAddPiece.style.display = "none"; if (mnuPublishToggle2) mnuPublishToggle2.style.display = "none"; if (mnuRejectToggle2) mnuRejectToggle2.style.display = "none"; if (mnuViewItem) mnuViewItem.style.display = "none"; } /** BEGIN AJAX STUFF **/ // modes: 1 - open homenodes // 2 - open an array of openToNodes // 3 - open a specific node // text: Value returned from AJAX call. // level: Same level nid variable is on. // function elemIDPrefixByType(elemType) { switch (elemType) { case 1: return 'div'; case 2: return 'divItem'; case 3: return 'divPiece'; default: return '???'; } } function elemTypeByName(elemToGetTypeOf) { switch (elemToGetTypeOf.nodeName) { case 'div': return 1; case 'divItem': return 2; case 'divPiece': return 3 default: return 0; } } function openTo(nidToOpen, level, mode, elemType, hasItems, isPersonal, text) { if (text) processResponse(nidToOpen, elemType, hasItems, isPersonal, text); if (mode == 1 || openToNodes.length == 0) { for (var i = 0; i < homenodes.length; i++) toggleNode(homenodes[i], level, 1, elemType, hasItems, isPersonal, null); } else if (mode == 2) { openToNodePointer++; if (openToNodePointer < openToNodes.length) { toggleNode(openToNodes[openToNodePointer], level, 5, (openToNodePointer < openToSwitchType ? 1 : 2), hasItems, isPersonal, null); } } else if (mode == 3 || mode == 7) { if (nidToOpen == 0) openTo(0, 2, 1, 1, hasItems, isPersonal, null); // Home is correctly being identified else { node = document.getElementById(elemIDPrefixByType(elemType) + nidToOpen); if (node) toggleNode(nidToOpen, level, 1, elemTypeByName(node), hasItems, isPersonal, null); else node = document.getElementById(nidToOpen); if (node) { try { while (node.id != 0) { if (node.id && node.tagName == "DIV") toggleNode(node.id, level, 1, elemTypeByName(node), hasItems, isPersonal, null); node = node.parentNode; } } catch (e) { } } } } } // New function for new page menu // nid: the nid to be opened // mode: 1 - opening for a page load // 2 - open/close in general // 3 - open all // 4 - close all // 5 - open an array of openToNodes // 6 - open all for group admin putting permission on all pages // 7 - special open for items/pieces // function toggleNode(nidToggled, level, mode, elemType, hasItems, isPersonal, text) { if (debugPresent) { debugOpenArgs = '{ ' + new Array(nidToggled, level, mode, elemType, hasItems, isPersonal, (text == null ? 'null' : '<text>')).join(', ') + ' }'; ++debugCallNum; } if (mode != 1 && mode != 5 && mode != 7 && window.targetedCat) { window.targetedCat = null; window.targetedItem = null; window.targetedPiece = null; } var node, a, catElem; if (text) processResponse(nidToggled, elemType, hasItems, isPersonal, text); if (mode == 3 || mode == 6 || mode == 7) callback_function = "toggleNode(" + nidToggled + ", " + level + ", " + mode + ", " + elemType + ", " + hasItems + ", " + isPersonal; else if (mode == 5) callback_function = "openTo(" + nidToggled + ", " + (level + 1) + ", 2, " + elemType + ", " + hasItems + ", " + isPersonal; else callback_function = "processResponse(" + nidToggled + ", " + elemType + ", " + hasItems + ", " + isPersonal; node = document.getElementById(elemIDPrefixByType(elemType) + nidToggled); if (node) { if (document.getElementById('category' + node.id.substr(3))) { if (!(document.getElementById('category' + node.id.substr(3)).getAttribute('cnLoaded') > 0) && mode != 4 && $('.searchAlert').length == 0) { var loaderName = moduleID == 4 ? '/Common/Admin/CityDirectory/AJAX-Loader' : '/AJAX-NMenuLoader'; var url = loaderName + ".ashx?nodeParent=" + nidToggled + "&level=" + level + "&moduleID=" + moduleID + "&imagesPath=" + imagesPath + "&usageFlag=" + usageFlag + "&extraParam1=" + extraParam1 + "&extraParam2=" + extraParam2 + "&nodeName=" + node.nodeName + "&hasItems=" + hasItems + "&isPersonal=" + isPersonal; ++ajax_call_counter; makeHttpRequest(url, callback_function, false); } else if (mode == 5) openTo(0, level + 1, 2, elemType, hasItems, isPersonal, null); } if (ajax_call_counter == 0) { var btnExpand = document.getElementById("btnMenuExpandAll"); if (btnExpand) btnExpand.disabled = document.getElementById("btnMenuCollapseAll").disabled = false; if (mode == 6) setPagesAll(); } var cNodeLen = node.childNodes.length; var tmpTypeCode, tmpTypePre, tmpID, isMatchingID = 0; for (a = 0; a < node.childNodes.length; a++) { elem = node.childNodes.item(a); if (elem.id) { tmpID = -1; if (elem.id.substr(0, 8) == 'divPiece') { tmpTypeCode = 3; tmpTypePre = 'piece'; tmpID = elem.id.substr(8); isMatchingID = (window.targetedPiece == tmpID); } else if (elem.id.substr(0, 7) == 'divItem') { tmpTypeCode = 2; tmpTypePre = 'item'; tmpID = elem.id.substr(7); isMatchingID = (window.targetedItem == tmpID); } else if (elem.id.substr(0, 3) == 'div') { tmpTypeCode = 1; tmpTypePre = 'category'; tmpID = elem.id.substr(3); isMatchingID = (window.targetedCat == tmpID); } if (tmpID > -1) { elem.style.display = (((elem.style.display == 'none' && mode != 4) || mode == 3 || mode == 1 || (mode > 4 && mode < 7) || mode == 7) ? 'block' : 'none'); catElem = (tmpTypeCode == 1 ? document.getElementById(tmpTypePre + tmpID) : null); if (mode == 7) { if (isMatchingID) toggleNode(tmpID, (level + 1), 7, tmpTypeCode, hasItems, isPersonal, null); } else if (isMatchingID) toggleNode(tmpID, (level + 1), 7, tmpTypeCode, hasItems, isPersonal, null); else if (((mode == 3 || mode == 6 || mode == 7) && (catElem && catElem.getAttribute('cn') > 0)) || ((mode == 4 && elem.childNodes.length > 0) || ((mode == 3 || mode == 6) && (tmpTypeCode > 1)))) toggleNode(tmpID, (level + 1), mode, tmpTypeCode, hasItems, isPersonal, null); } } } } } function processResponse(nidToUse, elemType, hasItems, isPersonal, text) { try { if (divSubMenus) dropSubMenus(null); } catch (e) { divSubMenus = null; } var divMenuChild, tagLabel; var txtDivPref = elemIDPrefixByType(elemType); var txtCatPref = elemNameByType(elemType); if (ajax_call_counter == 0 && whenCounterZero != null) { whenCounterZero(); whenCounterZero = null; } divMenuChild = document.getElementById(txtDivPref + nidToUse); tagLabel = document.getElementById(txtCatPref + nidToUse); if (!(tagLabel.getAttribute('cnLoaded') > 0)) { var divText = (divMenuChild.innerHTML) + text; divMenuChild.innerHTML = divText; if (divSubmenus) divSubmenus = null; // This *MUST* be done. tagLabel = document.getElementById(txtCatPref + nidToUse); tagLabel.setAttribute('cnLoaded', '1'); } } function expandAll(expandFlag, hasItems, isPersonal) { /* -- Race Condition Notice -- * It is possible for the first call to return and set the * counter back to 0 before the second call is made. If this * happens, the button(s) will be enabled before it/they should * be and other unknown side effects may be encountered. A two * counter approach will not fix this problem. */ whenCounterZero = function () { var tgbtn = document.getElementById("btnMenuToggleAll"); var exbtn = document.getElementById("btnMenuExpandAll"); var cobtn = document.getElementById("btnMenuCollapseAll"); if (cobtn) cobtn.disabled = false; if (exbtn) exbtn.disabled = true; if (tgbtn) { tgbtn.value = COLLAPSE_TEXT_EN; tgbtn.className = 'btn_collapse'; tgbtn.disabled = false; } } var tgbtn = document.getElementById("btnMenuToggleAll"); var exbtn = document.getElementById("btnMenuExpandAll"); var cobtn = document.getElementById("btnMenuCollapseAll"); var txtJSDelayed = 'if (ajax_call_counter > 0) {'; if (tgbtn) txtJSDelayed += 'document.getElementById("btnMenuToggleAll").disabled = true; '; if (exbtn) txtJSDelayed += 'document.getElementById("btnMenuExpandAll").disabled = true; '; if (cobtn) txtJSDelayed += 'document.getElementById("btnMenuCollapseAll").disabled = true; '; setTimeout(txtJSDelayed + '}', 15); if (expandFlag == 1) { frmSubmitTo.action = submitCommandsTo; frmSubmitTo.CPAction.value = "expandAll"; frmSubmitTo.submit(); } else if (expandFlag == 3) { var frmCDD = document.frmCityDepartmentDetail; if (frmCDD) { frmCDD.lngCityDepartmentID.value = ""; frmCDD.strPage.value = "expandAll"; frmCDD.submit(); } } else { for (var i = 0; i < homenodes.length; i++) toggleNode(homenodes[i], 2, (expandFlag == 2 ? 6 : 3), 1, hasItems, isPersonal, null); } if (ajax_call_counter == 0 && whenCounterZero != null) { whenCounterZero(); whenCounterZero = null; } } function createFriendlyName(nidToUse) { return createFriendlyNameEx(nidToUse, 'div'); } function createFriendlyNameEx(nidToUse, type) { var divItem, spanItem, bCrumb = '', innerMarkup, ysnFirst = true; divItem = document.getElementById(type + nidToUse) while (divItem != null && divItem.tagName == 'DIV') { spanItem = divItem.firstChild; while (spanItem != null) { if (spanItem.nodeType == 1) { switch (spanItem.tagName) { case 'A': if (spanItem.innerHTML.toUpperCase().substr(0, 4) == ' -1) innerMarkup = innerMarkup.substr(0, junkPos - 1); if (ysnFirst) { ysnFirst = false; bCrumb = innerMarkup; } else bCrumb = innerMarkup + ':' + bCrumb; } } spanItem = spanItem.nextSibling; } if (divItem.className == 'topmenu') break; divItem = divItem.parentNode; } return (bCrumb == '' ? '(None Selected)' : bCrumb); } function collapseAll(hasItems, isPersonal) { var cobtn = document.getElementById("btnMenuCollapseAll"); var tgbtn = document.getElementById("btnMenuToggleAll"); if (cobtn) setTimeout('document.getElementById("btnMenuCollapseAll").disabled = true', 15); var i = 0, hNode; while (i < homenodes.length) { hNode = document.getElementById('div' + homenodes[i++]); if (hNode) hNode = hNode.firstChild; while (hNode) { if (hNode.id) toggleNode(hNode.id.substr(3), 3, 4, 1, hasItems, isPersonal, null); hNode = hNode.nextSibling; } } if (tgbtn) { tgbtn.value = EXPAND_TEXT_EN; tgbtn.className = 'btn_expand'; } } // anode: a node that will be checked to see if any children exist // function isMenuDOMChildren(anode, suffix) { // check if there are children // if there are children and the menu is open then insert the submenu at the top of the menu // otherwise insert the menu at the parent's level return (document.getElementById('category' + anode.id.substr(3)).getAttribute('cn' + suffix) > 0); } function disableTogglers() { var btn = document.getElementById("btnMenuExpandAll"); var btn2 = document.getElementById("btnMenuCollapseAll"); var btn3 = document.getElementById("btnMenuToggleAll"); if (btn) btn.disabled = true; if (btn2) btn2.disabled = true; if (btn3) btn3.disabled = true; } function addSubMenusRelate(nid, fname) { var menuItemName = unescape(fname).replace("'", "'"); if (lastNid > 0) { document.getElementById('submenu' + lastNID).style.display = 'none'; document.getElementById('category' + lastNID).style.backgroundColor = ''; } lastNID = nid; document.getElementById('fname' + nid).innerHTML = menuItemName + (nid > 0 ? '