
var nomForm = "calculCO2Form";

var datedujour;
var dateDepart;
var dateRetour;
var periodeDepart;
var periodeRetour;
var listeorigine;
var listedestination;
var listevia1;
var listevia2;
var listevia3;


var i=0;

 

function CheckGenerique(liste, _lettre, forceAppel) {
window.status="test";
	i++;
		//Si c la touche shift qui est enfonce on sort
		if(window.event && window.event.shiftKey)
			return;
			
		//On recupere la 1ere lettre de l'alphabet
		var lettre;
		var affiche = true;
		if(_lettre != null){
			lettre = _lettre;
			affiche = false;
		} 
		else{

			var contenuChamp = (document.forms[nomForm].elements[liste.nom].value);

			if(contenuChamp.length != 1 && forceAppel != true){//Un appel AJAX a deja ete fait lors de la frappe d'une 1ere lettre

				affichage(liste, affiche, lettre);
				return;
			}
			else if(forceAppel == true)
				lettre = contenuChamp.substring(0,1);
			else	
				lettre = contenuChamp;
		}

		//On efface le contenu de la liste pour eviter les doublons (ex une recherche sur un o et un p va nous donner
		//Paris Orly deux fois car le code est ORY)
		liste.tabItem = new Array();
		liste.nb = 0;

		ajoutDsListe(liste, lettre, 0);
}

function initListeEscale() {
//datedujour = new Date("2003","07","21");

datedujour = new Date();
dateDepart = new date("gpnet", "departjour", "departmois", "departhoraire");
dateRetour = new date("gpnet", "retourjour", "retourmois", "retourhoraire");
periodeDepart = new periode("gpnet", "departperiodedujour", "departperiodedumois", "departperiodeaujour", "departperiodeaumois");
periodeRetour = new periode("gpnet", "retourperiodedujour", "retourperiodedumois", "retourperiodeaujour", "retourperiodeaumois");

}

//var numListe = 0;
var tabListes = new Array();

var primsListe = true;
var nomChampsPrimsListe = "";

function creationListe(nomChamps, nomLayer){

	tabListes[nomChamps] = new CreerListe(nomChamps, 3, 300, nomLayer);


	//On cree une fois pr ttes le contenu d un select que l on reprendra ds les autres listes
	tabListes[nomChamps].creationContenu();
	//On cree une fois pr ttes la liste des items que l on reutilisera ds les autres listes
	ajoutDsListe(tabListes[nomChamps], 'A',0);


	//On met a jour le contenu du layer servant a la visualisation des escales
	document.getElementById(tabListes[nomChamps].layer).innerHTML = tabListes[nomChamps].Afficher(nomForm);
	//On masque ce layer
	MasquerLayer(tabListes[nomChamps].layer);
}

function afficherPopupEscale(title, forme, champ, uriLocale){
	document.forms["escaleArguments"].elements["formname"].value=forme;
	document.forms["escaleArguments"].elements["title"].value=title;
	document.forms["escaleArguments"].elements["champescale"].value=champ;

//	MM_openBrWindow('../../../'+uriLocale+'/popup/escales.jsp','','width=528,height=344');
	MM_openBrWindow(uriLocale,'','width=580,height=340');
}

function ajoutListes (codeIATA,libelle){

      listeorigine.Add(codeIATA,libelle);
	  listevia1.Add(codeIATA,libelle);
	  listevia2.Add(codeIATA,libelle);
	  listevia3.Add(codeIATA,libelle);
      listedestination.Add(codeIATA,libelle);
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  	window.open(theURL,winName,features);
	//window.open(theURL, "_blank");
}


