function openWindow(theURL,winName,features)
{
window.open(theURL,winName,features)
}
function affcancel()
{
this.close();
}
function openWindowCentrer(theURL,winName,largeur,hauteur,features) {
  var top=(screen.height-hauteur)/2;
  var left=(screen.width-largeur)/2;
  window.open(theURL,winName,"top="+top+",left="+left+","+features);
}

var frm;
var applet;
var s;
var datedeb, datefin, datejour;
var duree;

function MM_openBrWindow(theURL,winName,features)
{	infoWindow=window.open(theURL,winName,features);
}

//Renvoie le libellé du jours selon le n° de semaine
function EntierVersJour(nojour)
{	switch (nojour.toString())
	{	case "0" :
			return "Sonntag";
			break;
		case "1" :
			return "Montag";
			break;
		case "2" :
			return "Dienstag";
			break;
		case "3" :
			return "Mittwoch";
			break;
		case "4" :
			return "Donnerstag";
			break;
		case "5" :
			return "Freitag";
			break;
		case "6" :
			return "Samstag";
			break;
		default :;
	}
}

//Renvoie le n° du jours dans la semaine selon le libellé du jours
function JourVersEntier(jourstr)
{
	switch (jourstr)
	{	case "Sonntag" :
			return "0";
			break;
		case "Montag" :
			return "1";
			break;
		case "Dienstag" :
			return "2";
			break;
		case "Mittwoch" :
			return "3";
			break;
		case "Donnerstag" :
			return "4";
			break;
		case "Freitag" :
			return "5";
			break;
		case "Samstag" :
			return "6";
			break;
		default : ;
	}
}

//Renvoie le libellé du mois selon le n° du mois
function EntierVersMois(nomois)
{
	switch (nomois)
	{	case "01" :
			return "Januar";
			break;
		case "02" :
			return "Februar";
			break;
		case "03" :
			return "März";
			break;
		case "04" :
			return "April";
			break;
		case "05" :
			return "Mai";
			break;
		case "06" :
			return "Juni";
			break;
		case "07" :
			return "Juli";
			break;
		case "08" :
			return "August";
			break;
		case "09" :
			return "September";
			break;
		case "10":
			return "Oktober";
			break;
		case "11":
			return "November";
			break;
		case "12":
			return "Dezember";
			break;
		case "1" :
			return "Januar";
			break;
		case "2" :
			return "Februar";
			break;
		case "3" :
			return "März";
			break;
		case "4" :
			return "April";
			break;
		case "5" :
			return "Mai";
			break;
		case "6" :
			return "Juni";
			break;
		case "7" :
			return "Juli";
			break;
		case "8" :
			return "August";
			break;
		case "9" :
			return "September";
			break;
		default : ;
	}
}

//Renvoie le n° du mois selon le libellé du mois
function MoisVersEntier(moisstr)
{
	switch (moisstr)
	{	case "Januar" :
			return "01";
			break;
		case "Februar" :
			return "02";
			break;
		case "März" :
			return "03";
			break;
		case "April" :
			return "04";
			break;
		case "Mai" :
			return "05";
			break;
		case "Juni" :
			return "06";
			break;
		case "Juli" :
			return "07";
			break;
		case "August" :
			return "08";
			break;
		case "September" :
			return "09";
			break;
		case "Oktober":
			return "10";
			break;
		case "November":
			return "11";
			break;
		case "Dezember":
			return "12";
			break;
		default : ;
	}
}

//Renvoi pour un objet "selectobj" de type "Select", l'indice correspondant à la chaine "valeurstr"
function ChoixSelect(selectobj, valeurstr)
{	for (i=0; i<selectobj.length; i++)
	{	if (selectobj.options[i].text == valeurstr)
		{	return i
		}
	}
}

//Vide les choix de l'objet "selectobj", pour le renseigner avec "valeurstr"
function VideSelect(selectObj, valeurstr)
{	//Vide l'objet
	do
	{	selectObj.options[0] = null;
	} while (selectObj.options.length>0);
	//Renseigne la Listbox avec la valeur de valeurstr
	selectObj.options[0] = new Option(valeurstr);
	selectObj.selectedIndex = 0;
}

