/******************************************************************************/
/* Auteur :J.P NERON            Septembre 2004								  */
/* Gère la Completion  : Tous navigateur sauf Netscape 4.7.                   */
/* Permet lorsque l'on saisie une lettre (adresse, station, lieu), d'avoir 	  */
/* dans une liste tous ce qui commence par la lettre ou qui contient celle-ci */
/* Peut contenir aussi un mot												  */
/* modif : Pascal CYNAMON (Completion)						15 septembre 2004 */
/******************************************************************************/ 
var ExpertMode="none";
var StationsArray;
var NbStations;
var UnpenalStationsArray;
var Nom = navigator.appName;

//Fonction qui permet de coder les coordonnées décimal en hexa.
function DecToHex(n){
  var tblCode = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
  var BASE=16;
  var Num = parseInt(n, 10);
  var i;
  var strHex = "";

  if (! isNaN(Num)){
    while (Num>0){
      i=0;
      while(Num/Math.pow(BASE, i++)>=BASE);
      strHex += tblCode[Math.floor(Num/Math.pow(BASE, i-1))];
      if (Num%BASE==0) strHex+="0";
      Num = (Num % Math.pow(BASE, i-1));
    }
    return strHex;
  }
  else return 0;
}

//Fonction qui permet de décoder les coordonnées hexa en décimal pour les exploiter.
function HexToDec(h)
{
 var som = 0;
 alert (h);
 var tab_l = new Array;
 for (var i=0; i < h.length; ++i)
 {
  tab_l[i] = h.substr(i,1);
  //alert (h.length);
 }
 for (var n=0; n < h.length; ++n)
 {
  switch (tab_l[n])
  {
   case 'A' : val = 10;
   break; 
   case 'B' : val = 11;
   break; 
   case 'C' : val = 12;
   break; 
   case 'D' : val = 13;
   break; 
   case 'E' : val = 14;
   break; 
   case 'F' : val = 15;
   break; 
   default : val = tab_l[n];
  }
  alert (val);
  //alert (Math.pow(16,(h.length-n)));
  val = val*Math.pow(16,(h.length-n));
  alert (val);
  som = som + val;
 }
 //alert (som);
}

function setExpertModeJPN(value)
{
	ExpertMode = value;
	form1.adp.lastText		= "";
	form1.aar.lastText		= "";
	findJPN(form1.adp, form1.adp.value);
	findJPN(form1.aar, form1.aar.value);
}

function categorieFindChangedJPN(dataField)
{
	if (ExpertMode == "none")	return false;

	if (dataField.typeField[1].checked)
	{
		findJPN(dataField, dataField.value);
	}
	else
	{
		dataField.lastText				= "";
		dataField.resultList.innerHTML	= "";		
	}
}
//Utile lorsqu'on est en mode station.
//Cette fontion activée via le onchange ou onclick des listes de stations (celles-ci apparaissent lorsqu'on est en mode station).
//On récupère idStation : valeur de l'élément sélectionné dans la liste station. Cela correspond à un indice qui permettra d'aboutir
//via la ligne de code  'StationsArray[idStation]' au nom de la station et de la positionner dans la zone de saisie départ ou arrivéé. 
//dataField : correspond au nom du champ de saisie départ ou arrivée sélectionné, où le résultat du clic su la liste station sera déposé.
function setDataFieldValue(dataField, idStation, indice, bKeyUP)
{
 //La valeur '0xxAA' correspond au 1er élément des listes  : '<<<<< Liste : X stations>>>>>, qui ne doit rien renvoyé lorsqu'on clique dessus.
 if (bKeyUP && event.keyCode != 13 || idStation == '0xxAA')		return;
 
 dataField.value					= dataField.lastCompletion = StationsArray[idStation];
 dataField.resultList.innerHTML	= "";
// dataField.nextField.focus(); //On passe à l'élément suivant.
}