// Controle si le nombre rentre verifie le format generique
// renvoie true si str verifie le format generique
function verifierGeneric(str,format) {
var pattern="^";
/*traduction du format  en expresion rationnelle*/
for(i=0; i<format.length; i++){
	tmp = format.charAt(i);
	switch( tmp  ){
		case "A":
			/*AlphaNum obligatoire*/
			pattern += "[A-Za-z0-9]";
			break;
		case "X":
			/*lettre obligatoire*/
			pattern += "[A-Za-z]";
			break;
		case "Y":
			/*lettre optionnelle*/
			pattern += "[A-Za-z]?";
			break;
		case "9":
			/*chiffre obligatoire*/
			pattern += "[0-9]";
			break;
		case "0":
		/*chiffre optionnel*/
			pattern += "[0-9]?";
			break;
		default :
			/*caractère spécial qui n'est ni un chiffre ni une lettre ni un caractere d'espacement*/
			if( tmp.match( /[^A-Za-z0-9\s]/ )){
				pattern += "\\"+tmp;
				}
			break;
			}
		}
	pattern += "$";
	
	var expr = new RegExp(pattern);
	
	/* Teste si le texte rentre verifie le format precise */
	if ( str.match(expr) ) {
		return true;
	} else {
		return false;
		}
}


function affichage(liste, affichage, lettre){

	if(affichage == true){
		liste.MAJ(document.forms[nomForm].elements[liste.nom].value,document.forms[nomForm]);
		if (document.forms[nomForm].elements[liste.nom].value!="" && !liste.end) {
		
			AfficherLayer(liste.layer);
		}
		else {
			MasquerLayer(liste.layer);
		}
	}
	else{
		liste.MAJSimple(lettre, document.forms[0]);
	}
}


