function FIND(item) {
	if( window.tvfIsOpera ) return(document.getElementById(item));
	if (document.all) return(document.all[item]);
	if (document.getElementById) return(document.getElementById(item));
	return(false);
}

function moveXbySlicePos (x, img) { 
	if (!document.layers) {
		var onWindows = navigator.platform ? navigator.platform == "Win32" : false;
		var macIE45 = document.all && !onWindows && getExplorerVersion() == 4.5;
		var par = img;
		var lastOffset = 0;
		while(par){
			if( par.leftMargin && ! onWindows ) x += parseInt(par.leftMargin);
			if( (par.offsetLeft != lastOffset) && par.offsetLeft ) x += parseInt(par.offsetLeft);
			if( par.offsetLeft != 0 ) lastOffset = par.offsetLeft;
			par = macIE45 ? par.parentElement : par.offsetParent;
		}
	} else if (img.x) x += img.x;
	return x;
}

function moveYbySlicePos (y, img) {
	if(!document.layers) {
		var onWindows = navigator.platform ? navigator.platform == "Win32" : false;
		var macIE45 = document.all && !onWindows && getExplorerVersion() == 4.5;
		var par = img;
		var lastOffset = 0;
		while(par){
			if( par.topMargin && !onWindows ) y += parseInt(par.topMargin);
			if( (par.offsetTop != lastOffset) && par.offsetTop ) y += parseInt(par.offsetTop);
			if( par.offsetTop != 0 ) lastOffset = par.offsetTop;
			par = macIE45 ? par.parentElement : par.offsetParent;
		}		
	} else if (img.y >= 0) y += img.y;
	return y;
}

var datums_feld;

function get_date(field){
	datums_feld = field;
	var button = 'bt_'+field;
	var bt = FIND(button) || document.images[button] || document.links[button] || document.anchors[button];
	var s = FIND('get_date_box');
	var xx = -290;
	
	var formular = document.forms[0].name;
	var yy = -165;
	
	var x = moveXbySlicePos (xx, bt);
	var y = moveYbySlicePos (yy, bt);	
	var Left = x || (window.pageX + document.body.scrollLeft) || 0;
	var Top = y || (window.pageY + document.body.scrollTop) || 0;
	
	if(s.style.visibility != 'visible'){
		s.style.visibility = 'visible';
		s.style.left = Left+'px';
		s.style.top = Top+'px';
	}else{
		s.style.visibility = 'hidden';
		s.style.left = '-500px';
	}

}

function set_date(d,m,j){
	get_date(datums_feld);
	var formular = document.forms[0].name;
	
	// IRS
	if(document.forms[formular].elements[datums_feld]){
		document.forms[formular].elements[datums_feld].value =d+"."+m+"."+j;
	
	// Veranstaltungen
	}else{
		document.forms[formular].elements[datums_feld+'_d'].value = d;
		document.forms[formular].elements[datums_feld+'_m'].value = m;
		document.forms[formular].elements[datums_feld+'_j'].value = j;
		
		if(datums_feld=='von'){
			d2 = document.forms[formular].elements['bis_d'].value;
			m2 = document.forms[formular].elements['bis_m'].value;
			j2 = document.forms[formular].elements['bis_j'].value;
			if((j2+m2+d2)<(j+m+d)){
				datum = new Date(j,m,d);
				j2 = datum.getFullYear();
				m2 = datum.getMonth()+1;
				d2 = datum.getDate();
				if(m2<10) m2 ='0'+m2;
				if(d2<10) d2 ='0'+d2;
				document.forms[formular].elements['bis_d'].value = d2;
				document.forms[formular].elements['bis_m'].value = m2;
				document.forms[formular].elements['bis_j'].value = j2;
			}
		}
	}
	update_datum(datums_feld);
}
function refresh_date_bis(name) {
	j = document.getElementById(name+'_j').value;
	m = document.getElementById(name+'_m').value;
	d = document.getElementById(name+'_d').value;
	
	formular = document.forms[0].name;
	d2 = document.forms[formular].elements['bis_d'].value;
	m2 = document.forms[formular].elements['bis_m'].value;
	j2 = document.forms[formular].elements['bis_j'].value;
	if((j2+m2+d2)<(j+m+d)){
		datum = new Date(j,m,d);
		j2 = datum.getFullYear();
		m2 = datum.getMonth()+1;
		d2 = datum.getDate();
		if(m2<10) m2 ='0'+m2;
		if(d2<10) d2 ='0'+d2;
		document.forms[formular].elements['bis_d'].value = d2;
		document.forms[formular].elements['bis_m'].value = m2;
		document.forms[formular].elements['bis_j'].value = j2;
	}
}



