
//*********************************************************************
// Allgemein
//*********************************************************************

browName = navigator.appName; browVer = parseInt(navigator.appVersion);
  if(browName == "Netscape" && browVer <= 4)
	{ver = "n4";} // netscape 4.7
   else if(browName == "Microsoft Internet Explorer" || browVer >= 4)
	{ver = "ien6";} // ie und netscape 6
   else
	{ver = "alt";}

function ajaxUpdateWithLoaderLayer(container, url, opacityFrom, opacityTo, opacityDuration, shouldScroll) {
	var opacityFrom = (opacityFrom == null) ? 0 : opacityFrom;
	var opacityTo = (opacityTo == null) ? 0.5 : opacityTo;
	var opacityDuration = (opacityDuration == null) ? 0.5 : opacityDuration;
	var boxLayer = $(container);
	$('loaderImage').setStyle({ display: 'block' });
	var boxBild = $('loaderImage');
	// alle Selectboxen ausblenden 
	toggleSelectVisibility($(container),false);
	var offsetTop = 0;
	var offsetLeft = 0;
	var element = boxLayer;
	// offsetLeft und offsetTop berechnen (special für IE) 
	while(element != null) {
		offsetLeft += element.offsetLeft ;
		offsetTop += element.offsetTop ;
		element = element.offsetParent ;
	}
	$('loaderLayer').setStyle({ display: 'block', width: boxLayer.offsetWidth + 'px', height: boxLayer.offsetHeight + 'px', top: offsetTop + 'px' });//top: offsetTop + 'px', left: offsetLeft + 'px', 
	$('loaderImage').setStyle({ top: (offsetTop+(boxLayer.offsetHeight-boxBild.offsetHeight)/2) + 'px',left:'361px'});//(left:offsetLeft+(boxLayer.offsetWidth-boxBild.offsetWidth)/10) + 'px'
	// loaderLayer mit Fade einblenden 
	new Effect.Opacity('loaderLayer', { from: opacityFrom, to: opacityTo, duration: opacityDuration });
	// loaderImage mit Fade einblenden 
	new Effect.Opacity('loaderImage', { from: 0, to: 1, duration: opacityDuration });
	// Ajax Aufruf - nach Beendigung loaderLayer und loaderImage mit Fade ausblenden und alle Selectboxen wieder einblenden 
	new Ajax.Updater(container, url, {
			evalScripts: true,
			onSuccess: function(transport) {
				// loaderLayer mit Fade ausblenden 
				
				new Effect.Opacity('loaderLayer', { from: opacityTo, to: opacityFrom, duration: opacityDuration,	afterFinish: function(effect) {
							$('loaderLayer').setStyle({ display: 'none' });
							toggleSelectVisibility($(container),true);
							scrollToContainer(container,shouldScroll); 
						}
					}
				);
				// loaderImage mit Fade ausblenden 
				new Effect.Opacity('loaderImage', { from: 1, to: 0, duration: opacityDuration,	afterFinish: function(effect) {
							$('loaderImage').setStyle({ display: 'none' });
						}
					}
				);
			}
		}, {
			onFailure: function(transport) {
				alert('fehler');
			}
		}
	);
}

// alle Selectboxen unterhalb des elements ausblenden/einblenden
function toggleSelectVisibility(element,handletagselect) {
	if(element.tagName == 'SELECT'){
		element.style.visibility = (element.style.visibility == 'hidden') ? 'visible' : 'hidden';
	}
	if(element.childNodes && element.childNodes.length > 0) {
		for(var n=0; n<element.childNodes.length; n++) {
			toggleSelectVisibility(element.childNodes[n],handletagselect);
		}
	}
}

// Scrollt zu einem angegebenen Element(soft) 
function scrollToContainer(container,shouldScroll){
	if(shouldScroll)
		new Effect.ScrollTo(container);}
		
