/**
 * This file includes JavaScript functions for the navigation elements.
 */
var /*HashMap*/ ms_corenav_elementsLoaded = new Object();
var /*HashMap*/ ms_corenav_elementsSelected = new Object();
var /*AJAXConnector*/ ajaxConnector = new AJAXConnector( );

function /*void*/ ms_corenav_handleRequest(status, data, param, type, statusmsg) {
	if(status == AJAXConnector.SUCCID_LOAD && type == AJAXConnector.RESPONSE_TEXT) {
		ms_corenav_printFlyout(param, data);
	}
}

function /*void*/ ms_corenav_loadFlyoutData(/*String*/ elementId, /*String*/ handle) {
	// Return, if no handle was given
	if (!handle || handle == "") {
		return;
	}
	
	// Process Ajax, if element has not been loaded yet
	if (ms_corenav_elementsLoaded[elementId] == undefined) {
		// Send Ajax request
		ajaxConnector.registerDataHandler(ms_corenav_handleRequest);
		ajaxConnector.setMaxRequestTime(10000);
		ajaxConnector.sendRequest(handle + ".ajax.component.corenavigation2.corenavigation2_Single.corenavigation2.html", "", AJAXConnector.REQUEST_GET, elementId);
	}
}

function /*void*/ ms_corenav_printFlyout(/*String*/ elementId, /*String*/ data) {
	// Print to Layer
	if (getLayer(elementId) != undefined) {
		// Replace elementId spacer
		data = data.replace(/{elementId}/g, elementId);
	
		// Paste response to layer
		getLayer(elementId).innerHTML = data;
		
		// Set counter for this elementId
		var /*int*/ counter = getLayer(elementId).getElementsByTagName("ul")[0].childNodes.length
		ms_corenav_elementsLoaded[elementId] = counter;

		// Init first list entry
		var /*List*/ links = getLayer(elementId).getElementsByTagName("li");
		if (links[0].firstChild) {
			ms_corenav_changeFlyout(links[0].firstChild, elementId, 0);
			ms_corenav_resetFlyout(links[0].firstChild, elementId, 0);
		}
	}
}

function ms_corenav_resetFlyout(/*XMLNode*/ callerObj, /*String*/ elementId, /*int*/ item) {
	// Get current marked node
	var /*XMLNode*/ current = ms_corenav_elementsSelected[elementId];
	
	// Reset the current class for IE
	if (document.all) {
		current.className = "ms-hover";
	}
}

function ms_corenav_changeFlyout(/*XMLNode*/ callerObj, /*String*/ elementId, /*int*/ item) {
	// Get current marked node
	var /*XMLNode*/ current = ms_corenav_elementsSelected[elementId];
	
	// IllegalArgumentException
	if (item < 0) {
		return;
	}

	// Check if current element has changed
	if (current == callerObj) {
		return;
	}

	// Reset previous marked element
	if (current != undefined) {
		if (current.className) {
			current.className = '';
		} else {
			current.removeAttribute("class");
		}
	}
	
	// Set current marked element
	if (callerObj.className) {
		callerObj.className = 'ms-hover';
	} else {
		callerObj.setAttribute("class", "ms-hover");
	}
	ms_corenav_elementsSelected[elementId] = callerObj;
	
	// Set all display:none
	// because the sequence in some links are 1, 2, 4, 5 and not (0,1,2,3), +10 for the circle
	for (var /*int*/ i = 0; i <= (ms_corenav_elementsLoaded[elementId] + 10); i++) {
		layerR = getLayer(elementId + "-r" + i);
		layerB = getLayer(elementId + "-b" + i);
		if (layerR){
			layerR.style.display = "none";
		}
		if (layerB){
			layerB.style.display = "none";
		}
	}
	
	// Set specified number display:block
	getLayer(elementId + "-r" + item).style.display = "block";
	getLayer(elementId + "-b" + item).style.display = "block";
}

