/** * Magento * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE_AFL.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@magentocommerce.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade Magento to newer * versions in the future. If you wish to customize Magento for your * needs please refer to http://www.magentocommerce.com for more information. * * @category Varien * @package js * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com) * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) */ /** * @classDescription simple Navigation with replacing old handlers * @param {String} id id of ul element with navigation lists * @param {Object} settings object with settings */ var mainNav = function() { var main = { obj_nav : $(arguments[0]) || $("nav"), settings : { show_delay : 0, hide_delay : 0, _ie6 : /MSIE 6.+Win/.test(navigator.userAgent), _ie7 : /MSIE 7.+Win/.test(navigator.userAgent) }, init : function(obj, level) { obj.lists = obj.childElements(); obj.lists.each(function(el,ind){ main.handlNavElement(el); if((main.settings._ie6 || main.settings._ie7) && level){ main.ieFixZIndex(el, ind, obj.lists.size()); } }); if(main.settings._ie6 && !level){ document.execCommand("BackgroundImageCache", false, true); } }, handlNavElement : function(list) { if(list !== undefined){ list.onmouseover = function(){ main.fireNavEvent(this,true); }; list.onmouseout = function(){ main.fireNavEvent(this,false); }; if(list.down("ul")){ main.init(list.down("ul"), true); } } }, ieFixZIndex : function(el, i, l) { if(el.tagName.toString().toLowerCase().indexOf("iframe") == -1){ el.style.zIndex = l - i; } else { el.onmouseover = "null"; el.onmouseout = "null"; } }, fireNavEvent : function(elm,ev) { if(ev){ elm.addClassName("over"); elm.down("a").addClassName("over"); if (elm.childElements()[1]) { main.show(elm.childElements()[1]); } } else { elm.removeClassName("over"); elm.down("a").removeClassName("over"); if (elm.childElements()[1]) { main.hide(elm.childElements()[1]); } } }, show : function (sub_elm) { if (sub_elm.hide_time_id) { clearTimeout(sub_elm.hide_time_id); } sub_elm.show_time_id = setTimeout(function() { if (!sub_elm.hasClassName("shown-sub")) { sub_elm.addClassName("shown-sub"); } }, main.settings.show_delay); }, hide : function (sub_elm) { if (sub_elm.show_time_id) { clearTimeout(sub_elm.show_time_id); } sub_elm.hide_time_id = setTimeout(function(){ if (sub_elm.hasClassName("shown-sub")) { sub_elm.removeClassName("shown-sub"); } }, main.settings.hide_delay); } }; if (arguments[1]) { main.settings = Object.extend(main.settings, arguments[1]); } if (main.obj_nav) { main.init(main.obj_nav, false); } }; document.observe("dom:loaded", function() { //run navigation without delays and with default id="#nav" //mainNav(); //run navigation with delays mainNav("nav", {"show_delay":"100","hide_delay":"100"}); });