//**************************************************************** // 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 += '' + ' ' + groupName + '' + ''; 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 += ' '; newItem.innerHTML += ' '; newItem.innerHTML += ' 100%'; newItem.style.fontSize = "10"; // newItem.style.cursor = "hand"; newItem.style.backgroundColor = "#cfcfcf"; newItem.style.color = "#003871"; newItem.style.textDecoration = "none"; // newItem.style.marginLeft = "5px"; newItem.style.border = "0 solid"; newItem.style.borderColor = "#cfcfcf"; newItem.style.left = ileft; this.ipos = this.ipos + 80; } //============================================================= // menu$addTransparent //============================================================= function menu$addImage(image,link) { var ileft; var newItem; var temp; var z; ileft = this.ipos + 4; z = this.zbase + 30; this.imageCount = this.imageCount + 1; this.preMenu.innerHTML += ' '; newItem = eval("image" + this.imageCount); newItem.innerHTML += ''; newItem.style.fontSize = "10"; // newItem.style.cursor = "hand"; newItem.style.backgroundColor = "#cfcfcf"; newItem.style.color = "#003871"; newItem.style.textDecoration = "none"; // newItem.style.marginLeft = "5px"; newItem.style.border = "0 solid"; newItem.style.borderColor = "#cfcfcf"; newItem.style.left = ileft; this.ipos = this.ipos + 30; } //============================================================= // menu$addRadio //============================================================= function menu$addRadio(gid,text,command,checked) { var ileft; var newItem; var temp; var z; var c; ileft = this.ipos + 4; z = this.zbase + 30; this.imageCount = this.imageCount + 1; c = ' '; if (checked) c = ' checked '; this.preMenu.innerHTML += ' '; newItem = eval("image" + this.imageCount); newItem.innerHTML += '' + text; this.ipos = this.ipos + 80; } //============================================================= // menu$addItem //============================================================= function menu$addItem(Name,Image,Action) { var src; var addGroup; var newItem; this.itemCount = this.itemCount + 1; src = Image; if ( Image == "undefined") src = ICON_ROOT + "blank16.gif"; addGroup = eval("group" + this.groupCount); addGroup.innerHTML += '' + ' ' + ' ' + Name + '
'; this.activeItem = eval("Item" + this.itemCount); this.activeItem.style.width = 140; } //============================================================= // menu$addSubmenu //============================================================= function menu$addSubmenu() { var src; var addGroup; var newSub; var text; this.pushGroup(); this.subCount = this.subCount + 1; this.groupCount = this.groupCount + (this.subCount * 1000); this.mainMenu.innerHTML += '
clif  
'; this.activeItem = eval("Item" + this.itemCount); this.activeItem.submenu = this.groupCount; } //============================================================= // menu$endSubmenu //============================================================= function menu$endSubmenu() { if (this.ng <= 0) return; this.ng = this.ng - 1; this.groupCount = this.groupStack[this.ng]; } //============================================================= // menu$pushGroup //============================================================= function menu$pushGroup() { if (this.ng <= 0) this.ng = 0; this.ng = this.ng + 1; this.groupStack[this.ng] = this.groupCount; } //============================================================= // menu$addItemRadio //============================================================= function menu$addItemRadio(Name,Image,Action,checked) { var src; var addGroup; var newItem; var image; var c; this.itemCount = this.itemCount + 1; src = Image; if ( Image == "undefined") src = ICON_ROOT + "blank16.gif"; image = 'radio_off.gif'; if (checked) image = 'radio_on.gif'; addGroup = eval("group" + this.groupCount); c = ' '; if (checked) c = ' checked '; addGroup.innerHTML += '' + ' ' + ' ' + Name + '
'; this.activeItem = eval("Item" + this.itemCount); this.activeItem.style.width = 140; } //============================================================= // menu$addItemCheckbox //============================================================= function menu$addItemCheckbox(Name,Image,Action,checked) { var src; var addGroup; var newItem; var image; var c; this.itemCount = this.itemCount + 1; src = Image; if ( Image == "undefined") src = ICON_ROOT + "blank16.gif"; image = 'checkbox_off.gif'; if (checked) image = 'checkbox_on.gif'; addGroup = eval("group" + this.groupCount); c = ' '; if (checked) c = ' checked '; addGroup.innerHTML += '' + ' ' + ' ' + Name + '
'; this.activeItem = eval("Item" + this.itemCount); this.activeItem.style.width = 140; } //============================================================= // menu$addSeperator //============================================================= function menu$addSeperator() { var addGroup; this.itemCount = this.itemCount + 1; addGroup = eval("group" + this.groupCount); addGroup.innerHTML += '
' } //============================================================= // menu$position //============================================================= function menu$position(ileft,itop,iwidth) { this.mainMenu.style.width = iwidth; this.mainMenu.style.top = itop; this.mainMenu.style.left = ileft; this.preMenu.style.top = itop + 1; this.preMenu.style.left = this.mpos + ileft; this.preMenu.style.width = this.ipos + 30; } //============================================================= // menu$hide //============================================================= function menu$hide() { this.mainMenu.style.visibility="hidden"; this.preMenu.style.visibility="hidden"; } //============================================================= // menu$show //============================================================= function menu$show() { this.mainMenu.style.visibility=""; this.preMenu.style.visibility="" }