//Renvoie la date formatée en JJ/MM/AAAA 
function CalculDate(jours, mois, annee)
{
	tmpDate = new Date();
	tmpDate.setFullYear(annee, mois-1, jours);
	//Mise en forme du jours "JJ"
	var zero =  "0";
	jours = tmpDate.getDate().toString();
	if (jours.length == 1) {jours = zero.concat(jours)}
	//Mise en forme du mois "MM"
	mois = (tmpDate.getMonth()+1).toString();
	if (mois.length == 1)	{mois = zero.concat(mois)}
	//Mise en forme de l'année "AAAA"
	annee=tmpDate.getYear().toString();
	if (eval(annee)<1900)
	{	annee=1900+eval(annee);
		annee=annee.toString()
	}
	var tmpannee = annee
	if (tmpannee.length < 4)
	{	for (i=1; i<tmpannee.length;i++)
		{	annee = zero.concat(annee)}
	}
	return jours+"/"+mois+"/"+annee;
}


//Renvoie le nombre de jour entre la date de debut et la date de fin
function CalculDiffDate(datedeb, joursFin, moisFin, anneeFin)
{
	DebDate  = new Date(eval(datedeb.substr(6,4)), eval(datedeb.substr(3,2))-1, eval(datedeb.substr(0,2)));
	FinDate = new Date(anneeFin, moisFin-1, joursFin);
	return (FinDate.valueOf() - DebDate.valueOf())/86400000;
}

//Renvoie le nombre de jours de croisiere selon le TypeJS
function ChoixType()
{	var frm = document.forms[0];
	
	choix = "";
	for (i=0; i<5; i++)
	{	if (frm.TypeJS[i].checked)
		{	switch (i)
			{	case 0 :	// Semaine | S
					choix = "7";
				break;
				case 1:	// MiniSemaine | MS
					choix = "4";
				break;
				case 2:	// WE 2 jrs | W2
					choix = "2";
				break;
				case 3:	// WE 3 jrs | W3
					choix = "3";
				break;
				case 4:	// WE 4 jrs | W4
					choix = "4";
				break;
				default :	//Autres
					choix = "";
			}
		}
	}
	return choix
}

//Renseigne les ListBox de la date de fin avec toutes les valeurs
function ListeChoixRetourComplete(JourObj, MoisObj, AnObj)
{	//ListBox des jours
	var zero =  "0";
	for (i=0; i<31; i++)
	{	var jour = i+1;
		jour = jour.toString();
		if (jour.length == 1) {jour = zero.concat(jour)}
		JourObj.options[i] = new Option(jour);
	}
	//ListBox des mois
	for (i=0; i<12; i++)
	{	var mois = i+1;
		mois = mois.toString();
		if (mois.length == 1) {mois = zero.concat(mois)}
		MoisObj.options[i] = new Option(EntierVersMois(mois));
	}
	//ListBox des annees (les 3 à venir)
	datejour = new Date();
	var annee =  datejour.getFullYear();
	annee=annee.toString();
	if (annee.length < 4)
	{	for (i=1; i<annee.length;i++)
		{	annee = zero.concat(annee)}	
	}
	for (i=0; i<3; i++)
	{	AnObj.options[i] = new Option(eval(annee+"+"+i));
	}
}
	
//Renseigne la Listbox qui donne le jour de la semaine
function JourSemaine(ListeObj, datestr)
{	//Vide la Listbox
	do
	{	ListeObj.options[0] = null;
	} while (ListeObj.options.length>0);
	//Renseigne la Listbox avec la valeur de datestr
	dateautre = new Date(eval(datestr.substr(6,4)), eval(datestr.substr(3,2))-1, eval(datestr.substr(0,2)));
	ListeObj.options[0] = new Option(EntierVersJour(dateautre.getDay()));
	ListeObj.selectedIndex = 0;
}

