/* FILE		promos_vols.js
 *
 * DESCRIPTION
 * Fonctions d?di?es aux promos vols
 */

/**
 * XMLHttpRequest pour les choix des dates d'un vol
 *
 * @param	string		response delivered after the XMLhttprequest
 */

function promosVolsHandleResponse(xmlhttp)
{
	var results = xmlhttp.responseText;
	if ( results != "" )
	{
		setObjectContent("calendrierRetour", results);
		setObjectClassName("retour", "etape");

		// effacement de l'ancienne case
		if ( getObject("case_selectionnee") )
		{
			setObjectClassName("case_selectionnee", "selectable");
			setObjectId("case_selectionnee", "");
		}

		// marquage de la nouvelle
		setObjectId("case_cliquee", "case_selectionnee");
		setObjectClassName("case_selectionnee", "day_selected");
	}
}


/**
 * Envoi une requ?te pour l'obtention des dates de retour disponibles
 *
 * @param	string		path de l'application
 * @param	string		id du vol A/R choisi
 * @param	string		date d'aller s?lectionn?e
 */
function promosVolsSendRequest(object, contextPath, volId, dateSelectionnee, param)
{
	data = "dateDepartStr=" + dateSelectionnee + param;
	object.setAttribute("id", "case_cliquee");
	document.getElementById("form").dateDepart.value = dateSelectionnee;
	document.getElementById("form").day.value = getDay(dateSelectionnee);
	document.getElementById("form").month_1.value = getMonthYear(dateSelectionnee);
	
	document.getElementById("form").dateRetour.value = "";
	document.getElementById("form").retDay.value = "";
	document.getElementById("form").month_2.value = "";	

	sendData("GET", contextPath + "/ajax/vols/calendrierRetour/fiche-" + volId + ".html", data);
	return false;
}


function setDateRetour(dateRetour, objAnchor)
{
	document.getElementById("form").dateRetour.value = dateRetour;
	document.getElementById("form").retDay.value = getDay(dateRetour);
	document.getElementById("form").month_2.value = getMonthYear(dateRetour);
	
	objAnchor.parentNode.parentNode.className= "day_selected";
	var previousTd = document.getElementById("retourSelected");

	if ( previousTd != null )
	{

		previousTd.className = "selectable";
		previousTd.setAttribute("id", null);
	}

	objAnchor.parentNode.parentNode.setAttribute("id", "retourSelected");
}
	// car interdit
function valid_champ(evt) {
	var keyCode = evt.which ? evt.which : evt.keyCode;
	var interdit = 'àâäãçéèêëìîïòôöõùûüñ&*?!:;,\t#~"^¨%$£?²¤§%*()[]{}<>|\\/`\'';
	if (interdit.indexOf(String.fromCharCode(keyCode)) >= 0) {
		return false;
	}
}
function setARetour(form){
	var allerRetour = getRadioValue("modeVoyage");
	var volFrom = document.getElementById("villeDepart");
    var volFromId = document.getElementById("originFreeText");
    var volTo = document.getElementById("villeRetourTo");
	var volToId = document.getElementById("returnDestinationText");
	if( allerRetour == 'AllerRetour' &&  (isFieldEmpty(volTo) || volTo.value == 'Paris')) {
	  	volToId.value = volFromId.value;
		volTo.value = volFrom.value;
	}
}
function setDERetour(form){
    var volTo = document.getElementById("villeArrivee");
    var volToId = document.getElementById("destinationFreeText");
    var volFrom = document.getElementById("villeRetourFrom");
    var volFromId = document.getElementById("returnOriginFreeText");
	var allerRetour = getRadioValue("modeVoyage");
	if(allerRetour == 'AllerRetour' && isFieldEmpty(volFrom)) {
		volFromId.value = volToId.value;
		volFrom.value = volTo.value;
	}
}
/* Met une date par défaut (date du jour + 4 jours) */
function setDefaultDateDepart (){
	var date = addDay(new Date(),4);
	$('vols_form').departureDate.value=formatDate(date);
}
/* Met une date par défaut (date depart + 7 jours) */
function setDefaultDateRetour () {
	var aller = $('vols_form').departureDate.value;
	var aller_date = createDate(aller);
	var date = addDay(aller_date,7);
	$('vols_form').returnDate.value=formatDate(date);
}
function getSelectedRadio(name)
{
	var valuesList = document.getElementsByName(name);
    	for ( i = 0; i < valuesList.length; i++ )
		{
		if(valuesList[i].checked)
			return valuesList[i];
		}
	return null;
}


isARLinked = true;
/*js pour l'ajax (pour mettre le code aeroport) */
function jsVolAllerFrom() {
	var volFrom = document.getElementById("villeDepart");
	var volFromId = document.getElementById("originFreeText");
	var tab = volFrom.value.split(";");
	volFromId.value= tab[1];
	volFrom.value=tab[0];
}
function jsVolAllerTo() {
	var volTo = document.getElementById("villeArrivee");
	var volToId = document.getElementById("destinationFreeText");
	var tab = volTo.value.split(";");
	volToId.value= tab[1];
	volTo.value=tab[0];
}
 function jsVolRetourFrom() {
    var volFrom = document.getElementById("villeRetourFrom");
	var volFromId = document.getElementById("returnOriginFreeText");
	var tab = volFrom.value.split(";");
   	volFromId.value= tab[1];
   	volFrom.value=tab[0];
}
function jsVolRetourTo() {
	var volTo = document.getElementById("villeRetourTo");
	var volToId = document.getElementById("returnDestinationText");
	var tab = volTo.value.split(";");
	volToId.value= tab[1];
	volTo.value=tab[0];
}