var /*Boolean*/ ms_setIFrameHeight_stopper = false;
function ms_setIFrameHeight(/*String*/flyoutId) {
	// Only IE6
	if (!window.attachEvent || window.opera || window.XMLHttpRequest) return;
	// Get IFrame and FlyOut element
	if (flyoutId == '') return;
	// Only CORE NAV Flyout Type 2
	
	var flyout = document.getElementById(flyoutId);
	var /*XMLNode*/ iframe = flyout.getElementsByTagName("IFRAME")[0];
	if (!iframe) return;
	var /*XMLNode*/ list = flyout.getElementsByTagName("UL")[0];
	if (!list) return;
	var /*NodeList*/ lists = flyout.getElementsByTagName("UL");
	if (!lists) return;
	var /*int*/ height = 0;
	for (var i = 0; i < lists.length; i++) {
		height += lists.item(i).offsetHeight;
	}
			
	flyout.style.display = "";
	if (!ms_setIFrameHeight_stopper) {
		// Sometimes IE needs some time to render the hidden
		// elements, so we give it 25 additional milliseconds.
		ms_setIFrameHeight_stopper = true;
		setTimeout("ms_setIFrameHeight('" + flyoutId + "')", 25);
		return;
	} else if (ms_setIFrameHeight_stopper) {
		ms_setIFrameHeight_stopper = false;
	}
	
	// Set height on IFrame. In some cases the height of the iframe must be
	// larger than that of the list because the whole flyout is larger.
	if(iframe.parentNode.className == 'ms-navi-main-fly-v2-1'){
		iframe.style.height = (height + 18) + "px";
	}
	else if(iframe.parentNode.className == 'ms-navi-main-fly-v1-1'){
		iframe.style.height = 390 + "px";
	}
	else if(iframe.parentNode.parentNode.className && iframe.parentNode.parentNode.className.indexOf('ms-navi-main-fly-v3') != -1){
		iframe.style.height = 395 + "px";
	}
	else{
		iframe.style.height = height + "px";
	}
}

//functions for the CRM part of the MetaNav
var /*boolean*/ ms_updateMetaNav = false;
function getCorrectMetaNav(salStructure){
	ms_updateMetaNav = true;
	
	var elem = document.getElementById("cs-salutation");
	if (elem) {
		var salutation = document.getElementById("cs-salutation").innerHTML;
		var greeting = buildGreetingString(salStructure);
		
		elem.innerHTML = salutation + greeting;
	}
	
	updateMetaNavigation();
}

function updateMetaNavigation() {
	if (!ms_updateMetaNav) {
		return;
	}
	
	var userProfile = embGetProfileManager();
	var isLoggedIn = userProfile.isLoggedIn();
	var isSoftLoggedIn = userProfile.isSoftLoggedIn();

	// Meta Navigation
	if(isLoggedIn){
		var elem;
		elem = document.getElementById("loggedoutul");
		if (elem) {
			elem.style.display='none';
		}
		elem = document.getElementById("loggedinul");
		if (elem) {
			elem.style.display='block';
		}
	}
	else {
		var elem;
		elem = document.getElementById("loggedinul");
		if (elem) {
			elem.style.display='none';
		}
		elem = document.getElementById("loggedoutul");
		if (elem) {
			elem.style.display='block';
		}
	}
}

//get the correct form of the CoreNav3
var /*boolean*/ ms_updateNavigation3 = false;
var /*boolean*/ ms_correctNav3ShowDF = false;
var /*boolean*/ ms_correctNav3ShowDMBP = false;
function getCorrectNav3(showdf, showdmbp){
	ms_updateNavigation3 = true;
	ms_correctNav3ShowDF = showdf;
	ms_correctNav3ShowDMBP = showdmbp;
	updateNavigation3();
}

