📄 menu.js
字号:
/**
* SugarCRM is a customer relationship management program developed by * SugarCRM, Inc. Copyright (C) 2004 - 2007 SugarCRM Inc. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 3 as published by the * Free Software Foundation with the addition of the following permission added * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, see http://www.gnu.org/licenses or write to the Free * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. * * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road, * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU General Public License version 3. * * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by * SugarCRM" logo. If the display of the logo is not reasonably feasible for * technical reasons, the Appropriate Legal Notices must display the words * "Powered by SugarCRM". */
var menuStack = new Array();
var hiddenElmStack = new Array();
var currentMenu = null;
var closeMenusDelay = null;
var openMenusDelay = null;
var delayTime = 75; // ms for menu open delay
function eraseTimeout(tId) {
//if (tId != null)
window.clearTimeout(tId);
return null;
}
function tbButtonMouseOverOrig(id){
closeMenusDelay = eraseTimeout(closeMenusDelay);
var menuName = id.replace(/Handle/i,'Menu');
var menu = getLayer(menuName);
//if (menu) menu.className = 'tbButtonMouseOverUp';
if (currentMenu){
closeAllMenus();
}
popupMenu(id, menu);
}
function tbButtonMouseOver(id,top,left,leftOffset,topOffset){
closeMenusDelay = eraseTimeout(closeMenusDelay);
if (openMenusDelay == null){
openMenusDelay = window.setTimeout("showMenu('"+id+"','"+top+"','"+left+"','"+leftOffset+"','"+topOffset+"')", delayTime);
}
}
function showMenu(id,top,left,leftOffset,topOffset){
openMenusDelay = eraseTimeout(openMenusDelay);
var menuName = id.replace(/Handle/i,'Menu');
var menu = getLayer(menuName);
//if (menu) menu.className = 'tbButtonMouseOverUp';
if (currentMenu){
closeAllMenus();
}
popupMenu(id, menu, top,left,leftOffset,topOffset);
}
function showSubMenu(id){
closeMenusDelay = eraseTimeout(closeMenusDelay);
var menuName = id.replace(/Handle/i,'Menu');
var menu = getLayer(menuName);
// if (currentMenu){
// closeMenus();
// }
// popupMenu(id, menu);
popupSubMenu(id, menu);
}
function popupMenu(handleID, menu, top, left, leftOffset, topOffset){
var bw = checkBrowserWidth();
var menuName = handleID.replace(/Handle/i,'Menu');
var menuWidth = 120;
var imgWidth = document.getElementById(handleID).width;
if (menu){
var menuHandle = getLayer(handleID);
var p=menuHandle;
if (left == "") {
var left = 0;
while(p&&p.tagName.toUpperCase()!='BODY'){
left+=p.offsetLeft;
p=p.offsetParent;
}
left+=parseInt(leftOffset);
}
if (top == "") {
var top = 0;
p=menuHandle;
top+=p.offsetHeight;
while(p&&p.tagName.toUpperCase()!='BODY'){
top+=p.offsetTop;
p=p.offsetParent;
}
if(topOffset != 'undefined'){
top+=parseInt(topOffset);
}
}
if (left+menuWidth>bw) {
left = left-menuWidth+imgWidth;
}
setMenuVisible(menu, left, top, false);
}
}
function popupSubMenu(handleID, menu){
if (menu){
var menuHandle = getLayer(handleID);
var p=menuHandle;
//var top = p.offsetHeight, left = 0;
var top = 0, left = p.offsetWidth;
while(p&&p.tagName.toUpperCase()!='BODY'){
top+=p.offsetTop;
left+=p.offsetLeft;
p=p.offsetParent;
}
if (is.ie && is.mac){
top -= 3;
left -= 10;
}
/*
if (menu.isSubMenu){
try{
if (blnNetscape6){
left+=(getLayer(menu.parentid).offsetWidth - 4);
}else{
left+=(getLayer(menu.parentid).clientWidth - 8);
}
}catch(e){
}
}else{
top += menuItem.offsetHeight;
}
*/
//menu.x = left;
//menu.y = top;
setMenuVisible(menu, left, top, true);
//fixWidth(paneID, menu);
}
}
function closeMenusOrig(){
if (currentMenu){
setMenuVisibility(currentMenu, false);
// currentMenu = null;
}
}
function closeSubMenus(handle){
closeMenusDelay = eraseTimeout(closeMenusDelay);
if (menuStack.length > 0){
for (var i = menuStack.length-1; i >=0; i--){
var menu = menuStack[menuStack.length-1];
if (menu.id == handle.getAttribute('parentid')){
currentMenu = menu;
break;
}else{
closeMenu(menu);
//menuStack.pop();
menuPop();
}
}
}
}
function closeMenu(menu){
setMenuVisibility(menu, false);
}
function closeMenusOrig(){
if (menuStack.length > 0){
for (var i = menuStack.length-1; i >=0; i--){
//var menu = menuStack.pop();
var menu = menuPop();
closeMenu(menu);
}
}
currentMenu = null;
}
function closeMenus(){
if (closeMenusDelay == null){
closeMenusDelay = window.setTimeout("closeAllMenus()", delayTime);
}
}
function closeAllMenus(){
closeMenusDelay = eraseTimeout(closeMenusDelay);
if (menuStack.length > 0){
for (var i = menuStack.length-1; i >=0; i--){
//var menu = menuStack.pop();
var menu = menuPop();
closeMenu(menu);
}
}
currentMenu = null;
}
function setMenuVisible(menu, x, y, isSubMenu){
/*
var id = menu.id;
var left=0;
var top=0;
var menuItem = menu.getMenuItemElm();
if (menuItem && menu){
if (menu.isTopMenu){
menuItem.className = 'tbButtonMouseDown';
}
}
*/
if (menu){
//menu.x = left;
//menu.y = top;
if (isSubMenu){
if (menu.getAttribute('parentid') == currentMenu.getAttribute('parentid')){
//menuStack.pop();
menuPop();
setMenuVisibility(currentMenu, false);
}
}else{
//menuStack.pop();
menuPop();
setMenuVisibility(currentMenu, false);
}
currentMenu = menu;
//menuStack.push(menu);
menuPush(menu);
setMenuVisibility(menu, true, x, y);
}
}
function getLayer(layerid){
/*
if (document.layers && layerid){
if (document.layers[layerid]) return document.layers[layerid];
}
if (document.links && layerid){
if (document.links[layerid]) return document.links[layerid];
}
if (document.all && layerid){
if (document.all(layerid)) return document.all(layerid);
}
*/
return document.getElementById(layerid);
}
function setMenuVisibility(menu, on, x, y){
var parent = menu;
if (menu){
/*
menu.visible = on;
setLayer(menu.id, !menu.visible, menu.x, menu.y);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -