//**************************************************************** // icMenu.js (_ic318.txt) // // Copyright (c) 2006 Clifford L. Collins // All rights are Reserved // // Collins Software // 7710 Janak Drive, Houston Texas // //---------------------------------------------------------------- // No distribution/publication/use of this code is permitted //**************************************************************** var $main; var ICON_ROOT = "images/icons/"; //============================================================= // onSwitchMenu //============================================================= function onSwitchMenu() { var xitem; xitem = event.srcElement; $main.switchMenu(xitem); } //============================================================= // onHighlight //============================================================= function onHighlight() { var xitem; xitem = event.srcElement; $main.highlight(xitem); } //============================================================= // ic$menu //============================================================= function ic$menu() { var text; var obj; var ss; $main = this; ss = document.createStyleSheet() ss.addRule(".menucontainer",'position: absolute; top:; left: 0; width:400; height:24; font-family: Arial; font-size: 10pt; background-color: #cfcfCF; border: "1 solid"; ' + ' border-top-color: #CFCFCF; border-left-color: #CFCFCF; border-right-color: #505050; border-bottom-color: #505050; z-index: 200;'); ss.addRule(".menucontainer2", 'position: absolute; top:1; left: 300; width:200; height:22; font-family: Arial; font-size: 10pt; background-color: #cfcfCF; border:"0 solid"; z-index:330;'); ss.addRule(".menulabel1", 'position: absolute; cursor: hand; padding:1; color:black; text-align: left; background-color: #CFcfcf; z-index: 300'); ss.addRule(".menulabel2", 'position: absolute; cursor: hand; padding:1; color:black; text-align: left; background-color: #CFCFCF; border: "1 solid grove"; border-color:gray; z-index: 320;'); ss.addRule(".menuitem1", 'cursor: hand; padding:1; color:black; text-align: left; background-color: #CFcfcf; z-index: 300'); ss.addRule(".menuitem2", 'cursor: hand; padding:1; color:white; text-align: left; background-color:navy; z-index: 320;'); ss.addRule(".menugroup", 'display: none; padding-top: 0px; padding-bottom: 0px; padding-left: 0px; position: absolute; top: 0; left: 0; width: 140; font-family: Arial; font-size: 10pt; background-color:#cfcfcf; border: "0 solid"; border-top-color: #CFCFCF; border-left-color: #CFCFCF; border-right-color: #505050; border-bottom-color: #505050; z-index: 320;'); this.preMenu = document.createElement('
'); document.body.appendChild(this.preMenu); this.preMenu.style.width = document.body.clientWidth-2; this.preMenu.style.top = 0; this.preMenu.style.left = 600; this.mainMenu = document.createElement(''); document.body.appendChild(this.mainMenu); this.mainMenu.style.width = document.body.clientWidth-2; this.mainMenu.style.top = 0; this.groupCount = 0; this.itemCount = 0; this.subCount = 0; this.imageCount = 0; this.ipos = 0; this.mpos = 5; // main menu position; this.activeMenu = ""; this.activeGroup = ""; this.activeItem = ''; this.activeSubmenu = ''; this.isMenuOpen = false; this.zbase = parseInt(this.mainMenu.currentStyle.zIndex); this.ng = 0; this.groupStack = new Array(); //------- functions ---------- this.addGroup = menu$addGroup; this.addItem = menu$addItem; this.addItemRadio = menu$addItemRadio; this.addItemCheckbox = menu$addItemCheckbox; this.addSubmenu = menu$addSubmenu; this.endSubmenu = menu$endSubmenu; this.addSeperator = menu$addSeperator; this.addTransparent = menu$addTransparent; this.addLevelButtons = menu$addLevelButtons; this.addImage = menu$addImage; this.addRadio = menu$addRadio; //------- internal functions ---------- this.switchMenu = menu$switchMenu; this.highlight = menu$highlight; this.position = menu$position; this.align = menu$align; this.hide = menu$hide; this.show = menu$show; this.pushGroup = menu$pushGroup; } //============================================================= // menu$switchMenu //============================================================= function menu$switchMenu(xitem) { var checked; var action; if(xitem.component == "menuTransparent") return; if(xitem.component == "menuLevelButtons") return; if (xitem.component == "menulabel1") { if ((this.activeMenu != xitem) && (this.activeMenu)) { this.activeGroup = eval("group" + this.activeMenu.groupid); this.activeGroup.style.display ="none"; this.activeMenu.menustatus = "closed"; this.activeMenu.className = "menulabel1"; // this.activeMenu.style.width = this.activeGroup.style.width; } this.activeMenu = xitem; this.activeGroup = eval("group" + xitem.groupid); if (this.activeMenu.menustatus == "closed") { this.activeMenu.menustatus = "open"; this.activeMenu.className = "menulabel2"; // this.activeMenu.style.width = this.activeGroup.style.width; this.activeGroup.style.display = "block"; if(! this.isMenuOpen) { this.isMenuOpen=true; this.mainMenu.setCapture(); } } else { this.isMenuOpen = false; this.mainMenu.releaseCapture(); this.activeMenu.menustatus="closed"; this.activeGroup.style.display="none"; } return; } //--------------- Menu Item ------------ if (xitem.component == "menuitem") { this.mainMenu.releaseCapture(); this.activeMenu.click(); this.activeMenu.className = "menulabel1"; xitm = eval("Item" + this.itemCount); if (xitem.menuaction) eval( xitem.menuaction); return; } if (xitem.component == "menuitemradio") { this.mainMenu.releaseCapture(); this.activeMenu.click(); this.activeMenu.className = "menulabel1"; xitem.className = "menuitem1"; xitm = eval('itemRadio' + xitem.itemid); xitm.checked = true; if (xitem.menuaction) window.eval(xitem.menuaction); return; } if (xitem.component == "menuradio") { this.mainMenu.releaseCapture(); this.activeMenu.click(); this.activeMenu.className = "menulabel1"; xitem.className = "menuitem1"; xitem.checked = true; xitm = eval('Item' + xitem.itemid); if (xitm.menuaction) eval( xitm.menuaction); return; } if (xitem.component == "menuitemcheckbox") { this.mainMenu.releaseCapture(); this.activeMenu.click(); this.activeMenu.className = "menulabel1"; xitem.className = "menuitem1"; return; } if (xitem.component == "menucheckbox") { this.mainMenu.releaseCapture(); this.activeMenu.click(); this.activeMenu.className = "menulabel1"; xitem.checked = !xitem.checked; xitm = eval('Item' + xitem.itemid); xitm.className = "menuitem1"; if (xitm.menuaction) { action = xitm.menuaction.replace("this.checked",xitem.checked); eval( action); } return; } if (! xitem.component) { if (this.isMenuOpen == true){ this.activeMenu.className = "menulabel1"; this.mainMenu.releaseCapture(); this.activeMenu.click(); event.returnValue = false; } } } //============================================================= // menu$highlight //============================================================= function menu$highlight(xitem) { var submenu; try { if(xitem.component == "menuTransparent") return; if(xitem.component == "menuLevelButtons") return; if ((event.clientX > 0) && (event.clientY > 0) && (event.clientX < document.body.offsetWidth) && (event.clientY < document.body.offsetHeight)) { if(xitem.component=="menulabel1") { if(xitem.className=="menulabel1") { xitem.className="menulabel2"; if((this.activeMenu) && (this.activeMenu.menustatus == "open")) { this.switchMenu(xitem); event.returnValue=false; } } else { if (xitem.menustatus=="closed") xitem.className="menulabel1"; } } if((xitem.component == "menuitem") || (xitem.component == "menuitemradio") || (xitem.component == "menuitemcheckbox")) { if(xitem.menustatus != "active") { if (xitem.submenu != '') { submenu = eval("group" + parseInt(xitem.submenu)); submenu.style.top = 20; submenu.style.left = 100; submenu.style.display = ''; } else { xitem.className = "menuitem2"; xitem.menustatus ="active"; } } else { if (xitem.submenu != '') { submenu = eval('group' + xitem.submenu); submenu.style.display = 'none'; } else { xitem.className = "menuitem1"; xitem.menustatus ="passive"; } } } } else { if ((this.activeMenu != "") && (this.activeMenu.menustatus == "open")) { this.switchMenu(xitem); this.activeMenu.className = "menulabel1"; event.returnValue = false; } } } catch (e) { alert('menu$highlight - - ' + e.message) ; } } //============================================================= // menu$addGroup //============================================================= function menu$addGroup(groupName,image) { var newLabel; var addGroup; var size; this.groupCount = this.groupCount + 1; this.mainMenu.innerHTML += '' + ''; newLabel = eval("label" + this.groupCount); addGroup = eval("group" + this.groupCount); this.align(newLabel,addGroup); size = (groupName.length * 10) + 20; this.mpos = this.mpos + size; this.preMenu.style.left = this.mpos + 20; } //============================================================= // align //============================================================= function menu$align(ilabel,igroup) { ilabel.menustatus = "closed"; ilabel.style.top = 0; ilabel.style.left = this.mpos; // igroup.style.top = ilabel.offsetHeight + ilabel.offsetTop + 2; igroup.style.top = 22; // igroup.style.top = ilabel.height + 2; igroup.style.left = ilabel.offsetLeft; igroup.style.display = "none"; } //============================================================= // menu$addLevelButtons //============================================================= function menu$addLevelButtons(frame,action) { var ileft; var newItem; var temp; var nam; var c; var z; var lid; ileft = this.ipos + 4; z = this.zbase + 50; lid = ''; this.preMenu.innerHTML += ''; newItem = eval("levelbuttonSpan"); for (i = 0; i <= frame.world.levels; ++i) { nam = 'view_' + frame.ID + '_frame'; c = ''; if (i == frame.world.homeLevel) { c = ' checked '; lid = i+1; } this.ipos = this.ipos + 24; newItem.innerHTML += ' '; } newItem.innerHTML += '' + lid + ''; this.ipos = this.ipos + 30; } //============================================================= // menu$addTransparent //============================================================= function menu$addTransparent(name) { var ileft,temp,z; var newItem; ileft = this.ipos + 4; z = this.zbase + 50; this.preMenu.innerHTML += ' '; newItem = eval("tran1"); newItem.innerHTML += '