// update navigation 3
function updateNavigation3() {
	if (!ms_updateNavigation3) {
		return;
	}
	
	var userProfile = embGetProfileManager();
	var isLoggedIn = userProfile.isLoggedIn();
	var isRegistered = !userProfile.isUnregistered();
	var hasFavoriteSet = userProfile.getFavoriteBmCode() && userProfile.getFavoriteBmCode().length > 0;
	var hasDealerSet = userProfile.getDealerName1() && userProfile.getDealerName1().length > 0;
	
	// Core Navigation 3
	if(isRegistered){
		var dealer = userProfile.getDealerName1() + "<br>";
		dealer = dealer + userProfile.getDealerName2() + "<br>";
		dealer = dealer + userProfile.getDealerStreet() + "<br>";
		dealer = dealer + userProfile.getDealerZIP() + " ";
		dealer = dealer + userProfile.getDealerCity();
		var dynPicture = userProfile.getFavoriteImgSmallUrl();
		
		var dynFavorite = userProfile.getFavoriteName();
		document.getElementById("showifnotloggedin").style.display='none';
		document.getElementById("showifnotloggedin").parentNode.style.display='none';
		if(ms_correctNav3ShowDF && hasFavoriteSet){
			var doomedElem = document.getElementById("crm-favorite-static");
			if (doomedElem) {
				doomedElem.parentNode.removeChild(doomedElem);
			}
			if (document.getElementById("loggedinpic").firstChild) {
				document.getElementById("loggedinpic").firstChild.removeAttribute("src");
				document.getElementById("loggedinpic").firstChild.setAttribute("src", dynPicture);
			} else {
				document.getElementById("loggedinpic").innerHTML = "<img src='" + dynPicture + "' />"
			}
			document.getElementById("loggedinfav").innerHTML = dynFavorite;
		} else {
			var doomedElem = document.getElementById("crm-favorite-dynamic");
			if (doomedElem) {
				doomedElem.parentNode.removeChild(doomedElem);
			}
		}
		if(ms_correctNav3ShowDMBP && hasDealerSet){
			var doomedElem = document.getElementById("crm-mbpartner-static");
			if (doomedElem) {
				doomedElem.parentNode.removeChild(doomedElem);
			}
			document.getElementById("loggedindealer").innerHTML = dealer;
		} else {
			var doomedElem = document.getElementById("crm-mbpartner-dynamic");
			if (doomedElem) {
				doomedElem.parentNode.removeChild(doomedElem);
			}
		}
		document.getElementById("showifloggedin").style.display='block';
	}
	else{
		document.getElementById("showifloggedin").style.display='none';
		document.getElementById("showifloggedin").parentNode.style.display='none';
		document.getElementById("showifnotloggedin").style.display='block';
	}
}
var /*boolean*/ ms_updateNavigation3CRM2 = false;

function getCorrectNav3CRM2(){
	ms_updateNavigation3CRM2 = true;
	updateNavigation3CRM2();
}