//Cette fonction permet d'initialiser les calques et la liste des stations.
function onLoadForm(calque)
{
 //On défnie le tableau pour la liste des stations :
 StationsArray = new Array();

 initDataFieldForCompletion("adp", "ResultListDep", document.form1.type_dep, document.form1.aar);
 initDataFieldForCompletion("aar", "ResultListAar", document.form1.type_arr, document.form1.aar);
//On a la liste des stations qui est définie en dur dans le fichier de complexion (Tous les navigateurs ici sont renseignés sauf Opera)
 //if (navigator.userAgent.indexOf("Opera")==-1)
 //{
//Liste des Stations prédéfinies dans un tableau appelé StationsArray :
StationsArray = ["Abbesses","Ablon","Acheres-Grand Cormier","Acheres-Ville","Aeroport Charles de Gaulle 1","Aeroport Charles de Gaulle 2 TGV","Alesia","Alexandre Dumas","Allee de la Tour-Rendez-Vous","Alma-Marceau","Alouettes","Anatole France","Andresy","Angerville","Antony","Anvers","Arcueil-Cachan","Argenteuil","Argentine","Arpajon","Arts et Metiers","Les Agnettes","Asnieres Gennevilliers Les Courtilles","Asnieres","Assemblee Nationale","Athis-Mons","Auber","Aubergenville-Elisabethville","Aubergenville-Elisabethville (SNCF)","Aubervilliers-Pantin-Quatre Chemins","Auguste Delaune","Aulnay-sous-Bois","Auvers-sur-Oise","Avenue du President Kennedy-Maison de Radio-France","Avenue Emile Zola","Avenue Foch","Avenue Henri Martin","Avron","Bagneaux-sur-Loing","Bagneux","Balard","Ballancourt","Barbes-Rochechouart","Bas Marin","Base de loisirs de Créteil","Basilique de Saint-Denis","Bastille","Becon-les-Bruyeres","Bel-Air","Belleville","Bellevue","Belloy - Saint-Martin","Belvedere","Berault","Bercy","Bessancourt","Beynes","Beynes (SNCF)","Bibliotheque Francois Mitterrand","Bievres","Billancourt","Bir-Hakeim (Grenelle)","Blanche","Bobigny - Pablo Picasso","Bobigny - Pablo Picasso (T1)","Bobigny - Pantin-Raymond Queneau","Boigneville","Bois-Colombes","Bois-le-Roi","Boissiere","Boissise-le-Roi","Boissy-l'Aillerie","Boissy-Saint-Leger","Bolivar","Bondy","Bonne Nouvelle","Bonnieres","Boran-sur-Oise","Botzaris","Boucicaut","Bouffemont-Moisselles","Bougival","Boulainvilliers","Boulevard Victor","Boulogne - Jean-Jaures","Boulogne - Pont de Saint-Cloud","Bouray","Bourg-la-Reine","Bourron-Marlotte Grez","Bourse","Boussy-Saint-Antoine","Boutigny","Brancion","Breguet-Sabin","Bretigny-sur-Orge","Breuillet - Bruyeres-le-Chatel","Breuillet - Village","Breval","Breval (SNCF)","Brimborion","Brochant","Brunoy","Bruyeres-sur-Oise","Bry-sur-Marne","Bueil (SNCF)","Buno - Gironville","Bures-sur-Yvette","Bussy-Saint-Georges","Buttes Chaumont","Buzenval","Cadet","Cambronne","Campo-Formio","Cardinal Lemoine","Carrefour Pleyel","Censier-Daubenton","Cergy - Le Haut","Cergy - le Haut (SNCF)","Cergy - Prefecture","Cergy - Saint-Christophe","Cernay","Cesson","Chailly - Boissy-le-Chatel","Chamarande","Champ de Mars - Tour Eiffel","Champ-de-Courses d'Enghien","Champagne-sur-Oise","Champagne-sur-Seine","Champbenoist - Poigny","Champigny","Champs-Elysees - Clemenceau","Changis - Saint-Jean","Chanteloup-les-Vignes","Chantilly-Gouvieux","Chaponval","Chardon-Lagache","Charenton-Ecoles (Place Aristide Briand)","Charles de Gaulle - Etoile","Charles Michels","Charonne","Chars","Chartrettes","Chateau d'Eau","Chateau de Vincennes","Chateau Rouge","Chateau-Landon","Chateau-Thierry","Chatelet","Chatelet - Les Halles","Chatillon - Montrouge","Chatou - Croissy","Chauffry","Chaumont-en-Vexin","Chaussee d'Antin - La Fayette","Chaville - Rive Droite","Chaville - Rive Gauche","Chaville - Velizy","Chelles - Gournay","Chemin d'Antony","Chemin Vert","Chevaleret","Chezy-sur-Marne","Chilly - Mazarin","Choisy-le-Roi","Cimetiere de Saint-Denis","Cite","Cite Universitaire","Clamart","Clichy - Levallois","Cluny - La Sorbonne","Coignieres","Colombes","Colonel Fabien","Combs-la-Ville - Quincy","Commerce","Compans","Concorde","Conflans - Fin d'Oise","Conflans-Sainte-Honorine","Convention","Corbeil-Essonnes","Corentin Cariou","Corentin Celton","Cormeilles-en-Parisis","Corvisart","Cosmonautes","Coudray - Montceaux","Couilly - Saint-Germain - Quincy","Coulommiers","Cour Saint-Emilion","Courbevoie","Courcelle-sur-Yvette","Courcelles","Couronnes","Crecy-en-Brie-la-Chapelle","Creil","Crepy-en-Valois","Creteil - l'Echat (Hopital Henri Mondor)","Creteil - Prefecture (Hotel de Ville)","Creteil - Universite","Crimee","Croix de Chavaux","Crouy-sur-Ourcq","Dammartin - Juilly - Saint-Mard","Danton","Danube","Daumesnil (Felix Eboue)","Denfert-Rochereau","Desnouettes","Deuil - Montmagny","Didot","Domont","Dordives","Dourdan","Dourdan-la-Foret","Drancy","Drancy - Avenir","Dreux","Dugommier","Dupleix","Duroc","Ecole Militaire","Ecole Veterinaire de Maisons-Alfort","Ecouen Ezanville","Edgar Quinet","Eglise d'Auteuil","Eglise de Creteil","Eglise de Pantin","Egly","Emerainville - Pontault-Combault","Enghien-les-Bains","Epinay-sur-Orge","Epinay-sur-Seine","Epinay-Villetaneuse","Epluches","Epone-Mezieres","Epone-Mezieres (SNCF)","Eragny - Neuville","Ermont - Eaubonne","Ermont - Halte","Esbly","Escadrille Normandie - Niemen","Esplanade de La Defense","Essonnes - Robinson","Etampes","Etienne Marcel","Etrechy","Europe","Evreux (SNCF)","Evry","Evry - Courcouronnes","Exelmans","Faidherbe - Chaligny","Falguiere","Faremoutiers - Pommeuse","Felix Faure","Ferrieres-Fontenay","Filles du Calvaire","Fontaine-le-Port","Fontaine-Michalon","Fontainebleau - Avon","Fontenay-aux-Roses","Fontenay-le-Fleury","Fontenay-sous-Bois","Fort d'Aubervilliers","Franconville - Le Plessis-Bouchard","Franklin D.Roosevelt","Freinville Sevran","Frepillon","Funiculaire de Montmartre Gare basse","Funiculaire de Montmartre Gare haute","Gabriel Peri","Gagny","Gaite","Gallieni (Parc de Bagnolet)","Gambetta","Garancieres - La Queue","Garches - Marne-la-Coquette","Gare d'Austerlitz","Gare d'Austerlitz (SNCF)","Gare de l'Est (SNCF)","Gare de l'Est (Verdun)","Gare de Lyon","Gare de Lyon (SNCF)","Gare de Saint-Denis","Gare du Nord","Gare du Nord (SNCF)","Gare Montparnasse (SNCF)","Gare Saint-Lazare","Gare Saint-Lazare (SNCF)","Gargan","Gargenville","Garges - Sarcelles","Garibaldi","Gaston Roulaud","Gazeran","Gennevilliers","Gentilly","George V","Georges Brassens","Georges Halgout","Gif-sur-Yvette","Gisors","Glaciere","Goncourt (Hopital Saint-Louis)","Goussainville","Grand Bourg","Grands Boulevards","Gravigny - Balizy","Gretz - Armainvilliers","Grigny - Centre","Gros Noyer - Saint-Prix","Groslay","Guerard - La-Celle-sur-Morin","Guy Moquet","Haussmann - Saint-Lazare","Havre - Caumartin","Henri Farman-Porte de Seine","Herblay (SNCF)","Hericy","Hoche","Hopital Avicenne","Hopital Delafontaine","Hopital Intercommunal","Hotel de Ville (Paris)","Hotel de Ville de Bobigny","Hotel de ville de La Courneuve","Houdan","Houilles - Carrieres-sur-Seine","Iena","Igny","Invalides","Isles - Armentieres - Congis","Issou - Porcheville","Issy","Issy - Val de Seine","Issy - Val de Seine","Ivry-sur-Seine","Jacques Bonsergent","Jacques-Henri Lartigue","Jasmin","Jaures","Javel","Javel - Andre Citroen","Jean Moulin","Jean Rostand","Joinville-le-Pont","Jourdain","Jouy-en-Josas","Jouy-sur-Morin - Le Marais","Jules Joffrin","Jussieu","Juvisy","Juziers","Kleber","L'Abbaye","L'Etang-la-Ville","L'Isle-Adam - Parmain","La Barre - Ormesson","La Belle Epine","La Borne-Blanche","La Celle-Saint-Cloud","La Chapelle","La Courneuve - 6 Routes","La Courneuve - 8 Mai 1945","La Courneuve - Aubervilliers","La Courneuve-8-Mai-1945","La Croix de Berny","La Defense","La Defense (Grande Arche)","La Ferme","La Ferte-Alais","La Ferte-Gaucher","La Ferte-Milon","La Ferte-sous-Jouarre","La Fourche","La Frette - Montigny","La Garenne - Colombes","La Grande Paroisse","La Hacquiniere","La Haye aux Moines","La Motte-Picquet - Grenelle","La Muette","La Norville - Saint-Germain-les-Arpajon","La Plaine - Stade de France","La Tour-Maubourg","La Varenne - Chennevieres","La Verriere","La Villeterte","Lagny - Thorigny","Lamarck - Caulaincourt","Laplace","Lardy","Laumiere","Le Blanc-Mesnil","Le Bourget","Le Bras-de-Fer","Le Chenay - Gagny","Le Cor de Chasse","Le Guichet","Le Kremlin-Bicetre","Le Mee","Le Parc de Saint-Maur","Le Peletier","Le Perray","Le Plessis-Belleville","Le Plessis-Chenet (IBM)","Le Raincy - Villemomble - Montfermeil","Le Stade","Le Val d'Or","Le Vert de Maisons","Le Vesinet - Centre","Le Vesinet - Le Pecq","Ledru-Rollin","Les Ardoines","Les Baconnets","Les Boullereaux - Champigny","Les Champs-Forts","Les Clairieres de Verneuil","Les Clairieres de Verneuil (SNCF)","Les Coquetiers","Les Coteaux","Les Essarts-le-Roi","Les Gobelins","Les Gresillons","Les Halles","Les Moulineaux","Les Mureaux","Les Mureaux (SNCF)","Les Noues","Les Pavillons-sous-Bois","Les Sablons (Jardin d'acclimatation)","Les Saules","Les Vallees","Les Yvris - Noisy-le-Grand","Liancourt - Saint-Pierre","Liberation","Liberte","Liege","Lieusaint - Moissy","Limay","Livry-sur-Seine","Lizy-sur-Ourcq","Lognes","Longjumeau","Longueville","Louis Blanc","Louise Michel","Lourmel","Louveciennes","Louvre-Rivoli","Louvres","Lozere","Luxembourg","Luzarches","Lycée Henri Sellier","Mabillon","Madeleine","Magenta","Mairie d'Issy","Mairie d'Ivry","Mairie de Clichy","Mairie de Montreuil","Mairie de Saint-Ouen","Mairie des Lilas","Maison Blanche","Maisons-Alfort - Alfortville","Maisons-Alfort - Les Juilliottes","Maisons-Alfort - Stade","Maisons-Laffitte","Maisse","Malakoff - Plateau de Vanves","Malakoff - Rue Etienne Dolet","Malesherbes Métro","Malesherbes RER","Mantes - Station","Mantes-la-Jolie","Maraichers","Marcadet - Poissonniers","Marcel Sembat","Marcelin Berthelot","Marche de Saint-Denis","Marchezai-Broue","Mareil-Marly","Mareil-sur-Mauldre","Mareil-sur-Mauldre (SNCF)","Mareuil-sur-Ourcq","Marles-en-Brie","Marly-le-Roi","Marne-la-Vallee - Chessy","Marolles-en-Hurepoix","Marx Dormoy","Massy - Palaiseau","Massy - Verrieres","Maubert - Mutualite","Maule","Maule (SNCF)","Maurecourt","Maurice Lachatre","Meaux","Melun","Menerville","Menilmontant","Mennecy","Meriel","Mery","Meudon","Meudon - Val Fleury","Meudon-sur-Seine","Meulan - Hardricourt","Michel Bizot","Michel-Ange - Auteuil","Michel-Ange - Molitor","Mirabeau","Miromesnil","Mitry - Claye","Monceau","Monnerville","Montargis","Montereau","Montfort-l'Amaury - Mere","Montgallet","Montgeron - Crosne","Montgeroult - Courcelles","Montigny - Beauchamp","Montigny-sur-Loing","Montparnasse - Bienvenue","Montreuil (SNCF)","Montry - Conde","Montsoult - Maffliers","Montsouris","Moret - Veneux-les-Sablons","Mormant","Mortcerf","Moulin-Galant","Mouroux","Mouton-Duvernet","Musee d'Orsay","Musee de Sevres","Nangis","Nanterre - Prefecture","Nanterre - Universite","Nanterre - Ville","Nanteuil - Saacy","Nanteuil-le-Haudoin","Nation","Nationale","Nemours - Saint-Pierre","Neuilly - Porte Maillot","Neuilly-Plaisance","Neuville - Universite","Nezel - Aulnay","Nezel - Aulnay (SNCF)","Nogent - Le Perreux","Nogent-l'Artaud-Charly","Nogent-sur-Marne","Nointel - Mours","Noisiel","Noisy - Champs","Noisy-le-Grand - Mont d'Est","Noisy-le-Roi","Noisy-le-Sec","Notre-Dame-de-Lorette","Notre-Dame-des-Champs","Oberkampf","Odeon","Olympiades","Opera","Orangis - Bois de l'Epine","Orgerus - Behoust","Orly - Ouest","Orly - Sud","Orly - Ville","Ormoy - Villiers","Orry-la-Ville - Coye","Orsay - Ville","Osny","Ourcq","Ozoir-la-Ferriere","Palais Royal - Musee du Louvre","Palaiseau","Palaiseau - Villebon","Pantin","Parc de Saint-Cloud","Parc de Sceaux","Parc des Expositions","Parc Interdepartemental des Sports","Paris-Bercy (SNCF)","Parmentier","Passy","Pasteur","Pasteur (TVM)","Pelleport","Pere Lachaise","Pereire","Pereire - Levallois (RER)","Pernety","Persan - Beaumont","Petit Noisy","Petit Vaux","Petit-Jouy - Les Loges","Philippe Auguste","Picpus","Pierre et Marie Curie","Pierrefitte - Stains","Pierrelaye","Pigalle","Place d'Italie","Place de Clichy","Place des Fetes","Place Monge (Jardin des Plantes)","Plaisance","Plaisir - Grignon","Plaisir - Les Clayes","Poissonniere","Poissy","Poissy (SNCF)","Pompadour","Pont Cardinet","Pont de Bondy","Pont de Créteil","Pont de l'Alma","Pont de Levallois - Becon","Pont de Neuilly","Pont de Rungis - Aeroport d'Orly","Pont de Sevres","Pont du Garigliano","Pont Marie (Cite des Arts)","Pont Neuf (La Monnaie)","Pont-Petit","Ponthierry - Pringy","Pontoise","Porchefontaine","Port-Royal","Port-Villez","Porte d'Auteuil","Porte d'Issy-Elianne Jeanin-Garreau","Porte d'Italie","Porte d'Ivry","Porte d'Orleans (General Leclerc)","Porte Dauphine (Marechal de Lattre de Tassigny)","Porte de Bagnolet","Porte de Champerret","Porte de Charenton","Porte de Choisy","Porte de Clichy","Porte de Clignancourt","Porte de la Chapelle","Porte de la Villette","Porte de Montreuil","Porte de Pantin","Porte de Saint-Cloud","Porte de Saint-Ouen","Porte de Thiais","Porte de Vanves","Porte de Versailles","Porte de Vincennes","Porte des Lilas","Porte Doree","Porte Maillot","Poterne des Peupliers","Pre-Saint-Gervais","Precy-sur-Oise","Prefecture du Val-de-Marne","Presles - Courcelles","Provins","Puteaux","Pyramides","Pyrenees","Quai de la Gare","Quai de la Rapee","Quatre Septembre","Rambouillet","Rambuteau","Ranelagh","Raspail","Reaumur - Sebastopol","Remise à Jorelle","Rene Panhard","Rennes","Republique","Reuilly - Diderot","Richard-Lenoir","Richelieu - Drouot","Riquet","Ris-Orangis","Robespierre","Robinson","Roissy-en-Brie","Rome","Rosny - Bois Perrier","Rosny-sous-Bois","Rosny-sur-Seine","Rougemont–Chanteloup","Rouget de Lisle","Rue de la Pompe (Avenue Georges Mandel)","Rue des Boulets","Rue du Bac","Rue Saint-Maur","Rueil-Malmaison","Rungis - La Fraternelle","Rungis Marche International","Saint-Ambroise","Saint-Augustin","Saint-Cheron","Saint-Cloud","Saint-Cloud - Les Milons","Saint-Cyr","Saint-Denis","Saint-Denis - Porte de Paris","Saint-Denis - Universite","Saint-Fargeau","Saint-Fargeau (SNCF)","Saint-François-Xavier","Saint-Georges","Saint-Germain - Bel Air - Fourqueux","Saint-Germain-des-Pres","Saint-Germain-en-Laye","Saint-Gratien","Saint-Jacques","Saint-Lazare","Saint-Leu-d'Esserent","Saint-Leu-La-Foret","Saint-Mammes","Saint-Mande","Saint-Marcel","Saint-Martin d'Etampes","Saint-Maur Creteil","Saint-Michel","Saint-Michel - Notre-Dame","Saint-Michel-sur-Orge","Saint-Nom-la-Breteche - Foret de Marly","Saint-Ouen","Saint-Ouen - l'Aumone","Saint-Ouen - l'Aumone - Liesse","Saint-Ouen - l'Aumone Quartier de l'Eglise","Saint-Paul (Le Marais)","Saint-Philippe-du-Roule","Saint-Placide","Saint-Quentin-en-Yvelines","Saint-Remy-la-Vanne","Saint-Remy-les-Chevreuse","Saint-Sebastien - Froissart","Saint-Simeon","Saint-Sulpice","Sainte-Colombe - Septveilles","Sainte-Genevieve-des-Bois","Sannois","Santeuil - Le Perchay","Sarcelles - Saint-Brice","Sartrouville","Savigny-le-Temple - Nandy","Savigny-sur-Orge","Sceaux","Segur","Sentier","Sermaise","Seugy","Sevran - Beaudottes","Sevran - Livry","Sevres - Babylone","Sevres - Lecourbe","Sevres - Rive Gauche","Sevres - Ville d'Avray","Simplon","Solferino","Souppes - Chateau-Landon","Stade Charlety (Porte de Gentilly)","Stade de France - Saint-Denis","Stade Geo Andre","Stalingrad","Strasbourg - Saint-Denis","Sucy - Bonneuil","Sully - Morland","Suresnes - Longchamp","Suresnes - Mont-Valerien","Survilliers - Fosses","Suzanne Lenglen","Tacoignieres - Richebourg","Taverny","Telegraphe","Temple","Ternes","Theatre Gerard Philipe","Thieux - Nantouillet","Thomery","Thun-le-Paradis","Tolbiac","Torcy","Tournan","Trappes","Trie-Chateau","Triel-sur-Seine","Trilport","Trinite - d'Estienne d'Orves","Trocadero","Tuileries","Us","Vaires - Torcy","Val d'Argenteuil","Val d'Europe","Val de Fontenay","Valmondois","Vaneau","Vanves - Malakoff","Varenne","Vauboyen","Vaucelles","Vaucresson","Vaugirard (Adolphe Cherioux)","Vaux-sur-Seine","Vavin","Verneuil - l'Etang","Vernou-sur-Seine","Vernouillet - Verneuil","Versailles - Chantiers","Versailles - Rive Droite","Versailles - Rive Gauche","Vert-Galant","Viarmes","Victor Basch","Victor Hugo","Vigneux-sur-Seine","Villabe","Villaines","Villejuif - Leo Lagrange","Villejuif - Louis Aragon","Villejuif - Paul Vaillant-Couturier (Hopital Paul Brousse)","Villeneuve - Prairie","Villeneuve - Saint-Georges","Villeneuve - Triage","Villeneuve-le-Roi","Villennes-sur-Seine","Villennes-sur-Seine (SNCF)","Villeparisis - Mitry-le-Neuf","Villepinte","Villepreux - Les Clayes","Villiers","Villiers - Montbarbin","Villiers - Neauphle - Pontchartrain","Villiers-le-Bel - Gonesse - Arnouville","Villiers-sur-Marne - Le Plessis-Trevise","Vincennes","Viroflay - Rive Droite","Viroflay - Rive Gauche","Viry-Chatillon","Vitry-sur-Seine","Volontaires","Voltaire (Leon Blum)","Vosves","Vulaines-sur-Seine - Samoreau","Wagram","Yerres"]
//Liste des coordonnées X et Y prédéfinies dans un tableau appelé station_x et station_y :
station_x = "600139606070582121581034616596616817599289604364612432597412602830596259578901574848597370600562599369594154596546592926601429596294596133596080598811604918599501564229564093604106609037611741588270595864596985595505595264604533627290598884595753602559600949603622607988601686602399594997604747602952592139602315591883606737603152590724566012565955602906591097592776596498599705608285608443606482603248595280626527596589617432577632612412602747610471600892544779602212603862596429598947584973595492595124592829592054597280598210626518600306614612602974597350602516597446589308587781541395541228592293598803612526599555613956526124603932587228627424603283604765600502597469601634601089600543601120576267576265581243577949594183619037657362590832596507596764593071634281669856612743598359649977577288603823585786594891605682596946596264603563570300627011601435607641600944601875692613600826600742597412586727661962566034599757589071589115588793618032598384602315602235676837597847605461602018600712600234595277597219600621569382594356602471615654596864623864598855580748582497597054610119603360595773589488600945602997611579637855654794603731593483582517597563603232643143598362635002608335609029608400602955607295654120626520605151604151604345599722596169600044598292600085633484575728575263608695605930514964603881596766598548597720606255601929599258595135609117605605591554620675597780599628597478599409584302561308561537582018595215594639634744607236593648609392586853600916589446599007511020608541606823594392603521598609648588596747633942602217630739597098628866596720578315609423604933592676598061613381589790600493600483596910613958598972605834604554556921589004602023602023601639601613602701602792600710601393601385598710599144599144613242561289603983599663606865558465597867600321597377596970604529585327564082600591602528609304607333600479598602628853604334594288601225645545599339599438599429595312587181631486604888606540602492609376601114607889604111545302588847596883592231598389648878559628594314594580594597604022601767594375594965602477595626595690598699608782609355603893587251668898600574601334603364564113596831613219580923591081598555602774608306585424601671603520605434603512605406597621592648592772607423601037671034661092657729599209588536592904641682586460608319597159595418594764601628598105612990571183569002626902600194599761593580603125610282606584608401615877602376589305601861621224610958600268564309630720610828612807594421591183607049585169584251602897605335596401612821635363572060572609611877591466567068601111598361600732593750568968568641610276612821595260605986594234617811567546607512605207599292617203556805625337649518621846596888667197602113596445596012584317600328612126590800600289607874613069599900599115601569595376603454597719607732599797605854601585606651608059607332585909604425597166597118598129603802554494553599605131600950593167606237601411534836581107565628565827655940640057582311632736596684601709594227595341600912564444564099579725605665639545623508545438603518607141590463589338592998592975592876568159604875594714594537595342598481622415598012577360634604644944561389603898609265575682589876629768598988586350635711598909599766634324640449642587610102651973599552599218591829649909591680591121589680664773631792604380601866625956596169612999581110563666563299611581668261609929596073620571617754615533579822609044600185599408602481600170602179599680605240553436601626602338604894633594606656588627579590603594625911599964593374592676604643591563598039613061606596603409602808596262598272605903604745603712597111597111598634595843609430599838586042603908604794603040602653586655600053601400599326604141601146598337571043572308600945578342538365607478598359609780609944597385595911594278602549592215595217601533600412585052615348582408586561600025540619594215595911601724602461599160595476605309596724604692602013598320600549601668603605605430604384594057599451602280597801596451605457605134605115596034601117604554602288608235596229671352592415599792603556602743602233599987562755601225595114599564601178610961604782599377601996603672602636600227602783605788606399595923623046598818610615610985548479612856605069595699603863599207603259587828601168601966602830598758584382591175591517580561600693601443601872604966615207598379600097580476599746582291596199600013599188600871593092635455606058601846585819609961600550600663597814578977598967583189584723582971601823598111599306578578667529580419602258664209599593667917598330594691571525602313586864618226601157597140597853600812580648604298613777614528599265598117591036590022600744599015630491600679601015604792602307601306612576601816591537591535613833595583551262591556604589601816597183600994624748633166569447601507623573630973575738564794575789645085599655596369599456572848622257592247632273611192590184598879596690598403589405592245586440597398572625599439635925636287574107585373585180584758616881602622604188596236605766609223601653602014602250602332607201608041607474606602575302575301619459612870574726598522639935568498605880615038607125587648587861603670604844597906603196620434630806597729610832";
station_y = "2431789241405324396932441354244585824450942425521242847624331842429553241713624326382441904236786824173362431619242222724388072430819239860824296702436076243689724341902429236241266024304772441649244158424339602434235243709224525222428300242761224302542429555242809623591822421648242649423926062431723241746924203332437535242833724341192427093243042524245112455006243092724274502426892244864624291642428769242572124169802425973242844424317192434326243426724330612371804243505123864062429838239237524536572417181243139024328952430246244922124658482431221242696324497032428449242868024267232427107242693023912002420179237046824300492409062238178524255992428715240088223976342396256244001924386782424832243248124111542461950242737024344222374601241081224265852431022242811924308352427706242635424275952435744242691524501042450128244868324502082442985239633324237222390344242853524423802459724237866323947712423195242991524407402441370248017624523732427419242479224306162427558242847924627052387791243046024273352432088243112824527482428859242924724235432431887242418024809152430512242377124229012422352243068724165232428809242624624463322411351241857524375522428594242466124239792433202242805024161772436125243109824075002427364244391024296952443651244429424265312401745243293424253852441131242569224370922396331243158024235022426105243331624113842431219243011324289582493023248128824221982420155242126424324452428856245465324483432436065243152424267982426196242620424419212425286244828023457452392738239175324371712435526240813424267252428045242761924284402424077244719124269122427728242174024328192398198242312324416762407857243950524400392450722244058224407002446685244247424435242433909243501724322332400825238202124294872387531243119524318622404006240300324271752427969242733024226942427166234303724294182387680241616123798112421037242320124272362435111244386124300662436582244981124318092431918243537024316562426710242944024296172424259242666524272462427246243101024309232427417242725724375532431251243145524269602430891243089124344822442843244204624342352435188240328524372892424150243041524257272417959241111624887932425832243018624472992405513243035824096362416374240608524443692442894242262324327472430749243057024263022443610238288524325812435284243730624221162428797243427024365902421982243583324295592415745242918424447182442447242460824256892425705242399724302652424966242823524315992427563242751424251492434314242475024307972418502242185224326902427501240995124438962430333243602124299902457325244088124175522469510242716124317882436887243584824361992435810241818724326482432620243460323868462420642247248324393782432127244246424346042375698241073924208802427842242886423993162435306242878424218472417533246824524315752432383242324823911342431849243711724369682402654243096124178892411824242355423934622422982243073924108302458514239666124323372437031242869824211362432442243336324280932420469241565524251902432897244389224436802432682242873624133862426497243577224292892424792244387224437122448270243377024314462416412243504324250442474533243427924252562431248240333124430562390114244820624267702411519239179324314182432332242670124292342429172245014324119532427603245746824354342428278243015024312872425109242364724339682429333243481824312942424944242261024226832423317243866623770792424896242403524315822365515244300624437022428253243258724261642418954243782924165692431502243313224330252459699241467024303842430095239753624324542413983241513824279302434521243452924432232435674244021523921252440203242971023969492453375245103424240472423288242453224453702426517242773324274102427639243057624419812431364237204023394222375783242019124273112412197245381524454922371160242718624231482432477245238124247912375611240267124209512398595242411624259802429147242555323961262433048243369424330142442038246505424277812426057236318024310592428356244627924382822438689242670424429402426313245911324272732427172242695824270452433153243094324273812429452242821224254022430258240419924266522414427241435124159332474683247362124110172451727243203724195082429393241327024121392433300242718324191302441745241913524267372429660242880124271182418826242999124294152431860243186024261742461213243355524085892419199242889524274432424170244063024468032431547242588424316702430965242720124259322426003242587824310052437256243728324194942432199243411924224562429356243322724319152416541242570724266262428347242891124515642392983244987124220832426680245169524277692425952242451624248262424937243038824295592431939242603124245952432901243329924332982433251242834024323852426581243324824178722425450242602524276322430976242635024310792424720243134224696062420807245679223957272431600242987224306162426584242751324301492405162242919324285762426739242976024327932418292242776124298972427661242915124304152432234240674824285972420178242197924315302431604243026924445032437075241845724295492428210242861724295302432116241575124179082429141243065023942712427312242795424223252437469243685524386562430383239625524280712431143243298024283452433364244066124260692430826248650124464242375975242754624267872381011242312124283622428376240417524299752434159244970924485332449107242853324304622427629242105624218292411625242917724230262428089239279824060742441255245819924440832437714239983824086562420317242761324298922393271245810424389012437550242810124274052424759242547124329442428911235369724245652435429243626224317592430123241919124280502429997243036324557702426147242650224474892430803242980924311032437704244566623776282445466242530924268852415767241965524863692442588244040524308912429395242960624560822430791243913524286662428404245496124278172424430242867324177922447016242651624267872445434242707824055732377343244263724219162423499242247724384602458144241776324301732412220239935924532002422818242091224219532418538241448324164612415700243795824379482439455244056024251352431451242944824238612443973242495224276682423028242247324086522422478242700724288152390534238131924317132412020";
//}
 //else
 //{ //Pour Opera, la liste des stations du fihcier stationArray.js devient StationsArray.
  //StationsArray=stationArrayReady;
 //}
 
 
  NbStations = StationsArray.length;
  UnpenalStationsArray = new Array(NbStations);
 
 for (i=0; i<NbStations; i++)
 {
  UnpenalStationsArray[i] = replaceToUnpenalty(StationsArray[i]);
 }
  ExpertMode = false;
}

