//============================================================================ // CONSTANT DECLARATIONS //============================================================================ BUILD_ID = "1080318388797"; TYPE_MENUITEM = "menuitem"; TYPE_MENULAUNCHER = "menulauncher"; TYPE_MENU = "menu"; EVENT_OVER = "mouseOver"; EVENT_OUT = "mouseOut"; OVER_CLASS = "menuov"; OVER_ATTACHMENT = "overatt"; NORM_ATTACHMENT = "normat"; MENUITEM_HEIGHT = 15; TYPE_RIGHTALIGN = 1; TYPE_BOTTOMALIGN = 2; WIDTH_MULTIPLIER = 7; ANCHOR_TYPE_BOTTOM = 1; ANCHOR_TYPE_RIGHT = 2; /** Indicates weather the current browser is MSIE or not */ var isIE = false; var ident = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) Gecko/20031007 Firebird/0.7"; activeComponent = null; lastActiveComponent = null; rootmenu = null; //============================================================================ // UTILITY FUNCTIONS //Author: Shawn Constance //Date : 2003-06-10 //============================================================================ idindex = 0; function genId() { var id = "comp"+idindex; idindex += 1; return id; } function isMenu(comp) { return comp && comp.typeid == TYPE_MENU; } function getElement(model) { return document.getElementById(model.id); } function intFromPx(px) { var spx = String(px); var index = spx.indexOf("px"); var num = Number(spx.substring(0, index)); return num; } // =========================================================================== // launchMenu() Netscape/Mozilla Implementation // =========================================================================== function launchMenu(E) { var menu; var clientx; var clienty; menu = E.currentTarget; clientx = E.clientX; clienty = E.clientY; mousecomp = menu.model.parent; popMenus(menu); var peerEl = getElement(menu.model.peer); enableMenu(menu.model.peer, true); enableHot(menu.model); pushMenu(menu.model.peer, menu.model); mouseover(E); } function mouseover(E) { commonMouseOver(E.currentTarget); } function docmouseover(E) { commonMouseOver(E.currentTarget); } function enableHot(ele) { hot(document.getElementById(ele.id)); } function hot(ele) { var over; var model = ele.model; if (model && model.parent && model.parent.group) over = model.parent.group.over; else over = OVER_CLASS; ele.className=over; } function switchModeOn(E) { hot(E.currentTarget); } function switchModeOff(E) { cold(E.currentTarget); } function cold(ele) { var out; var model = ele.model; if (model && model.parent && model.parent.group) out = model.parent.group.out; else out = "item"; ele.className=out; } function disableHot(ele) { if (ele == null) return; cold(document.getElementById(ele.id)); } function destroyMenu(comp_el_id) { var menu_el = document.getElementById(comp_el_id); enableMenu(menu_el.model,false); } function wipeAll() { var obj = popMenu(); while(obj != null ) { enableMenu(obj.menu, false); if (obj.menu.anchor) { var group = obj.menu.group; var className; if (group) { className=group.norm_attachment; if (obj.menu.norm_src) obj.menu.anchor.src=obj.menu.norm_src; }else className=NORM_ATTACHMENT; obj.menu.anchor.className=className; } disableHot(obj.launcher); obj = popMenu(); } hideElem(false); } ignoreNext = false; function commonMouseOver(target) { if (target == document && !ignoreNext) wipeAll(); if (target == null) alert("Assert Failed, target is null"); if( isMenu(target.model) && !ignoreNext) { var obj = popMenu(); if (obj != null && obj.menu != target.model) { enableMenu(obj.menu, false); disableHot(obj.launcher); } else if (obj != null) pushMenu(obj.menu, obj.launcher); } if(target == document) { ignoreNext = false; } else { ignoreNext = true; mousecomp = target; } } function popMenus(menu) { var pop = popMenu(); if (pop != null ) { //var parent = menu.model.peer.parent; if(mousecomp.id != pop.menu.id) { enableMenu(pop.menu, false); disableHot(pop.launcher); popMenus(getElement(pop.menu)); }else { pushMenu(pop.menu, pop.launcher); } } } document.onmouseover = docmouseover; mousecomp= null; function spawnMenu(E) { spawnMenuCommon(E.currentTarget); commonMouseOver(E.currentTarget); } function createMenu (name) { var menu1 = new Object(); menu1.name = name; menu1.typeid = TYPE_MENU; menu1.id = genId(); return menu1; } function createMenuGroup() { var group = new Object(); return group; } function setMenuGroup(men, group) { if (!men.sticky) alert("not a top level menu"); men.group = group; } function addMenuComponent(menu, comp) { var obj = menu.items; if (isMenu(comp)) { var ln = createMenuLauncher(comp.name); ln.peer = comp; comp.peer = ln; ln.ref = comp.ref; addMenuComponent(menu, ln); comp.menus = menu.menus; menu.menus = comp; comp.parent = menu return; } comp.parent = menu; if (!obj) { menu.items = comp; } else while(obj) { if (isMenu(obj) && obj.parent != menu) break; else if (!obj.items ) { obj.items = comp; break; } obj = obj.items; } } function drawMenu (menu, x, y) { var obj = menu.items; var nextY = y; var seq = 0; var className; var lobj= menu; while(lobj) { if (lobj.group) { className = lobj.group.className; break; } lobj = lobj.parent; } if (!className) className="menu"; document.write(""); var menu_element = document.getElementById(menu.id); menu_element.onmouseover=mouseover; menu_element.display="block"; var el = getElement(menu); if (menu.width) { var obj = menu.items; while(obj) { document.getElementById(obj.id).style.width=menu.width; obj = obj.items; } el.style.width = menu.width; } el.model = menu; menu_element.display="none"; } function discoverGroup(menu) { if (menu.group) return menu.group; else if (menu.parent) return discoverGroup(menu.parent); else return null; } function enableMenu (menu, enable) { if (!menu) alert("MENU is undefined!!"); if (enable) alignMenu(menu); var obj = menu.items; var el = getElement(menu); var method = "visible"; var disp = "block"; var group = discoverGroup(menu); if (!menu.group) { menu.group =group; } if (!enable) { method = "hidden"; disp="none"; } el.style.visibility = "visible"; el.style.display=disp; while(obj) { el = getElement(obj); if (!el) { } else { if (group && group.out) { el.className=group.out; } else { el.className="item"; } el.style.visibility = method; el.style.display = disp; } obj = obj.items; } } function findPosX(obj) { var curleft = 0; if (obj.offsetParent) { while (obj.offsetParent) { curleft += obj.offsetLeft obj = obj.offsetParent; } } else if (obj.x) curleft += obj.x; return curleft; } function findPosY(obj) { var curtop = 0; if (obj.offsetParent) { while (obj.offsetParent) { curtop += obj.offsetTop obj = obj.offsetParent; } } else if (obj.y) curtop += obj.y; return curtop; } function setMenuAnchor(rootmen, target_el) { rootmen.anchor = target_el; target_el.onmouseover = spawnMenu; target_el.attachment = rootmen; } function hideElem(bool) { var oForms=document.forms; for ( i = 0; i < oForms.length; i++) { for (j=0;j"+comp.name+""); var ele = getElement(comp); ele.model = comp; if (comp.typeid == TYPE_MENULAUNCHER) { ele.onmouseover = launchMenu; } else { ele.onmouseout = switchModeOff; ele.onmouseover = switchModeOn; } }