//Funktionen für die Lastminute- und Frühbucherfunktion

var tage_offset = 0;
var gewaehlter_preis = 0;
var zugehoeriger_standardpreis = 0;
var gewaehlte_tage = 1;

	//funktionen, die das objekt der angegebenen ID zurückgibt.
function $(id) { 
		return document.getElementById(id);
	}

function check_sperrtermine() {
		var anreise = new Date($('anreise_jahr').value,$('anreise_monat').value,$('anreise_tag').value);
		var abreise = new Date($('abreise_jahr').value,$('abreise_monat').value,$('abreise_tag').value);
		fehler = pruefe_sperrtermine(sperrtermine,anreise,abreise);
		if (fehler[0]) {
			alert('During your stay the fair  ' + fehler[1] + 'takes place . Please you contact us directly, in order to book during this time your stay.');
		}
	}

function enable_fruehbucher() {
  $('preis').disabled = false;
  $('tage').disabled = false;
}

function enable_felder() {
  $('anreise_tag').disabled = false;
  $('anreise_monat').disabled = false;
  $('anreise_jahr').disabled = false;
  $('abreise_tag').disabled = false;
  $('abreise_monat').disabled = false;
  $('abreise_jahr').disabled = false;
}

	//gibt die Anzahl der Tage der verschiedenen Monate an.
function tage_im_monat(monat){
		var tage=0;
		if (monat == 2) {
			var datum = new Date();
			var jahr = datum.getYear();
			if ((jahr % 4 != 0 || jahr % 100 == 0) && jahr % 400 != 0) {
					tage = 28;
				} else {
					tage = 29;
				}
		} else {
			switch(monat){
				case 1:tage=31;break;
				case 3:tage=31;break;
				case 4:tage=30;break;
				case 5:tage=31;break;
				case 6:tage=30;break;
				case 7:tage=31;break;
				case 8:tage=31;break;
				case 9:tage=30;break;
				case 10:tage=31;break;
				case 11:tage=30;break;
				case 12:tage=31;break;
			}
		}
		
		return tage;
	}


