/**
* Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
*/
function getHTTPObject()
{
  var xmlhttp = false;

  /* Compilation conditionnelle d'IE */
  /*@cc_on
  @if (@_jscript_version >= 5)
     try
     {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     }
     catch (e)
     {
        try
        {
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E)
        {
           xmlhttp = false;
        }
     }
  @else
     xmlhttp = false;
  @end @*/

  /* on essaie de créer l'objet si ce n'est pas déjà fait */
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
  {
     try
     {
        xmlhttp = new XMLHttpRequest();
     }
     catch (e)
     {
        xmlhttp = false;
     }
  }

  if (xmlhttp)
  {
     /* on définit ce qui doit se passer quand la page répondra */
     xmlhttp.onreadystatechange=function()
     {
        if (xmlhttp.readyState == 4) /* 4 : état "complete" */
        {
           if (xmlhttp.status == 200) /* 200 : code HTTP pour OK */
           {
              /*
              Traitement de la réponse.
              Ici on affiche la réponse dans une boîte de dialogue.
              */
              alert(xmlhttp.responseText);
           }
        }
     }
  }
  return xmlhttp;
}
function sendData(data, page, method)
{

    var xmlhttp = getHTTPObject();
	
	    if (!xmlhttp)
    {
        return false;
    }
	
    //définition de l'endroit d'affichage:
    var content = document.getElementById("contenu");
    
	
    //si on envoie par la méthode GET:
    if(method == "GET")
    {
        if(data == 'null')
        {
            //Ouverture du fichier sélectionné:
            xmlhttp.open("GET", page, true);
        }//fin if
        else
        {
            //Ouverture du fichier en methode GET
            xmlhttp.open("GET", page+"?"+data, true);
        }//fin else
    }//fin if
    else if(method == "POST")
    {
        //Ouverture du fichier en methode POST
        xmlhttp.open("POST", page);
    }//fin elseif

    //Ok pour la page cible
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
            content.innerHTML = xmlhttp.responseText ;
    }    

    if(method == "GET")
    {
        xmlhttp.send(null);
    }//fin if
    else if(method == "POST")
    {
        xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        xmlhttp.send(data);
    }//fin elseif
}//fin fonction SendData

/**
* Permet de récupérer les données d'un fichier via les XmlHttpRequest:
*/
function getFile(page)
{
    sendData('null', page, 'GET')
}//fin fonction getFile



          function loadData() {
               if (document.getElementById('keyword').value.length > 0) {
				   
				   document.getElementById('contenu').innerHTML = '<h3>Recherche...</h3>';
                    sendData('keyword='+ document.getElementById('keyword').value, 'traitement.php', 'POST');
					document.getElementById('contenu').style.display='block';
               }
               else {
                    document.getElementById('contenu').innerHTML = '';
               }
          }


var monthDays=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var monthNameForCalc = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var dayNameShort= new Array('dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi');

rightnow = new Date();

function month(i,name) {
	var thisyear = rightnow.getFullYear();
	var nextyear = thisyear + 1;
	var a = "<option value=\"";
	(i<rightnow.getMonth()) ? a +=nextyear : a +=thisyear;
	(i<9) ? a += "0"+(i+1) : a +=(i+1);
	a += "\">"+name+" 0";
	(i<rightnow.getMonth()) ? a +=(nextyear-2000) : a +=(thisyear-2000);
	a += "</option>\n";
	this.option = a;
}

var months = new Array(new month(0,"janvier"), new month(1,"février"),new month(2,"mars"),new month(3,"avril"),new month(4,"mai"), new month(5,"juin"), new month(6,"juillet"), new month(7,"août"), new month(8,"septembre"), new month(9,"octobre"), new month(10,"novembre"), new month(11,"décembre"));

