﻿function getObjFra(name){
	if (document.getElementById){
		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
	}
	else if (document.all){
		this.obj = document.all[name];
		this.style = document.all[name].style;
	}
}

function initFormEvent(type) {
	
	formObj  = document.wizardWeek;
	var maxRoom = 3;
	
	with (formObj) {
		//gestion radio type de week-end
		itemFormTypeWeek = new Array ();
		for (var i=0;i<cmbt.length;i++) {
			cmbt[i].onclick = function () {
				
				nbRooms = Number(NumRoom.options[NumRoom.selectedIndex].value);
				if (this.value==2)
				new getObjFra("Room").obj.style.display = (this.value!=5) ? "block":"none";
				new getObjFra("RoomSelect").obj.style.display = (this.value!=5) ? "block":"none";
				new getObjFra("flxd").obj.style.display = (this.value!=5) ? "block":"none";
				if (type=="sejours") {
					new getObjFra("voiture").obj.style.display = (this.value!=2&&this.value!=6) ? "block":"none";
					new getObjFra("sejTour").obj.style.display = (this.value==6) ? "block":"none";
					new getObjFra("voySurMesure").obj.style.display = (this.value!=6) ? "block":"none";
				}
				else{
				    new getObjFra("voiture").obj.style.display = (this.value!=2&&this.value!=6) ? "block":"none";
				}
				
				for (var i=1;i<=maxRoom;i++) {
					if (this.value!=5) {
						new getObjFra("roomNumb"+i).obj.style.display = "block";
						new getObjFra("room"+i).obj.style.display = (i<=nbRooms) ?"block" :"none";
						new getObjFra("roomKidTx"+i).obj.style.display = "block";
						new getObjFra("ageRebate"+i).obj.style.display = (Number(eval("NumChild"+i).value)!=0) ?"block" :"none";
					}
					else {
						new getObjFra("roomNumb"+i).obj.style.display = "none";
						if (i>1) new getObjFra("room"+i).obj.style.display = "none";
						new getObjFra("roomKidTx"+i).obj.style.display = "none";
						new getObjFra("ageRebate"+i).obj.style.display = (i==1&&Number(eval("NumChild"+i).value)!=0) ?"block" :"none";
					}
				}
				
				if (NumRoom.value==1) new getObjFra("roomNumb1").obj.style.display = "none";
				
				new getObjFra("ageRebate").obj.style.display = (Number(NumChild1.value)!=0) ?"block" :"none";
				
			}
		}

		for (var i=0;i<cmbt.length;i++) {
			if (cmbt[i].checked)
				cmbt[i].click();
		}
		
		//gestion checkbox "Je recherche un hôtel pour une partie seulement de mon voyage"
		flxd.onclick = function () {
			new getObjFra("flxd-open").obj.style.display = (this.checked) ? "block":"none";
		}
		
		//gestion select nombres de chambres
		NumRoom.onchange = function () {
			for (var i=1;i<=maxRoom;i++) {
				new getObjFra("roomNumb"+i).obj.style.display =  (i<=this.value) ? "block":"none";
				new getObjFra("roomKidTx"+i).obj.style.display = (Number(eval("NumChild"+i).value)>0) ?"block" :"none";
				new getObjFra("room"+i).obj.style.display = (i>Number(this.value)) ?"none" :"block";
				new getObjFra("ageRebate"+i).obj.style.display = (i>Number(this.value)||Number(eval("NumChild"+i).value)==0) ?"none" :"block";
			}
			new getObjFra("roomNumb1").obj.style.display = (this.value==1) ?"none" :"block";
			if (cboxTrainOptions.checked) genReductionComboBox();
		}	
		
		//gestion affichage nombre de jeunes en fonction de la chambre
		var maxKids = 5;
		for (var i=1;i<=maxRoom;i++) {
			
			eval("NumChild"+i).onchange = function () {
				nbRooms = Number(NumRoom.options[NumRoom.selectedIndex].value);
				idRoom = this.name.charAt(this.name.length-1);
				new getObjFra("ageRebate").obj.style.display = (nbRooms==1&&Number(NumChild1.value)==0||Number(NumChild1.value)==0&&Number(NumChild2.value)==0&&Number(NumChild3.value)==0) ?"none" :"block";
				new getObjFra("ageRebate"+idRoom).obj.style.display = (this.value!=0) ?"block" :"none";
				new getObjFra("roomKidTx"+idRoom).obj.style.display = (this.value!=0&&new getObjFra("Room").obj.style.display!="none") ?"block" :"none";
				for (var i=1;i<=maxKids;i++) {
					new getObjFra("kid"+idRoom+""+i).obj.style.display = (i>Number(this.value)) ?"none" :"block";
					eval("pacRm"+idRoom+"Child"+i+"Age").disabled = (i>Number(this.value)) ?true :false;
				}
				
				if (cboxTrainOptions.checked) genReductionComboBox();
			}

			eval("NumSenior"+i).onchange = function () {
				if (cboxTrainOptions.checked) genReductionComboBox();
			}
			
			eval("NumAdult"+i).onchange = function () {
				if (cboxTrainOptions.checked) genReductionComboBox();
			}
			
		}
		
		//gestion checkbox "Cliquez ici pour accéder aux préférences du train et indiquer vos cartes de réduction"
		cboxTrainOptions.onclick = function () {
			if (this.checked) genReductionComboBox();
			new getObjFra("TrainOptions").obj.style.display = (this.checked) ? "block":"none";
		}
		
		if (flxd.checked)
			new getObjFra("flxd-open").obj.style.display = "block";
		
		if (cboxTrainOptions.checked)
			new getObjFra("TrainOptions").obj.style.display = "block";
		
	}
	
}

