/***************************************************************/
/*  Validierungsfunktionen Fastbooking / Flightmore  (deutsch) */
/***************************************************************/


function init_datum()
{	
	
	var days_start = 3 ;                //  Offset zum aktuellen Datum für das frühest mögliche Abreisedatum
	if(document.startform.days_start) days_start = parseInt(document.startform.days_start.value);
		
	
	var today = new Date ();
	var iHdate = today.getTime() + (1000 *60 * 60 *24) * days_start;
	var hdate = new Date (iHdate);
	
	var s1 = hdate.getDate();
	var s2 = hdate.getMonth() + 1;
	var s3 = hdate.getFullYear();
	/*
	this_monthH = s2;
	this_yearH = s3;
	*/
	document.startform.mindatum.value = s3*10000 + s2*100 + s1;
	document.startform.maxdatum.value = (s3+1)*10000 + s2*100 + 1;
	
	var s = new String(s1);
	if(s.length == 1) s1 = '0' + s1;
	s = new String(s2);
	if(s.length == 1) s2 = '0' + s2;
	strToday = s1 +'.' + s2 + '.' + s3;
	
	
	
	if(document.startform.hdate) {
		document.startform.startdatum.value = document.startform.hdate.value;
		document.startform.mindatumt.value = document.startform.hdate.value;
	}
	else {
		document.startform.startdatum.value = strToday;
		document.startform.mindatumt.value = strToday;
	}
	document.startform.maxdatumt.value = '01.' + s2 + '.' + (s3+1);
	
	if(document.startform.freedate) freedate = document.startform.freedate.value || '1';
	else freedate = '1';
	
	if (freedate == '1') {
		document.startform.hdate.value = strToday;
	} 
	else{ /* Monat-Dropdown muss dynamisch erzeugt werden */
		add_year_month_to_dropdown('hdate2', s2, s3);
		document.startform.hdate1.value = new String(Number(s1));
		//document.startform.hdate2.value = new String(s3+s2);	
	}

	var iRdate = today.getTime() + (1000 *60 * 60 *24) * 30;
	var rdate = new Date (iRdate);
	
	s1 = rdate.getDate();
	s2 = rdate.getMonth() + 1;
	s3 = rdate.getFullYear();
	
	this_monthR = s2;
	this_yearR = s3;
	
	s = new String(s1);
	if(s.length == 1) s1 = '0' + s1;
	s = new String(s2);
	if(s.length == 1) s2 = '0' + s2;
	strToday = s1 +'.' + s2 + '.' + s3;
	
	//document.startform.endedatum.value = document.startform.rdate.value;
	if (freedate == '1') {
		document.startform.rdate.value = new String(strToday);
	}
	else {
		add_year_month_to_dropdown('rdate2', s2, s3);
		document.startform.rdate1.value = new String(Number(s1));
		//document.startform.rdate2.value = new String(s3+s2);	
	}
}


