/* nachtzug_viewer.js
*     eingebunden in nachtzug_viewer.cgi
* 
* CREATED: ? ,mhe
* LASTMOD: 20090515, mhe: angefangen, proz. discounts im Aktionscodes
* LASTMOD: 20090821, mhe: Jetzt ist das drüber dann auch live!
*/

// DEBUGGING
// ----------------------------
function debug (text) {
	if (DEBUG) {
		window.document.meins.debug_textfield.value = 
			window.document.meins.debug_textfield.value + text + "\n";
	}
}
function reset_debug () {
	window.document.meins.debug_textfield.value = "";
}	

// INIT
// ----------------
function onload_init() {
	check_mark();
	calc_preise();
	change_all_values();
	change_ret_popup();
}

// Prüft ob radiobutton gechecked ist oder nicht, wenn ja dann setze 
// Hintergrundfarbe um:
// ---------------------
function check_mark() {
	
	var lang = document.getElementById("lang").value;
	var ausgebucht = "Warteliste";
	var zur_buchung_button = "Zur Buchung";
	var zur_warteliste_button = "Zur Warteliste";
	if (lang == "GB") {
		ausgebucht = "Waitlist";
		zur_buchung_button = "Start booking";
		zur_warteliste_button = "To waitlist";
	}
	// Alle durchschauen und kucken welches gechecked ist:
	// nur wenn objekt schon existiert:
	if (window.document.meins.selected) {
	for (var id=0;id < window.document.meins.selected.length;id++) {
		// ist es das gewählte Feld?
		if (window.document.meins.selected[id].checked == true) {
			window.document.meins.selected[id].parentNode.className = "field_selected"; 
			// ist es ein Wartelisten-Feld?
			//alert("tf_"+window.document.meins.selected[id].value+": "+document.getElementById("tf_"+window.document.meins.selected[id].value).innerHTML);
			if (document.getElementById("tf_"+window.document.meins.selected[id].value).innerHTML == ausgebucht) {
				document.getElementById("zurbuchung_button").value = zur_warteliste_button; 
				// Bei Warteliste nur in Seite 2 springen:
				document.getElementById("jump2page").innerHTML = "2"; 

			} else {
				document.getElementById("zurbuchung_button").value = zur_buchung_button; 
				document.getElementById("jump2page").innerHTML = "3"; 
			}
		} else {
				window.document.meins.selected[id].parentNode.className = ""; 
		}
	}
	}
}

// Setzt popup für Rückfahrt-Strecke auf disabled = 1 oder 0
function change_ret_popup() {
	if (window.document.meins.no_return) {
		if (window.document.meins.no_return.checked) {
			window.document.meins.ret_sbhf.disabled=true;
			window.document.meins.ret_ebhf.disabled=true;
		} else {
			window.document.meins.ret_sbhf.disabled=false;
			window.document.meins.ret_ebhf.disabled=false;
		}
	}
}

// Baut das Zielkreuz:
// -----------------------------------------------------
function create_cross(col,row) {
	var size = 7;
	//document.getElementById("td_edate_"+col).class += " cross_lr";
	document.getElementById("td_edate_"+col).style.borderLeftColor = "brown";
	document.getElementById("td_edate_"+col).style.borderRightColor = "brown";
	// Spalte:
	for (var x=1;x<=size;x++) {
		if (document.getElementById("td_"+col+"_"+x).firstChild.checked == false) {
		//document.getElementById("td_edate_"+col).class += " cross_lr";
		document.getElementById("td_"+col+"_"+x).style.borderLeftColor = "brown";
		document.getElementById("td_"+col+"_"+x).style.borderRightColor = "brown";
		}
	}
	//document.getElementById("td_edate_"+col).class += " cross_tb";
	document.getElementById("td_sdate_"+row).style.borderTopColor = "brown";
	document.getElementById("td_sdate_"+row).style.borderBottomColor = "brown";
	for (var y=1;y<=size;y++) {
		if (document.getElementById("td_"+y+"_"+row).firstChild.checked == false) {
		//document.getElementById("td_edate_"+col).class += " cross_tb";
		document.getElementById("td_"+y+"_"+row).style.borderTopColor = "brown";		
		document.getElementById("td_"+y+"_"+row).style.borderBottomColor = "brown";
		}
	}
	check_mark();
}
// Entfernt das Zielkreuz:
// -----------------------------------------------------
function remove_cross(col,row) {
	var size = 7;
	document.getElementById("td_edate_"+col).style.borderLeftColor = "white";
	document.getElementById("td_edate_"+col).style.borderRightColor = "white";
	// Spalte:
	for (var x=1;x<=size;x++) {
		if (document.getElementById("td_"+col+"_"+x).firstChild.checked == false) {
		document.getElementById("td_"+col+"_"+x).style.borderLeftColor = "white";		
		document.getElementById("td_"+col+"_"+x).style.borderRightColor = "white";	
		} else {
		document.getElementById("td_"+col+"_"+x).className = "field_selected";	
		}
	}
	document.getElementById("td_sdate_"+row).style.borderTopColor = "white";
	document.getElementById("td_sdate_"+row).style.borderBottomColor = "white";
	for (var y=1;y<=size;y++) {
		if (document.getElementById("td_"+y+"_"+row).firstChild.checked == false) {
		document.getElementById("td_"+y+"_"+row).style.borderTopColor = "white";		
		document.getElementById("td_"+y+"_"+row).style.borderBottomColor = "white";	
		} else {
		document.getElementById("td_"+y+"_"+row).className = "field_selected";		
		}
	}
	check_mark();
}