//Renvoi "Vrai" si le jour datedeb est un jour de la semaine correspondant au jour
//de départ du TypeJS de croisière choisie
function VerifJour(datestr, ObjType)
{	//objet date correspondant à la date du jour dans datejour
	datejour = new Date();
	//objet date correspondant à datestr dans variable de travail tempvar
	tempvar = new Date(eval(datestr.substr(6,4)), eval(datestr.substr(3,2))-1, eval(datestr.substr(0,2)));
	//jour de la semaine de datestr dans variable de travail tempvar
	var tempvar = tempvar.getDay();
	//Contrôle de la concordance "jour de la semaine / type de croisière"
	for (i=0; i<5; i++)
	{	if (ObjType[i].checked)
		{	switch (i)
			{	case 0 :
					return "Vrai";
				break;
				case 1 :
					if (tempvar == 1) {return "Vrai"};
					if (tempvar == 2) {return "Vrai"};
					return "Faux";
				break;
				case 2 :
					if (tempvar == 5) {return "Vrai"};
					if (tempvar == 6) {return "Vrai"};
					return "Faux";
				break;
				case 3 :
					if (tempvar == 4) {return "Vrai"};
					if (tempvar == 5) {return "Vrai"};
					if (tempvar == 6) {return "Vrai"};
					return "Faux";
				break;
				case 4 :
					if (tempvar == 3) {return "Vrai"};
					if (tempvar == 4) {return "Vrai"};
					if (tempvar == 5) {return "Vrai"};
					if (tempvar == 6) {return "Vrai"};
					return "Faux";
				break;
				default : return "Vrai";
			}
		}
	}
	return "Faux";
}

//Renseigne les Listbox qui permettent de choisir le jour de fin de croisière
function ListeChoixRetour(datestr, nbjour)
{	var frm = document.forms[0];

	//Vide chaque Listbox
	do
	{	frm.JFin.options[0] = null;
	} while (frm.JFin.options.length>0);
	do
	{	frm.MFin.options[0] = null;
	} while (frm.MFin.options.length>0);
	do
	{	frm.AFin.options[0] = null;
	} while (frm.AFin.options.length>0);
	//Renseigne les Listbox avec la valeur de datestr
	switch (nbjour)
	{	case "7":
			frm.JFin.options[0] = new Option(datestr.substr(0, 2));
			frm.MFin.options[0] = new Option(EntierVersMois(datestr.substr(3, 2)));
			frm.AFin.options[0] = new Option(datestr.substr(6, 4));
		break;
		case "5":
			frm.JFin.options[0] = new Option(datestr.substr(0, 2));
			frm.MFin.options[0] = new Option(EntierVersMois(datestr.substr(3, 2)));
			frm.AFin.options[0] = new Option(datestr.substr(6, 4));
		break;
		case "4":
			frm.JFin.options[0] = new Option(datestr.substr(0, 2));
			frm.MFin.options[0] = new Option(EntierVersMois(datestr.substr(3, 2)));
			frm.AFin.options[0] = new Option(datestr.substr(6, 4));
		break;
		case "3":
			frm.JFin.options[0] = new Option(datestr.substr(0, 2));
			frm.MFin.options[0] = new Option(EntierVersMois(datestr.substr(3, 2)));
			frm.AFin.options[0] = new Option(datestr.substr(6, 4));
		break;
		case "2":
			frm.JFin.options[0] = new Option(datestr.substr(0, 2));
			frm.MFin.options[0] = new Option(EntierVersMois(datestr.substr(3, 2)));
			frm.AFin.options[0] = new Option(datestr.substr(6, 4));
		break;
		default :
			ListeChoixRetourComplete(frm.JFin, frm.MFin, frm.AFin);
	}
}

//Renvoie la date de fin selon le type de croisiere et la date de debut
function CalculDateFin(datedeb, duree)
{	//Calcul du nombre de jours à ajouter à datedeb selon Type de croisiere
	var nbjour = ChoixType();
	if (nbjour == "")
	{	nbjour = duree	}
	DateClc = new Date();
	DateClc.setFullYear(eval(datedeb.substr(6, 4)), eval(datedeb.substr(3, 2))-1, eval(datedeb.substr(0, 2).concat( "+", nbjour )));
	//Mise en forme du résultat
	var jours = DateClc.getDate()
	var mois = DateClc.getMonth()+1;
	var annee = DateClc.getFullYear();
	var datestr = CalculDate(jours.toString(), mois.toString(), annee.toString());
	ListeChoixRetour(datestr, nbjour);
	return datestr;
}

