window.onresize = checkSubnavPos;


//================================================================
//Scripts for Subnav-Menu
//===============================================================

//Variable f&uuml;r den popup-timer
var zu;

var subMenuActivated = 0;

//creating Subnav-SubMenu (dropdownbox)
function subMenu(whichMenu,whichLevel,whichPreselected) {
	//props for checking subnav-submenu-position
	if (whichLevel == 2) {
		this.top = 8;
	} else {
		this.top = 28;
	}
	//reading Menu-Array, writing HTML-Codes
	this.activeMenu = eval(whichMenu);

	this.subMenuItemsList = "";
	if (this.activeMenu != 0) {
		for (var i = 0; i < this.activeMenu.length; i+=2) {
			this.subMenuItemsList +=  this.activeMenu[i+1] + this.activeMenu[i] + "</a>";
		}
		this.subMenuItemsList = "<div id='subnav_sub_list'>" + this.subMenuItemsList + "</div>";
	}

}

//function for subnav-submenu-popup (dropdownbox)
//args = name of menuset 

function showSubMenu(whichMenu) {
	//workaround mozilla menuwidth bug
	if (navigator.appVersion.indexOf("MSIE") != -1) {
		document.getElementById("subnav_submenu").style.width = 155 + "px";
	} else {
		//document.getElementById("subnav_submenu").style.width = "auto";
		document.getElementById("subnav_submenu").style.width = 155 + "px";
		//mozilla clipping workaround
		document.getElementById("subnav").style.clip = "rect(auto,auto,800px,0px)";
	}
	document.getElementById("subnav_submenu").style.visibility = "hidden";
	document.getElementById("subnav_submenu").style.display = "none";
	//writing html-strings
	if (whichMenu.activeMenu != 0) {
		document.getElementById("subnav_submenu").innerHTML = whichMenu.subMenuItemsList;
		document.getElementById("subnav_submenu").style.display = "block";
	}
	//positioning menu-layers
	if (whichMenu.activeMenu != 0) {
		document.getElementById("subnav_submenu").style.top = whichMenu.top + "px";
		document.getElementById("subnav_submenu").style.visibility = "visible";
		document.getElementById("subnav_submenu").style.display = "block";
		document.getElementById("subnav_submenu").style.backgroundImage = "url(" + global_staticpath_images + "/bg_subnav_submenu.gif)";
	}
	//if there is no submenu
	else if (whichMenu.activeMenu == 0) {
		document.getElementById("subnav_submenu").style.visibility = "hidden";
		document.getElementById("subnav_submenu").style.display = "none";
	}
	//reset timeout
	window.clearTimeout(zu);
}


function submenuCollaps() {
	//verstecken des popup-menues
	window.clearTimeout(zu);
	document.getElementById("subnav_submenu").style.visibility="hidden";
	document.getElementById("subnav_submenu").style.display="none";
}

//************************************************************//
//functions for subnavigation fold show/hide
var subnavzu;
var subnavauf;
var slidetimer;
slidetoggle = 0;
var isIE = '';
if (navigator.appVersion.indexOf("MSIE") != -1)	isIE = true;

function subnavTimer() {
	if (!document.getElementById('subnav'))	return;
	window.clearTimeout(subnavzu);
	try {
		if (parseInt(currSubnavLeft) < cms4imp_fullStageWidth) {
			subnavauf = window.setTimeout("showSubnav()",50);
		}
	}
	catch (e) {
		// ignore
	}
}

function showSubnav() {
	if (slidetoggle==1)	return;
	var subnavContent=document.getElementById("subnav_content");
	if (!subnavContent || !subnavContent.childNodes || subnavContent.childNodes.length == 0) return;

	window.clearTimeout(subnavauf);
	document.getElementById("subnav").style.visibility="visible";
	document.getElementById("subnav").style.display = "block";
	document.getElementById("subnav").style.clip = "rect(auto,160px,auto,160px)";
	mycurrentwidth = 160;
	slidecount = 4;
	slideSubnavOn();
	slidetoggle=1;
}

function subnavCollaps() {
	if (!document.getElementById('subnav'))	return;
	try {
		if (parseInt(currSubnavLeft) < cms4imp_fullStageWidth) {
			window.clearTimeout(subnavauf);
			window.clearTimeout(subnavzu);
			slidecount = 8;
			mycurrentwidth=0;
			//window.clearTimeout(slidetimer);
			slideSubnavOff();
			slidetoggle=0;
		}
	}
	catch (e) {
		// ignore
	}
}
function dropdown_subnavmouseEnter() {
	window.clearTimeout(subnavzu);
	window.clearTimeout(slidetimer);
}

//**************************************************************//
function dropdown_mouseEnter() {
	window.clearTimeout(zu);
}

function dropdown_mouseLeave(whichMenu) {
	switch (whichMenu) {
	case 'main':
		zu = window.setTimeout("menuCollaps()",50);
		break;
	case 'sub':
		zu = window.setTimeout("submenuCollaps()",300);
		break;
	case 'subnav':
		subnavzu = window.setTimeout("subnavCollaps()",500);
		break;
	}
}

//===================================================
//functions for subnav-positioning
//===================================================

// allows to be overriden by templates with extra-wide stages
cms4imp_fullStageWidth = 640;
cms4imp_foldMinHeight = 227;

//detect mouse-over image position for correct layer positioning

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	} else if (obj.x) {
		curleft += obj.x;
	}
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	} else if (obj.y) {
		curtop += obj.y;
	}
	return curtop;
}

function getElementByClass(pClassName) {
	elements = window.document.getElementsByTagName('*');

	for (i=0; i<elements.length; i++) {
		if (elements[i].className == pClassName) {
			return elements[i];
		}
	}
}

function checkSubnavPos() {
	// Do nothing if there's no mainnav
	if (!document.getElementById('mainnav')) return;

	// Stretch the content frame at least as high as the mainnav
	var frame = getElementByClass("screen_640");
	var mainnav_end = document.getElementById("mainnav_end");
	if (frame && mainnav_end) {
		var posY = findPosY(mainnav_end);
		if ((findPosY(frame) + frame.offsetHeight) < posY) {
			var height = posY - findPosY(frame);
			if (navigator.appVersion.indexOf("MSIE") != -1) {
				frame.style.height = height + "px";
			} else {
				frame.style.minHeight = height + "px";
			}
		}
	}

	var currLeft = findPosX(document.getElementById('mainnav'));
	var currWidth = currLeft - cms4imp_fullStageWidth;
	var currBrowserWidth = currLeft + 140;
	
	if (!document.getElementById('subnav')) {
		// Set the background unconditionally if there's no subnav
		if (document.body.background && document.body.background.indexOf("/bg.gif") == -1) {
			document.body.background = global_staticpath_images + "/bg.gif";
		}
		return;
	}

	if (currWidth > 160) {
		document.getElementById("subnav").style.left = (currLeft - currWidth) + "px";
		document.getElementById("subnav").style.width = currWidth + "px";
	} else {
		document.getElementById("subnav").style.left = (currLeft - 160) + "px";
		document.getElementById("subnav").style.width = 160 + "px";
	}
	currSubnavLeft = document.getElementById("subnav").style.left;
	if (parseInt(currSubnavLeft) < cms4imp_fullStageWidth) {
		document.getElementById("subnav").style.visibility = "hidden";
	} else {
		document.getElementById("subnav").style.visibility = "visible";
		document.getElementById("subnav").style.display = "block";
		document.getElementById("subnav").style.clip = "rect(auto,auto,auto,0px)";
	}

	// resize the fold and set the background image depending on the subnav height
	var mysubnavheight = document.getElementById("subnav").offsetHeight;
	if (mysubnavheight < cms4imp_foldMinHeight) {
		document.getElementById("subnav").style.height = cms4imp_foldMinHeight + "px";
		if (document.body.background && document.body.background.indexOf("/bg.gif") == -1) {
			document.body.background = global_staticpath_images + "/bg.gif";
		}
	} else if (mysubnavheight > cms4imp_foldMinHeight && mysubnavheight < 468) {
		document.getElementById("subnav").style.height = 468 + "px";
		if (document.body.background && document.body.background.indexOf("/bg_long.gif") == -1) {
			document.body.background = global_staticpath_images + "/bg_long.gif";
		}
	} else if (cms4imp_foldMinHeight == 492) {
		if (document.body.background && document.body.background.indexOf("/bg_long2.gif") == -1) {
			document.body.background = global_staticpath_images + "/bg_long2.gif";
		}
	}

} 

//slide function for subnav fold
function slideSubnavOn() {
	slidecount = slidecount*2;  
	mycurrentwidth = (mycurrentwidth - slidecount); 
	var mycurrentrect = "rect(auto,160px,auto," + mycurrentwidth + "px)";
	if (isIE) {
		document.getElementById("subnav").style.clip = mycurrentrect; 
	} else {
		document.getElementById("subnav").style.visibility = "hidden";
		document.getElementById("subnav").style.clip = "rect(auto,160px,auto,0px)";
		document.getElementById("subnav").style.clip = mycurrentrect;
		document.getElementById("subnav").style.visibility = "visible";
	}
	if (mycurrentwidth<=0) {
		window.clearTimeout(slidetimer);slidetimer=0;
	} else {
		slidetimer = window.setTimeout("slideSubnavOn()",5);
	}
}