// Prüft bei OnMouseOut welche Rahmenfarbe wir brauche:
// -----------------------------------------------------
function check_onMouseOut(col,row) {
	if (document.getElementById("td_"+col+"_"+row).firstChild.checked == true) {
		document.getElementById("td_"+col+"_"+row).className = "field_selected";
	} else {
		document.getElementById("td_"+col+"_"+row).className = "";
	}
	document.getElementById("td_edate_"+col).className = "papaya";
	document.getElementById("td_sdate_"+row).className = "papaya";
}


// Bei Änderung der Auswahl: Setzt die hidden-Felder, die zur Übermittlung
// and Entee vorgesehen sind:
// --------------------------------------
function change_values(col,row) {
	// Hinfahrt:
	document.getElementById("entee_s_rdate").innerHTML = 
		document.getElementById("value_sdate_"+row).innerHTML;
	document.getElementById("entee_s_szeit").innerHTML = 
		document.getElementById("value_szeit_"+row).innerHTML;
	document.getElementById("entee_s_ezeit").innerHTML = 
		document.getElementById("value_sezeit_"+row).innerHTML;
	document.getElementById("entee_s_adate").innerHTML = 
		document.getElementById("value_sadate_"+row).innerHTML;
	document.getElementById("entee_s_znr").innerHTML = "AZ"+ 
		document.getElementById("value_sznr_entee_"+row).innerHTML;
	document.getElementById("entee_s_prod").innerHTML = 
		document.getElementById("value_saprod_"+row).innerHTML;
	// Rückfahrt:
	document.getElementById("entee_e_rdate").innerHTML = 
		document.getElementById("value_edate_"+col).innerHTML;
	document.getElementById("entee_e_szeit").innerHTML = 
		document.getElementById("value_ezeit_"+col).innerHTML;
	document.getElementById("entee_e_ezeit").innerHTML = 
		document.getElementById("value_eezeit_"+col).innerHTML;
	document.getElementById("entee_e_adate").innerHTML = 
		document.getElementById("value_eadate_"+col).innerHTML;
	document.getElementById("entee_e_znr").innerHTML = "AZ"+
		document.getElementById("value_eznr_entee_"+col).innerHTML;
	document.getElementById("entee_e_prod").innerHTML = 
		document.getElementById("value_eaprod_"+col).innerHTML;
}

function change_all_values() {
	var anz_rows = 	
		eval(document.getElementById("anz_rows").innerHTML);
	var anz_cols = 
		eval(document.getElementById("anz_cols").innerHTML);
	for (var col=1;col<=anz_cols;col++) {
		for (var row=1;row<=anz_rows;row++) {
		if (document.getElementById("td_"+col+"_"+row).firstChild.checked == true){
			change_values(col,row);	
		}			
		}
	}
}


// Setzt zwei Nachkommastellen:
// ----------------------------
function komma2 (Zahl) {
	var erg = eval(Zahl);
	return erg.toFixed(2);
}