function filterDropdownForAdults(passedDropdown, maxSize) {
  for (i=0; i < maxSize; i++) {
    passedDropdown.options[i] = new Option(i);
    passedDropdown.options[i].value = parseInt(i)+1;
    passedDropdown.options[i].text = parseInt(i)+1;
  }
}
function filterDropdown(passedDropdown, maxSize) {
  for (i=0; i <=maxSize; i++) {
    passedDropdown.options[i] = new Option(i);
    passedDropdown.options[i].value = parseInt(i);
    passedDropdown.options[i].text = parseInt(i);
  }
}

function flightSearchDropDownFilter(selectedDropdown) {
  var maxPassengers = 9;

  var oAdultField = document.forms.flightSearch.BE_AIR_NUM_OF_ADULTS;
  var oChildrenField =  document.forms.flightSearch.BE_AIR_NUM_OF_CHILDREN;
  var oInfantField =  document.forms.flightSearch.BE_AIR_NUM_OF_INFANTS;

  var chosenAdults = parseInt(oAdultField.selectedIndex)+1;
  var chosenChildren  = parseInt(oChildrenField.selectedIndex);
  var chosenInfants = parseInt(oInfantField.selectedIndex);
  oInfantField.length = 0;
  filterDropdown(oInfantField, chosenAdults);
  if (chosenInfants <= chosenAdults) {
    oInfantField.selectedIndex = chosenInfants;
  }
  switch(selectedDropdown) {
    case 'Adults':
    var otherPassengers = chosenChildren;
    var remainderForOtherPassengers = parseInt(maxPassengers - (otherPassengers + chosenAdults));
    var remainderForAdult = parseInt(maxPassengers - otherPassengers);
    oAdultField.length = 0;
    filterDropdownForAdults(oAdultField, remainderForAdult);
    oAdultField.selectedIndex = chosenAdults-1;
    oChildrenField.length = 0;
    filterDropdown(oChildrenField, (remainderForOtherPassengers + chosenChildren))
    oChildrenField.selectedIndex = chosenChildren;
    break;
  case 'Children':
    var otherPassengers = chosenAdults;
    var remainderForOtherPassengers = parseInt(maxPassengers - (otherPassengers + chosenChildren));
    var remainderForChildren = parseInt(maxPassengers - otherPassengers);
    oChildrenField.length = 0;
    filterDropdown(oChildrenField, remainderForChildren);
    oChildrenField.selectedIndex = chosenChildren;
    oAdultField.length = 0;
    filterDropdownForAdults(oAdultField, (remainderForOtherPassengers + chosenAdults));
    oAdultField.selectedIndex = chosenAdults-1;
    break;
  }
}
function createDate(day, monthYear) {
		dayVal = day;
		monthYearVal = monthYear;
		x = dayVal.substr(0,1);
		(x == "0") ? day = parseInt(dayVal.substr(1,1)) : day = parseInt(dayVal.substr(0,2));

		y = monthYearVal.substr(4,1);
		(y == "0") ? month = parseInt(monthYearVal.substr(5,1)) : month = parseInt(monthYearVal.substr(4,2));

		year = parseInt(monthYearVal.substr(0,4));
		if (year < 1900) {
			year = year + 1900;
		}
		date = new Date(year, month-1, day);
		return date;
	}
function validReturnDate(formName, elementArray) {
		firstDay = eval('document.' + formName + '.'  + elementArray[0] + ".options[" + 'document.' + formName + '.' + elementArray[0] + '.selectedIndex].value');
		firstMonth = eval('document.' + formName + '.'  + elementArray[1] + ".options[" + 'document.'	+ formName + '.' + elementArray[1] + '.selectedIndex].value');
		firstYear = firstMonth.substr(0,4);
		secondDay = eval('document.' + formName + '.'  + elementArray[2] + ".options[" + 'document.'	+ formName + '.' + elementArray[2] + '.selectedIndex].value');
		secondMonth = eval('document.' + formName + '.'  + elementArray[3] + ".options[" + 'document.'	+ formName + '.' + elementArray[3] + '.selectedIndex].value');
		secondYear = secondMonth.substr(0,4);
		if ((validMonthDay(firstDay, firstMonth, firstYear))&& (validMonthDay(secondDay, secondMonth, secondYear))){
			createDate(firstDay, firstMonth);
			outboundDate = date;
			createDate(secondDay, secondMonth);
			returnDate = date;
			return (outboundDate.valueOf() <= returnDate.valueOf() ) ? true : false;
		} else {
			return false;
		}

}
function isLeapYear(year){
		if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){
			return true;
		} else {
		return false;
		}
	}