selectReduc = new Array (
								{ id:1, value:"YOUNG", label:"Carte 12-25", speTest:true },
								{ id:0, value:"ESCA", label:"Carte Escapades", speTest:false },
								{ id:1, value:"CHILD", label:"Carte Enfant+", speTest:true },
								{ id:3, value:"SENIO", label:"Carte Sénior", speTest:false },
								{ id:0, value:"SESUB", label:"Abonnement Forfait", speTest:false },
								{ id:0, value:"SEOUT", label:"Abonnement Forfait avec surclassement", speTest:false },
								{ id:0, value:"FQSUB", label:"Abonnement Fréquence", speTest:false },
								{ id:0, value:"FQOUT", label:"Abonnement Fréquence avec surclassement", speTest:false },
								{ id:0, value:"FAM30", label:"Carte Famille Nombreuse 30%", speTest:false },
								{ id:0, value:"FAM40", label:"Carte Famille Nombreuse 40%", speTest:false },
								{ id:0, value:"FAM50", label:"Carte Famille Nombreuse 50%", speTest:false },
								{ id:0, value:"FAM75", label:"Carte Famille Nombreuse 75%", speTest:false },
								{ id:0, value:"MILCD", label:"Carte Militaire", speTest:false },
								{ id:0, value:"MIOUT", label:"Carte Militaire avec surclassement", speTest:false },
								{ id:0, value:"LYSUB", label:"Forfait Lys", speTest:false },
								{ id:0, value:"FPASS", label:"Pass' Entreprise", speTest:false },
								{ id:0, value:"PTENT", label:"Thalys Entreprise", speTest:false }
																												);
																												
targSelect = new Array( 
								{ line:3, id:3, objForm:"NumSenior3",htmlLabel:"<b>Senior</b> (à partir de 65 ans)" } ,
								{ line:2, id:3, objForm:"NumSenior2",htmlLabel:"<b>Senior</b> (à partir de 65 ans)" } ,
								{ line:1, id:3, objForm:"NumSenior1",htmlLabel:"<b>Senior</b> (à partir de 65 ans)" } ,
								{ line:3, id:2, objForm:"NumAdult3",htmlLabel:"<b>Adulte</b> (de 19 à 64 ans)" } , 
								{ line:2, id:2, objForm:"NumAdult2",htmlLabel:"<b>Adulte</b> (de 19 à 64 ans)" } , 
								{ line:1, id:2, objForm:"NumAdult1",htmlLabel:"<b>Adulte</b> (de 19 à 64 ans)" } , 
								{ line:3, id:1, objForm:"NumChild3",htmlLabel:"<b>Jeune voyageur</b> (de 0 à 18 ans)" },
								{ line:2, id:1, objForm:"NumChild2",htmlLabel:"<b>Jeune voyageur</b> (de 0 à 18 ans)" },
								{ line:1, id:1, objForm:"NumChild1",htmlLabel:"<b>Jeune voyageur</b> (de 0 à 18 ans)" }
																														);
																												