function slideSubnavOff() {
	slidecount = slidecount*3;
	mycurrentwidth = mycurrentwidth + slidecount;
	var mycurrentrect = "rect(auto,160px,auto," + mycurrentwidth + "px)";
	if (isIE) {
		document.getElementById("subnav").style.clip = mycurrentrect; 
	} else {
		document.getElementById("subnav").style.visibility = "hidden";
		document.getElementById("subnav").style.clip = "rect(auto,160px,auto,0px)";
		document.getElementById("subnav").style.clip = mycurrentrect;
		document.getElementById("subnav").style.visibility = "visible";
	}
	if (mycurrentwidth>=160) {
		window.clearTimeout(slidetimer);slidetimer=0;
	} else {
		slidetimer = window.setTimeout("slideSubnavOff()",1);
	}
}


//===============================
//image hilite without submenu-popup
//==============================
function mainButton(whichImg,offsrc,onsrc) {
	this.imgname = new Object(whichImg);
	this.imgname.createHiliteImages = createImgObjs;
	this.imgname.createHiliteImages(offsrc,onsrc,'');
}

//function for module m581
function stageButton(whichImg,offsrc,onsrc,hisrc) {
	this.imgname = new Object(whichImg);
	this.imgname.createHiliteImages = createImgObjs;
	this.imgname.createHiliteImages(offsrc,onsrc,hisrc);
}

//hilite-image method
function createImgObjs(offsrc,onsrc,hisrc,midsrc,big800,big1024,big1280) {
	this.offimg = new Image();
	this.offimg.src = offsrc;
	this.onimg = new Image();
	this.onimg.src = onsrc;
	this.hiliteimg = new Image();
	this.hiliteimg.src = hisrc;
	if (arguments.length > 3) {
		this.midimg = midsrc;
		this.big800 = big800;
		if (big1024) this.big1024 = big1024;
		if (big1280) this.big1280 = big1280;
	}
}

function showHigh(whichButton,whichPic) {
	if (whichPic == 0) document.images[whichButton.imgname].src = whichButton.imgname.onimg.src;
}

function resetHigh(whichButton,whichPic) {
	if (whichPic == 0) document.images[whichButton.imgname].src = whichButton.imgname.offimg.src;
}

//=========================================
//functions for crossbox
//=========================================

var inactiveEntry = '';
var activeEntry = '';
var activeEntryContent = '';
tabArray = new Array();

function switchBox(whichBox) {
	
	if (activeEntry) {
		document.getElementById(activeEntry).style.visibility = "hidden";
		document.getElementById(activeEntry).style.display = "none";
		document.getElementById(activeEntryContent).style.visibility = "hidden";
		document.getElementById(activeEntryContent).style.display = "none";
		if (activeEntry.indexOf("worldwide")!= -1) {
			document.getElementById('crossbox_world').style.visibility = "hidden";
			document.getElementById('crossbox_world').style.display = "none";
		}
		document.getElementById(inactiveEntry).style.visibility = "visible";
		document.getElementById(inactiveEntry).style.display = "block";
		if (navigator.appVersion.indexOf("MSIE") == -1) {
			document.getElementById(inactiveEntry).style.height = 17 + "px";
			document.getElementById(inactiveEntry).style.borderTop = "solid 1px #262626";
			document.getElementById(inactiveEntry).style.paddingTop = "2px";
		}
	}
	var myEntry = whichBox + "_a";
	var myEntryContent = whichBox + "_b";
	activeEntry = myEntry;
	activeEntryContent = myEntryContent;
	inactiveEntry = whichBox;
	if (navigator.appVersion.indexOf("MSIE") == -1) {
		document.getElementById(whichBox).style.height = 0 + "px";
		document.getElementById(whichBox).style.border = 0 + "px";
		document.getElementById(whichBox).style.padding = 0 + "px";
	} else {
		document.getElementById(whichBox).style.visibility = "hidden";
		document.getElementById(whichBox).style.display = "none";   
	}
	document.getElementById(activeEntry).style.visibility = "visible";
	document.getElementById(activeEntry).style.display = "block";
	document.getElementById(activeEntryContent).style.visibility = "visible";
	document.getElementById(activeEntryContent).style.display = "block";
	document.getElementById(activeEntryContent).style.height = 67 + "px";
	if (whichBox.indexOf("worldwide")!= -1) {
		document.getElementById('crossbox_world').style.visibility = "visible";
		document.getElementById('crossbox_world').style.display = "block";
	}

}

var crossboxInitialized = false;