// update navigation 3
function updateNavigation3CRM2() {
	if (!ms_updateNavigation3CRM2) {
		return;
	}
	var userProfile = embGetProfileManager();
	var isLoggedIn = userProfile.isLoggedIn();
	var isUnregistered = userProfile.isUnregistered();
	var isSoftLoggedIn = userProfile.isSoftLoggedIn();
	
	var hasFavorite = userProfile.getFavoriteBmCode() && userProfile.getFavoriteBmCode().length > 0;
	var hasVehiclesSet = userProfile.getVehicles() && userProfile.getVehicles().length > 0;
	var hasDealerSet = userProfile.getDealerName1() && userProfile.getDealerName1().length > 0;
	var	configuredVehiclesCount = userProfile.getConfiguredVehiclesCount();
	var	ownedVehiclesCount = userProfile.getOwnedVehiclesCount() ;
	var	ownedMainVehicleName = userProfile.getOwnedMainVehicleName();											   
	var hasOwnedMainVehicle = userProfile.getOwnedMainVehicleName() && userProfile.getOwnedMainVehicleName().length > 0 
							&& userProfile.getOwnedMainVehicleByCustomer().length > 0 && userProfile.getOwnedMainVehicleByCustomer()== "true";
	var ownedMainVehicleBmCode=userProfile.getOwnedMainVehicleBmCode();	
	
	var dynLink ="";
	if(userProfile.getOwnedMainVehicleBmCode()&& ownedMainVehicleBmCode.length > 0){
		dynLink=document.location.pathname.replace(".redirect", "");
		dynLink=dynLink.replace(".flash", "");
		dynLink=dynLink.replace(".https", "");
		dynLink=dynLink.replace(".html",".redirect.html")+"?symbolictarget=12";
	}
	var dynFavoritePicture = userProfile.getFavoriteImgSmallUrl();
	var dynownedMainVehiclePicture = userProfile.getOwnedMainVehicleImgSmallUrl();
	
	var	singleConfiguredVehicleName = userProfile.getSingleConfiguredVehicleName();	
	var singleConfiguredVehiclePicture = userProfile.getSingleConfiguredVehicleImgSmallUrl();
	
	var	singleOwnedVehicleName = userProfile.getSingleOwnedVehicleName();	
	var singleOwnedVehicleImgSmallUrl = userProfile.getSingleOwnedVehicleImgSmallUrl();
	var singleOwneddynLink ="";
	var singleOwnedVehicleBmCode=userProfile.getSingleOwnedVehicleBmCode();
	// no mercedes benz as owned main vehicle
	var ownedMainVehicleForeignLabel = (userProfile.getOwnedMainVehicleByCustomer().length > 0 && userProfile.getOwnedMainVehicleByCustomer()== "true" )
		|| (!singleOwnedVehicleImgSmallUrl && !singleOwnedVehicleName);
	
	if(userProfile.getSingleOwnedVehicleBmCode()&& singleOwnedVehicleBmCode.length > 0){
		singleOwneddynLink=document.location.pathname.replace(".redirect", "");
		singleOwneddynLink=singleOwneddynLink.replace(".flash", "");
		singleOwneddynLink=singleOwneddynLink.replace(".https", "");	
		singleOwneddynLink=singleOwneddynLink.replace(".html",".redirect.html")+"?symbolictarget=12";
	
	}	
	
	// Core Navigation 3
	if(isUnregistered){	
		document.getElementById("showifloggedin_crm2").style.display='none';
		document.getElementById("showifloggedin_crm2").parentNode.style.display='none';
		document.getElementById("showifunregistered").style.display='block';
	}else{
		document.getElementById("showifunregistered").style.display='none';
		document.getElementById("showifunregistered").parentNode.style.display='none';
		var dealer = userProfile.getDealerName1() + "<br>";
		dealer = dealer + userProfile.getDealerName2() + "<br>";
		dealer = dealer + userProfile.getDealerStreet() + "<br>";
		dealer = dealer + userProfile.getDealerZIP() + " ";
		dealer = dealer + userProfile.getDealerCity();
		var dynPicture = userProfile.getFavoriteImgSmallUrl();
		var dynFavorite = userProfile.getFavoriteName();
		//START MY owned vehicles Box
		//No owned vehicles saved
		if(ownedVehiclesCount == 0 || ownedVehiclesCount == undefined){
			document.getElementById("no_veh_hl").style.display='block';
			document.getElementById("no_veh_link").style.display='block';		
		}
		//one saved vehicle & softlogin
		else if(ownedVehiclesCount == 1  && isSoftLoggedIn){
			document.getElementById("one_veh_soft_hl").style.display='block';
			document.getElementById("one_veh_soft_link").style.display='block';		
		}
		//one saved vehicle saved & logged in & main vehicle is a Mercedes Benz
		else if(ownedVehiclesCount == 1  && isLoggedIn && !ownedMainVehicleForeignLabel){
			document.getElementById("one_veh_soft_hl").style.display='block';
			document.getElementById("loggedinpic_one_veh_soft").innerHTML = "<img src='" + singleOwnedVehicleImgSmallUrl + "' />";
			document.getElementById("loggedinpic_one_veh_soft").style.display='block';
			
			if(singleOwneddynLink.length > 0){
				document.getElementById("one_veh_soft_link").innerHTML="<li><a href='" + singleOwneddynLink + "'>"+ singleOwnedVehicleName+ "</a></li>";		
				document.getElementById("one_veh_soft_link").style.display='block';	
			}	
		}
		//n owned vehicles saved with or without main vehicle & softlogin
		else if(ownedVehiclesCount > 1 && isSoftLoggedIn){
			document.getElementById("sev_veh_hl").style.display='block';
			document.getElementById("sev_veh_link").style.display='block';
			
		}
		//one owned vehicles saved & softlogin & main vehicle is not a Mercedes Benz
		else if(ownedVehiclesCount == 1 && isLoggedIn && ownedMainVehicleForeignLabel){
			document.getElementById("sev_veh_hl").style.display='block';
			document.getElementById("sev_veh_link").style.display='block';
			
		}	
		//n owned vehicles saved with main vehicle & logged in
		else if(ownedVehiclesCount > 1 && isLoggedIn && hasOwnedMainVehicle){
			document.getElementById("main_veh_hl").style.display='block';
			document.getElementById("loggedinpic_main_veh").innerHTML = "<img src='" + dynownedMainVehiclePicture + "' />";
			if(dynLink.length > 0){
				document.getElementById("main_veh_link").innerHTML="<li><a href='" + dynLink + "'>"+ ownedMainVehicleName+ "</a></li>";		
				document.getElementById("main_veh_link").style.display='block';	
			}
			
			document.getElementById("loggedinpic_main_veh").style.display='block';
			
		}
		//n owned vehicles saved  without main vehicle & logged in
		else if(ownedVehiclesCount > 1 && isLoggedIn && !hasOwnedMainVehicle){
			document.getElementById("no_main_veh_hl").style.display='block';
			document.getElementById("no_main_veh_link").style.display='block';	
			
		}		
		//END MY owned vehicles Box
		
		//START MY configured vehicles Box
		//NO configured vehicles saved
		if(configuredVehiclesCount == 0 || configuredVehiclesCount == undefined){
		
			document.getElementById("no_conf_hl").style.display='block';
			document.getElementById("no_conf_link").style.display='block';		
		}
		//one vehicle saved or n configured vehicles saved & Favourite determined 		
		else if(configuredVehiclesCount > 0 && hasFavorite){			
			document.getElementById("conf_w_fav_hl").style.display='block';
			document.getElementById("loggedinpic_conf_w_fav").innerHTML = "<img src='" + dynFavoritePicture + "' />"
			document.getElementById("loggedinpic_conf_w_fav").style.display='block';
			document.getElementById("loggedinfav_conf_w_fav").innerHTML = dynFavorite;
			document.getElementById("loggedinfav_conf_w_fav").style.display='block';
			document.getElementById("conf_w_fav_link").style.display='block';		
		}
		//one vehicle saved & no Favourite determined
		else if(configuredVehiclesCount == 1 && !hasFavorite){			
			document.getElementById("one_conf_wout_fav_hl").style.display='block';
			document.getElementById("loggedinpic_one_conf_wout_fav").innerHTML = "<img src='" + singleConfiguredVehiclePicture + "' />"
			document.getElementById("loggedinpic_one_conf_wout_fav").style.display='block';
			document.getElementById("loggedinfav_one_conf_wout_fav").innerHTML = singleConfiguredVehicleName;
			document.getElementById("loggedinfav_one_conf_wout_fav").style.display='block';
			document.getElementById("one_conf_wout_fav_link").style.display='block';					
		}
		//n configured vehicles saved & no favourite determined 
		else if(configuredVehiclesCount > 1 && !hasFavorite){			
			document.getElementById("se_conf_wout_fav_hl").style.display='block';
			document.getElementById("se_conf_wout_fav_link").style.display='block';	
		}
	
		//END MY configured vehicles Box	
		
	document.getElementById("showifloggedin_crm2").style.display='block';
	}
	
}