function validMonthDay(dayVal, monthVal, yearVal){

	var error = 0;

	if ((monthVal.substr(4,2) == 4)||(monthVal.substr(4,2) == 6)||(monthVal.substr(4,2) == 9)||(monthVal.substr(4,2) == 11)){
		if (dayVal>30){
			error = 1;
		}
	} else if (monthVal.substr(4,2) == 2) {
				if (isLeapYear(yearVal)){
					if (dayVal>29) {
						error = 1;
					}
				} else if (dayVal>28) {
						error = 1;
				}
		} else {
			if (dayVal>31){
				error = 1;
			}
		}
	return (error == 1) ?  false :  true;
}

function flightSearchSubmit(buttonValue){
		document.flightSearch.whereTo.value = buttonValue;
		document.flightSearch.BE_QUICK_SEARCH_FLAG.value = true;
		var datesArray= new Array('D_Day', 'D_Month', 'R_Day', 'R_Month');
		var formName = 'flightSearch';
		firstDay = eval('document.' + formName + '.'  + datesArray[0] + ".options[" + 'document.' + formName + '.' + datesArray[0] + '.selectedIndex].value');
		firstMonth = eval('document.' + formName + '.'  + datesArray[1] + ".options[" + 'document.' + formName + '.' + datesArray[1] + '.selectedIndex].value');
		firstYear=firstMonth.substr(0,4);
		secondDay = eval('document.' + formName + '.'  + datesArray[2] + ".options[" + 'document.' + formName + '.' + datesArray[2] + '.selectedIndex].value');
		secondMonth = eval('document.' + formName + '.'  + datesArray[3] + ".options[" + 'document.'	+ formName + '.' + datesArray[3] + '.selectedIndex].value');
		secondYear=secondMonth.substr(0,4);

		if((document.flightSearch.D_City.value.length > 0) && (document.flightSearch.A_City.value.length > 0)) {
			if(!validMonthDay(firstDay, firstMonth, firstYear)) {
				alert("Veuillez saisir une date de départ valable");
				return false;
			} else {
				if(document.forms.flightSearch.TripType[0].checked == true){
					if(!validMonthDay(secondDay, secondMonth, secondYear)){
						alert("Veuillez saisir une date de départ correcte");
						return false;
					} else {
						if (validReturnDate(formName, datesArray)){
							return true;
						} else {
						  alert("Veuillez saisir une date de retour valable");
						  return false;
						}
					}
				} else {
					return true;
				}
			}
		} else {
			alert("Veuillez saisir votre ville de départ et d'arrivée");
			return false;
		}
}

