/**

 * 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

 */

function toggleMenu(el, over)
{
    if (over) {
        Element.addClassName(el, 'over');
    }
    else {
        Element.removeClassName(el, 'over');
    }
}


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"});

});