// Scrollt zu einem angegebenen Element(NICHT soft) 
function scrollToContainer2(container){
	var elment = $(container);
	var pT = 0;
	while(elment){pT+=elment.offsetTop;elment=elment.offsetParent;}
	window.scrollTo(0,pT);
}

// checkt auf Datum tt.mm.jjj, t.mm.jjjj, t.m.jjjj, tt.m.jjjj 
function getDatumMatch(datestring){
	var datePat = /^(\d{1,2})(.)(\d{1,2})(.)(\d{4})$/;
	
	return datestring.match(datePat);
}

// entfernt alle Leerzeichen am Ende und Anfang 
function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}

// Entfernt alle Leerzeichen 
function trimAll(s){
	s = trim(s);
	s = s.replace(/ /g, "");
	return s;
}

// fuegt einem Array mit Daten die Methode 'containsDate' hinzu
Array.prototype.containsDate = function(element) {
	for (var i = 0; i < this.length; i++) {
		if( (this[i].split(".")[2])== element.getFullYear() && ((this[i].split(".")[1])-1) == element.getMonth() && (this[i].split(".")[0]) == element.getDate()){
			return true;
		}
	}
	return false;
}

// Achtung! Diese Funktion setzt den Prototyp 'containsDate' fuer Arrays voraus 
function datumIstEnthalten(matchArray){
	var _date = new Date(matchArray[5],matchArray[3]-1,matchArray[1]);
	var _array = $('datumsliste').value.split(",");
	return  _array.containsDate(_date);
}


//*********************************************************************
// Recherche (immer)
//*********************************************************************

var defaultTextAuswhl = 'beliebig';
var defaultObjectcodeDirekt = 'Tournummer, Textsuche';
var kalender = null;	

function kinderanzeigen(anzahl)
{
    for (var i = 1; i <= 3  ; i++)
		if (i <= anzahl)	
			{eval("document.getElementById('kind"+i+"').style.display='inline'");}   
		else
			{eval("document.getElementById('kind"+i+"').style.display='none'");}  
			
	if (anzahl > 0)
		{document.getElementById('kinderheadline').style.display='inline';} 
	else
		{document.getElementById('kinderheadline').style.display='none';}  		
			 	
}

function setSuTermin()
{
	var _strim = trimAll(document.formular.datumvon.value);
	var match = getDatumMatch(_strim);
	if((match != null && datumIstEnthalten(match))){
		document.formular.AbreiseTag.value = document.formular.datumvon.value;
		document.formular.datumFeldChanged.value = true;
		callSuAjax();}
	else
	if(_strim == '' || _strim == defaultTextAuswhl){
		document.formular.AbreiseTag.value = '01.01.1900';
		document.formular.datumFeldChanged.value = true;
		callSuAjax();}
	else{
		alert('Das Reisedatum ist falsch geschrieben oder es existiert keine Reise zu diesem Termin!');
		if (document.formular.AbreiseTag.value == '01.01.1900'){
		document.formular.datumvon.value = defaultTextAuswhl}
		else{document.formular.datumvon.value = document.formular.AbreiseTag.value;}
		}
}

function setSuReisedauer()
{
	document.formular.DauerBitcode.value = document.formular.reisedauer.value;
	callSuAjax();
}

function setSuZielgebiet()
{
	document.formular.IDZielgebiet.value = document.formular.reiseziel.value;
	callSuAjax();
}

function setSuErwachsene()
{
 	document.formular.anzahlErwachsene.value = document.formular.anzErw.value;
	callSuAjax();
}

function setSuKinder()
{
 	document.formular.anzahlKinder.value = document.formular.anzKin.value;
	callSuAjax();
}

function setSuAlterKind(nr)
{
	var element = document.getElementById('ka'+nr);
	var hidden = document.getElementById('Kindalter'+nr);
	hidden.value = element.value;
	callSuAjax();
}

function resetRecherche()
{
	document.formular.resetSuche.value = true;
	callSuAjax();
}