function check_startmaske (theForm)
{
	
	//alert(theForm.adult.value);
	//alert(theForm.youth.value);
	//return (false);
	
	if(theForm.agentc.value == 'ssr' || document.startform.agentc.value == 'saa' ) {
		if(theForm.flugart.value == "G") {
			if(theForm.fromt.value == "") {
				alert ("\nEntrez votre départ s.v.p. !");
				theForm.fromt.focus();
				return (false);
			}
			if(theForm.rfromt.value == "") {
				alert ("\nEntrez votre départ s.v.p. !");
				theForm.rfromt.focus();
				return (false);
			}
			if(theForm.destt.value == "") {
				alert ("\nEntrez votre déstination s.v.p. !");
				theForm.destt.focus();
				return (false);
			}
			if(theForm.rdestt.value == "") {
				alert ("\nEntrez votre déstination s.v.p. !");
				theForm.rdestt.focus();
				return (false);
			}
		}
		else if(theForm.destt.value == "") {
			alert ("\nEntrez votre déstination s.v.p. !");
			theForm.destt.focus();
			return (false);
		}
	}
	
	else if (theForm.fromt.type == "text" && theForm.fromt.value == "")
	{
		alert ("\nEntrez votre déstination s.v.p. !");
		theForm.fromt.focus();
		return (false);
	}
	
	else if (theForm.destt.value == "")
	{
		alert ("\nEntrez votre déstination s.v.p. !");
		theForm.destt.focus();
		return (false);
	}
	
	
	if (theForm.agentc.value == 'edi') {
		//theForm.destt.value = escape(theForm.destt.value);
	}
	
//  und nun die Datumsbetrachtung
	
	/* todo: schneller Hack - säubern */
	if (freedate == '0') {
		hd1 = document.startform.hdate1.value;
		hd2 = document.startform.hdate2.value;
		theForm.hdate.value = hd1 + '.' + hd2.substring(4,6)  + '.' + hd2.substring(0,4);
	}
	hdat = extract_datum (theForm.hdate.value);
	hd3 = parseInt (hdat / 10000);
	hd1 = hdat % 100;
	hd2 = parseInt ((hdat-hd3*10000)/100.);
	
	theForm.hdate1.value	= hd1;
	theForm.hdate2.value = hd3*100 + hd2;
	

	if (! teste_datum (hd1,hd2,hd3))
	{
		alert ("Cette date n'éxiste pas !");
		theForm.hdate.focus();
		return (false);
	}
		
	if (hdat < theForm.mindatum.value)
	{
		alert ("Veuillez choisir une autre date de départ. Vous pouvez partir au plus tôt le "+theForm.mindatumt.value+" !");
		theForm.hdate.focus();
		return (false);
	}
	
	/* todo: schneller Hack - säubern */
	if (freedate == '0') {
		rd1 = document.startform.rdate1.value;
		rd2 = document.startform.rdate2.value;
		theForm.rdate.value = rd1 + '.' + rd2.substring(4,6)  + '.' + rd2.substring(0,4);
	}
	rdat = extract_datum (theForm.rdate.value);
	rd3 = parseInt (rdat / 10000);
	rd1 = rdat % 100;
	rd2 = parseInt ((rdat-rd3*10000)/100.);

	theForm.rdate1.value	= rd1;
	theForm.rdate2.value = rd3*100 + rd2;

	if (rdat > theForm.maxdatum.value)
	{
		alert ("Veuillez choisir une autre date de départ. Vous pouvez retourner au plus tard le "+theForm.maxdatumt.value+" !");
		theForm.rdate.focus();
		return (false);
	}
	if (! teste_datum (rd1,rd2,rd3))
	{
		alert ("Cette date n'éxiste pas !");
		theForm.rdate.focus();
		return (false);
	}

	if (rdat < hdat)
	{
		alert ("Le voyage du retour ne peut prendre place qu'après le départ !");
		theForm.hdate.focus();
		return (false);
	}	
	
	if(!(theForm.agentc.value == 'ssr' || document.startform.agentc.value == 'saa')) {
		if (theForm.adult.value == 0 && theForm.youth.value == 0) 
		{
			alert ("Attention! Veuillez sélectionner au minimum 1 adult\nou 1 jeune dans la rubrique \n'Passagers'.");
			theForm.adult.focus();	
			return (false);
		}
		if (theForm.adult.value > 0 && theForm.youth.value > 0) 
		{
			alert ("Attention! Ce n´est pas possible de réserver adultes et jeunes en même temps!\nVeuillez faire des réservations séparées s.v.p.");
			theForm.adult.focus();	
			return (false);
		}
	}

//	Window.open("", "flightpopup", "location=0,resizable=1,width=650,height=350, status=yes, scrollbars=yes");
	return (true);
}



function change_mode ()   //  für "weitere Optionen"
{
	document.startform.mode.value = 0;
	return (true);
}

function check_datum (typ)
{
// wir müssen zunächst die möglichen 3 Datumsteile separieren
	if (typ == 1)
		str = new String(document.forms.startform.hdate.value);
	else
		str = new String(document.forms.startform.rdate.value);

	dat = extract_datum (str);

	jahr = parseInt (dat / 10000);
	tag = dat % 100;
	monat = parseInt ((dat-jahr*10000)/100.);

	status = 0;
	
	while (true)
	{	
		
		if (dat <= 0)
		{
			alert ("Veuillez entrer une date valable de la forme JJ.MM.AAAA !");
			break;
		}

		if (dat < parseInt(document.forms.startform.mindatum.value))
		{
			alert ("Veuillez choisir une autre date de départ. \nVous pouvez partir au plus tôt "+theForm.mindatumt.value+" !");
			break;
		}
		if (dat > parseInt(document.forms.startform.maxdatum.value))
		{
			alert ("Veuillez choisir une autre date de retour. \nVous pouvez retourner au plus tard le "+theForm.maxdatumt.value+" !");
			break;
		}

		status = 1;
		break;
	}

	if (status == 0) 
	{
		//if (typ == 1) document.forms.startform.hdate.value = document.forms.startform.startdatum.value;
		//if (typ == 2) document.forms.startform.rdate.value = document.forms.startform.endedatum.value;
	}	
	else
	{
		if (tag < 10) 
			datstr = "0"+tag;
		else
			datstr = tag;
		
		datstr += ".";
		
		if (monat < 10) 
			datstr += "0"+monat;
		else
			datstr += monat;
		datstr += ".";

		datstr += jahr;
		
		if (typ == 1) document.forms.startform.hdate.value = datstr;
		if (typ == 2) document.forms.startform.rdate.value = datstr;
	}	
	
	return (true);		
}