//Met à jour le type de croisière et la date de fin si Aller-Simple est sélectionné
function SelectionAllerSimple(ChoixDep, ChoixRet, ChoixAR, ChoixJFin, ChoixMFin, ChoixAFin, ChoixSFin, duree)
{	//Met à jour la variable datefin selon le Type de croisière choisie
	datefin = CalculDateFin(datedeb, duree);
	//Met à jour les champs correspondants à la date de fin
	ChoixJFin.selectedIndex = ChoixSelect(ChoixJFin, datefin.substr(0, 2));
	ChoixMFin.selectedIndex = ChoixSelect(ChoixMFin, EntierVersMois(datefin.substr(3, 2)));
	ChoixAFin.selectedIndex = ChoixSelect(ChoixAFin, datefin.substr(6, 4));
	JourSemaine(ChoixSFin, datefin);
}

function ClickType()
{var frm = document.forms[0];
var i;


	datefin = CalculDateFin(datedeb, 0);
	//Met à jour les champs correspondants à la date de fin
	frm.JFin.selectedIndex = ChoixSelect(frm.JFin, datefin.substr(0, 2));
	frm.MFin.selectedIndex = ChoixSelect(frm.MFin, EntierVersMois(datefin.substr(3, 2)));
	frm.AFin.selectedIndex = ChoixSelect(frm.AFin, datefin.substr(6, 4));
	JourSemaine(frm.SFin, datefin);

}

//function VideRegion()
//{	VideSelect(frm.BaseDep, "Base de départ");
//	VideSelect(frm.BaseRetour, "Choisissez la base de départ");
//}
//
//function VideBaseDep()
//{	VideSelect(frm.BaseRetour, "Choisissez la base de départ");
//}

function ChangeDateDeb()
{var frm = document.forms[0];
var ChoixDep = "";
var ChoixRet = "";

//Calcul le nombre de jour qu'il y avait entre DateDeb et DateFin
duree = CalculDiffDate(datedeb, eval(frm.JFin.options[frm.JFin.selectedIndex].text), eval(MoisVersEntier(frm.MFin.options[frm.MFin.selectedIndex].text)), eval(frm.AFin.options[frm.AFin.selectedIndex].text));

//Met à jour la date de début selon le jour choisi
datedeb = CalculDate(eval(frm.JDeb.options[frm.JDeb.selectedIndex].text), eval(MoisVersEntier(frm.MDeb.options[frm.MDeb.selectedIndex].text)), eval(frm.ADeb.options[frm.ADeb.selectedIndex].text));
frm.JDeb.selectedIndex = ChoixSelect(frm.JDeb, datedeb.substr(0, 2));
frm.MDeb.selectedIndex = ChoixSelect(frm.MDeb, EntierVersMois(datedeb.substr(3, 2)));
frm.ADeb.selectedIndex = ChoixSelect(frm.ADeb, datedeb.substr(6, 4));
//Renseigne le jour de la semaine
JourSemaine(frm.SDeb, datedeb);
//Met à jour la date de fin selon le choix des bases en cas d'aller simple
SelectionAllerSimple(ChoixDep, ChoixRet, frm.AR, frm.JFin, frm.MFin, frm.AFin, frm.SFin, duree);
//Met à jour les champs correspondants à la date de fin
frm.JFin.selectedIndex = ChoixSelect(frm.JFin, datefin.substr(0, 2));
frm.MFin.selectedIndex = ChoixSelect(frm.MFin, EntierVersMois(datefin.substr(3, 2)));
frm.AFin.selectedIndex = ChoixSelect(frm.AFin, datefin.substr(6, 4));
//Renseigne le jour de la semaine
JourSemaine(frm.SFin, datefin);
}

//Inititialise datedeb
if (datedeb==null)
{	datejour = new Date();
//	datedeb = CalculDate(datejour.getDate(), eval(datejour.getMonth()+"+1"), datejour.getFullYear());
	duree = 7;
}

