function ListHover(list, markChilds) {
    var thisRef = this;
    
    // initialize
    function init() {
        list = jQuery('#' + list);
        markChilds = Boolean(markChilds); // cast to boolean
        
        list.find('li').mouseover(function(e){thisRef.onMouseOver(jQuery(this));});
        list.find('li').mouseout(function(e){thisRef.onMouseOut(jQuery(this));});
    }
    this.isMarkChilds = function() {
        return markChilds;
    };
    
    init();
    return this;
}
ListHover.prototype = {
    onMouseOver: function(node) {
        node.addClass('hover');
        if (this.isMarkChilds()) {
            node.children().addClass('hoverChild');
        }
    },
    onMouseOut: function(node) {
        node.removeClass('hover');
        if (this.isMarkChilds()) {
            node.children().removeClass('hoverChild');
        }
    }
};

