/* 
   Simple JQuery Accordion menu.
   HTML structure to use:

   <ul id="menu">
     <li><a href="#">Sub menu heading</a>
     <ul>
       <li><a href="http://site.com/">Link</a></li>
       <li><a href="http://site.com/">Link</a></li>
       <li><a href="http://site.com/">Link</a></li>
       ...
       ...
     </ul>
     <li><a href="#">Sub menu heading</a>
     <ul>
       <li><a href="http://site.com/">Link</a></li>
       <li><a href="http://site.com/">Link</a></li>
       <li><a href="http://site.com/">Link</a></li>
       ...
       ...
     </ul>
     ...
     ...
   </ul>

Copyright 2007 by Marco van Hylckama Vlieg

web: http://www.i-marco.nl/weblog/
email: marco@i-marco.nl

Free for non-commercial use
*/



jQuery.fn.initMenu = function () {
    return this.each(function () {
    	$('.menuitem', this).hide();
    	$('ul:has(a.expand)').show();
        $('a.expand').show();
        //$('a.expand > .menuitem', this).prev().addClass('expand');
        $('li:has(a.expand)').addClass('expand');
        $('li a', this).click(function (e) {
            e.stopImmediatePropagation();
            var $this = $(this);
            var theElement = $this.next();
            var parent = $this.parent().parent();
            if (parent.hasClass('noaccordion')) {
                if (theElement[0] === undefined) {
                    window.location.href = this.href;
                }
                theElement.slideToggle('normal', function () {
                    var slideThis = $(this);
                    if (slideThis.is(':visible')) {
                        slideThis.prev().addClass('active');
                    }
                    else {
                        slideThis.prev().removeClass('active');
                    }
                });
                return false;
            }
            else if (theElement.hasClass('menuitem')) {
                if (theElement.is(':visible')) {
                    if (parent.hasClass('collapsible')) {
                        $('.menuitem:visible', parent).slideUp('normal', function () {
                            $this.prev().removeClass('active');
                        });
                        return false;
                    }
                    return false;
                }
                else {
                    $('.menuitem:visible', parent).slideUp('normal', function () {
                        $this.prev().removeClass('active');
                    });
                    $('ul.menuitem li:has(ul.menuitem)').addClass('parentMenu');  // add different style for items with children
                    theElement.slideDown('normal', function () {
                        $this.prev().addClass('active');
                    });
                    return false;
                }
            }
        });
    });
};

$(document).ready(function () {
    $('.menu').initMenu();
});