// plus
// ----------------------------
function plus (field) {
	var max_value = 6;
	if (field == 'fz_anzahl') {
		max_value = 2;
		if (window.document.meins.fz_typ.value == 'M') {
			max_value = 6;
		}
		if (window.document.meins.fz_typ.value == 'MB') {
			max_value = 6;
		}
		// fz_anzahl darf nicht > pax sein:
		max_value = Math.min(max_value, window.document.meins.pax.value);
	}
	if (field == 'pax3') {
		max_value = parseInt(document.meins.pax.value) + parseInt(document.meins.pax2.value);
		max_value = Math.min(6, max_value);
	}
	if (field == 'pax') {
		max_value = 6 -parseInt(document.meins.pax2.value);
	}
	if (field == 'pax2') {
		max_value = 6 - parseInt(document.meins.pax.value);
	}
	max_value = Math.max(0, max_value);
	if (parseInt(window.document.meins.elements[field].value)<max_value) {
		window.document.meins.elements[field].value=
			parseInt(window.document.meins.elements[field].value)+1;
		return true;
	} else {
    if (field == 'pax1' || field == 'pax2') {
      alert('Es können maximal 6 Personen mit Platzanspruch zusammen gebucht werden!');
    }
    if (field == 'pax3') {
      alert('Pro Erwachsenem/Kind (0-11) kann maximal ein Kleinkind ohne Platzanspruch gebucht werden!');
    }
    if (field == 'fz_anzahl') {
      if (parseInt(document.meins.pax.value) == parseInt(document.meins.fz_anzahl.value)) {
        alert('Pro Fahrzeug muss ein erwachsener Fahrgast mitfahren!');
      } else {
        alert('Es können maximal '+max_value+' Fahrzeuge des gewählten Typs zusammen gebucht werden!');
      }
    }
    return false;
	}
}

// minus
// ----------------------------
function minus (field,min) {
	if (field == 'pax' && document.meins.fz_anzahl && document.meins.fz_anzahl.value >= document.meins.pax.value) {
		alert('Pro Fahrzeug muss ein erwachsener Fahrgast mitfahren!');
		return false;
	}
	if (parseInt(window.document.meins.elements[field].value)>min) {
		window.document.meins.elements[field].value=
			parseInt(window.document.meins.elements[field].value)-1;
	}
	return true;
}