//reinitialise à 0 les comboBox Adultes/Seniors/Jeunes / chambres et checkbox reductions train
function reinitSelectParticipe () {
	with (formObj) {
		for (var i=0;i<targSelect.length;i++) 
		{
			if (eval(targSelect[i]["objForm"]).name != "NumAdult1" && eval(targSelect[i]["objForm"]).name != "ADULTS")
				eval(targSelect[i]["objForm"]).selectedIndex = 0;
		}
		NumRoom.selectedIndex = 0;
		cboxTrainOptions.checked = false;
	}
}

//génération des combobox des cartes de réduction Train
function genReductionComboBox () {
	ch = "";
	nbRooms = Number(formObj.NumRoom.options[formObj.NumRoom.selectedIndex].value);
	nbReducKids = new Array();
	cntReduc = 0;
	for (var i=targSelect.length-1;i>=0;i--) {
		
			if ( formObj[targSelect[i]["objForm"]].value>0 && new getObjFra("room"+targSelect[i]["line"]).obj.style.display!="none" ) {
				
				for (var j=0;j<formObj[targSelect[i]["objForm"]].value&&cntReduc<6;j++) {
				
					ch+= '<div id="RailCard'+(cntReduc+1)+'">';
						ch+= '<table cellpadding="0" cellspacing="0" width="90%">';
							ch+= '<tr>';
							
								tpmSplit = targSelect[i]["htmlLabel"].split("</b>");
								ch+= '<td width="40%">' + tpmSplit[0] + ' ' + (j+1) + '</b>' + tpmSplit[1]+ ' :</td>';
								
								ch+= '<td width="60%">Type de carte de réduction (facultatif) :<br />';
									
									if (targSelect[i]["id"]==1) nbReducKids[nbReducKids.length] = "rcrd"+(cntReduc+1);
									ch+= '<select id="rcrd'+(cntReduc+1)+'" name="rcrd'+(cntReduc+1)+'">';
										
										ch+= '<option value="" selected>Choisissez une carte</option>';
										
										for (var k=0;k<selectReduc.length;k++) {
											if (selectReduc[k]["id"]==0||selectReduc[k]["id"]==targSelect[i]["id"]) {
												ch+= '<option value="'+selectReduc[k]["value"]+'">'+selectReduc[k]["label"]+'</option>';
											}
										}

									ch+= '</select>';
									
								ch+= '</td>';
							ch+= '</tr>';
						ch+= '</table>';
					ch+= '</table></div>';

					cntReduc++;
					
				}
				
		}
	}
	
	new getObjFra("txReduc").obj.style.display = (cntReduc>0) ?"block" :"none";
	new getObjFra("RailCards").obj.innerHTML = ch;
	
}

//Valide si les dates sont correctes
function validDate (d) {
	tmpD = d.split("/");
	if(tmpD.length==3) {
		tmpDate = new Date(tmpD[2],tmpD[1],tmpD[0]);
		return (isNaN(tmpDate)) ?false :true;
	}
	else return false;			
}

//Si date de retour < date de départ
function validDateDepRet (dateDep,dateRet) {
	tmpdateDep = dateDep.split("/");
	tmpdateRet = dateRet.split("/");
	dateDep = new Date(tmpdateDep[2],tmpdateDep[1]-1,tmpdateDep[0]);
	dateRet = new Date(tmpdateRet[2],tmpdateRet[1]-1,tmpdateRet[0]);
	return (dateRet<=dateDep) ?false :true;
}

