(function($){

    $.fn.ListDecorator = function(){

        var me = this;

        this.options = {
            initialSelector: 'ul.menu > li'
        };

        this.init = function(){
            this.decorateList(this.find(this.options.initialSelector));
        };

        this.decorateList = function(lis){

            if(lis.length > 0){

                lis.first().addClass('first');
                lis.last().addClass('last');

                lis.each(function(index){
                    var item = $(this);

                    item.addClass(index % 2 == 0 ? 'odd' : 'even');

                    if(item.has('ul').length > 0){
                        item.addClass('hasChildren');

                        me.decorateList(item.children('ul').children('li'));
                    }
                    else{
                        item.addClass('noChildren');
                    }
                });
            }
        };

        this.init();

    }
})(jQuery);