function emptyDropDown(whichDD) {
var thisDD = eval('document.forms.flightSearch.' + whichDD);
var oOptions = thisDD.options;
for (var i=oOptions.length; i>=0; i--) {
oOptions[i]	= null;
}
thisDD.selectedIndex=0;
thisDD.length=0;
}
function addOptionToDD(whichDD, optionText, optionValue) {
	var thisDD = eval('document.forms.flightSearch.' + whichDD);
	thisDD[thisDD.length] = new Option(optionText, optionValue);
}
function populateDDforThisMonth(sWhich, iYear, iMonth, iDay) {

	var thisDate;
	if(sWhich == 'D'){
		emptyDropDown('D_Day');
		for (counter=1; counter<=monthDays[parseInt(iMonth - 1)]; counter++) {
			thisDate = new Date(monthNameForCalc[parseInt(iMonth - 1)] + ' ' + counter + ', ' + iYear);
			addOptionToDD('D_Day', dayNameShort[thisDate.getDay()] + ' ' + counter, (counter<10?"0":"")+counter);
		}

		addOptionToDD('D_Day', ' ', 100);
		var newIndex = monthDays[parseInt(iMonth - 1)];
		if((iDay<=monthDays[parseInt(iMonth - 1)])&&(iDay>0)){
			newIndex = iDay - 1;
		}
		document.flightSearch.D_Day.selectedIndex=newIndex;
	} else {
		emptyDropDown('R_Day');
		for (counter=1; counter<=monthDays[parseInt(iMonth - 1)]; counter++) {
			thisDate = new Date(monthNameForCalc[parseInt(iMonth - 1)] + ' ' + counter + ', ' + iYear);
			addOptionToDD('R_Day', dayNameShort[thisDate.getDay()] + ' ' + counter, (counter<10?"0":"")+counter);
		}
		addOptionToDD('R_Day', ' ', 100);
		var newIndex = monthDays[parseInt(iMonth - 1)];
		if((iDay<=monthDays[parseInt(iMonth - 1)])&&(iDay>0)){
			newIndex = iDay - 1;
		}
		document.flightSearch.R_Day.selectedIndex = newIndex;
	}
}
function calcDayOfWeek(sWhich) {

if (sWhich == 'D') {
	var iYear = parseInt(document.forms.flightSearch.D_Month.options[document.forms.flightSearch.D_Month.selectedIndex].value.substring(0,4));
	var iMonth = document.forms.flightSearch.D_Month.options[document.forms.flightSearch.D_Month.selectedIndex].value.substring(4,6);
	var iDay = document.forms.flightSearch.D_Day.options[document.forms.flightSearch.D_Day.selectedIndex].value;

	monthDays[1] = ((iYear%4==0 && iYear%100!=0)||(iYear%400==0)) ? 29 : 28;
} else {
	var iYear = parseInt(document.forms.flightSearch.R_Month.options[document.forms.flightSearch.R_Month.selectedIndex].value.substring(0,4));
	var iMonth = document.forms.flightSearch.R_Month.options[document.forms.flightSearch.R_Month.selectedIndex].value.substring(4,6);
	if (document.forms.flightSearch.R_Day.selectedIndex < 0){
	document.forms.flightSearch.R_Day.selectedIndex=0;
	}
	var iDay = document.forms.flightSearch.R_Day.options[document.forms.flightSearch.R_Day.selectedIndex].value;

	monthDays[1] = ((iYear%4==0 && iYear%100!=0)||(iYear%400==0)) ? 29 : 28;
	}
populateDDforThisMonth(sWhich, iYear, iMonth, iDay);
}
function masque()
{

	document.getElementById("retour").style.visibility = "hidden";

}
function montre()
{

	document.getElementById("retour").style.visibility = "visible";

}
function init() {

		tomorrow = new Date(rightnow.getTime()+(86400000));
		document.flightSearch.D_Day.selectedIndex = tomorrow.getDate()-1;
		document.flightSearch.D_Month.selectedIndex = tomorrow.getMonth();
		then = new Date(tomorrow.getTime()+(604800000))
		document.flightSearch.R_Day.selectedIndex = then.getDate()-1;
		document.flightSearch.R_Month.selectedIndex = then.getMonth();

		var oldDepartIndex = document.flightSearch.D_Day.selectedIndex;
		calcDayOfWeek('D');
		document.flightSearch.D_Day.selectedIndex = oldDepartIndex;
		var oldReturnIndex = document.flightSearch.R_Day.selectedIndex;
		calcDayOfWeek('R');
		document.flightSearch.R_Day.selectedIndex = oldReturnIndex;
}