function extract_datum (datstr)
{
//  Umwandlung eines Datums von Textform in Zahlenform, also 'DD.MM.YYYY' nach YYYYMMDD
//  Als zugelassene Feldtrenner sind '/', '-' und '.' erlaubt.

	pos1 = datstr.indexOf (".");	
	if (pos1 < 0) pos1 = datstr.indexOf ("-");
	if (pos1 < 0) pos1 = datstr.indexOf ("/");
	
	if (pos1 < 0) return (0);
	
	pos2 = datstr.indexOf (".",pos1+1);	
	if (pos2 < 0) pos1 = datstr.indexOf ("-",pos1+1);
	if (pos2 < 0) pos1 = datstr.indexOf ("/", pos1+1);
	
	if (pos2 < 0) return (0);

	tag = parseInt (parseFloat(datstr));
	monat = parseInt (parseFloat(datstr.substr(pos1+1,2)));
	jahr = parseInt (parseFloat(datstr.substr(pos2+1,4)));

	if (jahr <= 99) jahr += 2000;

	if (! teste_datum (tag,monat,jahr)) return (0);

	dat = jahr*10000 + monat*100 + tag;	
		
	return (dat);
}

function Kalender_hin(Wert)
{
	var posleft = 250;
	var postop = 150;

	var href = new String ("http://flight1.onlinetravel.ch/cgi-bin/flightmore?mask=fastbook&mode=14&direction=1") + "&vendor=" + document.startform.vendor.value + "&agentc=" + document.startform.agentc.value + "&language=" + document.startform.language.value + "&hdate=" + document.startform.hdate.value + "&hdate1=" + document.startform.hdate1.value + "&hdate2=" + document.startform.hdate2.value + "&mindatum=" + document.startform.mindatum.value + "&maxdatum=" + document.startform.maxdatum.value;
	var neu = open(href,"Kalender","width=175,height=170,scrolling=no,left=" + posleft + ",top=" + postop);
}
function Kalender_back(Wert)
{
	var posleft = 250;
	var postop = 150;

	var href = new String ("http://flight1.onlinetravel.ch/cgi-bin/flightmore?mask=fastbook&mode=14&direction=2") + "&vendor=" + document.startform.vendor.value + "&agentc=" + document.startform.agentc.value + "&language=" + document.startform.language.value + "&rdate=" + document.startform.rdate.value + "&rdate1=" + document.startform.rdate1.value + "&rdate2=" + document.startform.rdate2.value + "&mindatum=" + document.startform.mindatum.value + "&maxdatum=" + document.startform.maxdatum.value;

	var neu = open(href,"Kalender","width=175,height=170,scrolling=no,left=" + posleft + ",top=" + postop);
}

function teste_datum (tag,monat,jahr)
{
	mleng = new Array(31,28,31,30,31,30,31,31,30,31,30,31)
		
	if (tag > 0 && tag <= mleng[monat-1]) return (true);
		
	if (monat == 2 && tag == 29)   //  beim Februar könnte es sich um ein Schaltjahr handeln
	{
      if (! (jahr%100) && (jahr/100)%4 ) return (false);
		if (jahr % 4) return (false);
		return (true);
	}
				
	return (false);
}

function PopUp (url, width,height,typ)
{
	if (typ == 1)
		opt = "width=" + width + ",height=" + height + ",resizable=1,toolbar=1,scrollbars=1";
	else
		opt = "width=" + width + ",height=" + height + ",resizable=0,toolbar=0,scrollbars=0";
	
	neuesFenster=open(url,"anzeigeFenster1",opt); // hier anderen Namen als im "normalen" popup (functions.js in js_for_all). sonst werden z.B. agbs im Fenster der IBE geöffnet
	window.neuesFenster.focus();
}

