 var NavigationAPI = ( function () {

    var showCreateNewMenu = function(elementID) {
    	if ($(elementID)) {
        	$(elementID).removeClass("hidden");
    	}
    }

    var hideCreateNewMenu = function (elementID){
    	if ($(elementID)) {
        	$(elementID).addClass("hidden");
    	}
    }

    var showDropDownMenu = function (elementID, parentID) {

    	var menu = $(elementID)
        	,menuIDSplit = elementID.split("_")
        	,link = $(menuIDSplit[0] + "_NavLink")
        	,browser = BrowserAPI.getBrowser();

        if (menu) {
        	var parent = $(parentID)
	       		,parentCoords = parent.getCoordinates();

        	if (!parent.hasClass("selected")) {
        		if (browser.type == "IE" && browser.ver <= 6) {
    	        	switch(menuIDSplit[0]) {
    	        		case "AdvisorNetwork":
    	        			var menuMarginLeftValue = -70;
    	        			break;
    	        		case "UsageReports":
    	        			var menuMarginLeftValue = -60;
    	        			break;
    	        		case "MyNetwork":
    	        			var menuMarginLeftValue = -50;
    	        			break;
    	        		case "MyProfile":
    	        			var menuMarginLeftValue = -43;
    	        			break;
    	        		default:
    	        			var menuMarginLeftValue = -38;
    	        	}

//    	        	if (browser.ver <= 6 && !$(elementID + "_IE6Hack_Iframe")) {
//		            	new Element("iframe", {
//			            	id: menu.id + "_IE6Hack_Iframe"
//			    			,styles: { width: menu.offsetWidth, height: menu.offsetHeight, 	position: "absolute", top: 0, left: 0, border: 0, zIndex: -1 }
//		            	}).inject(menu.getElement("li:first-child"), "before");
//    	        	}

    	        	menu.setStyle("margin-left", menuMarginLeftValue);
    	        }

    			menu.removeClass("hidden");

    	        if (link) {
                    parent.addClass("hoverDropDownParent");
	        		link.addClass("hoverDropDownClass");
    	        }
    	    }
        } else {
			link.addClass("hoverDropDownClass");
        }
    }

    var hideDropDownMenu = function (elementID) {
        var menu = $(elementID)
        	,menuIDSplit = elementID.split("_")
        	,link = $(menuIDSplit[0] + "_NavLink");

        if (menu) {
        	menu.addClass("hidden");
        	var menuIDSplit = elementID.split("_");
    	    if (link) {
    	    	link.removeClass("hoverDropDownClass");
    	    	link.parentNode.removeClass("hoverDropDownParent");
    	    }
        } else {
        	link.removeClass("hoverDropDownClass");
        }
    }

    var lastLinkHover = function (link) {
    	if (BrowserAPI.isIE()) {
            var linkIDSplit = link.id.split("_"), linkImg = $(linkIDSplit[0] + "_LastLinkImg");
            linkImg.removeClass("TabDropDownBottomImg").addClass("TabDropDownBottomHoverImg");
    	}
    }

    var lastLinkOut = function (link) {
    	if (BrowserAPI.isIE()) {
            var linkIDSplit = link.id.split("_"), linkImg = $(linkIDSplit[0] + "_LastLinkImg");
            linkImg.removeClass("TabDropDownBottomHoverImg").addClass("TabDropDownBottomImg");
    	}
    }

    return {
        showCreateNewMenu : showCreateNewMenu
        ,hideCreateNewMenu : hideCreateNewMenu
        ,showDropDownMenu : showDropDownMenu
        ,hideDropDownMenu : hideDropDownMenu
        ,lastLinkHover : lastLinkHover
        ,lastLinkOut : lastLinkOut
    };

 }) ();

var SubnavAPI = ( function () {
	var subnav = {
		bar : null,
		init : function () {
			this.bar = $("subnav");
		},
		getSubnavElements : function () {
			return this.bar.getElements("li");
		},
		getSelected : function () {
			var selected = null;
			this.getSubnavElements().each(function (el) {
				if (el.hasClass("selected")) {
					selected = el;
				}
			});
			return selected;
		},
		preload : function(action) {
			eval("var data = " + action + "();");
			return data;
		},
		load : function (subnavEl, loadAction, data, postloadAction) {
			data = data || null;

			var component = $("navigation").getElements("div[class=nav]")[0].getElements("li[class=selected]")[0].getElements("a")[0].innerHTML;
			var container = $("mainContent");
			var options = { onComplete : function (obj) {
				if ($type(obj) == "object") {
					if (obj["js"]) { loadJS({ code : obj["js"] }); }
					if (obj["html"]) { container.set("html", obj["html"]); }
				} else {
					container.set("html", obj);
				}
				EFX.hideOverlay(container);
				if (postloadAction != "") { eval(postloadAction + "();"); }
				MainAPI.setupNewBar();
			}};

			EFX.showOverlay(container, { "background-color" : "#86B0D9" });
			setTimeout(function () {
				API.request("/" + component + "/" + loadAction + "/0", data, options);
			}, 250);

			this.getSubnavElements().each(function (el) {
				if (el == subnavEl) {
					el.addClass("selected");
				} else {
					el.removeClass("selected");
				}
			});
		}
	};

	var setupSubnav = function () {
		subnav.init();
		if (subnav.bar) {
			// Set the offset of the subnav bar

			var navbar = $("navigation").getElements("li");
			var subnavbar = $$("#subnavContainer li");
			var offset = 0;

			if (subnavbar.length > 0) {
				for (var i = 0; i < navbar.length; i++) {
					var navElWidth = navbar[i].getStyle("padding-left").toInt() + navbar[i].getStyle("width").toInt() + navbar[i].getStyle("padding-right").toInt();

					if (navbar[i].hasClass("selected")) {
						var subnavWidth = 0;
						for (var j = 0; j < subnavbar.length; j++) {
							subnavWidth += subnavbar[j].getStyle("padding-left").toInt() + subnavbar[j].getStyle("width").toInt() + subnavbar[j].getStyle("padding-right").toInt() + subnavbar[j].getStyle("margin-right").toInt();
						}

						var leftOffset = offset;
						var centerOffset = offset + (navElWidth / 2) - (subnavWidth / 2) - 4;
						var rightOffset = offset + navElWidth - subnavWidth - 8;

						if (centerOffset < 0) {
							offset = leftOffset;
						} else if (centerOffset + subnavWidth > $("subnav").getStyle("width").toInt()) {
							offset = rightOffset;
						} else {
							offset = centerOffset;
						}
						break;
					} else {
						offset += navElWidth + navbar[i].getStyle("margin-right").toInt();
					}
				}
				subnavbar[0].setStyle("margin-left", offset + "px");
			}
		}
	};

	// Schedule invoice functions to be run when the page is ready
	window.addEvent("domready", function() {
		setupSubnav();
	});

	return {
		subnav : subnav,
		setupSubnav : setupSubnav
	};
} )();