function monat_klaeren(id) {
		var monat_temp = id + '_monat';
	var monat = document.getElementById(monat_temp).selectedIndex + 1;
	var monate = new Array('Januar','Februar','M&auml;rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
	var betroffene_tage_select = document.getElementById(id + '_tag');
	var anzahl_tage = tage_im_monat(monat);
	var selected = '';
	var selector = betroffene_tage_select.selectedIndex + 1;
	for (var i = 1;i <= anzahl_tage; i++) {
		selected = false;
		if (selector == i) {
			selected = true;
		}
		NeueOption = new Option(i,i, false, selected);
		betroffene_tage_select.options[betroffene_tage_select.length] = NeueOption;
	}
}
	
	//Setzt das Datum auf einen bestimmten Wert
function datum_setzen(id,tag,monat,jahr){ 
		var etag = $(id + '_tag');
		var emonat = $(id + '_monat');
		var ejahr = $(id + '_jahr');
		etag.selectedIndex = tag - 1;
		emonat.selectedIndex = monat - 1;
		var datum = new Date();
		ejahr.selectedIndex = jahr - datum.getYear();
		monat_klaeren(id);
	}

function fruehbucher_change_datum() {
		tage_aktualisieren();
		fruehbucher_preis_klick(gewaehlter_preis)
	}
	
	//Tagefeld aktualisieren
function tage_aktualisieren() { 
		var delta = datum_delta();
		gewaehlte_tage = delta;
		tage_feld_aktualisieren(delta);
	}
	//gibt das Delta zwischen An- und Abreisedatum in Tagen zurück
	
function datum_delta() { 
		var atag = $('anreise_tag').value;
		var amonat = $('anreise_monat').value;
		var ajahr = $('anreise_jahr').value;
		var btag = $('abreise_tag').value;
		var bmonat = $('abreise_monat').value;
		var bjahr = $('abreise_jahr').value;
		var anreise = new Date(ajahr,amonat,atag);
		var abreise = new Date(bjahr,bmonat,btag);
		var anreise_offset = Math.floor(anreise.getTime() / 86400000);
    	var abreise_offset = Math.floor(abreise.getTime() / 86400000);
    	var reisedauer = abreise_offset - anreise_offset;
    	return reisedauer;
	}
	
	//aktualisiert das Tage-Feld
function tage_feld_aktualisieren(wert) { 
		if (wert > 0) {
			$('tage').value=wert;
		} else {
			alert('The departure date lies before the journey date!');
		}
	}
	
	//aktualisiert das preis-feld um den überlieferten wert
function preis_aktualisieren(wert) {
		$('preis').value=wert;
	}
	
	// setzt das Anreisedatum auf den Datum-Wert des angeklickten Lastminutepreis
function lastminute_preis_klick(taged,preis,standardpreis,zimmerkategorie) {
		tage_offset = taged;
		gewaehlter_preis = preis;
		zugehoeriger_standardpreis = standardpreis;
		var datum = new Date();
		var tag = datum.getDate() + taged;
		var monat = datum.getMonth() + 1;
		var jahr = datum.getYear();
		datum_setzen('anreise',tag,monat,jahr);
		datum_an_tagefeld_anpassen();
		var kalkulierter_preis = preis_errechnen(taged,preis,standardpreis,$('tage').value);
		preis_aktualisieren(kalkulierter_preis);
		$('zimmerkat_hidden').value = get_zimmer_art(zimmerkategorie);
			
	}

function fruehbucher_preis_klick(wert,zimmerkategorie) {
		tag = $('tage').value;
		if (tag == 0) {
			var neuer_preis = wert;
		}
		else
		{
			var neuer_preis = wert * tag;
		}
		gewaehlter_preis = wert;
		$('preis').value = neuer_preis;
		$('zimmerkat_hidden').value = get_zimmer_art(zimmerkategorie);
	}
	
function get_zimmer_art(zimmerkategorie){
    var id='kategorie' + zimmerkategorie
    var zimmerart=$(id).innerHTML;
    return zimmerart;
}

	// ändert das abreisedatum in den datum-feldern
function datum_an_tagefeld_anpassen() {
		var tage = $('tage').value;
		var anreisedatum = new Date($('anreise_jahr').value,$('anreise_monat').value,$('anreise_tag').value);
		var abreise = new Date(anreisedatum.getTime() + (tage * 86400000));
		datum_setzen('abreise',abreise.getDate(),abreise.getMonth(),abreise.getYear());
	}

	// errechnet den Lastminutepreis als Mittel
function preis_errechnen(taged,preis,standardpreis,dauer) {
		var gesamt_preis = 0;
		var rabatt_tage =  5 - taged;
		for(var d_counter = dauer;d_counter > 0;d_counter--) {
				if (rabatt_tage > 0) {
					gesamt_preis += preis;
					rabatt_tage--;
				} else {
					gesamt_preis += standardpreis;
				}
			}
		var rueckgabe = gesamt_preis / dauer;
		return Math.round(rueckgabe*100)/100;
	}

	// Keyup-Funktion, die ausgeführt wird, wenn im "Tagefeld" eine Taste gedrückt wird.
function keyup_tagefeld() {
		var tage = $('tage');
		if (tage.value == '' || isNaN(tage.value) || tage.value == 0) {
			//tage.title = " Indicate please the duration of the stay .";
			alert ('Error !! the duration of the stay must be a number  and not null or space.please try again');
			$('tage').value = gewaehlte_tage;
		} else if (tage.value > 28) {
			alert('For residence lasting longer than 28 days,  please directly with us for an individual offer into contac.');
			$('tage').value = gewaehlte_tage;
			lastminute_preis_klick(tage_offset,gewaehlter_preis,zugehoeriger_standardpreis);
		}	
		else{
			datum_an_tagefeld_anpassen();
			lastminute_preis_klick(tage_offset,gewaehlter_preis,zugehoeriger_standardpreis);
			tage.title = '';
		}
		gewaehlte_tage = $('tage').value;
	}

function pruefe_sperrtermine(sperrtermine,anreise,abreise) {
		var anreise_offset = anreise.getTime();
		var abreise_offset = abreise.getTime();
		var max = sperrtermine.length
		var i = 1;
		var sperr_an = 0;
		var sperr_ab = 0;
		var fehler = new Array(false,'');
		while (i <= max && fehler[0] == false) {
				sperr_an = sperrtermine[i-1][0].getTime();
				sperr_ab = sperrtermine[i-1][1].getTime();
				//alert('Anreise: ' + sperr_an + "\n" + sperr_ab);
				if (anreise_offset >= sperr_an && anreise_offset <= sperr_ab) { // startet während der messe
					fehler[0] = true;
					fehler[1] = sperrtermine[i-1][2];
				} else if (abreise_offset >= sperr_an && abreise_offset <= sperr_ab) { // endet während der messe
					fehler[0] = true;
					fehler[1] = sperrtermine[i-1][2];
				} else if (anreise_offset <= sperr_an && abreise_offset >= sperr_ab) { //startet vor einer messe und endet nach einer messe
					fehler[0] = true;
					fehler[1] = sperrtermine[i-1][2];
				}
				i++;
			}
		return fehler;
	}
	
