var sm_counter = 0;
var sm_options = null;


(function($){
$.fn.slideMenu = function(options) {  
  
	return this.each(function(i,el) {  
	
		var defaults = {  
			current_page_name: "Navigation",
			title: "Website Navigation",
			button_class: "sm_button",
			has_children_class: "sm_has_children",
			drop_down_class: "sm_menu",
			drop_down_item_class: "sm_menu_item",
			wrapper_class: "sm_wrapper",
			button_wrapper_class: "sm_button_wrapper",
			home_button_class: "sm_home_button",
			home_button_link: "/",
			back_button_text: "<span class='sm_left_arrow'>&nbsp;</span>Back"
		};  
	
		sm_options = $.extend(defaults, options);

		smInit(i,el,sm_options);
	
   });  

};
})(jQuery);

function smInit(i,el,options) {
	
	$(el).hide();
	
	var sm = $('<div />', {
	    id: 'slide_menu_'+i,
	    title: options.title,
		"class": options.wrapper_class
	});
	
	var bw = $('<div />', {
	    id: 'slide_menu_button_wrapper_'+i,
		"class": options.button_wrapper_class
	});

	$(bw).append($('<div />', {
	    id: 'slide_menu_button_'+i,
		"class": options.button_class
	}).html(options.current_page_name)).click(function(){
		smShow(i);
	});
	
	var dd = $('<div />', {
		id: 'slide_menu_drop_down_'+i,
		"class": options.drop_down_class
	});
	
	var hb = $('<div />', {
	    id: 'slide_menu_home_button_'+i,
	    title: 'Home Button',
		"class": options.home_button_class
	}).html('Home').click(function(){
		window.location.href=options.home_button_link;
	});
	
	var mm = $('<div />', {
		id: 'sm_main_menu_holder_'+i,
		"class": 'sm_main_menu_holder_'+i
	});
	
	$(el).find("li").each(function(ii,child){ 
		$(child).attr("rel","sm_rel_"+sm_counter); 
		sm_counter += 1;
	});
	
	$(el).children("li").each(function(ii,child){
		var itm_classes = sm_options.drop_down_item_class;
		if ($(child).children("ul").length > 0) { itm_classes += " "+sm_options.has_children_class; }
		dd.append('<div class="'+itm_classes+'" onclick="smClick(this, \''+$(child).attr("rel")+'\');"><div class="textual">'+$(child).children("a").html()+'</div><span class="sm_right_arrow">&nbsp;</span></div>');
	});
	
	$(dd).hide();
	$(sm).prepend(hb);
	$(bw).append(dd);
	$(sm).append(bw);
	$(el).before(sm);
	
	$(mm).html($(dd).html());
	$(mm).hide();
	$(el).after(mm);
}

function smShow(i) {
	$("#slide_menu_button_"+i).toggleClass("opened");
	$("#slide_menu_drop_down_"+i).slideToggle();
	$("body").append('x');
}

function smClick(el, rel) {
	var sm_orig = 'li[rel="'+rel+'"]';
	if ($(sm_orig).children("ul").length > 0) {
		smShowSub(sm_orig, $(el).parent().attr("id").replace("slide_menu_drop_down_",""));
	} else {
		window.location.href = $(sm_orig).children("a").attr("href");
	}
}

function smShowSub(orig, i) {
	var dd = "#slide_menu_drop_down_"+i;
	$(dd).slideToggle('fast', function() {
		$(dd).html("");
		$(dd).append('<div class="'+sm_options.drop_down_item_class+'" onclick="smBackClick('+i+');"><div class="textual">'+sm_options.back_button_text+'</div></div>');
		$(orig).children("ul").children("li").each(function(ii,child){
			var itm_classes = sm_options.drop_down_item_class;
			if ($(child).children("ul").length > 0) { itm_classes += " "+sm_options.has_children_class; }
			$(dd).append('<div class="'+itm_classes+'" onclick="smClick(this, \''+$(child).attr("rel")+'\');"><div class="textual">'+$(child).children("a").html()+'</div><span class="sm_right_arrow">&nbsp;</span></div>');
		});
		$(dd).slideToggle();
	});
}

function smBackClick(i) {
	var dd = "#slide_menu_drop_down_"+i;
	$(dd).slideToggle('fast', function() {
		$(dd).html($("#sm_main_menu_holder_"+i).html());
		$(dd).slideToggle();
	});
}