function validateVol(form){								
if(document.getElementById("originFreeText").value == "" || document.getElementById("originFreeText").value == "undefined")
	document.getElementById("originFreeText").value = document.getElementById("villeDepart").value;
if(document.getElementById("destinationFreeText").value == "" || document.getElementById("destinationFreeText").value == "undefined")
	document.getElementById("destinationFreeText").value = document.getElementById("villeArrivee").value;
	
	var alerte = "";
	if ( isFieldEmpty(form.villeDepart) )
		alerte += "Veuillez choisir une ville de départ pour le vol aller.\n";

	if ( isFieldEmpty(form.villeArrivee) )
		alerte += "Veuillez choisir une ville d'arrivée pour le vol aller.\n";

	cleanDate(form.departureDate);
	cleanDate(form.returnDate);

	if ( isFieldEmpty(form.departureDate) || !isGivenDateValid(form.departureDate.value) )
		alerte += "Merci de saisir votre date de départ en respectant le format suivant : jj/mm/aaaa, par exemple 11/07/2010.\n";

	if ( getRadioValue("onewayswitch") == 0 )
	{
		if ( isFieldEmpty(form.returnDate) || !isGivenDateValid(form.returnDate.value) )
			alerte += "Merci de saisir votre date de retour en respectant le format suivant : jj/mm/aaaa, par exemple 11/07/2010.\n";
	}

	if ( getSelectValue(form.pax) == 0 )
	{
		if ( getSelectValue(form.pax_inf) > 0 )
			alerte += "Vous n'êtes pas autorisé à faire voyager un bébé seul.\n";
		if ( getSelectValue(form.pax_chd) > 0 )
			alerte += "Vous n'êtes pas autorisé à faire voyager un enfant seul.\n";
	}
	else if ( getSelectValue(form.pax) < getSelectValue(form.pax_inf) )
		alerte += "Vous n'êtes pas autorisé à voyager avec plus d'un bébé par adulte.\n";

	if ( form.villeDepart.value == form.villeArrivee.value && !isEmpty(form.villeDepart) )
		alerte += "Attention, les villes de départ et d'arrivée de votre vol aller sont identiques.\n";

	var dateDepart = createDate(form.departureDate.value);
	var dateRetour = createDate(form.returnDate.value);
	var now = new Date();
	if ( !validateADate(dateDepart, now , null) )
		result = false;
	if( now > dateRetour )
		alerte += "Votre date de retour doit être postérieure à la date d'aujourd'hui\n";
	else if ( dateDepart > dateRetour )
		alerte += "La date de départ doit être inférieure à la date de retour.\n";
	document.getElementById("dayDepart").value = getDay(form.departureDate.value);
	document.getElementById("monthDepart").value = getMonthYear(form.departureDate.value);
	document.getElementById("dayReturn").value = getDay(form.returnDate.value);
	document.getElementById("monthReturn").value = getMonthYear(form.returnDate.value);
	
	if ( alerte != "")
		alert(alerte);
	return (alerte == "");
}

/*
cacher = true;
function showHide(divId, btFleche, divClass, texte){

 if (cacher){
 	document.getElementById(divId).style.display= 'none';
 	if (btFleche) {
 	document.getElementById(btFleche).src="../../images/vol/bt_fleche_bas.gif";
 	}
 	document.getElementById(divClass).className= "sansBorder";
 	document.getElementById(texte).innerHTML= "Plus de crit&egrave;res"
 	cacher= null;
 }
	else {
	document.getElementById(divId).style.display='block';
	if (btFleche) {
 	document.getElementById(btFleche).src="../../images/vol/bt_fleche_haut.gif";
 	}
 	document.getElementById(divClass).className= "";
	document.getElementById(texte).innerHTML= "Moins de crit&egrave;res"
 	cacher= true;
	}
}*/
ShowHide = Class.create();
Object.extend(ShowHide.prototype,{
	classOpen:null,
	panel:null,
	link:null,
	initialize: function(linkId,classOpen,panelId) {
		this.link = $(linkId);
		this.panel = $(panelId);
		this.classOpen = classOpen;
		Event.observe(this.link,"click",this.change.bind(this));
		},
	change:function()
	{
	if(this.panel.getStyle("display") == "none" )
		{
		this.panel.setStyle({display : "block"});
		this.link.addClassName(this.classOpen);
		}
	else
		{
		this.panel.setStyle({display : "none"});
		this.link.removeClassName(this.classOpen);
		}
	}
});

ManageVolType = Class.create();
Object.extend(ManageVolType.prototype,{
	initialize: function() {
	Event.observe($('vols_ar0'),"click",this.firechange.bind(this,$('vols_ar0')));
	Event.observe($('vols_ar1'),"click",this.firechange.bind(this,$('vols_ar1')));
	Event.observe($('vols_ar2'),"click",this.firechange.bind(this,$('vols_multi')));
	},
	firechange:function(targetElement){
	switch(targetElement.value)
		{
		case "AllerRetour" : $('inputIsOneWay').value = 0; $('volInfoRetour').hide();
		isARLinked = true;
		break;
		
		case "AllerSimple" : $('inputIsOneWay').value = 1; $('volInfoRetour').hide();break;
		
		case "Multi" : $('inputIsOneWay').value = 0; $('volInfoRetour').show();
		isARLinked = false;
		break;
		}
	}
});
/*Get the dd/mm/yyyy day*/
function getDay(dateStr){
	return dateStr.substring(0, 2);
}
/*Get the dd/mm/yyyy MM-YYYY*/
function getMonthYear(dateStr){
	return dateStr.substring(3, 5) + "-" + dateStr.substring(6, 10);
}
