jQuery.fn.not_exists = function(){return jQuery(this).length==0;}

jQuery.fn.jqcollapse = function(o) {
 
 // Defaults
 var o = jQuery.extend( {
   slide: true,
   speed: 300,
   handle: 'a',
   icon: 'span.icon',
   open_at_start:true,
   skip_anchors:true,
   easing: ''
 },o);
 
 $(this).each(function(){
    var open = o.open_at_start;
	$(this).children('li.node > ul').each(function(i,el) {
	    var parent_li = $(this).parent('li');
	    var sub_ul = $(this).show();
	    var node_icon = parent_li.find(o.icon).first();       
        
	    parent_li.find(o.handle).first().click(function(e) {
            
            if(o.skip_anchors){
                if(e.target.tagName.toLowerCase() == "a"){
                    return;
                }
            }
            
	        if(o.slide==true){
	        	sub_ul.slideToggle(o.speed, o.easing);
	        }else{
	        	sub_ul.toggle();
	        }
            open = !open;
            toggleIcon(open,node_icon);
	    });
        
        toggleIcon(o.open_at_start,node_icon);
	    //parent_li.append(sub_ul);
	});
	
	//Hide all sub-lists
    if(o.open_at_start){
        $(this).children('ul:has(li.node)').show();
    } else {
        $(this).children('ul:has(li.node)').hide();
    }
 });
 function toggleIcon(val, node_icon){
    if(val){
        node_icon.addClass('node_collapse').removeClass('node_expand');
    } else {
        node_icon.addClass('node_expand').removeClass('node_collapse');
    }
 }
};