//Si dates d’hôtel ne sont pas comprise dans les dates de voyage
function compDateDepRetHotel (dateDep,dateRet,dateDepHotel,dateRetHotel) {
	tmpdateDep = dateDep.split("/");
	tmpdateRet = dateRet.split("/");
	tmpdateDepHotel = dateDepHotel.split("/");
	tmpdateRetHotel = dateRetHotel.split("/");
	dateDep = new Date(tmpdateDep[2],tmpdateDep[1],tmpdateDep[0]);
	dateRet = new Date(tmpdateRet[2],tmpdateRet[1],tmpdateRet[0]);
	dateDepHotel = new Date(tmpdateDepHotel[2],tmpdateDepHotel[1],tmpdateDepHotel[0]);
	dateRetHotel = new Date(tmpdateRetHotel[2],tmpdateRetHotel[1],tmpdateRetHotel[0]);
	return (dateDepHotel<dateDep||dateDepHotel>dateRet||dateRetHotel<dateDep||dateRetHotel>dateRet) ?false :true;
}

//Si dates de départ de l’hôtel < que la date d’arrivée à l’hôtel
function validDateDepRetHotel (dateDepHotel,dateRetHotel) {
	tmpdateDepHotel = dateDepHotel.split("/");
	tmpdateRetHotel = dateRetHotel.split("/");
	dateDepHotel = new Date(tmpdateDepHotel[2],tmpdateDepHotel[1],tmpdateDepHotel[0]);
	dateRetHotel = new Date(tmpdateRetHotel[2],tmpdateRetHotel[1],tmpdateRetHotel[0]);
	return (dateRetHotel<=dateDepHotel) ?false :true;
}

//Valide si "Pas ou trop de voyageur référencé" le mode "hôtel" n'est pas actif
function validNbVoyNoRooms (n1,n2,n3) {
	objState = new getObjFra("Room").obj.style.display;
	return (n1+n2+n3>6&&objState=="none" || n1+n2+n3<=0&&objState=="none") ?false :true;
}

//Valide si "Pas ou trop de voyageur référencé" le mode "hôtel" est pas actif
function validnbVoys () {
	
	nbVoyTotal = nbKids = 0;
	nbVoyByCat = new Array();

	for (var i=1;i<=nbRooms;i++) {
		with (formObj) {
			nbVoyByCat[i] = {
								nbAdu:Number(eval("NumAdult"+i).value), nbSei:Number(eval("NumSenior"+i).value), nbKids:Number(eval("NumChild"+i).value),
								total:Number(eval("NumAdult"+i).value) + Number(eval("NumSenior"+i).value) + Number(eval("NumChild"+i).value) 
								};
			if (nbVoyByCat[i]["total"]<1||nbVoyByCat[i]["total"]>6) return false;
		}
	}
		
	for (var i=1;i<nbVoyByCat.length;i++) {
		nbKids +=  nbVoyByCat[i]["nbKids"];
		nbVoyTotal += nbVoyByCat[i]["total"];
	}
	
	return (nbVoyTotal>6) ?false :true;
	
}

//Valide si l'âge a bien été renseigné
function validIsAgesEmpty () {
	for (var i=1;i<=nbRooms;i++){
        if (new getObjFra("ageRebate"+i).obj.style.display!="none"){
            for (var j=1;j<=new getObjFra("NumChild"+i).obj.value;j++)
            {
              with (formObj) 
              //si Numchild+i specifie des enfants
              if(eval("NumChild"+i).value > 0){
                  if (eval("pacRm"+i+"Child"+j+"Age").value==-1){
                        return false;
                  }
              }
            }
        }
    }
	return true;
}

//Valide si un mineur est accompagné
function validIsKidsAccompanied () {
	//utilistation de la variable "nbVoy" et "nbKids" au dessus
	return (nbKids==nbVoyTotal) ?false :true;
}


//Valide si un mineur à plus de 14 ans
function validIsKidsMin15 () {
	if (nbKids!=nbVoyTotal||nbKids==0) return true;
	else for (var i=1;i<=5;i++) with (formObj) return (eval("pacRm1Child"+i+"Age").value<15&&!eval("pacRm1Child"+i+"Age").disabled) ?false :true;
}

