(function($){
  
  $.fn.ss_archives = function(options) {
    
    var defaults = { link_levels:1 };
    var opts = $.extend(defaults, options);
    
    this.each(function(){
    
      // Hide any ULs that are showing
      $(this).find("ul").hide();
      
      $(this).find("li a").each(function(){
        $(this).prepend('<span class="arrow">&#9658; </span>');
      });
      
      $(this).find("li a").click(function(){

        $parent = $(this).parent();
        
        if( $parent.find("ul").length > 0 ) {
          $parent.find("ul").toggle();
        } else {
          // Add loading message
          $parent.append("<ul><li>Loading...</li></ul>");

          // Retrieve items from server
          $.get( $(this).attr("href") + "&raw=1&ajax=1", function(data){
              
            // remove loading message
            $parent.find("ul").remove();
            
            $ul = $(data).find("ul");
            if( $ul.length > 0 ) {
              // The returned data has a nested UL somewhere
              $parent.append($ul);
            } else {
              // The returned data is just a <ul>
              $parent.append(data);
            }            
          });
        }

        if( $(this).parent().children("ul:visible").length > 0 ) {
          $(this).find("span.arrow").html("&#9660; ");
        } else {
          $(this).find("span.arrow").html("&#9658; ");
        }
        
        return false;
      });
      
      $(this).find("li.expanded > a").each(function(){
        $(this).triggerHandler("click");
      });
    });
  };
  
})(jQuery);

$(document).ready(function(){
  $("ul.dynamic").ss_archives();
});