// Ajaxaufruf Recherche 
function callSuAjax()
{
	new Ajax.Updater('sucheDivUnten','/web/skripte/template/suche.cfm?resetSuche='+document.formular.resetSuche.value+'&datumFeldChanged='+document.formular.datumFeldChanged.value+'&IDZielgebiet='+document.formular.IDZielgebiet.value+'&AbreiseTag='+document.formular.AbreiseTag.value+'&DauerBitcode='+document.formular.DauerBitcode.value+'&anzahlErwachsene='+document.formular.anzahlErwachsene.value+'&anzahlKinder='+document.formular.anzahlKinder.value+'&Kindalter1='+document.formular.Kindalter1.value+'&Kindalter2='+document.formular.Kindalter2.value+'&Kindalter3='+document.formular.Kindalter3.value,{evalScripts:true});
}

function suchen()
{
	document.location.href = '/web/index.cfm?pm=uebersicht&suchart=recherche&datumFeldChanged='+document.formular.datumFeldChanged.value+'&IDZielgebiet='+document.formular.IDZielgebiet.value+'&AbreiseTag='+document.formular.AbreiseTag.value+'&DauerBitcode='+document.formular.DauerBitcode.value+'&anzahlErwachsene='+document.formular.anzahlErwachsene.value+'&anzahlKinder='+document.formular.anzahlKinder.value+'&Kindalter1='+document.formular.Kindalter1.value+'&Kindalter2='+document.formular.Kindalter2.value+'&Kindalter3='+document.formular.Kindalter3.value;
}

function setActionDirektsuche()
{
	if(document.formulardirekt.codeObjektdirekt.value != '' && document.formulardirekt.codeObjektdirekt.value != defaultObjectcodeDirekt){
		window.location.href="/web/index.cfm?pm=uebersicht&suchart=direktsuche&searchValue="+document.formulardirekt.codeObjektdirekt.value;
	}
}

function handleClickVonDatum(){
	if(kalender)kalender.hide();
	if(document.formular.datumvon.value == defaultObjectcodeDirekt)
		document.formular.datumvon.value = '';
}

function reisedate(d) {

  	var date = (d.getDate() > 9) ? d.getDate():0+''+d.getDate();
  	var month = (d.getMonth() + 1 > 9)? parseInt(d.getMonth()+1) : 0 +''+ parseInt(d.getMonth()+1);
   	document.getElementById("datumvon").value = date + "." + month + "." + d.getFullYear();
	setSuTermin(); //ausgewaehltes Datum in hidden Field setzen und per Ajax aktualisieren 
	$('closeVnd').hide();
 }
 
function showCal(e) {
 	
	var start = '';
	if(document.getElementById("datumvon").value == 'beliebig' || document.getElementById("datumvon").value == '')
		start = '';
	else
		start = document.getElementById("datumvon").value;
 
 	  	kalender = new Kalender('vnd', {
                                    "orientation": 'horizental', 
                                    "onSelect":reisedate, 
                                    "calendars":1, 
                                    "language":"de",  
                                    "minDate" : document.getElementById("minDatum").value,//"12.12.2009", 
                                    "maxDate" : document.getElementById("maxDatum").value,//"12.12.2010",
                                    "startDate" : start,
                                    "startDay":1,
                                    "navigationPosition":"top", 
                                    "monthSelector" : 1,
							 		 "dateList" : document.getElementById("datumsliste").value //Die Daten aus der Recherche uebernehmen
                                    });
 	   	
	kalender.show();	
	$('closeVnd').show();
	Event.stop(e)

}

function handleClick(){
	
	document.observe("click", function(e) {
		var elem = Event.element(e);
		if(kalender) {
			kalender.hide();
			$('closeVnd').hide();
		}
	});

}

function handleVndClick(){
	if (document.getElementById("vnd")) {Event.observe("vnd", "click", function(e) {
		Event.stop(e)	
	});
}
}

document.observe("dom:loaded", function() { handleClick(); handleVndClick();});


//********************************************************************
//  Termine und Unterbringung (nur, wenn pm=detail)
//********************************************************************