function buildGreetingString(greetingPattern) {
	
	var userProfile = embGetProfileManager();
	var greeting = greetingPattern.toString();
	
	greeting = greeting.replace(/%a/, userProfile.getSalutation());
	
	if (greeting.indexOf("%t") != -1) {
		var title = userProfile.getTitle();
		if (title && title.length > 0) {
			greeting = greeting.replace(/%t/, title);
		} else {
			greeting = greeting.replace(/%t/, "");
		}
	}
	
	greeting = greeting.replace(/%f/, userProfile.getFirstName());
	
	if (greeting.indexOf("%m") != -1) {
		var secondFirstName = userProfile.getSecondFirstName();
		if (secondFirstName && secondFirstName.length > 0) {
			greeting = greeting.replace(/%m/, secondFirstName);
		} else {
			greeting = greeting.replace(/%m/, "");
		}
	}
	
	greeting = greeting.replace(/%l/, userProfile.getLastName());
	
	if (greeting.indexOf("%s") != -1) {
		var secondLastName = userProfile.getSecondLastName();
		if (secondLastName && secondLastName.length > 0) {
			greeting = greeting.replace(/%s/, secondLastName);
		} else {
			greeting = greeting.replace(/%s/, "");
		}
	}
	
	return greeting;
}
function setHighlightNavi(elemID,elemLabel) {
	if (location.href.indexOf(elemLabel) != -1) {			
		//document.getElementById(elemID).setAttribute("class", "ms-active");
		var urlpart = window.location.href.substr(window.location.href.indexOf("/content/"),window.location.href.length);
		//var jsPattern =/content\/.*?\/.*?\/.*?\/.*?\/.*?\/.*?\/.*?\/.*?\/(.*?)/gi;
		//var test=jsPattern.exec(urlpart);		
		var urlArray=urlpart.split("/");
		var index=9;// index of Navigation  		
			if(elemLabel == urlArray[index]){
				var obj = document.getElementById(elemID);
				obj.className = 'ms-active';
				//document.getElementById(elemID).setAttribute('class', 'ms-active');
				}
		}
	}

