// ----------------------New Leaf Menu Functions------------------- //create toolbar options menu button function initSkinToolbar(optionsMenu, createButtons) { //onDOMReady uses the Custom Event signature, with the object //passed in as the third argument: if(arguments.length > 2) { optionsMenu = arguments[2]; createButtons= arguments[3]; } if (optionsMenu) { var oButton0 = new YAHOO.widget.Button({ id: "button_options", type: "menu", label: "Options", container: "toolbar_options", menu: optionsMenu }); if (createButtons) { createToolbarButtons() } //We started with the leaf menu hidden. Turn it on. var oLeafDiv = document.getElementById("leafToolbar"); if (oLeafDiv ) { oLeafDiv.style.visibility= "visible"; } } return; } //Handle menu item onclick event var optionsMenuClick = function(type, args, item) { if (!item.cfg.getProperty('checked')) { window.location = item.value; } } //optionsMenuClick // ----------------------End New Leaf Menu Functions------------------- // define a few variables that are required var menu_activemenus = new Array(); var menu_currentactive = null; var slidetimer = false; var menu_opensteps = 20; // ############################################################################# // another function to handle the different event models of different browsers // and prevent event bubbling in a lesser way function e_by_gum(eventobj) { if (!eventobj || is_ie) { window.event.cancelBubble = true; return window.event; } else { eventobj.stopPropagation(); return eventobj; } } // ############################################################################# // lets define the browser we have instead of multiple calls throughout the file var userAgent = navigator.userAgent.toLowerCase(); var is_opera = (userAgent.indexOf('opera') != -1); var is_saf = ((userAgent.indexOf('applewebkit') != -1) || (navigator.vendor == "Apple Computer, Inc.")); var is_webtv = (userAgent.indexOf('webtv') != -1); var is_ie = ((userAgent.indexOf('msie') != -1) && (!is_opera) && (!is_saf) && (!is_webtv)); var is_ie4 = ((is_ie) && (userAgent.indexOf("msie 4.") != -1)); var is_moz = ((navigator.product == 'Gecko') && (!is_saf)); var is_kon = (userAgent.indexOf('konqueror') != -1); var is_ns = ((userAgent.indexOf('compatible') == -1) && (userAgent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_saf)); var is_ns4 = ((is_ns) && (parseInt(navigator.appVersion) == 4)); // catch possible bugs with WebTV and other older browsers var is_regexp = (window.RegExp) ? true : false; // ############################################################################# // let's find out what DOM functions we can use var DOMtype = ''; if (document.getElementById) { DOMtype = "std"; } else if (document.all) { DOMtype = "ie4"; } else if (document.layers) { DOMtype = "ns4"; } // make an array to store cached locations of objects called by fetch_object var fetched_objects = new Array(); // ############################################################################# // function to emulate document.getElementById function fetch_object(idname, forcefetch) { if (forcefetch || typeof(fetched_objects[idname]) == "undefined") { switch (DOMtype) { case "std": { fetched_objects[idname] = document.getElementById(idname); } break; case "ie4": { fetched_objects[idname] = document.all[idname]; } break; case "ns4": { fetched_objects[idname] = document.layers[idname]; } break; } } return fetched_objects[idname]; } // ############################################################################# // ############## Main Javascript Initialization ############################## // ############################################################################# function epriseMenu_init() { if (is_webtv) { return true; } // Functions to put rounded borders around the Menu listing // if(NiftyCheck()) { // Rounded("div#epriseMenu_menu","transparent","#47AA42"); // Rounded("div#epriseMenu_contents","#47AA42","#FFFFFF"); // } var controlid = "epriseMenu"; var menuid = "epriseMenu_menu"; var menuobj = fetch_object(menuid); if (document.getElementsByTagName && menuobj) { document.onclick = menu_close; // do control object var controlobj = fetch_object(controlid); set_hand_pointer(controlobj); controlobj.unselectable = true; controlobj.onclick = eventhandler_click; controlobj.onmouseover = eventhandler_mouseover; // do popup menu object var popupobj = fetch_object(menuid); popupobj.style.display = "none"; popupobj.style.position = "absolute"; popupobj.style.right = "0px"; popupobj.style.top = "0px"; popupobj.onclick = e_by_gum; // init popup filters (ie only) if (is_ie) { popupobj.style.filter += "progid:DXImageTransform.Microsoft.alpha(enabled=1,opacity=100)"; popupobj.style.filter += "progid:DXImageTransform.Microsoft.shadow(direction=135,color=#8E8E8E,strength=3)"; } } } // ############################################################################# // function to get the menu basename - 'menu.104' returns 'menu', 'x.menu' returns 'x' function menu_getmenuid(controlid) { var dotpos = controlid.indexOf("."); if (dotpos != -1) { return controlid.substr(0, dotpos); } else { return controlid; } } // ############################################################################# // function to set the cursor to be pointer/hand function set_hand_pointer(obj) { try { obj.style.cursor = "pointer"; } catch(e) { obj.style.cursor = "hand"; } } // ############################################################################# // handle menu control mouseover events function eventhandler_mouseover(e) { e = do_an_e(e); menu_hover(this); } // ############################################################################# // handle menu control click events function eventhandler_click(e) { e = do_an_e(e); menu_open(this); } // ############################################################################# // close all open menus function menu_close() { if (menu_currentactive) { for (key in menu_activemenus) { fetch_object(menu_getmenuid(key) + "_menu").style.display = "none"; menu_activemenus[key] = false; } } menu_currentactive = false; if (slidetimer) { clearTimeout(slidetimer); slidetimer = false; } if (is_ie) { selects = document.getElementsByTagName("select"); for (var i = 0; i < selects.length; i++) { selects[i].style.visibility = "visible"; } } } // ############################################################################# // function to handle the different event models of different browsers // and prevent event bubbling function do_an_e(eventobj) { if (!eventobj || is_ie) { window.event.returnValue = false; window.event.cancelBubble = true; return window.event; } else { eventobj.stopPropagation(); eventobj.preventDefault(); return eventobj; } } // ############################################################################# // open menu under pointer if another menu is active function menu_hover(elm) { for (key in menu_activemenus) { if (menu_activemenus[key] == true && key != elm.id) { menu_open(elm); return; } } } // ############################################################################# // open the clicked menu function menu_open(elm) { var openmenu = menu_currentactive; menu_close(); if (openmenu == elm.id) { // clicked element was the control for the currently open menu - exit return false; } // get the id of the menu to be opened var menuid = menu_getmenuid(elm.id) + "_menu"; var menuobj = fetch_object(menuid); var force_right_slide = false; menu_activemenus[elm.id] = true; menu_currentactive = elm.id; // un-hide menu menuobj.style.display = ""; var slidedir = 'right'; // slide menus open if (!is_opera && !is_ie4) { var intervalX = Math.ceil(menuobj.offsetWidth / menu_opensteps); var intervalY = Math.ceil(menuobj.offsetHeight / menu_opensteps); if (slidedir == "left") { menuobj.style.clip = "rect(auto, 0px, 0px, auto)"; menu_slide_left(menuid, intervalX, intervalY, 0, 0, 0); } else { menuobj.style.clip = "rect(auto, auto, 0px, " + (menuobj.offsetWidth) + "px)"; menu_slide_right(menuid, intervalX, intervalY, menuobj.offsetWidth, 0, 0); } } return false; } // ############################################################################# // slide menu open left function menu_slide_left(menuid, intervalX, intervalY, clipX, clipY, opacity) { var menuobj = fetch_object(menuid); if (clipX < menuobj.offsetWidth || clipY < menuobj.offsetHeight) { clipX += intervalX; clipY += intervalY; menuobj.style.clip = "rect(auto, " + clipX + "px, " + clipY + "px, auto)"; slidetimer = setTimeout("menu_slide_left('" + menuid + "', " + intervalX + ", " + intervalY + ", " + clipX + ", " + clipY + ", " + opacity + ");", 0); } else { clearTimeout(slidetimer); } } // ############################################################################# // slide menu open right function menu_slide_right(menuid, intervalX, intervalY, clipX, clipY, opacity) { menuobj = fetch_object(menuid); if (clipX > 0 || clipY < menuobj.offsetHeight) { clipX -= intervalX; clipY += intervalY; menuobj.style.clip = "rect(auto, " + menuobj.offsetWidth + "px, " + clipY + "px, " + clipX + "px)"; slidetimer = setTimeout("menu_slide_right('" + menuid + "', " + intervalX + ", " + intervalY + ", " + clipX + ", " + clipY + ", " + opacity + ");", 0); } else { clearTimeout(slidetimer); } } // ############################################################################# // Call init epriseMenu_init();