function resize_me(n){
	d=0;
	ifObj=document.getElementsByName(n)[0];
	p=(document.all)?'scroll':'offset';
	eval("ifObj.style.height=window.frames[n].document.getElementsByTagName('body')[0]."+p+"Height+"+d);
}

function showAuswahlHideBuchung() {
	$('buchung').setStyle({ display: 'none' });
	if($('contentlinks'))
		$('contentlinks').setStyle({ display: 'block' });
	document.tu.action = document.tu.backAction.value;
	document.tu.submit();
}

function setTUTerminFilter() {
	termin = document.forms.tu.termin.value;
	document.tu.tuBlaetternAktiveSeite.value = 1;
	document.tu.tuTerminFilter.value = termin;
	document.tu.tuTagFilter.value = '0';
	callTUAjax();
}

// Dauer
function setTUDauerFilter() {
	dauer = document.forms.tu.dauer.value;
	document.tu.tuBlaetternAktiveSeite.value = 1;
	document.tu.tuDauerFilter.value = dauer;
	callTUAjax();
}

// Tag Termin 
function setTUTagFilter() {
	tage = document.forms.tu.tag.value;
	document.tu.tuBlaetternAktiveSeite.value = 1;
	document.tu.tuTagFilter.value = tage;
	callTUAjax();
}

function setTUAbflughafenFilter() {
	abflughafen = document.forms.tu.abflughafen.value;
	document.tu.tuBlaetternAktiveSeite.value = 1;
	document.tu.tuAbflughafenFilter.value = abflughafen;
	if(abflughafen != '')
		document.tu.tuAnreiseartFilter.value = 0;
	callTUAjax();
}

function setTuAnreiseartFilter(){
	anreiseart = document.forms.tu.anreiseart.value;
	document.tu.tuAnreiseartFilter.value = anreiseart;
	if(anreiseart == 3)
		document.tu.tuAbflughafenFilter.value = '';
	document.tu.tuBlaetternAktiveSeite.value = 1;
	callTUAjax();}

function setTUBlaetternSeite(aktiveSeite) {
	document.tu.tuBlaetternAktiveSeite.value = aktiveSeite;
	document.tu.tuGeblaettert.value = true;
	callTUAjax();
}

function setTUTerminAbflughafen(termin, abflughafen, abflughafenName, dauer, abPreis, anreiseartname, anreiseart ) {
	document.tu.tuTerminBuchung.value = termin;
	document.tu.tuAbflughafenBuchung.value = abflughafen;
	document.tu.tuAbflughafenBuchungName.value = abflughafenName;
	document.tu.tuDauerBuchung.value = dauer;
	document.tu.tuAbpreis.value = abPreis;
	document.tu.tuAnreiseartBuchungName. value = anreiseartname;
	document.tu.tuAnreiseartBuchung.value = anreiseart;
	document.tu.tuIDInfx.value = 0; 
	document.tu.tuScrollToKategorie.value= 1;
	callTUAjax();
}

function setTUSortierung(sortierung) {
	document.tu.tuBlaetternAktiveSeite.value = 1;
	document.tu.tuSortierung.value = sortierung;
	callTUAjax();
}

function setTUAnzahlErwachsene(anzahlErwachsene) {
	document.tu.tuAnzahlErwachsene.value = anzahlErwachsene;
	document.tu.tuIDInfx.value = 0;
	if(anzahlErwachsene == 0)
	{
		document.tu.tuAnzahlKinder.value = 0;
	}
	callTUAjax();
}

function setTUAnzahlKinder(anzahlKinder) {
	document.tu.tuAnzahlKinder.value = anzahlKinder;
	document.tu.tuIDInfx.value = 0;
	callTUAjax();
}

