if (typeof vcc != "object")	vcc = {};

if (typeof vcc.nav != "object")
	vcc.nav = new Object();

vcc.nav.oFlyoutTimeout = null;
vcc.nav.oActiveFlyoutLink = null;
vcc.nav.iDelay = 200;
vcc.aModels = [];
vcc.aFlyout1Items = [];
vcc.aFlyout2Items = [];
vcc.nav.ie6 = false;

if (vcc.bIsRtl) {
	$(window).ready(function() {
		//RTL fix	
		var aChildUls = $("#model-nav ul ul");
		$.each(aChildUls, function() {			
			var aListItems = $("li", this);
			var iWidth = 0;
			$.each(aListItems, function() {
				iWidth += ($(this).outerWidth() - 6);
			});			
			$(this).css("width", iWidth + "px");
		});
		$("#model-nav").css("top", "34px");
		
		//IE6
		if ($.browser.msie && $.browser.version.substr(0,1) < 7) {
			var iWidth = 0;
			$.each($("#model-nav-inner2 > ul").children("li"), function() {
				iWidth += $(this).outerWidth(true);
			});
			$("#model-nav-inner2").width(iWidth + "px");
		} else {
			$("#model-nav-inner2").width($("#model-nav ul").innerWidth() + 3 + "px");
		}
	});
}