/* Funktionen für das Buchen Script */
function update_datum(div) {
	var datum_heute;
	var datum_anreise;
	var datum_abreise;
	var reisedauer;
	var pauschale;
	
	datum_heute = new Date();
	datum_anreise = string_to_datum(document.getElementById('form_anreise').value);
	datum_abreise = string_to_datum(document.getElementById('form_abreise').value);
	reisedauer = document.getElementById('form_reisedauer').value;
	pauschale = document.getElementById('pauschalen_id').value;
	
	if(div == "form_anreise") {
		if(datum_anreise == false || datum_anreise.getTime() < datum_heute.getTime()) {
			datum_anreise = new Date();
			datum_anreise.setTime((datum_abreise.getTime()) - reisedauer*1000*60*60*24);
			document.getElementById('form_anreise').value = datum_to_string(datum_anreise);
		} else {
			document.getElementById('form_anreise').value = datum_to_string(datum_anreise);
			datum_abreise.setTime((datum_anreise.getTime()) + reisedauer*1000*60*60*24);
			document.getElementById('form_abreise').value = datum_to_string(datum_abreise);
		}
	}
	
	if(div == "form_abreise") {
		if(datum_abreise == false || datum_abreise.getTime() <= (datum_heute.getTime() + 1000 *60 * 60 * 24)) {
			datum_abreise = new Date();
			datum_abreise.setTime((datum_anreise.getTime()) + reisedauer*1000*60*60*24);
			document.getElementById('form_abreise').value = datum_to_string(datum_abreise);
		} else if((datum_abreise.getTime() - datum_anreise.getTime()) / (1000 * 60 * 60 * 24) > 40) {
			document.getElementById('form_abreise').value = datum_to_string(datum_abreise);
			datum_anreise.setTime(datum_abreise.getTime() - reisedauer*1000*60*60*24);
			document.getElementById('form_anreise').value = datum_to_string(datum_anreise);
		} else if(datum_abreise.getTime() <= datum_anreise.getTime()) {
			document.getElementById('form_reisedauer').value = 1;
			document.getElementById('form_abreise').value = datum_to_string(datum_abreise);
			datum_anreise.setTime(datum_abreise.getTime() - 1000*60*60*24);
			document.getElementById('form_anreise').value = datum_to_string(datum_anreise);
		} else {
			document.getElementById('form_abreise').value = datum_to_string(datum_abreise);
			
			document.getElementById('form_reisedauer').value = ((datum_abreise.getTime() - datum_anreise.getTime()) / (1000 * 60 * 60 * 24));
		}
	}
	
	if(div == "form_reisedauer") {
		datum_abreise.setTime(datum_anreise.getTime() + reisedauer*1000*60*60*24);
		document.getElementById('form_abreise').value = datum_to_string(datum_abreise);
		
		
		var ajax = createRequest();
		ajax.open('get', '/include/get_date.php?pauschalenanfrage='+pauschale+'&pauschale_dauer='+reisedauer+'&jahr='+datum_anreise.getFullYear()+'&monat='+(datum_anreise.getMonth()+1),true);
		ajax.onreadystatechange = function() { ajaxwert_einfuegen(ajax,'get_date_box') };
		ajax.send(null);
	}
	
	if(pauschale > 0) {
		var ajax2 = createRequest();
		ajax2.open('get', '/include/ajax/check_zeitraum.php?pauschale='+pauschale+'&anreise='+document.getElementById('form_anreise').value+'&abreise='+document.getElementById('form_abreise').value,true);
		ajax2.onreadystatechange = function() { ajaxwert_einfuegen(ajax,'errorbox') };
		ajax2.send(null);
	}
}


function string_to_datum(datum) {
	//(Schritt 1) Fehlerbehandlung
	if(!datum) {
		return false;
	}
	//(Schritt 2) Aufspaltung des Datums
	datum=datum.split(".");
	if(datum.length!=3) {
		return false;
	}
	//(Schritt 3) Entfernung der fuehrenden Nullen und Anpassung des Monats
	datum[0]=parseInt(datum[0],10);
 	datum[1]=parseInt(datum[1],10)-1;
	//(Schritt 4) Behandlung Jahr nur zweistellig
	if (datum[2].length==2) datum[2]="20"+datum[2];
	//(Schritt 5) Erzeugung eines neuen Dateobjektes
	var kontrolldatum=new Date(datum[2],datum[1],datum[0]);
	//(Schritt 6) Vergleich, ob das eingegebene Datum gleich dem JS-Datum ist
	if (kontrolldatum.getDate()==datum[0] && kontrolldatum.getMonth()==datum[1] && kontrolldatum.getFullYear()==datum[2]) {
		return kontrolldatum;
	} else {
		return false;
	}
}

function datum_to_string(datum) {
	var ausgabe;
	if(String(datum.getDate()).length==1) {
		ausgabe = '0'+String(datum.getDate())+'.';
	} else {
		ausgabe = String(datum.getDate())+'.';
	}
	if(String(datum.getMonth()).length==1) {
		ausgabe += '0'+String(datum.getMonth() + 1)+'.'+datum.getFullYear();
	} else {
		ausgabe += String(datum.getMonth() + 1)+'.'+datum.getFullYear();
	}
	
	return ausgabe;
}
