(function($, undefined) {
	var root = null;
	$.fn.asNav = function(config) {
		root = $("<ul class='as-nav-list clearfix'></ul>").appendTo(this);
		$("<div class='as-nav-left-corner clearfix'>&nbsp;</div>").insertBefore(root);
		$("<div class='as-nav-right-corner clearfix'>&nbsp;</div>").insertAfter(root);
		$.each(config, function(indx, data) {
			renderMenuTree(data, root);
		})
		//submenu already in hidden state add behaviour to top menu items
		
		$(".as-menubar-item.hasSubmenu").hover(function() {
			showSubMenu(this);
		}, function() {
			hideSubMenu(this);
		});
		
		$('.as-subnav-cont a.as-menu-item-label').hover(function() {
			$(this).addClass("as-menu-item-label-selected");
		}, function() {
			$(this).removeClass("as-menu-item-label-selected");
		})
	};	
	
	function showSubMenu(menuItem) {
		var p = $("a", menuItem).position(),
		     top = (p.top + $("a", menuItem).height()*1.5) + 'px',
			 left = 0 + 'px';
		$("a.as-menubar-item-label", menuItem).addClass('as-menubar-item-label-selected');
		$("div.as-subnav-cont", menuItem).css({'top': top, 'left': left});
		$('.menu-shadow', menuItem).addClass('menu-shadow-visible');
	}
	
	function hideSubMenu(menuItem) {
		$("a.as-menubar-item-label", menuItem).removeClass('as-menubar-item-label-selected');
		$("div.as-subnav-cont", menuItem).css({'top': "-1000px", 'left': "-10000px"});
		$('.menu-shadow', menuItem).removeClass('menu-shadow-visible');
	}

	
	function renderMenuTree(data, parent) {
		var node = null;
		if($(parent).is(".as-subnav-list")) {
			node = renderMenuItem(data, parent, true);
		} else {
			node = renderMenuItem(data, parent);
		}		
		
		if(data && data.submenu) {  // check if "data" is an object for IE
			var subUl = $("<ul class='as-subnav-list'></ul>").appendTo(node);
			$(subUl).wrap("<div class='as-subnav-cont' />");
			$("<div class='menu-shadow' />").insertAfter(subUl);
			$(node).addClass('hasSubmenu');
			$.each(data.submenu.itemdata, function(idx, sdata) {
				renderMenuTree(sdata, subUl);
			});
		}
	};
	
	function renderMenuItem(data, parent, isSubMenu) {
		         var menu = "",
				      node = null,
				     s = isSubMenu || false,
					 bar = s? "" : "bar"; //if not submenu make the 'li' class as "as-menubar-item" instead of "as-menu-item"
					 
		         if(data && data.disabled) {  // check if "data" is an object for IE
					 menu = ["<li class='as-menu",bar,"-item clearfix'><a href='#' class='as-menu",bar,"-item-label disabled'>", data.text, "</a></li>"].join('');
				 } else if(data) {
					 menu = ["<li class='as-menu", bar, "-item clearfix'><a href='", data.url, "' class='as-menu",bar,"-item-label'>", data.text, "</a></li>"].join('');
				 }
				 
			 	 node = $(menu).appendTo(parent);
					if($('li').index(node) === 0) {
						$("a.as-menubar-item-label", node).addClass("first-of-type");
				 }
				return node;
	};
	
})(jQuery);




