(function($){
    $.sitemap = function(el, data, options){
        var base = this;
        
        base.$el = $(el);
        base.el = el; 
        
        base.$el.data("sitemap", base);
        
        base.init = function(){

            base.data = data;

            base.options = $.extend({},$.sitemap.defaultOptions, options);
            
   	    	var menu = base.data.menu,menuString = "";
   	    	
   	    	base.cID = "";
   	    	base.parentClass = base.$el.parent().attr("class");
   	    	if(base.parentClass.indexOf("-") > -1){
   	    		base.cID = "-" + base.parentClass.split("-")[1];
   	    	}
   	    	
   	    	menuString+="<div id='sitemap-controls' style='margin-bottom:10px;'><a href='#' class='cchlnk"+base.cID+"' id='expand'>Expand All</a>&nbsp;|&nbsp;<a href='#' id='collapse' class='cchlnk"+base.cID+"'>Collapse All</a></div>";
   	    	
			for(var i = 0; i < menu.length; i++){
				var expandImg = ""
				if(menu[i].L2.length > 0){
					expandImg+="background:url(/images/expand.gif) left center no-repeat;";
				}
				menuString+="<div class='sitemap_L1' id='L1_"+i+"'><a href='/podium/default.aspx?t="+menu[i].id+"' class='cchlnk"+base.cID+"' style='"+expandImg+"padding-left:15px;'>"+menu[i].title+"</a></div>"
				if(menu[i].L2.length > 0){
					menuString+="<ul class='sitemap_L2' style='display:none;'>";
					for(var j = 0; j < menu[i].L2.length; j++){
				   		menuString+="<li><a href='"+menu[i].L2[j].url+"' class='cchlnk"+base.cID+"'>"+menu[i].L2[j].title+"</a>";				
				    	if(menu[i].L2[j].L3.length > 0){
				    		menuString+="<ul class='sitemap_L3' style='display:none;'>";
				    			for(var k = 0; k < menu[i].L2[j].L3.length; k++){
				    				menuString+="<li><a href='"+menu[i].L2[j].L3[k].url+"' class='cchlnk"+base.cID+"'>"+menu[i].L2[j].L3[k].title+"</a></li>";
				    			}
				    		menuString+="</ul>";
				    	}
					    menuString+="</li>";				
					}
					menuString+="</ul>";
				}
			}
			
			base.$el.append(menuString);
			
			base.actions();
        }
        
        base.actions = function(){
        	$("#expand").click(function(){
        		$(".sitemap_L2,.sitemap_L3").slideDown("slow");
        		var $L1 = $(".sitemap_L1");
        		$L1.each(function(){
        			if($(this).children().css("background-image") != "none"){
        				$(this).children().css("background-image","url(/images/collapse.gif)");
        			}
        		});
        	});
        	
        	$("#collapse").click(function(){
        		$(".sitemap_L2,.L3").slideUp("slow");
        		var $L1 = $(".sitemap_L1");
        		$L1.each(function(){
        			if($(this).children().css("background-image") != "none"){
        				$(this).children().css("background-image","url(/images/expand.gif)");
        			}
        		});
        	});
        	$(".sitemap_L1").click(function(e){
        		var $L1 = $(this),$L2 = "";
        		if($L1.next().hasClass("sitemap_L2")){
        			e.preventDefault();
        			$L2 = $L1.next();
        		}
        		if($L2.length > 0){
        			if($L2.css("display") == "none"){
        				$L2.slideDown("slow");
        				$(".sitemap_L3").slideDown("slow");
        				$L1.children().css("background-image","url(/images/collapse.gif)");
        			}else{
        				$L2.slideUp("slow");
        				$(".sitemap_L3").slideDown("slow");
        				$L1.children().css("background-image","url(/images/expand.gif)");
        			}
        		}
        		
        	});
        }
        
        base.init();
    }

    $.sitemap.defaultOptions = {
        
    }
	
    $.fn.sitemap = function(data, options){
        return this.each(function(){
            (new $.sitemap(this, data, options));
        });
    }
    
    $.fn.sitemap.version = function(){
      	if(window.console){
      		console.debug("Sitemap Plugin, Version: 1.0");
      	}
    }
    
})(jQuery);