function popup_result(width,height,typ) 
{
	
	var f = document.startform;
	if (check_startmaske(f) == true) {
		var url = "http://flight1.onlinetravel.ch/cgi-bin/flightmore?mode=3&program=flightmore&mask=fastbook&onlyavail=1&youth=0"
		url = url.concat("&agentc=", f.agentc.value);
		url = url.concat("&vendor=", f.vendor.value);
		url = url.concat("&language=", f.language.value);
		
		url = url.concat("&hdate1=", f.hdate1.value);
		url = url.concat("&hdate2=", f.hdate2.value);
		url = url.concat("&rdate1=", f.rdate1.value);
		url = url.concat("&rdate2=", f.rdate2.value);
		url = url.concat("&mindatum=", f.mindatum.value);
		url = url.concat("&maxdatum=", f.maxdatum.value);
		url = url.concat("&maxdatumt=", f.maxdatumt.value);
		url = url.concat("&startdatum=", f.startdatum.value);
		url = url.concat("&endedatum=", f.endedatum.value);
		/* fromt kann als Dropdown oder als Freitext eingegeben werden */
		if (f.fromt.type == "text") url = url.concat("&fromt=", f.fromt.value);
		else  url = url.concat("&fromt=", f.fromt.options[f.fromt.selectedIndex].value);
		url = url.concat("&destt=", f.destt.value);
		url = url.concat("&hdate=", f.hdate.value);
		url = url.concat("&rdate=", f.rdate.value);
		url = url.concat("&adult=", f.adult.options[f.adult.selectedIndex].value);
		if(f.child) {
			url = url.concat("&child=", f.child.options[f.child.selectedIndex].value);
		}
		if(f.infant) {
			url = url.concat("&infant=", f.infant.options[f.infant.selectedIndex].value);
		}
		if(f.carrt) {
			url = url.concat("&carrt=", f.carrt.options[f.carrt.selectedIndex].value);
		}
		url = url.concat("&flugart=", f.flugart.value);
		
		
		//alert(url);
		PopUp(url, width, height, typ);
		return (true);
	}
	return (false);
}

function submitForm(theForm) {
	if(check_startmaske (theForm) == true) {
		theForm.submit();
		return (true);
	}
	return (false);
}


function create_html_for_year_month_dropdown(name, flight_month, flight_year) {
	var theMonths = new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
	var html ='<select id="' +name + '" name="' +name + '">'; //  style="width:90";  gilt eigentlich nr für Sulzberger 
			
	var m = new Number(flight_month);
	var y = new Number(flight_year);
	
	
	var count = 0;
	
	for (var i = m; count < 12; i++) {
		if (i > 12) {
			y++;
			i  = 1;
		}
		str = String((y * 10000 + i * 100)/100);
		html += '<option value="' + str + '"'; 
		if(count == 0) html += ' selected="selected"';
		html += '>' + theMonths[i-1]
		
		if(document.startform.agentc.value == 'ssr' || document.startform.agentc.value == 'saa' || document.startform.agentc.value == 'tco') {
			html += ' ' +	y;
		}
		
		html += '</option>';
		count++;
	}
	
	html += '</select>';
//	alert(html);
	return (html)
}



function add_year_month_to_dropdown(name, flight_month, flight_year) {
	var selectNode = $(name);
	var optionNode = document.createElement("option");
		
	var theMonths = new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");	/* Zuweisung der options direkt an select klappt im IE7 nicht */
	
	var m = new Number(flight_month);
	var y = new Number(flight_year);
	
	var count = 0;
	
	for (var i = m; count < 12; i++) {
		if (i > 12) {
			y++;
			i  = 1;
		}
		
		value_str = String((y * 10000 + i * 100)/100);
		text_str =  theMonths[i-1];
		if(document.startform.agentc.value == 'ssr' || document.startform.agentc.value == 'saa'  || document.startform.agentc.value == 'tco') {
			text_str += ' ' +	y;
		}
		
		if(count == 0) {
			var optionNode = new Option(text_str, value_str, true, true);
		}
		else {
			var optionNode = new Option(text_str, value_str, false, false);
		}
		selectNode.options[selectNode.options.length] = optionNode;
		
		count++;
	}
	
	return;
}

function change_flugart ()
{
	var flugart = getCheckedValue(document.startform.flugart);
	/* Oneway */
	if (flugart == "O")  {
		Form.Element.disable('rdate1');
		Form.Element.disable('rdate2');
		
	}
	else if (flugart == "R")  {
		Form.Element.enable('rdate1');
		Form.Element.enable('rdate2');
	}
	
	return;
}