function replaceToUnpenalty(strInitial)
{
 return strInitial.replace(/[\s.]+/gi, '-').replace(/\bsaint\b/ig, 'st').replace(/\bavenue\b/ig, 'av').replace(/\bporte\b/ig, 'pte').replace('(', '-').toLowerCase();
}

function removeAccents(sNom)
{
	sNom = sNom.replace('à','a');
	sNom = sNom.replace('â','a');
	sNom = sNom.replace('ä','a');

	sNom = sNom.replace('é','e');
	sNom = sNom.replace('è','e');
	sNom = sNom.replace('ê','e');
	sNom = sNom.replace('ë','e');

	sNom = sNom.replace('ï','i');
	sNom = sNom.replace('î','i');

	sNom = sNom.replace('ô','o');
	sNom = sNom.replace('ö','o');

	sNom = sNom.replace('û','u');
	sNom = sNom.replace('ù','u');

	sNom = sNom.replace('ç','c');
	return sNom;
}

function initDataFieldForCompletion(dataFieldName, resultDiv, typeField, nextField)
{
 var dataField				= eval("document.form1."+dataFieldName);
 dataField.lastText			= "";
 dataField.lastCompletion	= "";
	
 if ( navigator.userAgent.indexOf('Mozilla/4.7') == -1 ) {
  dataField.resultList		= ((navigator.userAgent.toLowerCase().indexOf('netscape') > -1) || (navigator.userAgent.toLowerCase().indexOf('mozilla') > -1))
				? 	document.getElementById(resultDiv) : document.all[resultDiv];
 }
	//
	dataField.fieldName			= dataFieldName;
	dataField.nextField			= nextField;
	dataField.typeField			= typeField;
}

