	function jsCSS(a,o,c1,c2)
	{
		switch (a)
		{
			case'swap':
				o.className =! jsCSS('check',o,c1) ? o.className.replace(c2,c1) : o.className.replace(c1,c2);
				break;
	
			case 'add':
				if (!jsCSS('check',o,c1)) {	o.className += o.className ? ' ' + c1 : c1;	}
				break;
	
			case 'remove':
				var rep = o.className.match(' ' + c1) ? ' ' + c1 : c1;
				o.className = o.className.replace(rep,'');
				break;
	
			case 'check':
				return new RegExp('\\b'+c1+'\\b').test(o.className);
				break;
		}
	}
	
	function getObj(o)
	{
	
		var obj;
	
		if (document.getElementById)
			obj = document.getElementById(o);
		
		return obj;
	}
	
    function swapDetail(w)
	{
		var newDetail = getObj(w);
		var oldDetail = getObj(visibleDetail);
		var newLink = getObj('link_' + w);
		var oldLink = getObj('link_' + visibleDetail);
		
		if (newDetail != null)
		{
			jsCSS('swap',oldDetail,'displayBlock','hideThis');
			jsCSS('swap',newDetail,'hideThis','displayBlock');
			jsCSS('remove',oldLink,'active');
			jsCSS('add',newLink,'active');
			
			visibleDetail = w;
			
		}
		else 
		{
			alert("Keine weiteren Informationen vorhanden.");
			return;
		}
	}
	
	var bigImgObj; 
				
	function getActImg()
	{
		bigImgObj = getObj('grossesFoto');
	}
	
    function chgImg(w)
	{
		bigImgObj.src = w;
	}
	
	
	function addOption(selectField, text, value, i) {
		// Bei Datumsangaben die ersten zwei Stellen der Jahreszahl weglassen.
		if (text.length == 10 && text.charAt(2) == '.' && text.charAt(5) == '.') {
			text = text.substring(0, 6) + text.substring(8);
		}
		//add new option	
		document.forms[0].elements[selectField].options[i] = new Option(text,value);
	}
	
	function checkValue(selectField, text) {
		count = document.forms[0].elements[selectField].options.length;
		
		for (j=0; j<count; j++) {
			if (text==document.forms[0].elements[selectField].options[j].text) {
				return false;
			}
		}
		return true;
	}
	

	var beliebig = '';
		

	function fillSelect(selectMain, selectSub, listSub, top) {
		var elMain = document.forms[0].elements[selectMain];
		var elSub = document.forms[0].elements[selectSub];
		
		if (!elSub.options) {
			// Wenn elSub keine Options hat, bedeutet das, dass es ein fester Wert und keine
			// Liste ist. Dann braucht man auch die Liste nicht neu füllen.
			return;
		}
		
		if (listHasGroups(listSub)) {
			fillSelectWithGroups(selectMain, selectSub, listSub, top);
			return;
		}
	
		// bisherige Selektion merken
		if (elSub.selectedIndex >= 0) {
			auswahl = elSub.options[elSub.selectedIndex].value;
		} else {
			auswahl = '';
		}
		
		// Options löschen
		elSub.options.length = null;
		pos=0;
	
		// Option füllen
		// wurde "beliebig" ausgewählt
		//  oder ist elMain ein festwer Wert, keine options
		if (!elMain.options || elMain.options[elMain.selectedIndex].value == beliebig) {
			if (!elMain.options) {
				// Wenn es ein fester Wert ist, so behandeln, als ob elSub der Oberste in der Hierarchy ist.
				top = true;
			}
			// Ist das der Oberste in der Hierarchy, dann sind immer alle auswählbar.
			if (top) {
				for (i = 0; i < listSub.length; i++) {
					addOption(selectSub, listSub[i][1], listSub[i][0], pos);
					if (listSub[i][0] == auswahl) {
						document.forms[0].elements[selectSub].options[pos].selected = true;
					}
					pos++;
				}
			} else {
				renderedBeliebig = false;
				for (i = 0; i < listSub.length; i++) {
					for (j = 0; j < elMain.options.length; j++) {
						option = false;
						if (listSub[i][0] == beliebig && !renderedBeliebig) {
							option = true;
							renderedBeliebig = true;
						} else {
							for (k = 2; k < listSub[i].length; k++) {
								if (listSub[i][k] == elMain.options[j].value) {
									option = true;
									break;
								}
							}
						}
						if (option) {
							addOption(selectSub, listSub[i][1], listSub[i][0], pos);
							if (listSub[i][0] == auswahl) {
								document.forms[0].elements[selectSub].options[pos].selected = true;
							}
							pos++;
						}
					}
				}
			}
		} else {
			// ein bestimmter Wert wurde ausgewählt, nicht "beliebig"
			for (i = 0; i < listSub.length; i++) {
				option = false;
				if (listSub[i][0] == beliebig) {
					option = true;
				} else {
					for (k = 2; k < listSub[i].length; k++) {
						if (listSub[i][k] == document.forms[0].elements[selectMain].options[document.forms[0].elements[selectMain].selectedIndex].value) {
							option = true;
							break;
						}
					}
				}
				if (option) {
					addOption(selectSub, listSub[i][1], listSub[i][0], pos);
					if (listSub[i][0] == auswahl) {
						document.forms[0].elements[selectSub].options[pos].selected = true;
					}
					pos++;
				}
			}
		}
		
		// Seite neu laden, wenn die Anreisetermine für Pauschalreisen aus js-File geladen werden
		if (pauschalseite && selectMain == "Reiseziel") {
			reloadPageWithSelectedReiseziel();
		}
		if (pauschalseite && selectMain == "Abflughafen"){
			fillPauschaltermine();
		}
		
	}
	
	function reloadPageWithSelectedReiseziel(){
		//alert("reloading page");
	
		document.forms[0].action = document.location;
		document.forms[0].method = "get";
		document.forms[0].selectedRzCode.value = document.forms[0].Reiseziel.options[document.forms[0].Reiseziel.selectedIndex].value;
		document.forms[0].submit();
	}
	
	function removeOptions(selObj){
		var obj = document.getElementById(selObj);
		obj.innerHTML = "";
	}
	
	function listHasGroups(list) {
		for ( i = 0; i < list.length; i++) {
			if (list[i][0].indexOf("COUNTRY_") >= 0) {
				return true;
			}
		}
		return false;
	}
	
	function fillSelectWithGroups(selectMain, selectSub, listSub, top) {
		
		var beliebig = '';
		var elMain = document.forms[0].elements[selectMain];
		var elSub = document.forms[0].elements[selectSub];
		var	groupText = "";

		var optionText = "";

		// bisherige Selektion merken
		if (elSub.selectedIndex >= 0) {
			auswahl = elSub.options[elSub.selectedIndex].value;
		} else {
			auswahl = '';
		}

		// Options und groups löschen
		removeOptions(selectSub);
		pos=0;

		var select = document.getElementById(selectSub);
		var optGroup = null;
		// Option füllen
		// wurde "beliebig" ausgewählt
		if (elMain.options[elMain.selectedIndex].value == beliebig) {
			// Ist das der Oberste in der Hierarchy, dann sind immer alle auswählbar.
			if (top) {
				for (i = 0; i < listSub.length; i++) {
					if (listSub[i][0].indexOf("COUNTRY_") >= 0) {
						optGroup = document.createElement('optgroup');
						optGroup.label = listSub[i][1];
						select.appendChild(optGroup);
					} else {
						var objOption = document.createElement("option");
						objOption.innerHTML = listSub[i][1];
						objOption.value = listSub[i][0];
						if (listSub[i][0] == auswahl) {
							objOption.selected=true;
						}
						if (optGroup != null) {
							optGroup.appendChild(objOption);
						} else {
							select.appendChild(objOption);
						}
					}
					pos++;
				}
			} else {
				renderedBeliebig = false;
				for (i = 0; i < listSub.length; i++) {
					for (j = 0; j < elMain.options.length; j++) {
						option = false;
						if (listSub[i][0].indexOf("COUNTRY_") >= 0) {
							optGroup = document.createElement('optgroup');
							optGroup.label = listSub[i][1];
						} else if (listSub[i][0] == beliebig && !renderedBeliebig) {
							option = true;
							renderedBeliebig = true;
						} else {
							for (k = 2; k < listSub[i].length; k++) {
								if (listSub[i][k] == elMain.options[j].value) {
									option = true;
									break;
								}
							}
						}
						if (option) {
							if (optGroup != null) {
								select.appendChild(optGroup);
								optGroup = null;
							}
							var objOption = document.createElement("option");
							objOption.innerHTML = listSub[i][1];
							objOption.value = listSub[i][0];
							if (listSub[i][0] == auswahl) {
								objOption.selected = true;
							}
							if (optGroup != null) {
								optGroup.appendChild(objOption);
							} else {
								select.appendChild(objOption);
							}
							pos++;
						}
					}
				}
			}
		} else {
			// ein bestimmter Wert wurde ausgewählt, nicht "beliebig"
			for (i = 0; i < listSub.length; i++) {
				option = false;
				if (listSub[i][0].indexOf("COUNTRY_") >= 0) {
					optGroup = document.createElement('optgroup');
					optGroup.label = listSub[i][1];
				} else if (listSub[i][0] == beliebig) {
					option = true;
				} else {
					for (k = 2; k < listSub[i].length; k++) {
						if (listSub[i][k] == document.forms[0].elements[selectMain].options[document.forms[0].elements[selectMain].selectedIndex].value) {
							option = true;
							break;
						}
					}
				}
				if (option) {
					if (optGroup != null) {
						select.appendChild(optGroup);
						optGroup = null;
					}
					var objOption = document.createElement("option");
					objOption.innerHTML = listSub[i][1];
					objOption.value = listSub[i][0];
					if (listSub[i][0] == auswahl) {
						objOption.selected = true;
					}
					if (optGroup != null) {
						optGroup.appendChild(objOption);
					} else {
						select.appendChild(objOption);
					}
					pos++;
				}
			}
		}
		//alert(select.innerHTML);
		
		// Seite neu laden, wenn die Anreisetermine für Pauschalreisen aus js-File geladen werden
		if (pauschalseite && selectMain == "Reiseziel") {
			reloadPageWithSelectedReiseziel();
		}
		if (pauschalseite && selectMain == "Abflughafen"){
			fillPauschaltermine();
		}
	}
	
	function date2Str(date){
		var d = date.getDate();
		d = d < 10 ? "0" + d : d;
		var m = date.getMonth()+1;
		m = m < 10 ? "0" + m : m;
		var y = date.getFullYear();
		return (d + "." + m + "." + y);
	}
	
	function utcDate2Str(utcDate){
		return date2Str(new Date(utcDate))
	}
	
	function str2Date(strDate){
		return new Date(str2UTCDate(strDate));
	}
	
	function utcDate2Date(utcDate){
		return new Date(utcDate);
	}
	
	function str2UTCDate(strDate){
		var date = strDate.split(".");
		var dateUTC = Date.UTC(parseInt(date[2],10), parseInt(date[1],10)-1, parseInt(date[0],10));
		return dateUTC;
	}
	
	function date2UTCDate(date){
		return date.getTime();
	}
	
	function dateChopTime(date){
		date.setHours(0);
		date.setMinutes(0);
		date.setSeconds(0);
		date.setMilliseconds(0);
		return date;
	}

	function maxStrDate(strDate1, strDate2) {
		var utc1 = str2UTCDate(strDate1);
		var utc2 = str2UTCDate(strDate2);
		var max = Math.max(utc1, utc2);
		return utcDate2Str(max);
	}
	
	function minStrDate(strDate1, strDate2) {
		var utc1 = str2UTCDate(strDate1);
		var utc2 = str2UTCDate(strDate2);
		var min = Math.min(utc1, utc2);
		return utcDate2Str(min);
	}
	
	// param strDate: Datum in Form von "18.09.2006"
	function addOneWeek(strDate) {
		return addDaysToDate(strDate, 7);
	}

	// param strDate: Datum in Form von "18.09.2006"
	function addDaysToDate(strDate, days) {
		dateUTC = str2UTCDate(strDate);
		return date2Str(new Date(dateUTC + days*24*60*60*1000));
	}

	function checkAvailability(reiseBegin, reiseEnde) {
		datumok = true;
		
		if (reiseBegin == null) {
			reiseBegin = str2UTCDate(document.forms[0].Anreise_am.value);
		} else {
			reiseBegin = str2UTCDate(reiseBegin);
		}
		if (reiseEnde == null) {
			reiseEnde = str2UTCDate(document.forms[0].Abreise_am.value);
		} else {
			reiseEnde = str2UTCDate(reiseEnde);
		}


		// Ist Hotel als Auswahlfeld vorhanden?
		if (document.forms[0].elements['Hotel']) {
//			selectedIndex = document.forms[0].elements['Hotel'].selectedIndex;
//			value = document.forms[0].elements['Hotel'].options[selectedIndex].value;
			value = document.forms[0].elements['Hotel'].value;
			// Ist ein bestimmtes Hotel ausgewählt?
			if (value != beliebig) {
				// durchlaufe die Hotel-Datumsliste
				for (i = 0; i < date_Liste_Hotels.length; i++) {
					// ist es das ausgewählte Hotel?
					if (date_Liste_Hotels[i][0] == value) {
						datumok = false;
						// durchlaufe die Datumsangaben des ausgewählten Hotels
						for (j = 1; j < date_Liste_Hotels[i].length; j++) {
							//alert('J: ' + j);
							datumok = checkDate(date_Liste_Hotels[i][j], date_Liste_Hotels[i][j + 1], reiseBegin, reiseEnde);
							if (datumok) {
								// wenn das Datum ok ist, aufhören weitere daten zu testen
								break;
							}
							j++;
						}
						// wenn das ausgewählte Hotel abgearbeitet ist aufhören
						break;
					}
				}
			}
		}
		//alert('datumok: ' + datumok);
		// wenn datumok false ist, können wir hier aufhören
		if (datumok) {
			// Ist Reiseziel als Auswahlfeld vorhanden?
			if (document.forms[0].elements['Reiseziel']) {
//				selectedIndex = document.forms[0].elements['Reiseziel'].selectedIndex;
//				value = document.forms[0].elements['Reiseziel'].options[selectedIndex].value;
				value = document.forms[0].elements['Reiseziel'].value;
				// Ist ein bestimmtes Reiseziel ausgewählt?
				if (value != beliebig) {
					// durchlaufe die Reiseziel-Datumsliste
					for (i = 0; i < date_Reiseziel.length; i++) {
						// ist es das ausgewählte Reiseziel?
						if (date_Reiseziel[i][0] == value) {
							datumok = false;
							// durchlaufe die Datumsangaben des ausgewählten Reiseziel
							for (j = 1; j < date_Reiseziel[i].length; j++) {
								datumok = checkDate(date_Reiseziel[i][j], date_Reiseziel[i][j + 1], reiseBegin, reiseEnde);
								if (datumok) {
									// wenn das Datum ok ist, aufhören weitere daten zu testen
									break;
								}
								j++;
							}
							// wenn das ausgewählte Reiseziel abgearbeitet ist aufhören
							break;
						}
					}
				}
			}
		}
		// wenn datumok false ist, können wir hier aufhören
		if (datumok) {
			// jetzt noch evtl. vorhandenen einschränkenden Zeitraum überprüfen
			if (minAnreise != '') {
				datumok = checkDate(minAnreise, '31.12.2099', reiseBegin, reiseBegin);
			}
			if (datumok && maxAnreise != '') {
				datumok = checkDate('01.01.2000', maxAnreise, reiseBegin, reiseBegin);
			}
			if (datumok && minAbreise != '') {
				datumok = checkDate(minAbreise, '31.12.2099', reiseEnde, reiseEnde);
			}
			if (datumok && maxAbreise != '') {
				datumok = checkDate('01.01.2000', maxAbreise, reiseEnde, reiseEnde);
			}
		}		
		
		// mv - nicht hier
//		if (datumok) {
//			// buildXML();
//		} else {
//			alert('Das Anreisedatum oder das Abreisedatum liegt nicht im buchbaren Zeitraum.');
//		}
		return datumok;
	}
	
	function checkDate(von, bis, reiseBegin, reiseEnde) {
		von = str2UTCDate(von);
		bis = str2UTCDate(bis);
		
//		alert('von: ' + von);
//		alert('bis: ' + bis);
//		alert('reiseBegin: ' + reiseBegin);
//		alert('reiseEnde: ' + reiseEnde);
		if (reiseBegin >= von && reiseBegin <= bis && reiseEnde >= von && reiseEnde <= bis ) {
			return true;
		} else {
			return false;
		}
	}
	
	function formatDate(field) {
		
		now = new Date();
		var j = now.getFullYear();
		var mo = now.getMonth()+1;
		mo <10 ? mo='0'+mo : mo=mo;
				
		var d = field.value;
		if (d.length < 1) {
			return;
		}
		
		var t, m;
		
		if (d.search(/\./)!= -1) {
		
			d = d.split('.');
					
			parseInt(d[0])<10 && d[0].length <2 ? t='0'+d[0] : t=d[0];
			parseInt(d[1])<10 && d[1].length <2 ? m='0'+d[1] : m=d[1];
			
			while (m.search(/ /)!= -1)
				m = m.replace(/ /, "");
			
			if (m=="") m = mo;
			
			if (d.length>2 && parseInt(d[2])) {
				if (d[2].length==2) {
					j='20'+d[2]
				} else {
					j=d[2]
				}
			} else {
				if (parseInt(m) < mo || (parseInt(m) == mo && parseInt(t) <= now.getDate())) {
					j++;
				}
			}
			field.value=t+'.'+m+'.'+j;
		} else {
			if (d.length==4) {
			
				t = d.substring(0, 2);
				m = d.substring(2, 4);
				
				if (parseInt(m) < mo || (parseInt(m) == mo && parseInt(t) <= now.getDate())) {
					j++;
				}
					
				field.value=t+'.'+m+'.'+j;
			}
		}
		
		d = field.value;
		if (!validateDate(d)) alert('Fehler bei der Datumseingabe!')
		else if (field.id == 'Anreise_am') document.getElementById('Abreise_am').value = d;
		
	}
		
		
	function validateDate(d){
		return isExistingDate(d);
	}
	
	function isExistingDate(date)
	{
		var now = new Date();

		if (!date) return false;
		dateString=date.toString();
	
		date=dateString.split(".");
		if (date.length > 3)
			return false;
		if (date.length < 2) {
			if (dateString.length != 4) {
				return false;
			}
			date[0] = parseInt(dateString.substring(0, 2));
			date[1] = parseInt(dateString.substring(2, 4)) - 1;
		} else {
			date[0]=parseInt(date[0],10);
			date[1]=parseInt(date[1],10)-1;
		}
		if (date.length < 3 || 0 == date[2].length) {
			if (date[1] < now.getMonth() || (date[1] == now.getMonth() && date[0] <= now.getDate())) {
				date[2] = now.getFullYear() + 1;
			} else {
				date[2] = now.getFullYear();
			}
		}
	
		var realDate=new Date(date[2],date[1],date[0]);
	 
		if (realDate.getDate()==date[0] && realDate.getMonth()==date[1] && realDate.getFullYear()==date[2]) {
			return true;
		} else {
			return false;
		}
	}


	function handleIsNumber(str) {
	  for(var position=0; position<str.length; position++){
		var chr = str.charAt(position)
	        if  ( (chr < "0") || (chr > "9") ) 
	              return false;
	  }      
	  return true;
	}	

	function handleIsValidTime(timeStr) {
		// Checks if time is in HH:MM format.
		var timePat = /^(\d{1,2}):(\d{2})$/;
		var matchArray = timeStr.match(timePat);
		if (matchArray == null) {
			return false;
		}
		hour = matchArray[1];
		minute = matchArray[2];
		
		if (hour < 0  || hour > 23) {
			return false;
		}
		if (minute<0 || minute > 59) {
			return false;
		}
		
		return true;
	}
	
	// return Maximum von minAnreise, defaultAnreise, Morgen und kleinstem Anreisetermin in Reisezielen und Hotels
	function getLowestPossibleReisebeginn() {
		var utcTomorrow = date2UTCDate(dateChopTime(new Date())) + 24*60*60*1000;
		var utcMinAnreise = minAnreise != '' ? str2UTCDate(minAnreise) : utcTomorrow;
		var utcDefaultAnreise = defaultAnreise != '' ? str2UTCDate(defaultAnreise) : utcTomorrow;
		
		var utcLowestPossible = Math.max(utcTomorrow, utcMinAnreise);
		var utcLowestPossible = Math.max(utcLowestPossible, utcDefaultAnreise);
		
		var utcLowestDefined = null;
		var utcTmpDate;
		// check Reiseziele
		if (document.forms[0].elements['Reiseziel']) {
			for (i = 0; i < date_Reiseziel.length; i++) {
				// durchlaufe die Datumsangaben des Reiseziels
				for (j = 1; j < date_Reiseziel[i].length; j++) {
					utcTmpDate = str2UTCDate(date_Reiseziel[i][j])
					if (utcLowestDefined == null) {
						utcLowestDefined = utcTmpDate;
					}
					if (utcTmpDate < utcLowestDefined) {
						utcLowestDefined = utcTmpDate;
					}
					j++;
				}
			}
		}
		// check Hotels
		if (document.forms[0].elements['Hotel']) {
			for (i = 0; i < date_Liste_Hotels.length; i++) {
				// durchlaufe die Datumsangaben des Hotels
				for (j = 1; j < date_Liste_Hotels[i].length; j++) {
					utcTmpDate = str2UTCDate(date_Liste_Hotels[i][j])
					if (utcLowestDefined == null) {
						utcLowestDefined = utcTmpDate;
					}
					if (utcTmpDate < utcLowestDefined) {
						utcLowestDefined = utcTmpDate;
					}
					j++;
				}
			}
		}
		
		if (utcLowestDefined == null) {
			utcLowestDefined = utcTomorrow;
		}
		return utcDate2Str(Math.max(utcLowestDefined, utcLowestPossible));
	}

	function isAbreiseTerminPossible(strDate) {
		var utcAbreise = str2UTCDate(strDate);
		// wenn keine Reiseziele und keine Hotels, dann nehme true an
		if (!document.forms[0].elements['Reiseziel'] && !document.forms[0].elements['Hotel']) {
			return true;
		}
		
		// ansonsten suche in Reisezielen und Hotels
		// check Reiseziele
		if (document.forms[0].elements['Reiseziel']) {
			for (var i = 0; i < date_Reiseziel.length; i++) {
				// durchlaufe die Datumsangaben des Reiseziels
				for (var j = 1; j < date_Reiseziel[i].length; j++) {
					utcLower = str2UTCDate(date_Reiseziel[i][j])
					utcUpper = str2UTCDate(date_Reiseziel[i][j+1])
					if (utcLower <= utcAbreise && utcAbreise <= utcUpper) {
						return true;
					}
					j++;
				}
			}
		}
		// check Hotels
		if (document.forms[0].elements['Hotel']) {
			for (var i = 0; i < date_Liste_Hotels.length; i++) {
				// durchlaufe die Datumsangaben des Hotels
				for (var j = 1; j < date_Liste_Hotels[i].length; j++) {
					utcLower = str2UTCDate(date_Liste_Hotels[i][j])
					utcUpper = str2UTCDate(date_Liste_Hotels[i][j+1])
					if (utcLower <= utcAbreise && utcAbreise <= utcUpper) {
						return true;
					}
					j++;
				}
			}
		}
		
		// nix gefunden
		return false;
	}
	
	function findFirstPossibleAbreisetermin(strDateAnreise) {
		// wenn defaultAbreise gegeben, prüfe, ob > strDateAnreise
		if (defaultAbreise != '') {
			if (str2UTCDate(defaultAbreise) > str2UTCDate(strDateAnreise) && isAbreiseTerminPossible(defaultAbreise)) {
				// ok, verwende default Datum
				return defaultAbreise;
			}
		}
		// fange sieben Tage nach dem Anreisedatum an
		// Suche ueber maximal 180 Tage
		var d = strDateAnreise;
		for(var i = 7; i < 180; i++) {
			d = addDaysToDate(strDateAnreise, i);
			if (isAbreiseTerminPossible(d)) {
				return d;
			}
		}
		return '';
	}