function initCrossbox(whichCB) {

	var CBnum = tabArray.length;
	for (i=0;i<CBnum;i++) {
		var myEntry = tabArray[i] + "_a";
		var myEntryContent = tabArray[i] + "_b";
		document.getElementById(myEntry).style.visibility = "hidden";
		document.getElementById(myEntry).style.display = "none";
		document.getElementById(myEntryContent).style.visibility = "hidden";
		document.getElementById(myEntryContent).style.display = "none"; 
	}

	if (document.getElementById(whichCB)) {
		var myEntry = whichCB + "_a";
		var myEntryContent = whichCB + "_b";
		activeEntry = myEntry;
		activeEntryContent = myEntryContent;
		inactiveEntry = whichCB;
		document.getElementById(whichCB).style.visibility = "hidden";
		document.getElementById(whichCB).style.display = "none";
		document.getElementById(activeEntry).style.visibility = "visible";
		document.getElementById(activeEntry).style.display = "block";
		document.getElementById(activeEntryContent).style.visibility = "visible";
		document.getElementById(activeEntryContent).style.display = "block";
	}

	crossboxInitialized = true;  
}

//counting tabs for default ibox display
function countTab(whichTab) {
	tabArray[tabArray.length] = whichTab;
}

/**
 * Defines a link reference.
 * @param pTitle Link title.
 * @param pURL for link. Can be URL or javascript: call (optional).
 */
var crossbox_link = function(pTitle, pURL) {
  this.title = pTitle;
  this.url = pURL;
}

function renderLoginArea(pLoggedOutLinks, pLoggedInLinks, pText) {
	var name = getCookie("myAudi.name");
	if (name != null) {
		pText = pText.replace(/\{0\}/, name);
		document.write("<div class=\"crossbox_text\">");
		document.write(pText);
		document.write("</div>");
		for (var i in pLoggedInLinks) {
			renderLink(pLoggedInLinks[i]);
		}
		initCrossbox('login');
	} else {
		for (var i in pLoggedOutLinks) {
			renderLink(pLoggedOutLinks[i]);
		}
	}
}

function renderLink(pLink) {
	document.write("<div class=\"crossbox_link\">");
	if (pLink.url.length > 0) {
		document.write("<a href=\"" + pLink.url + "\">");
	}
	document.write("<img src=\"" + global_staticpath_images + "/arrow_orange.gif\" width=\"9\" height=\"9\" alt=\"&gt;\" class=\"crossbox_arrow\">");
	if (pLink.url.length > 0) {
		document.write("</a>");
	}
	if (pLink.url.length > 0) {
		document.write("<a href=\"" + pLink.url + "\">");
	}
	document.write(pLink.title);
	if (pLink.url.length > 0) {
		document.write("</a>");
	}
	document.write("</div>");
}

/** This variable can be overriden to provide an alternative redirect URL */
var cms4imp_base_sso_redirect_url = location.href;

/**
 * Constructs a SSO redirect URL from the given standard login
 * URL and the contents of cms4imp_base_sso_redirect_url.
 * @param pLoginURL Login URL
 */
function getLoginURL(pLoginURL) {
	var loginURL = pLoginURL.substring(0, pLoginURL.lastIndexOf("redirect_url") + "redirect_url".length);
	loginURL += encodeURIComponent(encodeURIComponent("=" + cms4imp_base_sso_redirect_url));
	return loginURL;
}

/**
 * Functions for the route tab of the crossbox.
 */
function openRoute(pURL, pPartnerID, pStreetDummy, pZipDummy, pCityDummy, pNewWindow) {
	var street	= document.forms["routeform"]["street"].value;
	var zip		= document.forms["routeform"]["zip"].value;
	var city	= document.forms["routeform"]["city"].value;
	
	if (street == pStreetDummy) street = "";
	if (zip == pZipDummy) zip = "";
	if (city == pCityDummy) city = "";
	
	var params = "ID=" + pPartnerID;
	if (street || zip || city) {
		params += "&ZS=" + street;
		params += "&ZP=" + zip;
		params += "&ZO=" + city;
		params += "&BUTTON=SEARCH";
	}
	
	var targetUrl = pURL;
	if (targetUrl.indexOf("?") > 0) {
	  targetUrl += "&" + params;
	}
	else {
	  targetUrl += "?" + params;
	}
	
	if (pNewWindow) {
		fenster=window.open(targetUrl,"Anfahrtsroute","width=639,height=545,top=120,left=210");
		if (typeof(fenster.focus) == "function" || typeof(fenster.focus) == "object"){
			fenster.focus();
		}
	}
	else {
	  window.location = targetUrl;
	}
}

function crossboxRouteSubmitEnter(pField, pEvent, pURL, pPartnerID, pStreetDummy, pZipDummy, pCityDummy, pNewWindow) {
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (pEvent) keycode = pEvent.which;
	else return true;
	if (keycode == 13) {
		openRoute(pURL, pPartnerID, pStreetDummy, pZipDummy, pCityDummy);
		return false;
	} else {
		return true;
	}
}

//=========================================
//functions for item_select
//=========================================
function handleSelection(whichForm) {
	try {
		eval(whichForm.item_select.options[whichForm.item_select.selectedIndex].value);
	}
	catch (ex) {
		// Ignore
	}
	return false;
}