//Attention, cette fonction ne s'exécute que si on est en mode station, c-à-d dataField.typeField[1].checked
//Fonction qui regarde s'il y a des stations à ou aux éléments saisies dans la zone de saisie départ ou arrivée.
//Rempli la liste déroulante des stations correspondant à la saisie et l'affiche dans un calque.
//dataFieldValue : contient la valeur de ce qui a été saisie dans la zone départ ou arrivée,
//pour savoir si cette valeur est contenue dans le tableau des stations.
//dataField : contient le nom du fomulaire qui englobe tous les champs de formulaire (saisie, les listes déroumantes...°
function findJPN(dataField, dataFieldValue)
{
 if (ExpertMode == "none")						return;
 if (!dataField.typeField[1].checked)		return;
 if (dataField.lastText == dataFieldValue)	return;
 
 var newValue	= removeAccents(dataFieldValue).toLowerCase();
 var RL 			= dataField.resultList;

	// --- La zone a été vidée !
	if (newValue.length == 0)
	{
		RL.innerHTML		= "";
		dataField.lastText	= "";
		return;
	}

	// --- Tentative de saisie après completion !
	if (dataField.lastCompletion != "" && (dataFieldValue.substring(0, dataField.lastCompletion.length) == (dataField.lastCompletion)))
	{
		dataField.value = dataField.lastCompletion;
		if (navigator.userAgent.indexOf("Opera")!=-1)
		{
			dataField.select();
			dataField.value 	= dataField.lastCompletion;
		}
		return;
	}

	var bPrefixLastCompletion	= (dataField.lastCompletion != "" && (dataField.lastCompletion.substring(0, newValue.length) == (dataFieldValue)));
	var bCharAdded				= (dataField.lastText.length < newValue.length);

	var htmlToInsert	= "";
	var htmlPrefixR		= "";
	var htmlIncludesR	= "";
	var htmlPrefix		= "";
	var htmlIncludes	= "";
	var lastFoundName	= "";
	var Results			= 0;

	// --- Recherche de candidats !
// initialisation des x et y
document.form1.x_dep.value="";
document.form1.y_dep.value="";
document.form1.x_arr.value="";
document.form1.y_arr.value="";
// fin init
	if (ExpertMode)
	{
		var dataFieldUnpenal		= replaceToUnpenalty(newValue);
		for (i=0; i<NbStations; i++)
		{
		  	bRattrape = false;
		  	indexFound = StationsArray[i].toLowerCase().indexOf(newValue);
			if (indexFound == -1)
			{
			  	bRattrape = true;
			  	indexFound = UnpenalStationsArray[i].indexOf(dataFieldUnpenal);
			}
	
			if (indexFound > -1) 
			{
				lastFoundName 	= StationsArray[i];
				Results 		+= 1;
				htmlToInsert = "<OPTION value="+i+">"+lastFoundName+"</OPTION>";
				if (bRattrape)
					if (indexFound == 0)
						htmlPrefixR 	+= htmlToInsert;
					else
						htmlIncludesR	+= htmlToInsert;
				else
					if (indexFound == 0)
						htmlPrefix 		+= htmlToInsert;
					else
						htmlIncludes	+= htmlToInsert;
			}
		}
	}
	else
	{
		var dataFieldUnpenal		= replaceToUnpenalty(newValue);
		for (i=0; i<NbStations; i++)
		{
		  	indexFound = StationsArray[i].toLowerCase().indexOf(newValue);
			if (indexFound != 0)
			{
			  	bRattrape = true;
			  	indexFound = UnpenalStationsArray[i].indexOf(dataFieldUnpenal);
				if (indexFound != 0)
				{
				  	indexFound = UnpenalStationsArray[i].indexOf("-"+dataFieldUnpenal);
				}
			}
			else
			{
			  	bRattrape = false;
			}
			//On crée ici la liste contenant les stations correspondant à la valeur de la saisie.
			if (indexFound > -1) 
			{
				lastFoundName 	= StationsArray[i];
				Results 		+= 1;
				htmlToInsert = "<OPTION value="+i+">"+lastFoundName+"</OPTION>";
				if (bRattrape)
					if (indexFound == 0)
						htmlPrefixR 	+= htmlToInsert;
					else
						htmlIncludesR	+= htmlToInsert;
				else
					if (indexFound == 0)
						htmlPrefix 		+= htmlToInsert;
					else
						htmlIncludes	+= htmlToInsert;
			}
		}
	}

	if (Results == 1 && (!bPrefixLastCompletion || bCharAdded))
	{
	   dataField.value 	= dataField.lastText = dataField.lastCompletion = lastFoundName;
		if (navigator.userAgent.indexOf("Opera")!=-1)
		{
			dataField.select();
			dataField.value 	= lastFoundName;
		}
		RL.innerHTML = "";
	}
	else
	{
	 //On affiche ici le résultat, c-à-d la liste déroulante dans un calque.
	 var HTML = htmlPrefix + htmlPrefixR + htmlIncludes + htmlIncludesR;
	 var resultRem = "<<<<< Liste : " + Results + " station"+ (Results>1 ? "s":"") + ". >>>>>";
     //On regarde si on est sous plateforme Mac ou Windows, si c'est le cas, on regarde la particularité Internet Explorer :
	 //L'affichage pour cette dernière se différencie des autres, c-à-d que la liste ne doit pas comporter un  size='7' et width='230'
     if (( navigator.platform.indexOf('MacPPC') != -1 ) && (Nom == 'Microsoft Internet Explorer'))
	  HTML = "<select name='liste' class='m_liste_stationsJPN' onkeyup='setDataFieldValue(document.form1."+dataField.fieldName+",this[this.selectedIndex].value,true)' onchange='setDataFieldValue(document.form1."+dataField.fieldName+",this[this.selectedIndex].value,false); return false;'><OPTION value='0xxAA' selected>" + resultRem + "</OPTION>" + HTML + "</select><br>";
	 else {  //Liste affiché pour tout navigateur différent de IE Mac.
//	 alert("autre que IE mac");
      HTML = "<SELECT class='m_liste_stationsJPN' onkeyup='setDataFieldValue(document.form1."+dataField.fieldName+",this[this.selectedIndex].value,true)' onclick='setDataFieldValue(document.form1."+dataField.fieldName+",this[this.selectedIndex].value,false); return false;' size='4' width='190'><OPTION value='0xxAA' selected>" + resultRem + "</OPTION>" + HTML + "</SELECT>";
	 }
	 // Je regarde si on trouve des stations par rapport au(x) lettre(s) tapé(s) dnas la zon départ ou arrivée.
	 //Si ce n'est pas le cas, on dévalide le calque pour qu'il n'affiche pas 0 stations...
	 if ( Results == 0){ HTML = ""; dataField.resultList.innerHTML	= ""; 
	 } 
     //Cas où il y a au moins une station
	 else RL.innerHTML = HTML; //On affiche le résultat dans un calque
      dataField.lastText = dataFieldValue;
	}
}