function setGeburtstagKind(kindnr) {
	var formular = document.forms['tu'];
	var tag = formular['kind' + kindnr + 'tag'].value;
	var monat = formular['kind' + kindnr + 'monat'].value;
	var jahr = formular['kind' + kindnr + 'jahr'].value;
	var parameterString = 'tuKindNr=' + kindnr + '&tuKindTag=' + tag + '&tuKindMonat=' + monat + '&tuKindJahr=' + jahr;
	if(tag && monat && jahr) {
		callTUAjax(parameterString);
	}
}

function setAlterKind(kindNr){
	var formular = document.forms['tu'];
	var alterKind = formular['alterKind_' + kindNr].value;
	document.tu.tuKindNr.value = kindNr;
	document.tu.tuKindAlter.value = alterKind;
	callTUAjax();
}

function setTUIDInfx(idInfx, anzahlKabinen) {
	document.tu.tuIDInfx.value = idInfx;
	document.tu.tuAnzahlKabinen.value = anzahlKabinen;
	document.tu.submit();
}

function callTUAjax(parameterString) {

	var parameterString = (parameterString == null) ? '' : '&' + parameterString;
	var _url = 'skripte/template/termine_und_unterbringung.cfm' + 
		'?objCode=' + document.tu.objCode.value + 
		'&objId=' + document.tu.objId.value +
		'&tuBlaetternAktiveSeite=' + document.tu.tuBlaetternAktiveSeite.value + 
		'&tuIDObjekt=' + document.tu.tuIDObjekt.value + 
		'&tuTerminFilter=' + document.tu.tuTerminFilter.value + 
		'&tuTerminBuchung=' + document.tu.tuTerminBuchung.value + 
		'&tuTagFilter=' + document.tu.tuTagFilter.value + 
		'&tuTagBuchung=' + document.tu.tuTagBuchung.value + 
		'&tuDauerFilter=' + document.tu.tuDauerFilter.value + 
		'&tuDauerBuchung=' + document.tu.tuDauerBuchung.value +
		'&tuAbflughafenFilter=' + document.tu.tuAbflughafenFilter.value + 
		'&tuAbflughafenBuchung=' + document.tu.tuAbflughafenBuchung.value + 
		'&tuSortierung=' + document.tu.tuSortierung.value + 
		'&tuAnzahlErwachsene=' + document.tu.tuAnzahlErwachsene.value + 
		'&tuAnzahlKinder=' + document.tu.tuAnzahlKinder.value + 
		'&tulGebDatKinder=' + document.tu.tulGebDatKinder.value + 
		'&tulAlterKinder=' + document.tu.tulAlterKinder.value + 
		'&tuKindNr=' + document.tu.tuKindNr.value + 
		'&tuKindAlter=' + document.tu.tuKindAlter.value + 
		'&tuIDInfx=' + document.tu.tuIDInfx.value + 
		'&tuAnzahlKabinen=' + document.tu.tuAnzahlKabinen.value + 
		'&tuAgenturnr=' + document.tu.tuAgenturNr.value + 
		'&tuGeblaettert=' + document.tu.tuGeblaettert.value +
		'&tuAbflughafenBuchungName=' + encodeURI(document.tu.tuAbflughafenBuchungName.value) +
		'&tuAbPreis=' + document.tu.tuAbpreis.value +
		'&tuAnreiseartFilter=' + document.tu.tuAnreiseartFilter.value +
		'&tuAnreiseartBuchungName=' + document.tu.tuAnreiseartBuchungName.value +
		'&tuAnreiseartBuchung=' + document.tu.tuAnreiseartBuchung.value +
		'&tuScrollToKategorie=' + document.tu.tuScrollToKategorie.value +
		'&visibilityOfSelectTags=hidden' + parameterString;// +'&relativerLinkDetailseite=' + document.tu.relativerLinkDetailseite.value;
	
	var info = {};
        info.container = 'termineUnterbringung';
        info.page = 'detail';
        info.url = _url;
    
	dhtmlHistory.add(_url, info);
	ajaxUpdateWithLoaderLayer('termineUnterbringung', _url , 0, 0.5, 0.5, false);
	
}