// Berechnet den Preis nach pax oder comf-wechsel:
// ---------------------------------------------
function calc_preise() {
	var anz_rows = 	
		parseInt(document.getElementById("anz_rows").innerHTML);
	var anz_cols = 
		parseInt(document.getElementById("anz_cols").innerHTML);

	// Sprachen:
	var lang = document.getElementById("lang").value;
	var ausgebucht = "Warteliste";
	var zur_buchung_button = "Zur Buchung";
	var zur_warteliste_button = "Zur Warteliste";
	if (lang == "GB") {
		ausgebucht = "Waitlist";
		zur_buchung_button = "Start booking";
		zur_warteliste_button = "To waitlist";
	}

	// Aktionscode?
	var fixed = false;
	var proz = false;
	var fz_allowed = false;
	var acode_value_s_f = 0.00;
	var acode_value_o_f = 0.00;
	var acode_value_r_f = 0.00;
	var acode_proz_s_f = 0.00;
	var acode_proz_o_f = 0.00;
	var acode_proz_r_f = 0.00;
	var fz_typ = document.getElementById('fz_typ').value;
	var aktionscode_valid = document.getElementById("aktionscode_valid").innerHTML;
	if (aktionscode_valid == 1) {
		acode_value_s_f = window.document.forms["meins"].elements["aktionscode_value_s_f"].value;
		acode_value_o_f = window.document.forms["meins"].elements["aktionscode_value_o_f"].value;
		acode_value_r_f = window.document.forms["meins"].elements["aktionscode_value_r_f"].value;
		acode_proz_s_r = window.document.forms["meins"].elements["aktionscode_proz_s_r"].value;
		acode_proz_o_r = window.document.forms["meins"].elements["aktionscode_proz_o_r"].value;
		acode_proz_r_r = window.document.forms["meins"].elements["aktionscode_proz_r_r"].value;
		// Erlaubte Fahrzeuge stehen im JS-Array acode_veh_types. Jetzt schauen wir,
		// ob der Aktionscode auch wirklich auf das ausgewählte FZ trifft:
		if (document.getElementById('aktionscode_veh_allowed').value != 0) {
			for (var fz in acode_veh_types) {
				if (acode_veh_types[fz] == fz_typ) {
					fz_allowed = true;
				}
			}
		} else	{
			fz_allowed = true;
		}

		// Checken ob wir eine fixed-reduction oder eine prozentuale haben:
		// fixed hat Vorrang!
		if (acode_value_s_f != 0 && acode_value_o_f != 0 && acode_value_r_f != 0) {
			fixed = true;
		} else if (acode_proz_s_r != 0 && acode_proz_o_r != 0 && acode_proz_r_r != 0) {
			proz = true;
		}
	}
	//alert(fixed+"-"+proz);
	//alert(aktionscode_valid+':'+acode_value_s_f+'-'+acode_value_o_f+'-'+acode_value_r_f);
	
	//alert(anz_rows+'-'+anz_cols);
	for (var row=1;row <= anz_rows ;row++) {
		for (var col=1;col <= anz_cols ;col++) {
			var preis_details1 = "";
			var preis_details2 = "";
			var dl1 = 
				parseInt(window.document.forms["meins"].elements["s_comf"].value);
			var tc1 = 
				parseInt(document.getElementById("value_stc_"+row).innerHTML);
			var prod1 = document.getElementById("value_sprod_"+row).innerHTML;
			var dl2 = 
				parseInt(window.document.forms["meins"].elements["e_comf"].value);
			var tc2 = 
				parseInt(document.getElementById("value_etc_"+col).innerHTML);
			var prod2 = document.getElementById("value_eprod_"+col).innerHTML;
			var rdate1 =
				parseInt(document.getElementById("value_sdate_"+row).innerHTML);
			var radate1 =
				parseInt(document.getElementById("value_sadate_"+row).innerHTML);
			var razeit1 =
				parseInt(document.getElementById("value_sezeit_"+row).innerHTML);
			var rdate2 =
				parseInt(document.getElementById("value_edate_"+col).innerHTML);
			var rzeit2 =
				parseInt(document.getElementById("value_ezeit_"+col).innerHTML);
			var pax = parseInt(window.document.meins.pax.value);
			var pax2 = parseInt(window.document.meins.pax2.value);
			var fz_anz = parseInt(window.document.meins.fz_anzahl.value);
			// Raucher oder Nichraucher?
			var nr_r = 
				window.document.forms["meins"].elements["raucher"].value;
			var anz1 =
  	   	parseInt(document.getElementById("value_s"+nr_r+"anz_"+row).innerHTML);
			var fz_platz1 =
      	parseInt(document.getElementById("value_sfzanz_"+row).innerHTML);
			var anz2 =
				parseInt(document.getElementById("value_e"+nr_r+"anz_"+col).innerHTML);
			var fz_platz2 =
      	parseInt(document.getElementById("value_efzanz_"+col).innerHTML);
			// Höhe:
			var fz_hoehe = 
				parseInt(window.document.forms["meins"].elements["fz_hoehe"].value);
			var hoehe1 = 
      	parseInt(document.getElementById("value_shoehe_"+row).innerHTML);
			var hoehe2 = 
      	parseInt(document.getElementById("value_ehoehe_"+col).innerHTML);
			// Wieviele pax pro Abteil?
			var maxpax1 = 0;var maxpax2 = 0;
			if (tc1 == 80 || tc1 == 85) {
				maxpax1 = 
  	    	parseInt(document.getElementById("value_smaxpax_"+row).innerHTML);
				// anz1 anpassen, da ist die abteilanzahl gespeichert 
				// wenn tcode = 80 oder 86!
				anz1 = anz1*maxpax1;
			}
			if (tc2 == 80 || tc2 == 85) {
				maxpax2 = 
  	    	parseInt(document.getElementById("value_emaxpax_"+col).innerHTML);
				// anz1 anpassen, da ist die abteilanzahl gespeichert 
				// wenn tcode = 80 oder 86!
				anz2 = anz2*maxpax2;
			}
														 
			// Preise:
			var preis1_pax1 = 
				parseFloat(document.getElementById("value_spreispax1_"+row).innerHTML);
			var preis1_pax2 = 
				parseFloat(document.getElementById("value_spreispax2_"+row).innerHTML);
			var preis1_fz = 
				parseFloat(document.getElementById("value_spreisfz_"+row).innerHTML);
			var preis2_pax1 = 
				parseFloat(document.getElementById("value_epreispax1_"+col).innerHTML);
			var preis2_pax2 = 
				parseFloat(document.getElementById("value_epreispax2_"+col).innerHTML);
			var preis2_fz = 
				parseFloat(document.getElementById("value_epreisfz_"+col).innerHTML);
			var erg = 0;

			// Nur wenn pax+fz verfügbar:
			// ------------------------------------------
			// Hinfahrt
			var s_verfuegbar = false;
			if ((eval(pax+pax2) <= anz1) && (fz_anz <= fz_platz1)
				&& (fz_hoehe <= hoehe1)) {
				s_verfuegbar = true;
			} 
			// Wenn der erste Tarif nicht mehr geht, dann die Ersatz-Tarife
			// durchgehen, bis wir einen gefunden haben (oder nicht)
			else {
				if (s_ersatzcodes[row]) {
					for (var i = 0;i < s_ersatzcodes[row].length;i++) {
						if ((eval(pax+pax2) <= s_ersatzcodes[row][i]['anz']) 
							&& (fz_anz <= s_ersatzcodes[row][i]['fz_platz'])
							&& (fz_hoehe <= s_ersatzcodes[row][i]['hoehe'])) {
							s_verfuegbar = true;
							// Neue Tarifdetails benützen:
							anz1 = s_ersatzcodes[row][i]['anz'];
							fz_platz1 = s_ersatzcodes[row][i]['fz_platz'];
							hoehe1 = s_ersatzcodes[row][i]['hoehe'];
							preis1_pax1 = s_ersatzcodes[row][i]['preis_pax'];
							preis1_pax2 = s_ersatzcodes[row][i]['preis_kind'];
							preis1_fz = s_ersatzcodes[row][i]['preis_fz'];
							tc1 = s_ersatzcodes[row][i]['tcode'];
							break;
						}
					}
				}
			}

			// Rückfahrt
			var e_verfuegbar = false;
			if ((eval(pax+pax2) <= anz2) && (fz_anz <= fz_platz2)
				&& (fz_hoehe <= hoehe2)) {
				e_verfuegbar = true;
			} 
			// Wenn der erste Tarif nicht mehr geht, dann die Ersatz-Tarife
			// durchgehen, bis wir einen gefunden haben (oder nicht)
			else {
				if (e_ersatzcodes[col]) {
					for (var i = 0;i < e_ersatzcodes[col].length;i++) {
						if ((eval(pax+pax2) <= e_ersatzcodes[col][i]['anz']) 
							&& (fz_anz <= e_ersatzcodes[col][i]['fz_platz'])
							&& (fz_hoehe <= e_ersatzcodes[col][i]['hoehe'])) {
							e_verfuegbar = true;
							// Neue Tarifdetails benützen:
							anz2 = e_ersatzcodes[col][i]['anz'];
							fz_platz2 = e_ersatzcodes[col][i]['fz_platz'];
							hoehe2 = e_ersatzcodes[col][i]['hoehe'];
							preis2_pax1 = e_ersatzcodes[col][i]['preis_pax'];
							preis2_pax2 = e_ersatzcodes[col][i]['preis_kind'];
							preis2_fz = e_ersatzcodes[col][i]['preis_fz'];
							tc2 = e_ersatzcodes[col][i]['tcode'];
							break;
						}
					}
				}
			}
			//alert("["+row+","+col+"] "+tc2+": "-preis2_pax1+"-"+preis2_pax2+"-"+preis2_fz);
			
			// Jetzt Preis berechnen, wenn wir einen verfügbaren Tarif gefunden haben
			// ------------------------------------------
			if (s_verfuegbar && e_verfuegbar) {
				// Hinfahrt
				// --------
				var erg1 = 0;
				var aktion_erg1 = 0;
				// Wenn keine Abteilbuchung:
				if (tc1 != 85 && tc1 != 80) {	
					// Berechnen:
					erg1 = preis1_pax1*pax+preis1_fz*fz_anz;

					// preis-details:
					preis_details1 += preis1_pax1+'*'+pax+'+'+preis1_fz+'*'+fz_anz; 
					if (pax2 > 0) {
						erg1 += preis1_pax2*pax2;
						preis_details1 += '+'+preis1_pax2+'*'+pax2;
					}
					
				// Wenn Abteilbuchung:
				} else if (tc1 == 85 || tc1 == 80)  {
					var abt_anz = Math.ceil((pax+pax2)/maxpax1);
					// Berechnen:
					erg1 = preis1_pax1*abt_anz+preis1_fz*fz_anz; 
					// preis-details:
					preis_details1 += preis1_pax1+'*'+abt_anz+'+'+preis1_fz+'*'+fz_anz; 
				}
				
				// Rückfahrt
				// ---------
				var erg2 = 0;
				var aktion_erg2 = 0;
				// Wenn keine Abteilbuchung:
				if (tc2 != 85 && tc2 != 80) {	
					// Berechnen:
					erg2 = preis2_pax1*pax+preis2_fz*fz_anz;

					// preis-details:
					preis_details2 += preis2_pax1+'*'+pax+'+'+preis2_fz+'*'+fz_anz;
					if (pax2 > 0) {
						erg2 += preis2_pax2*pax2;
						preis_details2 += '+'+preis2_pax2+'*'+pax2;
					}
					
				// Wenn Abteilbuchung:
				} else if (tc2 == 85 || tc2 == 80)  {
					var abt_anz = Math.ceil((pax+pax2)/maxpax2);
					// Berechnen:
					erg2 = preis2_pax1*abt_anz+preis2_fz*fz_anz; 
					// preis-details:
					preis_details2 += preis2_pax1+'*'+abt_anz+'+'+preis2_fz+'*'+fz_anz; 
				}
				
				// Internetrabbat bei nicht LM / 99 abziehen:
				if (tc1 != 80 && tc1 != 66 && prod1 != 99
					&& tc1 < 50 && tc1 > 57) {
					erg1 -= 2.50;
					preis_details1 += '-2.50';
				}
				if (tc2 != 80 && tc2 != 66 && prod2 != 99
					&& tc2 < 50 && tc2 > 57) {
					erg2 -= 2.50;
					preis_details2 += '-2.50';
				}
				
				
				// Auswahl der Preise pro Richtung
				document.getElementById("value_saprod_"+row).innerHTML = prod1;
				document.getElementById("value_eaprod_"+col).innerHTML = prod2;

				// Preis-Text anpassen
				if (document.getElementById("value_saprod_"+row).innerHTML.match(/(TS|99|LM|AZS)/) ||
				document.getElementById("value_eaprod_"+col).innerHTML.match(/(TS|99|LM|AZS)/)) {
					if (document.meins.lang.value == 'GB') {
						document.getElementById("ab_"+col+"_"+row).innerHTML = 'from';
					} else {
						document.getElementById("ab_"+col+"_"+row).innerHTML = 'ab';
					}
				// Disabled, keine Images in den Zellen
				} else if (document.getElementById("value_saprod_"+row).innerHTML.match(/(LM)/) ||
				        document.getElementById("value_eaprod_"+col).innerHTML.match(/(LM)/)) {
					document.getElementById("ab_"+col+"_"+row).innerHTML = 
					"<IMG SRC='../bilder/pig.gif' alt='ab'>";
				// Disabled, keine Images in den Zellen
				} else if (document.getElementById("value_saprod_"+row).innerHTML.match(/(AZS)/) ||
				        document.getElementById("value_eaprod_"+col).innerHTML.match(/(AZS)/)) {
					document.getElementById("ab_"+col+"_"+row).innerHTML = 
					"<IMG SRC='../bilder/vorfahrt.gif' alt='ab'>";
				} else {
					document.getElementById("ab_"+col+"_"+row).innerHTML = '&nbsp;';
				}



				// Aktionscode:
				// Nur gültig wenn auch das Fahrzeug passt!
				// MHE 20090821: Sichere die Originalpreise, um die Deteil-Infos
				// genauer anzeigen zu können:
				var erg1_orig = erg1;
				var erg2_orig = erg2;
				var aktionscode_reduktion = "";
				if (aktionscode_valid == 1 && fz_allowed) {
					if (fixed) {
						erg1 -= acode_value_o_f;
						erg2 -= acode_value_r_f;
						aktionscode_reduktion = " (Rabatt: "+eval(eval(acode_value_o_f)+eval(acode_value_r_f))+" EUR!)";
					} else if (proz) {
						erg1 *= (1-acode_proz_o_r);
						erg2 *= (1-acode_proz_r_r); 
						aktionscode_reduktion = " (Rabatt: "+eval(100*acode_proz_o_r)+"%!)";
					}
						
				}
				/* Nur Hinfahrt:
					else {
						if (fixed) {
							erg -= acode_value_s_f;
						} else if (proz) {
							erg -= 
						}

					}
				}*/
					
				// Jetzt Gesamtpreis berechnen:
				erg += eval(erg1+erg2); 

				
				preis_details1 += "= "+komma2(erg1_orig)+"; ";
				preis_details2 += "= "+komma2(erg2_orig)+"; ";
				if (aktionscode_valid == 1 && fz_allowed) {
					preis_details2 += "  Gesamt: "+komma2(erg)+aktionscode_reduktion;
				} else {
					preis_details2 += "  Gesamt: "+komma2(erg);
				}

				// ergebnis zuweisen:
				document.getElementById("tf_"+col+"_"+row).innerHTML =
					komma2(erg);
				document.getElementById("zurbuchung_button").value = zur_buchung_button; 
			
			} // END if ((eval(pax+pax2) <= anz1) && (eval(pax+pax2) <= anz2)
			else {
				if (eval(pax+pax2) > anz1) {
					preis_details1 = 'Hinfahrt: zu wenige freie Plätze!'
				}
				if (eval(pax+pax2) > anz2) {
					preis_details2 = 'Rückfahrt: zu wenige freie Plätze!'
				}
				if (fz_anz > fz_platz1) {
					preis_details1 = 'Hinfahrt: zu wenige freie Stellplätze!'
				}
				if (fz_anz > fz_platz2) {
					preis_details2 = 'Rückfahrt: zu wenige freie Stellplätze!'
				}
				if (fz_hoehe > hoehe1) {
					preis_details2 = 'Hinfahrt: keine Stellplätze in dieser Höhe!'
				}
				if (fz_hoehe > hoehe2) {
					preis_details2 = 'Rückfahrt: keine Stellplätze in dieser Höhe!'
				}
				document.getElementById("tf_"+col+"_"+row).innerHTML = ausgebucht; 
				document.getElementById("zurbuchung_button").value = zur_warteliste_button; 
				document.getElementById("ab_"+col+"_"+row).innerHTML = '&nbsp;';
			} // END else ((eval(pax+pax2) <= anz1) && (eval(pax+pax2) <= anz2)
			if (radate1 > rdate2 || radate1 == rdate2 && razeit1 > rzeit2) {
				document.getElementById("tf_"+col+"_"+row).innerHTML = ""; 
				document.getElementById("ab_"+col+"_"+row).innerHTML = '&nbsp;';
				document.getElementById("zurbuchung_button").value = zur_buchung_button; 
				// Preisdeails in diesem Fall leer:
				preis_details1 = "Rückfahrt liegt vor Hinfahrt!";
				preis_details2 = "";
			}
			// preis-details in den title:
			// WEG:
			document.getElementById("td_"+col+"_"+row).title = 
				preis_details1+preis_details2;
			//document.getElementById("tf_"+col+"_"+row).onMouseOver = Tip('DOOF');;
			//document.getElementById("tf_"+col+"_"+row).onMouseOut = UnTip();;
		} // END for cols
	} // END for rows
	updatePriceColor();
} // END function