$(document).ready(function() {
	vcc.nav.ie6 = (jQuery.browser.msie && parseInt(jQuery.browser.version) < 7);
	vcc.fixIePng("#logo");	
	vcc.nav.initLeftNavigation();
	
	//Preload model flyout images
	$.each(vcc.aModels, function() {
		this.FlyoutImagePreload = new Image();
		this.FlyoutImagePreload.src = this.FlyoutImage;
	});
	//Preload model nav AGIs
	var aModelNavAGIs = [];
	var aModelNavImages = $("#model-nav a img");
	$.each(aModelNavImages, function() {
		if (this.src.indexOf(".agi?") > -1 && this.src.indexOf("nav.agi") == -1) {
			this.onclick = function() {
				document.location.href = $(this).parent().parent().get(0).href;
			}
			var sImageUrl = this.src;
			var oImage = new Image();
			if (sImageUrl.indexOf("_active") > -1) {
				//Preload non-active version of this AGI
				oImage.src = sImageUrl.replace(/_active.agi/, ".agi");
			} else {
				//Preload active version
				oImage.src = sImageUrl.replace(/.agi/, "_active.agi");
			}
			aModelNavAGIs.push(oImage);
		}
	});
	
	var oModelNav = document.getElementById("model-nav");
	if (oModelNav == null)
		return;
		
	//Section links
	var aSectionLinks = $("li.section a", oModelNav);
	$.each(aSectionLinks, function() {
		//IE fix
		if (document.all) {
			this.onclick = function() {
				document.location = this.href;
			}
		}
		this.onmouseover = function() {
			var aItems = (this.parentNode.className == "section explore") ? vcc.aFlyout1Items : vcc.aFlyout2Items;
			if (this.parentNode.className == "section explore" || aItems.length == 1) {
				//Explore all models flyout
				if (aItems.length > 0) {
					//var sImageUrl = aItems[0].url.substring(0, aItems[0].url.indexOf("/pages")) + "/PublishingImages/flyoutimage.jpg";
					var sHtml = "<div class=\"inner\"><h2>&nbsp;</h2><img class=\"section-thumb\" src=\"images/flyoutimage.jpg\" /><ul>";
					var iChildren = aItems[0].children.length;
					$.each(aItems[0].children, function(i) {
						if (i == iChildren - 1)
							sHtml += "<li class=\"last\"><a href=\"" + this.url + "\">" + this.title + "</a></li>";
						else
							sHtml += "<li><a href=\"" + this.url + "\">" + this.title + "</a></li>";
					});
					sHtml += "</ul></div>";
					vcc.nav.showFlyout(this, sHtml, "section");	
				}
			} else {
				//Sales & Services flyout
				var sCssClass = "section-" + aItems.length;
				var sHtml = "<div class=\"inner\">";
				$.each(aItems, function(index) {
					//var sImageUrl = this.url.substring(0, this.url.indexOf("/pages")) + "/PublishingImages/flyoutimage.jpg";
					if (index == aItems.length - 1)
						sHtml += "<div class=\"col last\"><h2>" + this.title + "</h2>";
					else
						sHtml += "<div class=\"col\"><h2>" + this.title + "</h2>";
					sHtml += "<img class=\"section-thumb\" src=\"images/flyoutimage.jpg\" /><ul>";
					var iChildren = this.children.length;
					$.each(this.children, function(i) {
						if (i == iChildren - 1)
							sHtml += "<li class=\"last\"><a href=\"" + this.url + "\">" + this.title + "</a></li>";
						else
							sHtml += "<li><a href=\"" + this.url + "\">" + this.title + "</a></li>";
					});
					sHtml += "</ul></div>";
				});
				sHtml += "</div>";
					
				vcc.nav.showFlyout(this, sHtml, sCssClass);
			}						
		}
		this.onmouseout = function() {
			vcc.nav.hideFlyout();			
		}
	});
	
	//Model links
	var aModelLinks = $("li li a", oModelNav);
	$.each(aModelLinks, function(i) {
		this.id = "model-" + i;
		this.onmouseover = function() {			
			var sModelTitle = this.getElementsByTagName("img").item(0).alt;			
			var model = vcc.getModel(sModelTitle);			
			if (model == null)
				return;			
			var sContent = "<div class=\"inner\">";
			sContent += "<h2 class=\"model-name\">" + model.ShortName + "</h2>";
			if (model.Price != "")
				sContent += "<p class=\"price\">" + model.Price + "</p>";
			if (model.FlyoutImage != "")
				sContent += "<a href=\"" + model.ModelWebPath + "\"><img src=\"" + model.FlyoutImage + "\" alt=\"" + model.Name + "\" /></a>";
			if (model.FlyoutText != "")
				sContent += "<p class=\"info\">" + model.FlyoutText + "</p>";
			if (model.Links.length > 0) {
				sContent += "<ul class=\"model-links\">";
				var iChildren = model.Links.length;
				$.each(model.Links, function(i) {
					if (i == iChildren - 1)
						sContent += "<li class=\"last\"><a href=\"" + this.Url + "\">" + this.Title + "</a></li>";
					else
						sContent += "<li><a href=\"" + this.Url + "\">" + this.Title + "</a></li>";
				});
				sContent += "</ul>";
			}
			sContent += "</div>"			
			vcc.nav.showFlyout(this, sContent, "model");			
		}
		this.onmouseout = function() {
			vcc.nav.hideFlyout();
		}
	});
	
	//Tools mouseover state
	var aTopTools = $("#toptools li");
	$.each(aTopTools, function() {
		if (this.className != "active") {
			var oLink = this.getElementsByTagName("a").item(0);
			oLink.onmouseover = function() {
				var oImage = this.getElementsByTagName("img").item(0);
				var sImageUrl = oImage.src;
				oImage.src = sImageUrl.replace(/_topnav/, "_topnav_over");
			}
			oLink.onmouseout = function() {
				var oImage = this.getElementsByTagName("img").item(0);
				var sImageUrl = oImage.src;
				oImage.src = sImageUrl.replace(/_topnav_over/, "_topnav");
			}
		}
	});
	
});

vcc.nav.showFlyout = function(oLink, sHtml, sClass) {
	oLink.className = "hover";
	vcc.nav.swapAgi(oLink, true);
	
	if (vcc.nav.oFlyoutTimeout != null)
		clearTimeout(vcc.nav.oFlyoutTimeout);		
	var oFlyout = vcc.nav.getFlyout();		
	if (vcc.nav.oActiveFlyoutLink != oLink) {		
		if (vcc.nav.oActiveFlyoutLink != null) {
			vcc.nav.oActiveFlyoutLink.className = null;	
			vcc.nav.swapAgi(vcc.nav.oActiveFlyoutLink, false);			
		}
		//Swap AGI image				
		vcc.nav.oActiveFlyoutLink = oLink;			
		oFlyout.className = sClass;
		oFlyout.innerHTML = sHtml;		
	}
	vcc.nav.positionFlyout(oLink);	
	if (document.all) {
		$(oFlyout).show();
		vcc.fixIePng("#flyout");
	} else {
		$(oFlyout).fadeIn(vcc.nav.iDelay);
	}
	if (vcc.nav.ie6)
		vcc.nav.hideOverlappingDropdowns();
}

