
var	caCatalogId = '';

var caNavi = (function(){
	var	caNaviReq = null;
	var	caNavi = null;
	var	caNavArray = [];
	var	caNavArrayBrands = [];
	var	caNavArraySpecials = [];
	var	caNavArraySpecialsKids = [];
	var	caNavArraySpecialsMinis = [];		

	var	caNaviSpecialsReq = null;
	var	caNaviSpecials = null;

	var	caNaviSubShow = 0; // Anzahl an Menüebenen, die angezeigt werden

	var	caLevel3Zusatz = [];
	var caLevel4Zusatz = [];
	var	caLevel3Zusatz = [];
	var caLevel4Zusatz = [];

	function loadNaviXML(naviFileName)
	{
		var			funcObj=new Object();
		var			zusatz='';

		switch (caGetNaviLevel1())
		{
			case 'Women':
				zusatz = 'Women_';
				caNaviSubShow = 1;
				break;

			case 'Men':
				zusatz = 'Men_';
				caNaviSubShow = 1;
				break;

			case 'Babies':
				zusatz = 'Babies_';
				caNaviSubShow = 1;
				break;

			case 'Girls':
				zusatz = 'Girls_';
				caNaviSubShow = 2;
				break;

			case 'Boys':
				zusatz = 'Boys_';
				caNaviSubShow = 2;
				break;

			case 'Young Fashion':
				zusatz = 'Young_Fashion_';
				caNaviSubShow = 2;
				break;

			case 'New':
				zusatz = 'Neuheiten_';
				caNaviSubShow = 0;
				break;

			case 'Sale':
				zusatz = 'Sale_';
				caNaviSubShow = 0;
				break;
		}

		naviFileName = naviFileName.replace(".xml", "_"+caLanguage.toUpperCase()+".xml");

		funcObj.func = caOnLoadNaviComplete;

		caNaviReq = new AJAXRequest();
		caNaviReq.addEvent(STATE_READY, funcObj);
		caNaviReq.setURL('../JSNavi/' + zusatz + naviFileName + caGetCacheParam());
		caNaviReq.load();
	}

	function caOnLoadNaviComplete()
	{

		var			xmlObj=new XML.ObjTree();
		var			naviTxt=this.objXML.responseText;
		var			funcObjSpecials=new Object();
		var			showGenderSelect=(caNaviSubShow == 2) && caGetNaviLevel2() == '';

		caNavi = xmlObj.parseXML(unescape(naviTxt)).root;
		if (typeof caNavi == 'object');
		{		
			if (caGetNaviLevel1() != "Service" && caGetNaviLevel1() != "Meta" )
				caFillNavArray(caNavi);	
			caWriteNavi();
			if (showGenderSelect)
				caWriteGirlsBoysSpecials(caNavArray);
			caWriteNaviBrands();
		}

		// Specials navi.
		if (caNaviSubShow < 1 || caGetNaviLevel1() == "Service" || caGetNaviLevel1() == "Meta")
			return;

		funcObjSpecials.func = caOnLoadNaviSpecialsComplete;

		caNaviSpecialsReq = new AJAXRequest();
		caNaviSpecialsReq.addEvent(STATE_READY, funcObjSpecials);
		caNaviSpecialsReq.setURL('../JSNavi/specials_'+caLanguage.toUpperCase()+'.xml' + caGetCacheParam());
		caNaviSpecialsReq.load();
	}

	function caOnLoadNaviSpecialsComplete()
	{
		var			xmlObj=new XML.ObjTree();
		var			naviTxt=this.objXML.responseText;


		caNaviSpecials = xmlObj.parseXML(unescape(naviTxt)).root;

		caFillNavArray(caNaviSpecials);
		if (caNavArraySpecials[caNavArraySpecials.length-1].name == "Angebot der Woche")
		{
			// Punk an erster Stelle einsortieren.
			var			tmpArr=new Array();
			tmpArr[tmpArr.length] = caNavArraySpecials[caNavArraySpecials.length-1];
			for (var i=0;i<caNavArraySpecials.length-1;++i)
			{
				tmpArr[tmpArr.length] = caNavArraySpecials[i];
			}
			caNavArraySpecials = tmpArr;
		}
		caWriteNaviSpecials();
	}

	function caFillNavArray(naviTree)
	{
		var			i;
		var			j;
		var			k;
		var			l;
		var			isActive;
		var			lv1trans = '';

		if (typeof naviTree.c == 'undefined')
			return '';
		if (typeof naviTree.c.length == 'undefined')
			naviTree.c = new Array(naviTree.c);

		for (i=0;i<naviTree.c.length;++i)
		{
			// Hack for New / Neuheiten diff
			if (caGetNaviLevel1() == 'New')
				lv1trans = 'Neuheiten';
			else
				lv1trans = caGetNaviLevel1();

			if (naviTree.c[i]['-cn'] != lv1trans || 
					typeof naviTree.c[i].c == 'undefined')
				continue;

			if (typeof naviTree.c[i].c.length == 'undefined')
				naviTree.c[i].c = new Array(naviTree.c[i].c);

			for (j=0;j<naviTree.c[i].c.length;++j)
			{
				// Hack for level2 == empty.
				if (naviTree.c[i].c[j]['-cn'] == 'Empty')
					naviTree.c[i].c[j]['-cn'] = '';

				// New / Sale
				if (caNaviSubShow == 0)
				{
					caNavArray[caNavArray.length] = { "level": "2", "active": 'false', "id": naviTree.c[i].c[j]['-ID'], "name": naviTree.c[i].c[j]['-cn'] };

					if (caGetNaviLevel2() != naviTree.c[i].c[j]['-cn'])
				 		continue;
				}

				if (caNaviSubShow == 2)
					caNavArray[caNavArray.length] = { "level": "2", "active": 'false', "id": naviTree.c[i].c[j]['-ID'], "name": naviTree.c[i].c[j]['-cn'] };

				// Girls und Boys nach "Minis" und "Kids" filtern.
				if ((caGetNaviLevel2().indexOf("Minis") >= 0 && naviTree.c[i].c[j]['-cn'].indexOf("Minis") < 0) || (caGetNaviLevel2().indexOf("Kids") >= 0 && naviTree.c[i].c[j]['-cn'].indexOf("Kids") < 0))
					continue;
				if ((caGetNaviLevel2().indexOf("Girls") >= 0 && naviTree.c[i].c[j]['-cn'].indexOf("Girls") < 0) || (caGetNaviLevel2().indexOf("Boys") >= 0 && naviTree.c[i].c[j]['-cn'].indexOf("Boys") < 0))
					continue;

				if (typeof naviTree.c[i].c[j].c.length == 'undefined')
					naviTree.c[i].c[j].c = new Array(naviTree.c[i].c[j].c);

				for (k=0;k<naviTree.c[i].c[j].c.length;++k)
				{
					isActive = naviTree.c[i].c[j].c[k]['-cn'] == caGetNaviLevel3();

					// Add Division.
					if (naviTree.c[i].c[j]['-cn'].indexOf("Marken") == 0)
						caNavArrayBrands[caNavArrayBrands.length] = { "level": "3", "active": isActive, "id": naviTree.c[i].c[j].c[k]['-ID'], "name": naviTree.c[i].c[j].c[k]['-cn'] };
					else if (naviTree.c[i].c[j]['-cn'].indexOf("Specials") == 0)
					{
							if (naviTree.c[i].c[j]['-cn'].indexOf("Specials Kids") == 0)
							{
								caNavArraySpecialsKids[caNavArraySpecialsKids.length] = { "level": "2", "active": isActive, "id": naviTree.c[i].c[j]['-ID'], "name": "Kids" };
								caNavArraySpecialsKids[caNavArraySpecialsKids.length] = { "level": "3", "active": isActive, "id": naviTree.c[i].c[j].c[k]['-ID'], "name": naviTree.c[i].c[j].c[k]['-cn'] };
							}
							else if (naviTree.c[i].c[j]['-cn'].indexOf("Specials Minis") == 0)
							{
								caNavArraySpecialsMinis[caNavArraySpecialsMinis.length] = { "level": "2", "active": isActive, "id": naviTree.c[i].c[j]['-ID'], "name": "Minis" };
								caNavArraySpecialsMinis[caNavArraySpecialsMinis.length] = { "level": "3", "active": isActive, "id": naviTree.c[i].c[j].c[k]['-ID'], "name": naviTree.c[i].c[j].c[k]['-cn'] };
							}
							caNavArraySpecials[caNavArraySpecials.length] = { "level": "3", "active": isActive, "id": naviTree.c[i].c[j].c[k]['-ID'], "name": naviTree.c[i].c[j].c[k]['-cn'] };
					}
					else
						caNavArray[caNavArray.length] = { "level": "3", "active": isActive, "id": naviTree.c[i].c[j].c[k]['-ID'], "name": naviTree.c[i].c[j].c[k]['-cn'] };


					if (!isActive)
						continue;


					if (typeof naviTree.c[i].c[j].c[k].c == 'undefined')
					{
						caCatalogId = naviTree.c[i].c[j].c[k]['-ID'];
						continue;
					}


					if (typeof naviTree.c[i].c[j].c[k].c.length == 'undefined')
						naviTree.c[i].c[j].c[k].c = new Array(naviTree.c[i].c[j].c[k].c);

					for (l=0;l<naviTree.c[i].c[j].c[k].c.length;++l)
					{
						isActive = naviTree.c[i].c[j].c[k].c[l]['-cn'] == caGetNaviLevel4();

						if (isActive)
							caCatalogId = naviTree.c[i].c[j].c[k].c[l]['-ID'];


						// Add Category.
						if (naviTree.c[i].c[j]['-cn'].indexOf("Marken") == 0)
							caNavArrayBrands[caNavArrayBrands.length] = { "level": "4", "active": isActive, "id": naviTree.c[i].c[j].c[k].c[l]['-ID'], "name": naviTree.c[i].c[j].c[k].c[l]['-cn'] };

						else if (naviTree.c[i].c[j]['-cn'].indexOf("Specials") == 0)
							caNavArraySpecials[caNavArraySpecials.length] = { "level": "4", "active": isActive, "id": naviTree.c[i].c[j].c[k].c[l]['-ID'], "name": naviTree.c[i].c[j].c[k].c[l]['-cn'] };
						else
							caNavArray[caNavArray.length] = { "level": "4", "active": isActive, "id": naviTree.c[i].c[j].c[k].c[l]['-ID'], "name": naviTree.c[i].c[j].c[k].c[l]['-cn'] };
					}
				}
			}
			// Nur das ausgewählte Level1 bearbeiten.
			return;
		}
	}

	function caWriteNaviSpecials()
	{
		var			strNavi='';
		var			specials='';
		var			tmp;

		if (caNaviSubShow == 2 && caGetNaviLevel2() == '')
			return '';

		if (caNavArraySpecials.length < 1)
			return "";

		// Specials navi.	
		strNavi += '<div style="position:relative;left:23px;top:0px;float:left;">';
		strNavi += '	<div style="position:relative;left:0px;top:0px;width:172px;height:49px;">';
		strNavi += '		<div style="position:absolute;bottom:16px;font-size:16px;color:#4d4e53;font-weight:bold;">';
		strNavi += '			Specials';
		strNavi += '		</div>';	
		strNavi += '		<div style="position:absolute;bottom:10px;font-size:0px;line-height:1px;min-height:1px;">';
		strNavi += '			<img src="../Data/Img/Navi/division_line.gif">';
		strNavi += '		</div>';
		strNavi += '	</div>';


		try
		{
			specials = caLoadNaviTree(caNavArraySpecials, false, true);
		}
		catch (error)
		{
			strNavi = error;
		}
		strNavi += specials;

		strNavi += '</div>';

		if (specials == '')
			return;

		var		abDiv=document.getElementById('navi_specials');
		abDiv.innerHTML = strNavi;
	}

	function caWriteNaviBrands()
	{
		var			strNavi='';
		var			brands='';

		if (caNavArrayBrands.length < 1)
			return "";

		// Don't show the brand navi for minis and kids.
		if ((caGetNaviLevel1() == 'Minis' || caGetNaviLevel1() == 'Kids') && caGetNaviLevel3() == '')
			return;

		// Specials navi.
		strNavi += '<div style="position:relative;left:23px;top:0px;float:left;">';
		strNavi += '	<div style="position:relative;left:0px;top:0px;width:172px;height:49px;">';
		strNavi += '		<div style="position:absolute;bottom:16px;font-size:16px;color:#4d4e53;font-weight:bold;">';
		strNavi += '			Marken';
		strNavi += '		</div>';	
		strNavi += '		<div style="position:absolute;bottom:10px;font-size:0px;line-height:1px;min-height:1px;">';
		strNavi += '			<img src="../Data/Img/Navi/division_line.gif">';
		strNavi += '		</div>';
		strNavi += '	</div>';

		try
		{
			brands = caLoadNaviTree(caNavArrayBrands, true, false);
		}
		catch (error)
		{
			strNavi = error;
		}
		strNavi += brands;

		strNavi += '</div>';

		if (brands == '')
			return;

		document.getElementById('navi').innerHTML = document.getElementById('navi').innerHTML + strNavi;
	}

	function caWriteNavi()
	{
		var			strNavi='';
		var			naviName=caGetNaviLevel1();
		var			showGenderSelect=(caNaviSubShow == 2 && caGetNaviLevel2() == '');
		var			showNewSale=(caNaviSubShow == 0) && caGetNaviLevel2() == '';

		// Platzhalter für Specials - JS 22.07.2010
		strNavi += '<div id="navi_specials"></div>';
		if (caNavArray.length > 0 || showGenderSelect || caGetNaviLevel1() == "Service" || caGetNaviLevel1() == "Meta" || caGetNaviLevel1() == "New" || caGetNaviLevel1() == "Sale")
		{
			strNavi += '<div style="position:relative;left:23px;top:0px;float:left;">';
			strNavi += caWriteNaviHeader(naviName);
		}

		try
		{
			// Static navigation for service and meta.
			if (caGetNaviLevel1() == 'Service' || caGetNaviLevel1() == 'Meta')
				strNavi += caLoadNaviService(caNavi);
			else if (showGenderSelect)
				strNavi += caLoadNaviGirlsBoys(caNavArray);
			else if (showNewSale)
				strNavi += caLoadNaviNewSale(caNavi);
			else if (caNaviSubShow > 0)
					strNavi += caLoadNaviTree(caNavArray, false, false);
			else if ( caGetNaviLevel1() == 'New' || caGetNaviLevel1() == 'Sale')
			{
				strNavi += caLoadNaviTree(caNavArray, false, false);
				strNavi += caLoadNaviNewSale2(caNavi);
			}
			else
				strNavi = '';
		}
		catch (error)
		{
			strNavi = error;
		}
		if (((caGetNaviLevel1() == 'Girls') || (caGetNaviLevel1() == 'Boys')) && (caGetNaviLevel2() != ''))
			strNavi += caWriteNaviLevel2ChangeLink(caGetNaviLevel1());

		strNavi += '</div>';
		// Append, so that the specials will be shown on top.

		document.getElementById('navi').innerHTML = document.getElementById('navi').innerHTML + strNavi;
	}

	function caLoadNaviService(naviTree)
	{
		var			strOut='';
		var			isActive;
		var			i;
		var			j;
		var			firstL3=true;

		if (typeof naviTree.c == 'undefined')
			return '';

		if (typeof naviTree.c.length == 'undefined')
			naviTree.c = new Array(naviTree.c);

		for (i=0;i<naviTree.c.length;++i)
		{
			if (naviTree.c[i]['-cn'] == caGetNaviLevel1())
			{
				if (typeof naviTree.c[i].c.length == 'undefined')
					naviTree.c[i].c = new Array(naviTree.c[i].c);

				for (j=0;j<naviTree.c[i].c.length;++j)
				{
					isActive = naviTree.c[i].c[j]['-cn'] == caGetNaviLevel2();

					if (firstL3)
					{
						strOut += '<div style="position:relative;left:0px;top:0px;height:1px;width:172px;font-size:0px;line-height:1px;min-height:1px;background-image:url(../Data/Img/Navi/division_line.gif);background-repeat:no-repeat;"></div>';
					}
					firstL3 = false;

					strOut += caWriteNaviLevel2(
						naviTree.c[i].c[j]['-cn'], 
						naviTree.c[i].c[j]['-ID'], 
						isActive);
				}
				return strOut;
			}
		}
		return strOut;
	}

	function caLoadNaviNewSale(naviTree)
	{
		var			strOut='';
		var			i;
		var			j;
		var			firstL3=true;

		if (typeof naviTree.c == 'undefined')
			return '';

		if (typeof naviTree.c.length == 'undefined')
			naviTree.c = new Array(naviTree.c);

		for (i=0;i<naviTree.c.length;++i)
		{
			if (naviTree.c[i]['-cn'] == 'Neuheiten' || naviTree.c[i]['-cn'] == 'Sale')
			{
				if (typeof naviTree.c[i].c.length == 'undefined')
					naviTree.c[i].c = new Array(naviTree.c[i].c);
				for (j=0;j<naviTree.c[i].c.length;++j)
				{
					if (typeof naviTree.c[i].c[j].c.length == 'undefined')
						naviTree.c[i].c[j].c = new Array(naviTree.c[i].c[j].c);
					for (k=0;k<naviTree.c[i].c[j].c.length;++k)
					{
						if (firstL3)
							strOut += '<div style="position:relative;left:0px;top:0px;height:1px;width:172px;font-size:0px;line-height:1px;min-height:1px;background-image:url(../Data/Img/Navi/division_line.gif);background-repeat:no-repeat;"></div>';
						firstL3 = false;
						
						strOut += caWriteNaviLevel3NewSale(
							naviTree.c[i].c[j].c[k]['-cn'], 
							naviTree.c[i].c[j].c[k]['-ID'], 
							'', 
							naviTree.c[i].c[j]['-cn']);
						break;
					}
				}
				return strOut;
			}
		}
	}

	function caLoadNaviNewSale2(naviTree)
	{
		var			strOut='';
		var			i;
		var			j;
		var			firstL3=true;

		if (typeof naviTree.c == 'undefined')
			return '';

		if (typeof naviTree.c.length == 'undefined')
			naviTree.c = new Array(naviTree.c);

		for (i=0;i<naviTree.c.length;++i)
		{
			if (naviTree.c[i]['-cn'] == 'Neuheiten' || naviTree.c[i]['-cn'] == 'Sale')
			{
				if (typeof naviTree.c[i].c.length == 'undefined')
					naviTree.c[i].c = new Array(naviTree.c[i].c);
				for (j=0;j<naviTree.c[i].c.length;++j)
				{
					if(naviTree.c[i].c[j]['-cn'] == caGetNaviLevel2())
						continue;
					if (typeof naviTree.c[i].c[j].c.length == 'undefined')
						naviTree.c[i].c[j].c = new Array(naviTree.c[i].c[j].c);
					for (k=0;k<naviTree.c[i].c[j].c.length;++k)
					{
						if (firstL3)
							strOut += '<div style="position:relative;left:0px;top:0px;margin-top:20px;height:1px;width:172px;font-size:0px;line-height:1px;min-height:1px;background-image:url(../Data/Img/Navi/division_line.gif);background-repeat:no-repeat;"></div>';
						firstL3 = false;

						strOut += caWriteNaviLevel3NewSale(
							naviTree.c[i].c[j].c[k]['-cn'], 
							naviTree.c[i].c[j].c[k]['-ID'], 
							'', 
							naviTree.c[i].c[j]['-cn']);
						break;
					}
				}
				return strOut;
			}
		}
	}

	function caLoadNaviGirlsBoys(navArray)
	{
		var			strWrite='';
		var			i=0;
		var			k=0;
		var			l3=0;
		var			l4=0;
		var			firstL3=true;
		var			level1='';
		var			level2='';
		var			level3='';
		var			textAppend='';

		for (i=0;i<navArray.length;++i)
		{				
			// Write DownWorld
			if (navArray[i].level == "2")
			{
				l3=0;
				level2='';
				if (navArray[i].name == 'Minis Girls' || navArray[i].name == 'Minis Boys')
				{
					level2='Minis';
					textAppend = 'Gr&ouml;&szlig;e 92-128';	
				}		
				else if (navArray[i].name == 'Kids Girls')
				{
					level2='Kids';
					textAppend = 'Gr&ouml;&szlig;e 122-176';
				}
				else if (navArray[i].name == 'Kids Boys')
				{
					level2='Kids';
					textAppend = 'Gr&ouml;&szlig;e 122-182';
				}
				else if (navArray[i].name == 'Girls' || navArray[i].name == 'Boys')
					level2=navArray[i].name;

				if (level2!='')
				{
					strWrite += '<div style="position:relative;width:172px;height:40px;">';
					strWrite += '	<div style="position:absolute;left:0px;top:0px;width:172px;height:49px;">';
					strWrite += '		<div style="position:absolute;bottom:16px;font-size:16px;color:#4d4e53;float:left;font-weight:bold;">';
					strWrite += 			level2;
					strWrite += '		</div>';
					strWrite += '		<div style="position:absolute;right:0px;bottom:15px;font-size:12px;color:#4d4e53;">'+textAppend+'</div>';	
					strWrite += '		<div style="position:absolute;bottom:10px;font-size:0px;line-height:1px;min-height:1px;">';
					strWrite += '			<img src="../Data/Img/Navi/division_line.gif">';
					strWrite += '		</div>';
					strWrite += '	</div>';
					strWrite += '</div>';

					strWrite +=	'<div id="specials_'+level2+'"></div>';
					strWrite += '<div style="position:relative;width:172px;height:36px;">';
					strWrite += '	<div style="position:absolute;left:0px;top:0px;width:172px;height:36px;">';
					strWrite += '		<div style="position:absolute;bottom:16px;font-size:12px;color:#4d4e53;float:left;">';
					strWrite += '			Mode f&uuml;r '+level2;
					strWrite += '		</div>';	
					strWrite += '		<div style="position:absolute;bottom:10px;font-size:0px;line-height:1px;min-height:1px;">';
					strWrite += '			<img src="../Data/Img/Navi/division_line.gif">';
					strWrite += '		</div>';
					strWrite += '	</div>';
					strWrite += '</div>';
				}
			}
			// Write Division
			if (navArray[i].level == "3")
			{
				if (l3 == 0) {
					strWrite += '<div style="position:relative;left:0px;top:0px;height:1px;width:172px;font-size:0px;line-height:1px;min-height:1px;background-image:url(../Data/Img/Navi/division_line.gif);background-repeat:no-repeat;"></div>';
				}
				l3++;

				strWrite += '	<div style="position:relative;left:0px;top:0px;background-image:url(../Data/Img/Navi/category_bg.gif);background-repeat:repeat-y;">';
				strWrite += caWriteNaviLevel3(
					navArray[i].name, 
					navArray[i].id, 
					navArray[i].active,
					false,
					level2);
				strWrite += '	</div>';
				continue;
			}
		}
		return strWrite;
	}


	function caWriteGirlsBoysSpecials(navArray)
	{
		var			strWrite='';
		var			i=0;
		var			k=0;
		var			l3=0;
		var			l4=0;
		var			firstL3=true;
		var			level1='';
		var			level2='';
		var			level3='';
		var			textAppend='';
		var 		special_id = '';

		for (i=0;i<navArray.length;++i)
		{		
			strWrite = '';
			//Write Special
			if (navArray[i].level == "2")
			{
				l3=0;
				level2='';
				if (navArray[i].name == 'Specials Minis Girls' || navArray[i].name == 'Specials Minis Boys')
				{
					level2="Specials für Minis";
					special_id = 'specials_Minis';
				}
				if (navArray[i].name == 'Specials Kids Girls' || navArray[i].name == 'Specials Kids Boys')
				{
					level2="Specials für Kids";
					special_id = 'specials_Kids';
				}			
				//Write Special Headline
				if (level2!='')
				{
					strWrite += '<div style="position:relative;width:172px;height:36px;">';
					strWrite += '	<div style="position:absolute;left:0px;top:0px;width:172px;height:36px;">';
					strWrite += '		<div style="position:absolute;bottom:16px;font-size:12px;color:#4d4e53;float:left;">';
					strWrite += 			level2;
					strWrite += '		</div>';	
					strWrite += '		<div style="position:absolute;bottom:10px;font-size:0px;line-height:1px;min-height:1px;">';
					strWrite += '			<img src="../Data/Img/Navi/division_line.gif">';
					strWrite += '		</div>';
					strWrite += '	</div>';
					strWrite += '</div>';

					//Load and write Special Divisions
					var navArrayToLoad = (level2 == "Specials für Kids") ? caNavArraySpecialsKids : caNavArraySpecialsMinis;

					try
					{
						specials = caLoadNaviTree(navArrayToLoad, false, true);
					}
					catch (error)
					{
						strNavi = error;
					}
					strWrite += specials;
					document.getElementById(special_id).innerHTML = strWrite;
				}
			}
		}
	}

	function caLoadNaviTree(navArray, isBrand, isSpecial)
	{
		var			strWrite='';
		var			i=0;
		var			k=0;
		var			l3=0;
		var			l4=0;
		var			firstL3=true;
		var			lastL4=false;

		strWrite += '<div style="position:relative;width:172px;left:0px;top:0px;">';
		strWrite += '	<div style="position:relative;left:0px;top:0px;background-image:url(../Data/Img/Navi/category_bg.gif);background-repeat:repeat-y;">';

		for (i=0;i<navArray.length;++i)
		{
			if (navArray[i].level == "2")
			{
				var getlv2 = '';
				getlv2 = navArray[i].name;
			}
			// Write Division.
			if (navArray[i].level == "3")
			{
				lastL4=false;
				if (isBrand)
				{
					if (l3 == 0) {
						strWrite += '<div style="position:relative;left:0px;top:0px;height:1px;width:172px;font-size:0px;line-height:1px;min-height:1px;background-image:url(../Data/Img/Navi/division_line.gif);background-repeat:no-repeat;"></div>';
					}
					l3++;

					strWrite += caWriteNaviLevel3Brand(
						navArray[i].name, 
						navArray[i].id, 
						navArray[i].active);
					continue;
				}

				if (l3 == 0) {
					strWrite += '<div style="position:relative;left:0px;top:0px;height:1px;width:172px;font-size:0px;line-height:1px;min-height:1px;background-image:url(../Data/Img/Navi/division_line.gif);background-repeat:no-repeat;"></div>';
				}
				l3++;

				var lv_2;
				if (caGetNaviLevel2() == '')
					lv_2 = getlv2;
				else
					lv_2 = caGetNaviLevel2();

				strWrite += caWriteNaviLevel3(
					navArray[i].name, 
					navArray[i].id, 
					navArray[i].active,
					isSpecial,
					lv_2);
				continue;
			}
			// Write Category.
			if (navArray[i].level == "4")
			{
				lastL4=true;
				if (l4 > 0) {
					strWrite += '<div style="position:relative;left:0px;top:0px;height:1px;width:172px;font-size:0px;line-height:1px;min-height:1px;background-image:url(../Data/Img/Navi/category_line.gif);background-repeat:no-repeat;"></div>';
				}
				l4++;
				var	l3=0;

				strWrite += caWriteNaviLevel4(
					navArray[i].name, 
					navArray[i].id, 
					navArray[i].active);

				continue;
			}
		}
		if (lastL4==true)
			strWrite += '<div style="position:relative;left:0px;top:0px;height:1px;width:172px;font-size:0px;line-height:1px;min-height:1px;background-image:url(../Data/Img/Navi/division_line.gif);background-repeat:no-repeat;"></div>';

		strWrite += '	</div>';
		strWrite += '</div>';

		return strWrite;
	}

	function caWriteNaviHeader(text)
	{
		var			strOut='';
		var			saleText='';
		var			textAppend='';
		switch (text)
		{
			case 'Babies':
				textAppend = 'Gr&ouml;&szlig;e 50-92';
				break;

			case 'Meta':
				text = 'Infobereich';
				break;

			case 'Girls':
				text = caGetNaviLevel2();
				switch (text)
				{
					case 'Minis':
						textAppend = 'Gr&ouml;&szlig;e 92-128';	
						break;

					case 'Kids':
						textAppend = 'Gr&ouml;&szlig;e 122-176';
						break;
				}
				break;

			case 'Boys':
				text = caGetNaviLevel2();
				switch (text)
				{
					case 'Minis':
						textAppend = 'Gr&ouml;&szlig;e 92-128';	
						break;

					case 'Kids':
						textAppend = 'Gr&ouml;&szlig;e 122-182';
						break;
				}
				break;
				
			case 'New':
			case 'Sale':
				if (caGetNaviLevel2()!='')
				{
					saleText = caGetNaviLevel2();
					switch (saleText)
					{
						case 'Young Fashion Girls':
							textAppend = 'Young Girls - ';	
							break;

						case 'Young Fashion Boys':
							textAppend = 'Young Boys - ';
							break;

						default:
							textAppend = saleText + ' - ';
							break;
					}
				}
				else
					textAppend = '';			
				break;

			default:
				textAppend = '';
				break;
		}

		if(caGetNaviLevel1() == 'New')
		{
			strOut += '<div style="position:relative;width:172px;height:49px;">';
			strOut += '	<div style="position:absolute;left:0px;top:0px;width:172px;height:49px;">';
			strOut += '		<div style="position:absolute;bottom:16px;font-size:16px;color:#002c5f;float:left;font-weight:bold;">';
			strOut += (textAppend + text).toUpperCase();
			strOut += '		</div>';	
			strOut += '		<div style="position:absolute;bottom:10px;font-size:0px;line-height:1px;min-height:1px;">';
			strOut += '			<img src="../Data/Img/Navi/division_line.gif">';
			strOut += '		</div>';
			strOut += '	</div>';
			strOut += '</div>';
		}
		else if(caGetNaviLevel1() == 'Sale')
		{
			strOut += '<div style="position:relative;width:172px;height:25px;margin-top:16px;">';
			strOut += '	<div style="position:absolute;top:0px;left:0px;width:172px;height:25px;padding-top:5px;padding-left:8px;font-size:16px;color:#ffffff;font-weight:bold;background-image:url(../Data/Img/Navi/sale_world_bg.gif);background-repeat:no-repeat;">';
			strOut += (textAppend + text).toUpperCase();
			strOut += '	</div>';
			strOut += '</div>';
		}
		else if ((caGetNaviLevel2() != '') || (caGetNaviLevel3() != '') || (caGetNaviLevel1() == 'Service'))
		{
			strOut += '<div style="position:relative;width:172px;height:49px;">';
			strOut += '	<div style="position:absolute;left:0px;top:0px;width:172px;height:49px;">';
			strOut += '		<div style="position:absolute;bottom:16px;font-size:16px;color:#4d4e53;float:left;font-weight:bold;">';
			strOut += text.toUpperCase();
			strOut += '		</div>';
			strOut += '		<div style="position:absolute;right:0px;bottom:15px;font-size:12px;color:#4d4e53;">'+textAppend+'</div>';		
			strOut += '		<div style="position:absolute;bottom:10px;font-size:0px;line-height:1px;min-height:1px;">';
			strOut += '			<img src="../Data/Img/Navi/division_line.gif">';
			strOut += '		</div>';
			strOut += '	</div>';
			strOut += '</div>';
		}
		return strOut;
	}

	function caWriteNaviLevel2ChangeLink(level1) //writes the inverse Link for Kids resp. Minis beneath the Girls resp. Boys Navigation
	{
			var strOut = '';
			var level2 = '';
			var textAppend = '';
			switch (level1)
			{
				case 'Girls':
					level2 = (caGetNaviLevel2() == 'Minis') ? 'Kids' : 'Minis';
					switch (level2)
					{
						case 'Minis':
							textAppend = 'Gr&ouml;&szlig;e 92-128';	
							break;

						case 'Kids':
							textAppend = 'Gr&ouml;&szlig;e 122-176';
							break;
					}
					break;

				case 'Boys':
					level2 = (caGetNaviLevel2() == 'Minis') ? 'Kids' : 'Minis';
					switch (level2)
					{
						case 'Minis':
							textAppend = 'Gr&ouml;&szlig;e 92-128';	
							break;

						case 'Kids':
							textAppend = 'Gr&ouml;&szlig;e 122-182';
							break;
					}
					break;
			}
			strOut += '<div style="position:relative;width:172px;height:49px;">';
			strOut += 	caGetLinkBegin(false, '', level1, level2, 'Kollektion');
			strOut += '	<div style="position:absolute;left:0px;bottom:0px;width:172px;height:35px;">';
			strOut += '		<div style="position:absolute;bottom:16px;font-size:16px;color:#4d4e53;float:left;font-weight:bold;">';
			strOut +=  '		<div style="font-size:16px;">'+level2+'</div>';
			strOut += '		</div>';
			strOut += '		<div style="position:absolute;right:0px;bottom:15px;font-size:12px;color:#4d4e53;">'+textAppend+'</div>';		
			strOut += '		<div style="position:absolute;bottom:10px;font-size:0px;line-height:1px;min-height:1px;">';
			strOut += '			<img src="../Data/Img/Navi/division_line.gif">';
			strOut += '		</div>';
			strOut += '	</div>';
			strOut += '	</a>';
			strOut += '</div>';

			return strOut;		
	}

	function caWriteNaviLevel2(catalogName, catalogId, isSelected)
	{
		var			classId;
		var			catalogNameUppercase=catalogName.toUpperCase();
		var			strOut='';
		var			level1=caGetNaviLevel1();
		var			level2Link='';

		if (isSelected == true)
			caCatalogId = catalogId;

		classId = (isSelected && caGetNaviLevel4() == '') ? 'level3on' : 'level3off';

		strOut += '<div style="position:relative;left:0px;width:172px;background:url(../Data/Img/Navi/navi_division_bg.gif) bottom no-repeat">';
		strOut += '		<div style="width:172px;left:10px;top:7px;">';

		// set external links
		switch (catalogName)
		{
			case 'Filialen':
				level2Link = '<a href="http://de-de.cunda.de/stores" target="_blank">';
				break;

			case 'Partnerprogramm':
				level2Link = '<a href="http://cunda.metaapes.de/" target="_blank">';
				break;

			default:
				level2Link = caGetLinkBegin(false, '', level1, catalogName);
				break;
		}	

		strOut += '			'+level2Link+'<div class="'+classId+'" style="padding:5.5px 5.5px 5.5px 10px;width:155px;cursor:pointer;">'+catalogNameUppercase+'</div></a>';
		strOut += '		</div>';
		strOut += '</div>';

		return strOut;
	}

	function caWriteNaviLevel3(catalogName, catalogId, isSelected, isSpecial, genderLevel2)
	{
		var			classId;
		var			strOut='';
		var			catalogNameUppercase=catalogName.toUpperCase();
		var			level1=(caGetNaviLevel1() == "New") ? 'Neuheiten' : caGetNaviLevel1();
		var			level2=(caGetNaviLevel2()=="Minis"||caGetNaviLevel2()=="Kids"||level1=="Neuheiten"||level1=="Sale")?caGetNaviLevel2():"";
		var			level3=catalogName.replace('<br>', ' ');
		var			level4='';
		var 		level2edit='';

		// search for the first category to display ----
		if (typeof caNavi.c == 'undefined')
		return '';

		for (i=0;i<caNavi.c.length;++i){					
			if (caNavi.c[i]['-cn'] == level1){	
				for (j=0;j<caNavi.c[i].c.length;++j){
					
					if (genderLevel2 == 'Minis' || genderLevel2 == 'Kids' || genderLevel2 == 'Girls' || genderLevel2 == 'Boys'){
						level2=genderLevel2;
						// compare different level2 names
						if (caNavi.c[i].c[j]['-cn'] == 'Kids Girls' || caNavi.c[i].c[j]['-cn'] == 'Minis Girls')
							level2edit=caNavi.c[i].c[j]['-cn'].replace(' Girls', '');
						if (caNavi.c[i].c[j]['-cn'] == 'Kids Boys' || caNavi.c[i].c[j]['-cn'] == 'Minis Boys')
							level2edit=caNavi.c[i].c[j]['-cn'].replace(' Boys', '');
						if (caNavi.c[i].c[j]['-cn'] == 'Girls' || caNavi.c[i].c[j]['-cn'] == 'Boys')
							level2edit=caNavi.c[i].c[j]['-cn'];					
						if (level2edit == level2){
							for (k=0;k<caNavi.c[i].c[j].c.length;++k){
								if (caNavi.c[i].c[j].c[k]['-cn'] == level3){
									if (typeof caNavi.c[i].c[j].c[k].c.length == 'undefined')
										caNavi.c[i].c[j].c[k].c = new Array(caNavi.c[i].c[j].c[k].c);
									for (l=0;l<caNavi.c[i].c[j].c[k].c.length;++l){
										level4 = caNavi.c[i].c[j].c[k].c[l]['-cn'];
										break;
									}
								}
							}
						}
					}
					else{
						if (caNavi.c[i].c[j]['-cn'] == level2){											
							for (k=0;k<caNavi.c[i].c[j].c.length;++k){
								if (caNavi.c[i].c[j].c[k]['-cn'] == level3){
									if ((level1 == 'Neuheiten' || level1 == 'Sale') || caNavi.c[i].c[j].c[k]['-cn'] != 'Kollektion'){
										if (typeof caNavi.c[i].c[j].c[k].c.length == 'undefined')
											caNavi.c[i].c[j].c[k].c = new Array(caNavi.c[i].c[j].c[k].c);
										for (l=0;l<caNavi.c[i].c[j].c[k].c.length;++l){
											level4 = caNavi.c[i].c[j].c[k].c[l]['-cn'];
											break;
										}
									}
								}
							}
						}
					}
				}
			}
		}

		if (isSelected == true)
			caCatalogId = catalogId;

		if (isSpecial == true)
			level4 = '';

		classId = (isSelected) ? 'level3on' : 'level3off';

		strOut += '<div style="position:relative;left:0px;width:172px;background:url(../Data/Img/Navi/navi_division_bg.gif) bottom no-repeat">';
		strOut += '		<div style="width:172px;left:10px;top:7px;">';
		strOut += '			'+caGetLinkBegin(false, '', caGetNaviLevel1(), level2, level3, level4)+'<div class="'+classId+'" style="padding:5.5px 5.5px 5.5px 10px;width:155px;cursor:pointer;">'+catalogNameUppercase+'</div></a>';
		strOut += '		</div>';
		strOut += '</div>';

		return strOut;
	}

	function caWriteNaviLevel3NewSale(catalogName, catalogId, isSelected, genderLevel2)
	{
		var			classId;
		var			strOut='';
		var			genderLevel2Uppercase=genderLevel2.toUpperCase();
		var			level1=(caGetNaviLevel1() == "New") ? 'Neuheiten' : caGetNaviLevel1();
		var			level2=genderLevel2;
		var			level3=catalogName.replace('<br>', ' ');
		var			level4='';
		var 		level2edit='';
		var			textAppend='';

		if(caGetNaviLevel2()!= '')
			textAppend = '&nbsp;-&nbsp;'+ caGetNaviLevel1().toUpperCase();

		if (genderLevel2Uppercase == 'YOUNG FASHION GIRLS')
			genderLevel2Uppercase = 'YOUNG GIRLS';
		else if (genderLevel2Uppercase == 'YOUNG FASHION BOYS')
			genderLevel2Uppercase = 'YOUNG BOYS';

		if (typeof caNavi.c == 'undefined')
		return '';

		// search for the first category ----
		for (i=0;i<caNavi.c.length;++i){	
			if(caNavi.c[i]['-cn'] == level1)
			{
				for (j=0;j<caNavi.c[i].c.length;++j){
					if (caNavi.c[i].c[j]['-cn'] == level2)
					{					
						for (k=0;k<caNavi.c[i].c[j].c.length;++k){
							if (caNavi.c[i].c[j].c[k]['-cn'] == level3)
							{						
								if (typeof caNavi.c[i].c[j].c[k].c.length == 'undefined')
										caNavi.c[i].c[j].c[k].c = new Array(caNavi.c[i].c[j].c[k].c);
								for (l=0;l<caNavi.c[i].c[j].c[k].c.length;++l){
									level4 = caNavi.c[i].c[j].c[k].c[l]['-cn'];				
									break;
								}
							}
							break;
						}
						break;
					}
				}
			}
		}

		if (isSelected == true)
			caCatalogId = catalogId;

		classId = (isSelected && caGetNaviLevel4() == '') ? 'level3on' : 'level3off';

		strOut += '<div style="position:relative;left:0px;width:172px;background:url(../Data/Img/Navi/navi_division_bg.gif) bottom no-repeat">';
		strOut += '		<div style="width:172px;left:10px;top:7px;">';
		strOut += '			'+caGetLinkBegin(false, '', caGetNaviLevel1(), level2, level3, level4)+'<div class="'+classId+'" style="padding:5.5px 5.5px 5.5px 10px;width:155px;cursor:pointer;">'+genderLevel2Uppercase+textAppend+'</div></a>';
		strOut += '		</div>';
		strOut += '</div>';

		return strOut;
	}

	function caWriteNaviLevel3Brand(catalogName, catalogId, isSelected)
	{
		var			classId;
		var			symbol;
		var			strOut='';
		var			catalogNameUppercase=catalogName.toUpperCase();
		var			level1=caGetNaviLevel1();
		var			level2=caGetNaviLevel2();
		var			level3=catalogName.replace('<br>', ' ');


		if (isSelected == true)
			caCatalogId = catalogId;

		classId = (isSelected && caGetNaviLevel4() == '') ? 'level3on' : 'level3off';

		strOut += '<div style="position:relative;left:0px;width:172px;background:url(../Data/Img/Navi/navi_division_bg.gif) bottom no-repeat">';
		strOut += '		<div style="width:172px;left:10px;top:7px;">';
		strOut += '			'+caGetLinkBegin(false, '', level1, level2, level3)+'<div class="'+classId+'" style="padding:5.5px 5.5px 5.5px 10px;width:155px;cursor:pointer;">'+catalogNameUppercase+'</div></a>';
		strOut += '		</div>';
		strOut += '</div>';

		return strOut;
	}

	function caWriteNaviLevel4(catalogName, catalogId, isSelected)
	{
		var			strOut='';
		var			classId;
		var			level1=caGetNaviLevel1();
		var			level2=caGetNaviLevel2();
		var			level3=caGetNaviLevel3();

		if (isSelected == true)
			caCatalogId = catalogId;

		classId = (isSelected) ? 'level4on' : 'level4off';

		strOut += '<div style="position:relative;width:172px;left:0px;padding:0px;margin:0px;">';
		if (classId=='level4on') {
			strOut += '	<div style="position:absolute;width:10px;height:10px;left:5px;top:6px;background-image:url(../Data/Img/Navi/category_arrow.gif);background-repeat:no-repeat;">';
			strOut += '	</div>';
		}
		strOut += '	<div style="position:relative;width:170px;">';
		strOut += '		'+caGetLinkBegin(false, '', level1, level2, level3, catalogName)+'<div class="'+classId+'" style="width:130px;cursor:pointer;padding-left:20px;padding-top:4px;padding-bottom:4px;">'+catalogName+'</div></a>';		
		strOut += '	</div>';
		strOut += '</div>';

		return strOut;
	}

	return {
		caLoadNaviXML: function(naviFileName)
		{
			loadNaviXML(naviFileName);
		}
	};
})();

function caLoadNaviXML(naviFileName)
{
	caNavi.caLoadNaviXML(naviFileName);
}