// UF 2008 - Steuerung der DoppelEDM

var arrEDMHeadersLayout=['standard', 'pauschal'];
var arrEDMFields=['TITLE', 'Anzahl_Erwachsene', 'Kind_1', 'Kind_2', 'Kind_3', 'Kind_4', 'Verpflegung', 'Hotel_Finca_Kategorie', 'Preislimit_pro_Erwachsenem'];
var intActiveEDMType=0;


  function fnEDM_Header_MouseOver (el) {
    if (el.className.search (/active/)==-1) {  // nicht aktiv
      el.style.cursor='pointer';
      if (el.className.search (/pauschal/)!=-1 && document.getElementById ('edm_header_pauschal').className.search (/active/)==-1) document.getElementById ('edm_header_pauschal').style.cursor='pointer';
      if (el.className.search (/standard/)!=-1 && document.getElementById ('edm_header_standard').className.search (/active/)==-1) document.getElementById ('edm_header_standard').style.cursor='pointer';
    }
  }


  function fnEDM_Header_MouseOut (el) {
    el.className=el.className.split ('_hover')[0];
    if (el.className.search (/pauschal/)!=-1 && document.getElementById ('edm_header_pauschal').className.search (/active/)==-1) document.getElementById ('edm_header_pauschal').className='edm_header_pauschal';
    if (el.className.search (/standard/)!=-1 && document.getElementById ('edm_header_standard').className.search (/active/)==-1) document.getElementById ('edm_header_standard').className='edm_header_standard';

  }


  function fnEDM_Header_MouseClick (el) {
    el.className=el.className.split ('_hover')[0]+'_active';
  }
  
  
  function fnBuildEDM (intActiveEntry) {
  
  if (intActiveEntry==-1) return;
    
    for (var dummy=1, objEDMField, intOptionID; dummy<arrEDMLayouts[intActiveEntry].length; dummy++) {
      if (document.getElementById (arrEDMFields[dummy])!=null && (arrEDMLayouts[intActiveEntry][dummy] || !arrEDMFields[dummy].indexOf('Kind'))) {  
        objEDMField=document.getElementById (arrEDMFields[dummy]);
        switch (objEDMField.type) {
          case 'select-one'	: intOptionID=fnGetOptionID (arrEDMLayouts[intActiveEntry][dummy], objEDMField);
          			  objEDMField.selectedIndex=intOptionID;
          			  break
          
          case 'text'		: objEDMField.value=arrEDMLayouts[intActiveEntry][dummy];
          			  break;
          			  
          case 'hidden'		: objEDMField.value=arrEDMLayouts[intActiveEntry][dummy];
          			  break;
        }
      }
    }
  }
  
  function fnFillReisezielPulldown () {
  
    var objDestinationTargetSelect=document.getElementById ('Reiseziel');
    if (objDestinationTargetSelect && objDestinationTargetSelect.type!='hidden') {
      objDestinationTargetSelect.innerHTML='';
      
      if (strEDMType=='Flug' && intActiveEDMType==0) {
        document.getElementById ('CaptionReiseziel').innerHTML='Zielflughafen';

        var dummyDestinationTarget=null;
        if (list_Zielflughafen[0][1]=="bitte auswählen") {
            var option=document.createElement ('option');
            option.value="";
            option.innerHTML="bitte auswählen";
            if (strStartZielflughafen=="") option.selected=true;
            objDestinationTargetSelect.appendChild (option);
        }
        for (var dummy=0, dummy2=0; dummy<list_Zielflughafen.length; dummy++) {
          if (list_Zielflughafen[dummy][0].substring (0,7)=='COUNTRY') {
            if (dummyDestinationTarget!=null) objDestinationTargetSelect.appendChild (dummyDestinationTarget);
                  
            if (list_Zielflughafen[dummy+1][0].substring (0,7)!='COUNTRY') {          
              dummyDestinationTarget=document.createElement ('optgroup');
              dummyDestinationTarget.label=list_Zielflughafen[dummy][1];
            } else {
              dummyDestinationTarget=null;
            }
          
          } else {
            if (list_Zielflughafen[dummy][0]) {
              var option=document.createElement ('option');
              option.value=list_Zielflughafen[dummy][0];
              option.innerHTML=list_Zielflughafen[dummy][1];
              if (option.value==strStartZielflughafen) option.selected=true;
              dummyDestinationTarget.appendChild (option);
            }
          }              
        }
        if (dummyDestinationTarget!=null) objDestinationTargetSelect.appendChild (dummyDestinationTarget);        
        
      } else {
        document.getElementById ('CaptionReiseziel').innerHTML='Reiseziel';
        var dummyDestinationTarget=null;
        if (name_Reiseziel[0][0]=="bitte auswählen") {
            var option=document.createElement ('option');
            option.value="";
            option.innerHTML="bitte auswählen";
            if (strStartReiseziel=="") option.selected=true;
            objDestinationTargetSelect.appendChild (option);
        }
        for (var dummy=0, dummy2=0; dummy<name_Reiseziel.length; dummy++) {
          if (name_Reiseziel[dummy][1].substring (0,7)=='COUNTRY') {
            if (dummyDestinationTarget!=null) objDestinationTargetSelect.appendChild (dummyDestinationTarget);
          
            for (var dummy2=dummy+1, blnReisezielFound=0; dummy2<name_Reiseziel.length; dummy2++) {
              if (name_Reiseziel[dummy2][1].substring (0,7)=='COUNTRY') break;
              if ((fnTestReiseziel(name_Reiseziel[dummy2][1])) && (parseInt(name_Reiseziel[dummy2][2])>=intActiveEDMType)) blnReisezielFound=1;
            }
          
          
            if (blnReisezielFound) {          
              dummyDestinationTarget=document.createElement ('optgroup');
              dummyDestinationTarget.label=name_Reiseziel[dummy][0];
            } else {
              dummyDestinationTarget=null;
            }
          
          } else {
            if (dummyDestinationTarget!=null && (name_Reiseziel[dummy][1]) && (parseInt(name_Reiseziel[dummy][2])>=intActiveEDMType) && (fnTestReiseziel (name_Reiseziel[dummy][1]))) {
              var option=document.createElement ('option');
              option.value=name_Reiseziel[dummy][1];
              option.innerHTML=name_Reiseziel[dummy][0];
              if (option.value==strStartReiseziel) option.selected=true;
              dummyDestinationTarget.appendChild (option);
            }
          }              
        }
        if (dummyDestinationTarget!=null) objDestinationTargetSelect.appendChild (dummyDestinationTarget);

      }
      
    }
  }
  


  function fnBuildEDMHeader (intActiveHeader, intActiveEntry) {
  
    var strEDMHeaderHTML='<table border=0 cellpadding=0 cellspacing=0 width="100%" style="margin-top: 0px; border-bottom: 1px solid #807f84; background-color: #fff">';

    intActiveEDMType=intActiveHeader;
    
    for (var intHeaders=0; intHeaders<arrEDMHeaders.length; intHeaders++) {
      if (strEDMType=='Pauschal' && intHeaders==0) continue;
      if (intHeaders==intActiveHeader) {
        if (intHeaders==0) {
          var objAbflughafen=document.getElementById ('Abflughafen');
          if (objAbflughafen && strEDMType=='Hotel') {
            objAbflughafen.style.visibility='hidden';
            document.getElementById ('CaptionAbflughafen').style.visibility='hidden';
          }
          document.getElementById ('edm_contents').style.backgroundColor='#ffdba3';
        } else {
          var objAbflughafen=document.getElementById ('Abflughafen');
          if (objAbflughafen && strEDMType=='Hotel') {
            objAbflughafen.style.visibility='visible';
            document.getElementById ('CaptionAbflughafen').style.visibility='visible';
          }
          document.getElementById ('edm_contents').style.backgroundColor='#dfe8fa';
        }
        strEDMHeaderHTML+='<tr class="edm_header_'+arrEDMHeadersLayout[intHeaders]+'_active" id="edm_header_'+arrEDMHeadersLayout[intHeaders]+'"><td class="icon" width=30><img src="/'+fnGetWhiteLabel ()+'/lp/includes/gfx/edm_'+arrEDMHeaders[intHeaders][0].toLowerCase ()+'.gif" width="21" height="21" alt="" /></td><td class="headertext">'+arrEDMHeaders[intHeaders][0]+' buchen</td></tr>';
      } else {
        strEDMHeaderHTML+='<tr onclick="fnBuildEDMHeader ('+intHeaders+',-1)" class="edm_header_'+arrEDMHeadersLayout[intHeaders]+'" id="edm_header_'+arrEDMHeadersLayout[intHeaders]+'"><td class="icon"><img src="/'+fnGetWhiteLabel ()+'/lp/includes/gfx/edm_'+arrEDMHeaders[intHeaders][0].toLowerCase ()+'.gif" width="21" height="21" alt="" /></td><td class="headertext"> '+arrEDMHeaders[intHeaders][0]+' buchen</td></tr>';
      }
      for (var intEntries=0; intEntries<arrEDMHeaders[intHeaders][1].length; intEntries++) {
        if (arrEDMHeaders[intHeaders][1][intEntries]=='' || arrEDMHeaders[intHeaders][1][intEntries]=='Baustein' || arrEDMHeaders[intHeaders][1][intEntries]=='Pauschal') continue;
        if (intEntries==intActiveEntry && intHeaders==intActiveHeader) {
          strEDMHeaderHTML+='<tr class="edm_header_'+arrEDMHeadersLayout[intHeaders]+'_entry_active"><td width=30>&nbsp;</td><td>'+arrEDMHeaders[intHeaders][1][intEntries]+'</td></tr>';
        } else {
          strEDMHeaderHTML+='<tr onclick="fnBuildEDMHeader ('+intHeaders+', '+intEntries+')" class="edm_header_'+arrEDMHeadersLayout[intHeaders]+'_entry"><td>&nbsp;</td><td>'+arrEDMHeaders[intHeaders][1][intEntries]+'</td></tr>';
        }

      }
      strEDMHeaderHTML+='<tr colspan=2 class="edm_header_spacer"><td>&nbsp;</td></tr>'
    }
    strEDMHeaderHTML+='</table>';
    document.getElementById ('edm_header').innerHTML=strEDMHeaderHTML;
    document.getElementById ('edm_suche_starten').className='edm_suche_starten_'+arrEDMHeadersLayout[intActiveHeader];
    document.getElementById ('suchestarten').src='/'+fnGetWhiteLabel ()+'/lp/includes/gfx/edm_suchestarten_'+arrEDMHeadersLayout[intActiveHeader]+'.gif';
    
    if (intActiveHeader) {
      fnBuildEDM (intActiveEntry);
    } else {
      fnBuildEDM (0);
    }
    fnFillReisezielPulldown ();
  }
  
  
  function fnInitEDMHeader () {
  
    if (typeof(strStartActiveMenu)=="undefined") {
      intActiveEDMType=0;
      fnFillReisezielPulldown ();
      if (strEDMType=='Pauschal') {
        var strEDMHeaderHTML='<table border=0 cellpadding=0 cellspacing=0 width="100%" style="margin-top: 0px; border-bottom: 1px solid #4b73c8; background-color: #fff">';
        strEDMHeaderHTML+='<tr class="edm_header_pauschal_active" id="edm_header_pauschal"><td class="icon" width=30><img src="/'+fnGetWhiteLabel ()+'/lp/includes/gfx/edm_'+strEDMType.toLowerCase ()+'.gif" width="21" height="21" alt="" /></td><td class="headertext">'+strEDMType+' buchen</td></tr>';
        strEDMHeaderHTML+='</table>';
        document.getElementById ('edm_header').innerHTML=strEDMHeaderHTML;
        document.getElementById ('edm_contents').style.backgroundColor='#dfe8fa';
        document.getElementById ('edm_suche_starten').className='edm_suche_starten_pauschal';
        document.getElementById ('suchestarten').src='/'+fnGetWhiteLabel ()+'/lp/includes/gfx/edm_suchestarten_pauschal.gif';
      } else {
        var strEDMHeaderHTML='<table border=0 cellpadding=0 cellspacing=0 width="100%" style="margin-top: 0px; border-bottom: 1px solid #ff9a00; background-color: #fff">';
        strEDMHeaderHTML+='<tr class="edm_header_standard_active" id="edm_header_standard"><td class="icon" width=30><img src="/'+fnGetWhiteLabel ()+'/lp/includes/gfx/edm_'+strEDMType.toLowerCase ()+'.gif" width="21" height="21" alt="" /></td><td class="headertext">'+strEDMType+' buchen</td></tr>';
        strEDMHeaderHTML+='</table>';
        document.getElementById ('edm_header').innerHTML=strEDMHeaderHTML;
        document.getElementById ('edm_contents').style.backgroundColor='#ffdba3';
      }
      
      return;
    }
    
    fnCleanDoppelEDM ();
    if (strStartActiveMenu=='Baustein' && strEDMType!='Pauschal') {
      intActiveEDMType=0;
      fnBuildEDMHeader (0,0);
      return;
    }
    intActiveEDMType=1;
    for (var dummy=0; dummy<arrEDMHeaders[1][1].length; dummy++) {
      if (arrEDMHeaders[1][1][dummy]==strStartActiveMenu) {
        fnBuildEDMHeader (1,dummy);
      }
    }
  }