vcc.nav.hideFlyout = function(iDelay) {
	vcc.nav.oFlyoutTimeout = setTimeout(function() {
		if (vcc.nav.oActiveFlyoutLink != null) {
			vcc.nav.oActiveFlyoutLink.className = null;
			//Swap AGI image
			vcc.nav.swapAgi(vcc.nav.oActiveFlyoutLink, false);			
		}
		var oModelFlyout = $("#flyout");
		if (oModelFlyout.length > 0) {
			if (document.all)
				oModelFlyout.hide();
			else
				oModelFlyout.fadeOut(vcc.nav.iDelay);
		}
		if (vcc.nav.ie6)
			vcc.nav.showOverlappingDropdowns();
	}, (iDelay != null) ? iDelay : vcc.nav.iDelay);
}

vcc.nav.swapAgi = function(oLink, bSetAsActive) {
	if (oLink.parentNode.className != "active") {
		var aLinkImages = oLink.getElementsByTagName("img");
		if (aLinkImages.length > 0 && aLinkImages[0].src.indexOf("_nav_model") > -1) {
			var oAgi = aLinkImages[0];
			var sImageSrc = oAgi.src;
			if (bSetAsActive) {
				if (sImageSrc.indexOf("_active") == -1)
					sImageSrc = sImageSrc.replace(/_nav_model/, "_nav_model_active");
			} else {
				sImageSrc = sImageSrc.replace(/_nav_model_active/, "_nav_model");
			}		
			oAgi.src = sImageSrc;					
		}
	}
}

vcc.nav.positionFlyout = function(oLink) {
	//offset vs position
	var iPageDivX = $("#page").offset().left;
	oLink = $(oLink);
	var iLinkX = oLink.offset().left;
	var iLinkFromPageDivX = iLinkX - iPageDivX;
	var iLinkWidth = oLink.innerWidth();	
	var oFlyout = vcc.nav.getFlyout();
	var iFlyoutWidth = 275;
	if (oFlyout.className.indexOf("section-2") > -1)
		iFlyoutWidth = 441;
	else if (oFlyout.className.indexOf("section-3") > -1)
		iFlyoutWidth = 650;
	else if (oFlyout.className.indexOf("section") > -1)
		iFlyoutWidth = 232;
	else if (oFlyout.className.indexOf("dealer") > -1)
		iFlyoutWidth = 232;
	var iLeft = 0;
	var iRight = 0;
	if (oFlyout.className == "dealer") {
		if (vcc.bIsRtl)
			iLeft = iLinkFromPageDivX - 10;
		else
			iLeft = iLinkFromPageDivX - (iFlyoutWidth - iLinkWidth) + 8;
		iTop = oLink.offset().top + oLink.height();
	} else if (oFlyout.className.indexOf("section-") > -1) {
		if (vcc.bIsRtl)
			iLeft = iLinkFromPageDivX - 35;
		else
			iLeft = iLinkFromPageDivX - (iFlyoutWidth - iLinkWidth) + 35;
		iTop = oLink.offset().top + oLink.height() - 2;
	} else {
		iLeft = iLinkFromPageDivX - ((iFlyoutWidth - iLinkWidth)/2);
		iTop = oLink.offset().top + oLink.height() - 2;
	}
	oFlyout.style.left = iLeft + "px";
	oFlyout.style.top = iTop + "px";
}

vcc.nav.getFlyout = function() {
	var oModelFlyout = document.getElementById("flyout");
	if (oModelFlyout == null) {
		oModelFlyout = document.createElement("div");
		//oModelFlyout.className = "flyout";
		oModelFlyout.id = "flyout";		
		var oFlyouts = document.getElementById("flyouts");
		if (oFlyouts == null) {
			oFlyouts = document.createElement("div");
			oFlyouts.id = "flyouts";
			document.getElementById("page").appendChild(oFlyouts);
		}
		oModelFlyout.style.display = "none";
		oFlyouts.appendChild(oModelFlyout);
		oModelFlyout.onmouseover = function() {
			if (oModelFlyout.className == "dealer")
				return;
			if (vcc.nav.oActiveFlyoutLink != null) {
				vcc.nav.oActiveFlyoutLink.className = "hover";
				vcc.nav.swapAgi(vcc.nav.oActiveFlyoutLink, true);
			}
			if (vcc.nav.oFlyoutTimeout != null)
				clearTimeout(vcc.nav.oFlyoutTimeout);
		}
		oModelFlyout.onmouseout = function() {
			if (oModelFlyout.className != "dealer")
				vcc.nav.hideFlyout();
		}
	}
	return oModelFlyout;
}

