$.fn.extend({

    treed: function (o) {
      var openedClass = 'fa-minus';

      var closedClass = 'glyphicon-plus-sign';
      if (typeof o != 'undefined'){
        if (typeof o.openedClass != 'undefined'){

        openedClass = o.openedClass;

        }

        if (typeof o.closedClass != 'undefined'){

        closedClass = o.closedClass;

        }

      };

      

        /* initialize each of the top levels */

        var tree = $(this);

        tree.addClass("tree");

        tree.find('li').has("ul").each(function () {

            var branch = $(this);

            branch.prepend('<i class="tree fa fa-plus"></i>');

            branch.addClass('branch');

            branch.on('click', function (e) {

                if (this == e.target) {

                    var icon = $(this).children('i:first');

                    icon.toggleClass(openedClass + " " + closedClass);

                    $(this).children().children().toggle();

                }

            })

            branch.children().children().toggle();

        });

        /* fire event from the dynamically added icon */

        tree.find('.branch .indicator').each(function(){

            $(this).on('click', function () {

                $(this).closest('li a').click();

            });

        });

        /* fire event to open branch if the li contains an anchor instead of text */

        tree.find('.branch>a').each(function () {

            $(this).on('click', function (e) {

                $(this).closest('li a').click();

                e.preventDefault();

            });

        });

        /* fire event to open branch if the li contains a button instead of text */

        tree.find('.branch>button').each(function () {

            $(this).on('click', function (e) {

                $(this).closest('li').click();

                e.preventDefault();

            });

        });

    }

});

/* Initialization of treeviews */

$('#tree1').treed();