function updatePriceColor() {
	var anz_rows = 	
		parseInt(document.getElementById("anz_rows").innerHTML);
	var anz_cols = 
		parseInt(document.getElementById("anz_cols").innerHTML);
	var billigst = 100000;
	// günstigsten Preis ermitteln
	for (var row=1;row <= anz_rows ;row++) {
		for (var col=1;col <= anz_cols ;col++) {
			// Preis für aktuelle Zelle ermitteln
			var cur_preis = parseFloat(document.getElementById("tf_"+col+"_"+row).innerHTML); 
			if (cur_preis > 0 && cur_preis < billigst) {
				billigst = cur_preis;
			}
		}
	}

	for (var row=1; row <= anz_rows; ++row) {
		for (var col=1; col <= anz_cols; ++col) {
			// Preis für aktuelle Zelle ermitteln
			var cur_preis = parseFloat(document.getElementById("tf_"+col+"_"+row).innerHTML); 
			if (cur_preis > 0) {
				// Reise verfügbar
				if (cur_preis == billigst) {
					document.getElementById("tf_"+col+"_"+row).className = 'nosize_billig';
	        document.getElementById("td_"+col+"_"+row).style.backgroundColor =
		        '#d9d9d9';
		      document.getElementById("tf_"+col+"_"+row).style.backgroundColor = '#d9d9d9';
		    	document.getElementById("td_"+col+"_"+row).style.color = 'black';
			  	document.getElementById("tf_"+col+"_"+row).style.color = 'black';
		    } else {
					document.getElementById("tf_"+col+"_"+row).className = 'nosize';
		      document.getElementById("td_"+col+"_"+row).style.backgroundColor =
			      'white';
			    document.getElementById("tf_"+col+"_"+row).style.backgroundColor = 'white';
		    	document.getElementById("td_"+col+"_"+row).style.color = 'black';
			  	document.getElementById("tf_"+col+"_"+row).style.color = 'black';
				}
			} else {
				// Reise nicht verfügbar
		    document.getElementById("td_"+col+"_"+row).style.backgroundColor =
			 		'white';
			  document.getElementById("tf_"+col+"_"+row).style.backgroundColor = 'white';
		    document.getElementById("td_"+col+"_"+row).style.color = 'red';
			  document.getElementById("tf_"+col+"_"+row).style.color = 'red';
			}
		}
	}
}