//Valide si "Carte Enfant +" (at least one passenger shall be 0-11)"
function validReduction () {
	
	nbEmpty = nbYoung = nbChild = tmpNbYoung = tmpNbChild = 0;
	
	with (formObj) {
		
		if (cboxTrainOptions.checked) {
			
			tabAge = new Array();
			for (var i=1;i<=nbRooms;i++) for (var j=1;j<=5;j++)  if (eval("pacRm"+i+"Child"+j+"Age").value!=-1&&!eval("pacRm"+i+"Child"+j+"Age").disabled)  tabAge[tabAge.length] = { value:Number(eval("pacRm"+i+"Child"+j+"Age").value), affected:false };
							
			for (var i in nbReducKids) {
				targValue = formObj[nbReducKids[i]].options[formObj[nbReducKids[i]].selectedIndex].value;
				if (targValue=="YOUNG") nbYoung++;
				else if (targValue=="CHILD") nbChild++;
			}

			for (var i in nbReducKids) {
				targValue = formObj[nbReducKids[i]].options[formObj[nbReducKids[i]].selectedIndex].value;
				if (targValue=="") nbEmpty++;
				for (var j in tabAge) {
					if ( targValue=="YOUNG"&&tabAge[j]["value"]>=12 &&!tabAge[j]["affected"] || targValue=="CHILD"&&tabAge[j]["value"]>=0&&tabAge[j]["value"]<=11&&!tabAge[j]["affected"] ) {
						tabAge[j]["affected"] = true;
						if (targValue=="YOUNG"&&tmpNbYoung<nbYoung) tmpNbYoung++;
						else if (targValue=="CHILD"&&tmpNbChild<nbChild) tmpNbChild++;
					}
				}
			}
			
			return (nbYoung+nbChild+nbEmpty!=tmpNbYoung+tmpNbChild+nbEmpty) ?false :true;
			
		}
		else return true;
		
	}
}

var oldIdError = "";
function showError (id) {
	new getObjFra("alert"+id).obj.style.display = "block";
	if (id!=oldIdError&&oldIdError!="") new getObjFra("alert"+oldIdError).obj.style.display = "none";
	oldIdError = id;
}

function doSubmit () {
	if (new getObjFra("voySurMesure").obj.style.display!="none") {
		with (formObj) {
			
			nbRooms = Number(NumRoom.options[NumRoom.selectedIndex].value);
			if (pacDep.value=="") {
				showError(1);
			}
			else if (DestName.value=="") {
				showError(2);
			}
			else if (pacDep.value.toLowerCase()==DestName.value.toLowerCase()) {
				showError(3);
			}
			else if (!validDate(pacDate1.value)||!validDate(pacDate2.value)) {
				showError(13);
			}
			else if (pacDate1.value==pacDate2.value	) {
				showError(14);
			}
			else if (!validDateDepRet(pacDate1.value,pacDate2.value)) {
				showError(4);
			}
			/*else if (!compDateDepRetHotel(pacDate1.value,pacDate2.value,FlexHotFrDate.value,FlexHotToDate.value)) {
				showError(5);
			}
			else if (!validDateDepRetHotel(FlexHotFrDate.value,FlexHotToDate.value)) {
				showError(6);
			}*/
			else if (!validNbVoyNoRooms(
							Number(NumAdult1.options[NumAdult1.selectedIndex].value), 
							Number(NumSenior1.options[NumSenior1.selectedIndex].value),
							Number(NumChild1.options[NumChild1.selectedIndex].value)
																		)) {
				showError(7);
			}
			else if (!validnbVoys()) {
				showError(8);
			}
			else if (!validIsAgesEmpty()) {
				showError(9);
			}
			else if (!validIsKidsAccompanied()&&!cmbt[1].checked) {
				showError(10);
			}
			else if (!validIsKidsMin15()&&cmbt[1].checked) {
				showError(11);
			}
			else if (!validReduction()) {
				showError(12);
			}
			else {
				submit();
			}
		}
	}
	else {
		with (formObj) {
			if (ADULTS.selectedIndex + CHILDREN.selectedIndex + INFANTS.selectedIndex > 9)
            {
                 setDisplay("alertSej", "");
                 setInnerHTML("alertSej", "Vous ne pouvez pas sélectionner plus de 9 personnes.");
            }
            else if (sDest.selectedIndex == 0 &&  VDEP.selectedIndex == 0 && MDEP.selectedIndex == 0 && DUREE.selectedIndex == 0 && BUDGET.selectedIndex == 0 && FORMULE.selectedIndex == 0)
            {
				setDisplay("alertSej", "");
				setInnerHTML("alertSej", "Veuillez sélectionner au moins un critère!");
            }else{
				submit();
			}
		}
	}
}