function date(form, jour, mois, horaire){
    this.form=form;
	this.jour=jour;
	this.mois=mois;
	this.horaire=horaire;
	this.masquer=masquerDate;
	this.estVide=dateVide;
	this.estValide=dateValide;
	this.listageAutorise=listageAutorise;
	this.date=retourDate;
}
function listageAutorise(){
	var monannee = parseInt(document.forms[this.form].elements[this.mois].value.substring(document.forms[this.form].elements[this.mois].value.lastIndexOf("/")+1));
	var monmois = parseInt(document.forms[this.form].elements[this.mois].value.substring(0,document.forms[this.form].elements[this.mois].value.lastIndexOf("/"))-1);
	var monjour = parseInt(document.forms[this.form].elements[this.jour].value);
	var madate = new Date(monannee, monmois, monjour - 31);
	return (datedujour.getTime()-madate.getTime() > 0);
}
function retourDate(){
	var monjour = parseInt(document.forms[this.form].elements[this.jour].value) < 10 ? "0" + document.forms[this.form].elements[this.jour].value : document.forms[this.form].elements[this.jour].value;
	var monmois =  document.forms[this.form].elements[this.mois].value.indexOf("/") < 2 ? "0" + document.forms[this.form].elements[this.mois].value : document.forms[this.form].elements[this.mois].value;
	var monhoraire = parseInt(document.forms[this.form].elements[this.horaire].value) < 10 ? "0" + document.forms[this.form].elements[this.horaire].value + " : 00" : document.forms[this.form].elements[this.horaire].value + " : 00";
	return (monjour + "/" + monmois + monhoraire);
}
function dateVide(){

	if((document.forms[this.form].elements[this.jour].selectedIndex==0 || document.forms[this.form].elements[this.jour].selectedIndex==-1)
	   && (document.forms[this.form].elements[this.mois].selectedIndex==0 || document.forms[this.form].elements[this.mois].selectedIndex==-1)
	   && (document.forms[this.form].elements[this.horaire].selectedIndex==0 || document.forms[this.form].elements[this.horaire].selectedIndex==-1)){
	     return true;
	}else {
	     return false;	
	}
}
function dateValide(){
	if(document.forms[this.form].elements[this.jour].selectedIndex==0
	   || document.forms[this.form].elements[this.mois].selectedIndex==0){
	     return false;
	}else {
	     return true;	
	}
}
function masquerDate(valeur){
	document.forms[this.form].elements[this.jour].disabled=valeur;
	document.forms[this.form].elements[this.mois].disabled=valeur;
	document.forms[this.form].elements[this.horaire].disabled=valeur;
	if(valeur==true){
		document.forms[this.form].elements[this.jour].selectedIndex=0;
		document.forms[this.form].elements[this.mois].selectedIndex=0;
		document.forms[this.form].elements[this.horaire].selectedIndex=0;
	}
}
function periode(form, jourdebut, moisdebut, jourfin, moisfin){
    this.form=form;
	this.jourdebut=jourdebut;
	this.moisdebut=moisdebut;
	this.jourfin=jourfin;
	this.moisfin=moisfin;
	this.masquer=masquerPeriode;
	this.estVide=periodeVide;
	this.estValide=periodeValide;
	this.datedebut=retourDateDebut;
	this.datefin=retourDateFin;
}
function retourDateDebut(){
	var monjour = parseInt(document.forms[this.form].elements[this.jourdebut].value) < 10 ? "0" + document.forms[this.form].elements[this.jourdebut].value : document.forms[this.form].elements[this.jourdebut].value;
	var monmois =  document.forms[this.form].elements[this.moisdebut].value.indexOf("/") < 2 ? "0" + document.forms[this.form].elements[this.moisdebut].value : document.forms[this.form].elements[this.moisdebut].value;
	return (monjour + "/" + monmois + "23 : 59");
}
function retourDateFin(){
	var monjour = parseInt(document.forms[this.form].elements[this.jourfin].value) < 10 ? "0" + document.forms[this.form].elements[this.jourfin].value : document.forms[this.form].elements[this.jourfin].value;
	var monmois =  document.forms[this.form].elements[this.moisfin].value.indexOf("/") < 2 ? "0" + document.forms[this.form].elements[this.moisfin].value : document.forms[this.form].elements[this.moisfin].value;
	return (monjour + "/" + monmois + "23 : 59");
}
function periodeValide(){
	if(document.forms[this.form].elements[this.jourdebut].selectedIndex==0
	   || document.forms[this.form].elements[this.moisdebut].selectedIndex==0
	   || document.forms[this.form].elements[this.jourfin].selectedIndex==0
	   || document.forms[this.form].elements[this.moisfin].selectedIndex==0){
	     return false;
	}else {
	     return true;	
	}
}
function periodeVide(){
	if(document.forms[this.form].elements[this.jourdebut].selectedIndex==0
	   && document.forms[this.form].elements[this.moisdebut].selectedIndex==0
	   && document.forms[this.form].elements[this.jourfin].selectedIndex==0
	   && document.forms[this.form].elements[this.moisfin].selectedIndex==0){
	     return true;
	}else {
	     return false;	
	}
}
function masquerPeriode(valeur){
	document.forms[this.form].elements[this.jourdebut].disabled=valeur;
	document.forms[this.form].elements[this.moisdebut].disabled=valeur;
	document.forms[this.form].elements[this.jourfin].disabled=valeur;
	document.forms[this.form].elements[this.moisfin].disabled=valeur;
	if(valeur==true){
		document.forms[this.form].elements[this.jourdebut].selectedIndex=0;
		document.forms[this.form].elements[this.moisdebut].selectedIndex=0;
		document.forms[this.form].elements[this.jourfin].selectedIndex=0;
		document.forms[this.form].elements[this.moisfin].selectedIndex=0;
	}
}

	// Cette variable (et les modificateurs) permet de declencher le focus sur les champs textes origine/escales/destination (cf. aideSaisieListe.js)
	var isFocusEnabled=0;
	function enableFocus() {
		isFocusEnabled=1;
	}
	function disableFocus() {
		isFocusEnabled=0;
	}


	//fction permettant de :
	//lancer la fction checkGenerique
	//ou donner le focus a la liste d'escales qui apparait suite a la saisie d'un caractere
	//ou d'afficher dans le bon champ l'escale selectionnee dans la liste au moment de l'appui sur la touche entree
	function quelleTouche(evenement, nomChamp, bSelectionner)
   {
      	
       var touche = window.event ? evenement.keyCode : evenement.which;
       var select = document.calculCO2Form.elements["select" + nomChamp];

		//On donne le focus a la liste d'escales qui apparait suite a la saisie d'un caractere
       if(bSelectionner && (touche == 38 || touche == 40)){

		select.focus();
		select[0].selected = true;
		return;
       }

		//On affiche dans le bon champ l'escale selectionnee dans la liste au moment de l'appui sur la touche entree
       if(touche == 13){
		eval("tabListes['"+nomChamp+"'].Selection('calculCO2Form')");
		return;
       }
       
       if(!bSelectionner)//on se balade dans la liste donc on ne fait rien
       	return;
       	
       //On lance un appel ajax pour recuperer les escales dont le code ou le libelle commence par le caractere saisi
       CheckGenerique(tabListes[nomChamp]);
   }