vcc.nav.aHiddenDropdowns = [];

vcc.nav.hideOverlappingDropdowns = function() {
	//vcc.aHiddenDropdowns = [];
	var aDropdowns = $("#content select");
	var oFlyout = document.getElementById("flyout");
	$.each(aDropdowns, function() {
		if (this.style.visibility != "hidden" && vcc.nav.elementsIntersect(oFlyout, this)) {
			vcc.nav.aHiddenDropdowns.push(this);
			this.style.visibility = "hidden";
		}
	});
}

vcc.nav.showOverlappingDropdowns = function() {
	for (var i = 0; i < vcc.nav.aHiddenDropdowns.length; i++) {
		vcc.nav.aHiddenDropdowns[i].style.visibility = "visible";
	}
	vcc.nav.aHiddenDropdowns = [];
}

vcc.nav.elementsIntersect = function(elm1, elm2) {
	elm1 = $(elm1);
	elm2 = $(elm2);
	var elm1Dimensions = { topLeftX: parseInt(elm1.offset().left), topLeftY: parseInt(elm1.offset().top), width: elm1.outerWidth(), height: elm1.outerHeight() };
	var elm2Dimensions = { topLeftX: parseInt(elm2.offset().left), topLeftY: parseInt(elm2.offset().top), width: elm2.outerWidth(), height: elm2.outerHeight() };
	
	return !((elm1Dimensions.topLeftY > elm2Dimensions.topLeftY + elm2Dimensions.height) || (elm1Dimensions.topLeftY + elm1Dimensions.height < elm2Dimensions.topLeftY) ||
		(elm1Dimensions.topLeftX > elm2Dimensions.topLeftX + elm2Dimensions.width) || (elm1Dimensions.topLeftX + elm1Dimensions.width < elm2Dimensions.topLeftX));
	
}

/* Left navigation */

vcc.nav.initLeftNavigation = function() {
	var oSideBarNav = document.getElementById("sidebar-nav");
	if (oSideBarNav == null)
		return;
	
	var iLevels = $("#sidebar-nav ul ul").length + 1;
	var aAlpha = ["8", "15", "30", "50"];
	
	var sCssRule = "#sidebar-nav ";
	for (var i = 0; i < iLevels; i++) {
		sCssRule += "ul ";
		var sBackgroundImageUrl = "images/layout/leftnav/active_";
		if (i == 0)
			sBackgroundImageUrl += "first_";
		else if (i == 1)
			sBackgroundImageUrl += "second_";
		else if (i == 2)
			sBackgroundImageUrl += "third_";
		else if (i == 3)
			sBackgroundImageUrl += "fourth_";		
		sBackgroundImageUrl += aAlpha[aAlpha.length - (iLevels - i)] + (($.browser.msie && $.browser.version=="6.0") ? ".gif" : ".png");
		$(sCssRule + "a.active").css({
			"background-image": "url(" + sBackgroundImageUrl + ")"
		});
		$(sCssRule + "a.active span").css({
			"background-image": "url(" + sBackgroundImageUrl + ")"
		});
	}
	
	var iLevel = 4;
	var sCssRule = "#sidebar-nav ul ul ul ul";
	while(iLevel > 1) {
		if ($(sCssRule).length > 0) {
			$(sCssRule).get(0).className = "last";
			var aListItems = $(sCssRule + " li");
			//$(sCssRule + " li:last").get(0).className = "last";
			var iListItemsCount = aListItems.length;
			$.each(aListItems, function(i) {
				var bLinkIsActive = ($("a.active", this).length > 0);
				if (i == iListItemsCount - 1) {					
					this.className = (bLinkIsActive) ? "last-active" : "last";
				} else {
					this.className = (bLinkIsActive) ? "active" : "";
				}	
			});
			
			break;
		}
		sCssRule = sCssRule.substring(0, sCssRule.length - 3);
		
		iLevel--;
	}
	
}