/* Für den Schnäppchenfinder */
function enableReturn() {
	var sbhf = document.meins.sbhf.options[document.meins.sbhf.selectedIndex].value;
	var ebhf = document.meins.ebhf.options[document.meins.ebhf.selectedIndex].value;
	document.pf.hin_sbhf.value = sbhf;
	document.pf.hin_ebhf.value = ebhf;
	if (document.meins.comf) {
		comf = document.meins.comf.options[document.meins.comf.selectedIndex].value;
		document.pf.s_comf.value = comf;
	}
	if (document.meins.pax) {
		document.pf.pax.value = document.meins.pax.value;
		document.pf.pax2.value = document.meins.pax2.value;
		document.pf.pax3.value = document.meins.pax3.value;
		document.pf.fz_anzahl.value = document.meins.fz_anzahl.value;
		document.pf.aktionscode.value = document.meins.aktionscode.value;
	}
	document.pf.submit();
}

function disableReturn() {
	var sbhf = document.meins.hin_sbhf.options[document.meins.hin_sbhf.selectedIndex].value;
	var ebhf = document.meins.hin_ebhf.options[document.meins.hin_ebhf.selectedIndex].value;
	document.pf.sbhf.value = sbhf;
	document.pf.ebhf.value = ebhf;
	if (document.meins.s_comf) {
		comf = document.meins.s_comf.options[document.meins.s_comf.selectedIndex].value;
		document.pf.comf.value = comf;
	}
	if (document.meins.pax) {
		document.pf.pax.value = document.meins.pax.value;
		document.pf.pax2.value = document.meins.pax2.value;
		document.pf.pax3.value = document.meins.pax3.value;
		document.pf.fz_anzahl.value = document.meins.fz_anzahl.value;
		document.pf.aktionscode.value = document.meins.aktionscode.value;
	}
	document.pf.submit();
}

// Setzt die Formularvariablen für den Buchungsstart und leitet auf 0.asp weiter
function startBooking (rdate, rtime, znr, product) {
	document.book.DD1.value = rdate;
	document.book.DT1.value = rtime;
	document.book.TN1.value = znr;
	document.book.selLeg1YYYYMM.value = rdate.substr(0,6);
	document.book.PR1.value = product;
	document.book.P.value = document.meins.aktionscode.value;
	//document.book.DD2.value = rdate;
	//document.book.DT2.value = rtime;
	//document.book.TN2.value = znr;
	//document.book.selLeg2YYYYMM.value = rdate.substr(0,6);
	document.book.submit();
}

function span_open(id) {
  if (document.getElementById(id)) {
    document.getElementById(id).style.display = "inline";
  }
}

function span_close(id) {
  if (document.getElementById(id)) {
    document.getElementById(id).style.display = "none";
  }
}

