var mv_recipients = new Array('ABLAIN ST NAZAIRE', 'ABLAINZEVELLE', 'ABSCON', 'ACHEVILLE', 'ACHICOURT', 'ACHIET LE GRAND', 'ACHIET LE PETIT', 'ACQ', 'ACQUIN WESTBECOURT', 'ADINFER', 'AFFRINGUES', 'AGNEZ LES DUISANS', 'AGNIERES', 'AGNY', 'AIBES', 'AIRE SUR LA LYS', 'AIRON NOTRE DAME', 'AIRON ST VAAST', 'AIX', 'AIX EN ERGNY', 'AIX EN ISSART', 'AIX NOULETTE', 'ALEMBON', 'ALETTE', 'ALINCTHUN', 'ALLENNES LES MARAIS', 'ALLOUAGNE', 'ALQUINES', 'AMBLETEUSE', 'AMBRICOURT', 'AMBRINES', 'AMES', 'AMETTES', 'AMFROIPRET', 'AMPLIER', 'ANDRES', 'ANGRES', 'ANHIERS', 'ANICHE', 'ANNAY', 'ANNEQUIN', 'ANNEUX', 'ANNEZIN', 'ANNOEULLIN', 'ANOR', 'ANSTAING', 'ANVIN', 'ANZIN', 'ANZIN ST AUBIN', 'ARDRES', 'AREMBERG', 'ARLEUX', 'ARLEUX EN GOHELLE', 'ARMBOUTS CAPPEL', 'ARMENTIERES', 'ARNEKE', 'ARQUES', 'ARRAS', 'ARTRES', 'ASSEVENT', 'ATHIES', 'ATTICHES', 'ATTIN', 'AUBENCHEUL AU BAC', 'AUBERCHICOURT', 'AUBERS', 'AUBIGNY AU BAC', 'AUBIGNY EN ARTOIS', 'AUBIN ST VAAST', 'AUBROMETZ', 'AUBRY DU HAINAUT', 'AUBY', 'AUCHEL', 'AUCHY AU BOIS', 'AUCHY LES HESDIN', 'AUCHY LES MINES', 'AUCHY LES ORCHIES', 'AUDEMBERT', 'AUDENCOURT', 'AUDIGNIES', 'AUDINCTHUN', 'AUDINGHEN', 'AUDREHEM', 'AUDRESSELLES', 'AUDRUICQ', 'AULNOY LEZ VALENCIENNES', 'AULNOYE AYMERIES', 'AUMERVAL', 'AUTINGUES', 'AUXI LE CHATEAU', 'AVELIN', 'AVERDOINGT', 'AVESNELLES', 'AVESNES', 'AVESNES LE COMTE', 'AVESNES LE SEC', 'AVESNES LES AUBERT', 'AVESNES LES BAPAUME', 'AVESNES SUR HELPE', 'AVION', 'AVONDANCE', 'AVROULT', 'AWOINGT', 'AYETTE', 'AZINCOURT', 'BACHANT', 'BACHY', 'BAILLEUL', 'BAILLEUL AUX CORNAILLES', 'BAILLEUL LES PERNES', 'BAILLEUL SIR BERTHOULT', 'BAILLEULMONT', 'BAILLEULVAL', 'BAINCTHUN', 'BAINGHEN', 'BAISIEUX', 'BAIVES', 'BAJUS', 'BALINGHEM', 'BAMBECQUE', 'BANCOURT', 'BANTEUX', 'BANTIGNY', 'BANTOUZELLE', 'BAPAUME', 'BARALLE', 'BARASTRE', 'BARLIN', 'BARLY', 'BAS LIEU', 'BASSEUX', 'BASSIN ROND', 'BAUVIN', 'BAVAY', 'BAVINCHOVE', 'BAVINCOURT', 'BAYENGHEM LES EPERLECQUES', 'BAYENGHEM LES SENINGHEM', 'BAZINGHEN', 'BAZUEL', 'BEALENCOURT', 'BEAUCAMPS LIGNY', 'BEAUDIGNIES', 'BEAUDRICOURT', 'BEAUFORT', 'BEAUFORT BLAVINCOURT', 'BEAULENCOURT', 'BEAUMERIE ST MARTIN', 'BEAUMETZ LES AIRE', 'BEAUMETZ LES CAMBRAI', 'BEAUMETZ LES LOGES', 'BEAUMONT EN CAMBRESIS', 'BEAURAIN', 'BEAURAINS', 'BEAURAINVILLE', 'BEAUREPAIRE SUR SAMBRE', 'BEAURIEUX', 'BEAUVOIR WAVANS', 'BEAUVOIS', 'BEAUVOIS EN CAMBRESIS', 'BECOURT', 'BEHAGNIES', 'BELLAING', 'BELLE ET HOULLEFORT', 'BELLEBRUNE', 'BELLIGNIES', 'BELLONNE', 'BENIFONTAINE', 'BERCK', 'BERELLES', 'BERGUENEUSE', 'BERGUES', 'BERGUETTE', 'BERLAIMONT', 'BERLENCOURT LE CAUROY', 'BERLES AU BOIS', 'BERLES MONCHEL', 'BERMERAIN', 'BERMERIES', 'BERMICOURT', 'BERNEVILLE', 'BERNIEULLES', 'BERSEE', 'BERSILLIES', 'BERTHEN', 'BERTINCOURT', 'BERTRY', 'BETHENCOURT', 'BETHONSART', 'BETHUNE', 'BETTIGNIES', 'BETTRECHIES', 'BEUGIN', 'BEUGNATRE', 'BEUGNIES', 'BEUGNY', 'BEUSSENT', 'BEUTIN', 'BEUVRAGES', 'BEUVREQUEN', 'BEUVRY', 'BEUVRY LA FORET', 'BEVILLERS', 'BEZINGHEM', 'BIACHE ST VAAST', 'BIEFVILLERS LES BAPAUME', 'BIENVILLERS AU BOIS', 'BIERNE', 'BIHUCOURT', 'BILLY BERCLAU', 'BILLY MONTIGNY', 'BIMONT', 'BISSEZEELE', 'BLAIRVILLE', 'BLANC MISSERON', 'BLANC MISSERON ANF', 'BLANGERMONT', 'BLANGERVAL BLANGERMONT', 'BLANGY SUR TERNOISE', 'BLARINGHEM', 'BLECOURT', 'BLENDECQUES', 'BLEQUIN', 'BLERIOT', 'BLESSY', 'BLINGEL', 'BOESCHEPE', 'BOESEGHEM', 'BOFFLES', 'BOIRY BECQUERELLE', 'BOIRY NOTRE DAME', 'BOIRY ST MARTIN', 'BOIRY STE RICTRUDE', 'BOIS BERNARD', 'BOIS EN ARDRES', 'BOIS GRENIER', 'BOISDINGHEM', 'BOISJEAN', 'BOISLEUX AU MONT', 'BOISLEUX ST MARC', 'BOLLEZEELE', 'BOMY', 'BONDUES', 'BONNIERES', 'BONNINGUES LES ARDRES', 'BONNINGUES LES CALAIS', 'BORRE', 'BOUBERS LES HESMOND', 'BOUBERS SUR CANCHE', 'BOUCHAIN', 'BOUIN', 'BOUIN PLUMOISON', 'BOULOGNE SUR HELPE', 'BOULOGNE SUR MER', 'BOUQUEHAULT', 'BOURBOURG', 'BOURECQ', 'BOURET SUR CANCHE', 'BOURGHELLES', 'BOURLON', 'BOURNONVILLE', 'BOURS', 'BOURSIES', 'BOURSIN', 'BOURTHES', 'BOUSBECQUE', 'BOUSIES', 'BOUSIGNIES', 'BOUSIGNIES SUR ROC', 'BOUSSIERES EN CAMBRESIS', 'BOUSSIERES SUR SAMBRE', 'BOUSSOIS', 'BOUVELINGHEM', 'BOUVIGNIES', 'BOUVIGNY BOYEFFLES', 'BOUVINES', 'BOYAVAL', 'BOYELLES', 'BRAY DUNES', 'BREBIERES', 'BREMES', 'BREVILLERS', 'BREXENT ENOCQ', 'BRIASTRE', 'BRILLON', 'BRIMEUX', 'BROUCKERQUE', 'BROXEELE', 'BRUAY LA BUISSIERE', 'BRUAY SUR L ESCAUT', 'BRUILLE LEZ MARCHIENNES', 'BRUILLE ST AMAND', 'BRUNEMBERT', 'BRUNEMONT', 'BRY', 'BRYAS', 'BUCQUOY', 'BUGNICOURT', 'BUIRE AU BOIS', 'BUIRE LE SEC', 'BUISSY', 'BULLECOURT', 'BULLY LES MINES', 'BUNEVILLE', 'BURBURE', 'BUS', 'BUSIGNY', 'BUSNES', 'BUYSSCHEURE', 'CAESTRE', 'CAFFIERS', 'CAGNICOURT', 'CAGNONCLES', 'CALAIS', 'CALONNE RICOUART', 'CALONNE SUR LA LYS', 'CAMBLAIN CHATELAIN', 'CAMBLAIN L ABBE', 'CAMBLIGNEUL', 'CAMBRAI', 'CAMBRIN', 'CAMIERS', 'CAMPAGNE LES BOULONNAIS', 'CAMPAGNE LES GUINES', 'CAMPAGNE LES HESDIN', 'CAMPAGNE LES WARDRECQUES', 'CAMPHIN EN CAREMBAULT', 'CAMPHIN EN PEVELE', 'CAMPIGNEULLES LES GRANDES', 'CAMPIGNEULLES LES PETITES', 'CANETTEMONT', 'CANLERS', 'CANTAING SUR ESCAUT', 'CANTELEUX', 'CANTIN', 'CAPELLE', 'CAPELLE FERMONT', 'CAPELLE LES HESDIN', 'CAPINGHEM', 'CAPPELLE BROUCK', 'CAPPELLE EN PEVELE', 'CAPPELLE LA GRANDE', 'CARENCY', 'CARLY', 'CARNIERES', 'CARNIN', 'CARTIGNIES', 'CARVIN', 'CASSEL', 'CATILLON SUR SAMBRE', 'CATTENIERES', 'CAUCHY A LA TOUR', 'CAUCOURT', 'CAUDRY', 'CAULLERY', 'CAUMONT', 'CAUROIR', 'CAVRON ST MARTIN', 'CERFONTAINE', 'CHAPELLE D ARMENTIERE', 'CHATEAU L ABBAYE', 'CHELERS', 'CHEMY', 'CHERENG', 'CHERIENNES', 'CHERISY', 'CHOCQUES', 'CHOISIES', 'CLAIRFAYTS', 'CLAIRMARAIS', 'CLARQUES', 'CLARY', 'CLENLEU', 'CLERQUES', 'CLETY', 'COBRIEUX', 'COLEMBERT', 'COLLERET', 'COLLINE BEAUMONT', 'COMINES', 'CONCHIL LE TEMPLE', 'CONCHY SUR CANCHE', 'CONDE SUR L ESCAUT', 'CONDETTE', 'CONTES', 'CONTEVILLE EN TERNOIS', 'CONTEVILLE LES BOULOGNE', 'COQUELLES', 'CORBEHEM', 'CORMONT', 'COUDEKERQUE', 'COUDEKERQUE BRANCHE', 'COUIN', 'COULLEMONT', 'COULOGNE', 'COULOMBY', 'COUPELLE NEUVE', 'COUPELLE VIEILLE', 'COURCELLES LE COMTE', 'COURCELLES LES LENS', 'COURCHELETTES', 'COURRIERES', 'COURSET', 'COUSOLRE', 'COUTICHES', 'COUTURELLE', 'COYECQUES', 'CRAYWICK', 'CREMAREST', 'CREPY', 'CREQUY', 'CRESPIN', 'CREVECOEUR SUR L ESCAUT', 'CROCHTE', 'CROISETTE', 'CROISILLES', 'CROIX', 'CROIX CALUYAU', 'CROIX DU BAC', 'CROIX EN TERNOIS', 'CUCQ', 'CUINCHY', 'CUINCY', 'CURGIES', 'CUVILLERS', 'CYSOING', 'DAINVILLE', 'DAMOUSIES', 'DANNES', 'DECHY', 'DEHERIES', 'DELETTES', 'DENAIN', 'DENIER', 'DENNEBROEUCQ', 'DESVRES', 'DEULEMONT', 'DIEVAL', 'DIMECHAUX', 'DIMONT', 'DIVION', 'DOHEM', 'DOIGNIES', 'DOMPIERRE SUR HELPE', 'DON', 'DORIGNIES', 'DOUAI', 'DOUCHY LES AYETTE', 'DOUCHY LES MINES', 'DOUDEAUVILLE', 'DOURGES', 'DOURIEZ', 'DOURLERS', 'DOUVRIN', 'DOUZIES', 'DOUZIES FEIGNIES', 'DRINCHAM', 'DROCOURT', 'DROUVIN LE MARAIS', 'DUISANS', 'DUNKERQUE', 'DURY', 'EBBLINGHEM', 'ECAILLON', 'ECCLES', 'ECHINGHEN', 'ECLAIBES', 'ECLIMEUX', 'ECOIVRES', 'ECOURT ST QUENTIN', 'ECOUST ST MEIN', 'ECQUEDECQUES', 'ECQUES', 'ECUELIN', 'ECUIRES', 'ECURIE', 'EECKE', 'ELESMES', 'ELEU DIT LEAUWETTE', 'ELINCOURT', 'ELNES', 'EMBRY', 'EMERCHICOURT', 'EMMERIN', 'ENGLEFONTAINE', 'ENGLOS', 'ENGUINEGATTE', 'ENNETIERES EN WEPPES', 'ENNEVELIN', 'ENQUIN LES MINES', 'ENQUIN SUR BAILLONS', 'EPERLECQUES', 'EPINOY', 'EPPE SAUVAGE', 'EPS', 'EQUIHEN PLAGE', 'EQUIRRE', 'ERCHIN', 'ERGNY', 'ERIN', 'ERINGHEM', 'ERNY ST JULIEN', 'ERQUIERES', 'ERQUINGHEM LE SEC', 'ERQUINGHEM LYS', 'ERRE', 'ERVILLERS', 'ESCALLES', 'ESCARMAIN', 'ESCAUDAIN', 'ESCAUDOEUVRES', 'ESCAUFOURT', 'ESCAUTPONT', 'ESCOBECQUES', 'ESCOEUILLES', 'ESNES', 'ESQUELBECQ', 'ESQUERCHIN', 'ESQUERDES', 'ESSARS', 'ESTAIRES', 'ESTEVELLES', 'ESTOURMEL', 'ESTREE', 'ESTREE BLANCHE', 'ESTREE CAUCHY', 'ESTREE WAMIN', 'ESTREELLES', 'ESTREES', 'ESTREUX', 'ESTRUN', 'ESWARS', 'ETAING', 'ETAPLES', 'ETERPIGNY', 'ETH', 'ETROEUNGT', 'ETRUN', 'EURALILLE', 'EVIN MALMAISON', 'FACHES THUMESNIL', 'FAMARS', 'FAMECHON', 'FAMPOUX', 'FARBUS', 'FAUMONT', 'FAUQUEMBERGUES', 'FAVREUIL', 'FEBVIN PALFART', 'FECHAIN', 'FEIGNIES', 'FELLERIES', 'FENAIN', 'FERFAY', 'FERIN', 'FERON', 'FERQUES', 'FERRIERE LA GRANDE', 'FERRIERE LA PETITE', 'FESTUBERT', 'FEUCHY', 'FICHEUX', 'FIEFS', 'FIENNES', 'FILLIEVRES', 'FLAUMONT WAUDRECH', 'FLECHIN', 'FLERS', 'FLERS EN ESCREBIEUX', 'FLESQUIERES', 'FLETRE', 'FLEURBAIX', 'FLEURY', 'FLINES LES MORTAGNES', 'FLINES LEZ RACHES', 'FLORINGHEM', 'FLOURSIES', 'FLOYON', 'FONCQUEVILLERS', 'FONTAINE AU BOIS', 'FONTAINE AU PIRE', 'FONTAINE L ETALON', 'FONTAINE LES BOULANS', 'FONTAINE LES CROISILLES', 'FONTAINE LES HERMANS', 'FONTAINE NOTRE DAME', 'FOREST CAMBRESIS', 'FOREST SUR MARQUE', 'FORT MARDYCK', 'FORTEL EN ARTOIS', 'FOSSEUX', 'FOUFFLIN RICAMETZ', 'FOUQUEREUIL', 'FOUQUIERES LES BETHUNE', 'FOUQUIERES LES LENS', 'FOURMIES', 'FOURNES EN WEPPES', 'FRAIS MARAIS', 'FRAMECOURT', 'FRASNOY', 'FRELINGHIEN', 'FREMICOURT', 'FRENCQ', 'FRESNE LES MONTAUBAN', 'FRESNES SUR ESCAUT', 'FRESNICOURT LE DOLMEN', 'FRESNOY', 'FRESNOY EN GOHELLE', 'FRESSAIN', 'FRESSIES', 'FRESSIN', 'FRETHUN', 'FRETIN', 'FREVENT', 'FREVILLERS', 'FREVIN CAPELLE', 'FROMELLES', 'FRUGES', 'GALAMETZ', 'GAUCHIN LEGAL', 'GAUCHIN VERLOINGT', 'GAUDIEMPRE', 'GAVRELLE', 'GENECH', 'GENNES IVERGNY', 'GHISSIGNIES', 'GHYVELDE', 'GIVENCHY EN GOHELLE', 'GIVENCHY LE NOBLE', 'GIVENCHY LES LA BASSEE', 'GLAGEON', 'GODEWAERSVELDE', 'GOEULZIN', 'GOGNIES CHAUSSEE', 'GOMIECOURT', 'GOMMECOURT', 'GOMMEGNIES', 'GONDECOURT', 'GONNEHEM', 'GONNELIEU', 'GOSNAY', 'GOUVES', 'GOUY EN ARTOIS', 'GOUY EN TERNOIS', 'GOUY SERVINS', 'GOUY SOUS BELLONNE', 'GOUY ST ANDRE', 'GOUZEAUCOURT', 'GRAINCOURT LES HAVRINCOUR', 'GRAND FAYT', 'GRAND FORT PHILIPPE', 'GRAND RULLECOURT', 'GRANDE SYNTHE', 'GRAVELINES', 'GRENAY', 'GREVILLERS', 'GRIGNY', 'GRINCOURT LES PAS', 'GROFFLIERS', 'GRUSON', 'GUARBECQUE', 'GUEMAPPE', 'GUEMPS', 'GUESNAIN', 'GUIGNY', 'GUINECOURT', 'GUINES', 'GUISY', 'GUSSIGNIES', 'HABARCQ', 'HAILLICOURT', 'HAISNES', 'HALINGHEN', 'HALLENNES LEZ HAUBOURDIN', 'HALLINES', 'HALLOY', 'HALLUIN', 'HAM EN ARTOIS', 'HAMBLAIN LES PRES', 'HAMEL', 'HAMELINCOURT', 'HAMES BOUCRES', 'HANNESCAMPS', 'HANTAY', 'HAPLINCOURT', 'HARAVESNES', 'HARDELOT PLAGE', 'HARDIFORT', 'HARDINGHEN', 'HARGNIES', 'HARNES', 'HASNON', 'HASPRES', 'HAUBOURDIN', 'HAUCOURT', 'HAUCOURT EN CAMBRESIS', 'HAULCHIN', 'HAUSSY', 'HAUT LIEU', 'HAUT LOQUIN', 'HAUT MAINIL', 'HAUTE AVESNES', 'HAUTECLOQUE', 'HAUTECOTE', 'HAUTEVILLE', 'HAUTMONT', 'HAVELUY', 'HAVERSKERQUE', 'HAVRINCOURT', 'HAYNECOURT', 'HAZEBROUCK', 'HEBUTERNE', 'HECQ', 'HELESMES', 'HELFAUT', 'HELLEMMES LILLE', 'HEM', 'HEM LENGLET', 'HENDECOURT LES CAGNICOURT', 'HENDECOURT LES RANSART', 'HENIN BEAUMONT', 'HENIN SUR COJEUL', 'HENINEL', 'HENNEVEUX', 'HENU', 'HERBELLES', 'HERBIGNIES VILLEREAU', 'HERBINGHEN', 'HERGNIES', 'HERICOURT', 'HERIN', 'HERLIES', 'HERLIN LE SEC', 'HERLINCOURT', 'HERLY', 'HERMAVILLE', 'HERMELINGHEN', 'HERMIES', 'HERMIN', 'HERNICOURT', 'HERRIN', 'HERSIN COUPIGNY', 'HERVELINGHEN', 'HERZEELE', 'HESDIGNEUL LES BETHUNE', 'HESDIGNEUL LES BOULOGNE', 'HESDIN', 'HESDIN L ABBE', 'HESMOND', 'HESTRUD', 'HESTRUS', 'HEUCHIN', 'HEURINGHEM', 'HEZECQUES', 'HINGES', 'HOCQUINGHEN', 'HOLQUE', 'HON HERGIES', 'HONDEGHEM', 'HONDSCHOOTE', 'HONNECHY', 'HONNECOURT SUR ESCAUT', 'HORDAIN', 'HORNAING', 'HOUCHIN', 'HOUDAIN', 'HOUDAIN LEZ BAVAY', 'HOULLE', 'HOUPLIN ANCOISNE', 'HOUPLINES', 'HOUTKERQUE', 'HOUVIN HOUVIGNEUL', 'HOYMILLE', 'HUBERSENT', 'HUBY ST LEU', 'HUCLIER', 'HUCQUELIERS', 'HULLUCH', 'HUMBERCAMPS', 'HUMBERT', 'HUMEROEUILLE', 'HUMIERES', 'ILLIES', 'INCHY', 'INCHY EN ARTOIS', 'INCOURT', 'INGHEM', 'INXENT', 'ISBERGUES', 'ISQUES', 'IVERGNY', 'IWUY', 'IZEL LES EQUERCHIN', 'IZEL LES HAMEAUX', 'JENLAIN', 'JEUMONT', 'JOLIMETZ', 'JOURNY', 'KILLEM', 'L ARBRET', 'LA BASSEE', 'LA CALOTTERIE', 'LA CAPELLE LES BOULOGNE', 'LA CAUCHIE', 'LA CHAPELLE D ARMENTIERES', 'LA COMTE', 'LA COUTURE', 'LA FLAMENGRIE', 'LA GORGUE', 'LA GROISE', 'LA HERLIERE', 'LA LOGE', 'LA LONGUEVILLE', 'LA MADELEINE', 'LA MADELEINE SOUS MONTREU', 'LA NEUVILLE', 'LA RECOUSSE', 'LA SENTINELLE', 'LA THIEULOYE', 'LABEUVRIERE', 'LABOURSE', 'LABROYE', 'LABUISSIERE', 'LACRES', 'LAGNICOURT MARCEL', 'LAIRES', 'LALLAING', 'LAMBERSART', 'LAMBRES', 'LAMBRES LEZ DOUAI', 'LANDAS', 'LANDRECIES', 'LANDRETHUN LE NORD', 'LANDRETHUN LES ARDRES', 'LANNOY', 'LAPUGNOY', 'LAROUILLIES', 'LATTRE ST QUENTIN', 'LAUWIN PLANQUE', 'LAVENTIE', 'LE BIZET', 'LE CATEAU CAMBRESIS', 'LE DOULIEU', 'LE FAVRIL', 'LE MAISNIL', 'LE PARCQ', 'LE PONCHEL', 'LE PORTEL', 'LE QUESNOY', 'LE QUESNOY EN ARTOIS', 'LE SARS', 'LE SOUICH', 'LE TOUQUET PARIS PLAGE', 'LE TRANSLOY', 'LE WAST', 'LEBIEZ', 'LEBUCQUIERE', 'LECELLES', 'LECHELLE', 'LECLUSE', 'LEDERZEELE', 'LEDINGHEM', 'LEDRINGHEM', 'LEERS', 'LEFAUX', 'LEFFRINCKOUCKE', 'LEFOREST', 'LENS', 'LEPINE', 'LES ATTAQUES', 'LES MOERES', 'LES RUES DES VIGNES', 'LESDAIN', 'LESPESSES', 'LESPINOY', 'LESQUIN', 'LESTREM', 'LEUBRINGHEN', 'LEULINGHEM', 'LEULINGHEN BERNES', 'LEVAL', 'LEWARDE', 'LEZ FONTAINE', 'LEZENNES', 'LIBERCOURT', 'LICQUES', 'LIENCOURT', 'LIERES', 'LIESSIES', 'LIETTRES', 'LIEU ST AMAND', 'LIEVIN', 'LIGNEREUIL', 'LIGNY EN CAMBRESIS', 'LIGNY HAUCOURT', 'LIGNY LES AIRE', 'LIGNY ST FLOCHEL', 'LIGNY SUR CANCHE', 'LIGNY THILLOY', 'LILLE', 'LILLERS', 'LIMONT FONTAINE', 'LINGHEM', 'LINSELLES', 'LINZEUX', 'LISBOURG', 'LOCON', 'LOCQUIGNOL', 'LOFFRE', 'LOISON SOUS LENS', 'LOISON SUR CREQUOISE', 'LOMME', 'LOMPRET', 'LONGFOSSE', 'LONGUENESSE', 'LONGUEVILLE', 'LONGVILLERS', 'LOOBERGHE', 'LOON PLAGE', 'LOOS', 'LOOS EN GOHELLE', 'LORGIES', 'LOTTINGHEN', 'LOUCHES', 'LOURCHES', 'LOUVIGNIES BAVAY', 'LOUVIGNIES QUESNOY', 'LOUVIL', 'LOUVROIL', 'LOZINGHEM', 'LUGY', 'LUMBRES', 'LYNDE', 'LYS LEZ LANNOY', 'MAGNICOURT EN COMTE', 'MAGNICOURT SUR CANCHE', 'MAING', 'MAINTENAY', 'MAIRIEUX', 'MAISNIL', 'MAISNIL LES RUITZ', 'MAISONCELLE', 'MAIZIERES', 'MALINCOURT', 'MALO LES BAINS', 'MAMETZ', 'MANIN', 'MANINGHEM', 'MANINGHEN HENNE', 'MARANT', 'MARBAIX', 'MARCHIENNES', 'MARCK', 'MARCOING', 'MARCONNE', 'MARCONNELLE', 'MARCQ EN BAROEUL', 'MARCQ EN OSTREVENT', 'MARDYCK', 'MARENLA', 'MARESCHES', 'MARESQUEL ECQUEMICOURT', 'MAREST', 'MARESVILLE', 'MARETZ', 'MARLES LES MINES', 'MARLES SUR CANCHE', 'MARLY', 'MAROEUIL', 'MAROILLES', 'MARPENT', 'MARQUAY', 'MARQUETTE EN OSTREVENT', 'MARQUETTE LEZ LILLE', 'MARQUILLIES', 'MARQUION', 'MARQUISE', 'MARTINPUICH', 'MASNIERES', 'MASNY', 'MASTAING', 'MATRINGHEM', 'MAUBEUGE', 'MAULDE', 'MAUROIS', 'MAZINGARBE', 'MAZINGHEM', 'MAZINGHIEN', 'MECQUIGNIES', 'MENCAS', 'MENNEVILLE', 'MENTQUE NOTBECOURT', 'MERCATEL', 'MERCK ST LIEVIN', 'MERCKEGHEM', 'MERICOURT', 'MERIGNIES', 'MERLIMONT', 'MERRIS', 'MERVILLE', 'METEREN', 'METZ EN COUTURE', 'MEURCHIN', 'MILLAM', 'MILLONFOSSE', 'MINGOVAL', 'MOEUVRES', 'MOLINGHEM', 'MONCEAU ST WAAST', 'MONCHAUX SUR ECAILLON', 'MONCHEAUX', 'MONCHEAUX LES FREVENT', 'MONCHECOURT', 'MONCHEL SUR CANCHE', 'MONCHIET', 'MONCHY AU BOIS', 'MONCHY BRETON', 'MONCHY CAYEUX', 'MONCHY LE PREUX', 'MONDICOURT', 'MONS EN BAROEUL', 'MONS EN PEVELE', 'MONT BERNANCHON', 'MONT DE PREMESQUES', 'MONT DES CATS', 'MONT NOIR', 'MONT ST ELOI', 'MONTAY', 'MONTCAVREL', 'MONTENESCOURT', 'MONTIGNY EN CAMBRESIS', 'MONTIGNY EN GOHELLE', 'MONTIGNY EN OSTREVENT', 'MONTRECOURT', 'MONTREUIL', 'MONTS EN TERNOIS', 'MORBECQUE', 'MORCHIES', 'MORINGHEM', 'MORTAGNE DU NORD', 'MORVAL', 'MORY', 'MOUCHIN', 'MOULLE', 'MOURIEZ', 'MOUSTIER EN FAGNE', 'MOUVAUX', 'MOYENNEVILLE', 'MUNCQ NIEURLET', 'NABRINGHEN', 'NAVES', 'NEDON', 'NEDONCHEL', 'NEMPONT ST FIRMIN', 'NESLES', 'NEUF BERQUIN', 'NEUF MESNIL', 'NEUFCHATEL HARDELOT', 'NEULETTE', 'NEUVE CHAPELLE', 'NEUVILLE AU CORNET', 'NEUVILLE BOURJONVAL', 'NEUVILLE EN AVESNOIS', 'NEUVILLE EN FERRAIN', 'NEUVILLE SOUS MONTREUIL', 'NEUVILLE ST REMY', 'NEUVILLE ST VAAST', 'NEUVILLE SUR ESCAUT', 'NEUVILLE VITASSE', 'NEUVILLY', 'NEUVIREUIL', 'NIELLES LES ARDRES', 'NIELLES LES BLEQUIN', 'NIELLES LES CALAIS', 'NIEPPE', 'NIERGNIES', 'NIEURLET', 'NIVELLE', 'NOEUX LES AUXI', 'NOEUX LES MINES', 'NOMAIN', 'NOORDPEENE', 'NORDAUSQUES', 'NOREUIL', 'NORRENT FONTES', 'NORT LEULINGHEM', 'NORTKERQUE', 'NOUVELLE EGLISE', 'NOYELLE VION', 'NOYELLES GODAULT', 'NOYELLES LES HUMIERES', 'NOYELLES LES SECLIN', 'NOYELLES LES VERMELLES', 'NOYELLES SOUS BELLONNE', 'NOYELLES SOUS LENS', 'NOYELLES SUR ESCAUT', 'NOYELLES SUR SAMBRE', 'NOYELLES SUR SELLE', 'NOYELLETTE', 'NUNCQ HAUTECOTE', 'OBIES', 'OBLINGHEM', 'OBRECHIES', 'OCHTEZEELE', 'ODOMEZ', 'OEUF EN TERNOIS', 'OFFEKERQUE', 'OFFIN', 'OFFRETHUN', 'OHAIN', 'OIGNIES', 'OISY', 'OISY LE VERGER', 'ONNAING', 'OOST CAPPEL', 'OPPY', 'ORCHIES', 'ORS', 'ORSINVAL', 'ORVILLE', 'OSTREVILLE', 'OSTRICOURT', 'OUDEZEELE', 'OURTON', 'OUTREAU', 'OUVE WIRQUIN', 'OXELAERE', 'OYE PLAGE', 'PAILLENCOURT', 'PALLUEL', 'PARENTY', 'PAS EN ARTOIS', 'PECQUENCOURT', 'PELVES', 'PENIN', 'PERENCHIES', 'PERNES', 'PERNES LES BOULOGNE', 'PERONNE EN MELANTOIS', 'PETIT FAYT', 'PETITE FORET', 'PETITE SYNTHE', 'PEUPLINGUES', 'PHALEMPIN', 'PIERREMONT', 'PIHEM', 'PIHEN LES GUINES', 'PITGAM', 'PITTEFAUX', 'PLANQUES', 'PLOUVAIN', 'POIX DU NORD', 'POLINCOVE', 'POMMERA', 'POMMEREUIL', 'POMMIER', 'PONT A MARCQ', 'PONT A VENDIN', 'PONT D ARDRES', 'PONT DE BRIQUES ST ETIENN', 'PONT SUR SAMBRE', 'POTELLE', 'PRADELLES', 'PREDEFIN', 'PREMESQUES', 'PRESEAU', 'PRESSY', 'PREURES', 'PREUX AU BOIS', 'PREUX AU SART', 'PRISCHES', 'PRONVILLE', 'PROUVY', 'PROVILLE', 'PROVIN', 'PUISIEUX', 'QUAEDYPRE', 'QUAROUBLE', 'QUEANT', 'QUELMES', 'QUERCAMPS', 'QUERENAING', 'QUERNES', 'QUESNOY SUR DEULE', 'QUESQUES', 'QUESTRECQUES', 'QUIERY LA MOTTE', 'QUIESTEDE', 'QUIEVELON', 'QUIEVRECHAIN', 'QUIEVY', 'QUILEN', 'QUOEUX HAUT MAINIL', 'RACHES', 'RACQUINGHEM', 'RADINGHEM', 'RADINGHEM EN WEPPES', 'RAILLENCOURT STE OLLE', 'RAIMBEAUCOURT', 'RAINSARS', 'RAISMES', 'RAMECOURT', 'RAMILLIES', 'RAMOUSIES', 'RANCHICOURT', 'RANG DU FLIERS', 'RANSART', 'RAUCOURT AU BOIS', 'RAYE SUR AUTHIE', 'REBECQUES', 'REBERGUES', 'REBREUVE RANCHICOURT', 'REBREUVE SUR CANCHE', 'REBREUVIETTE', 'RECLINGHEM', 'RECOURT', 'RECQUES SUR COURSE', 'RECQUES SUR HEM', 'RECQUIGNIES', 'REGNAUVILLE', 'REJET DE BEAULIEU', 'RELY', 'REMILLY WIRQUIN', 'REMY', 'RENESCURE', 'RENTY', 'RETY', 'REUMONT', 'REXPOEDE', 'RIBECOURT LA TOUR', 'RICHEBOURG', 'RIENCOURT LES BAPAUME', 'RIENCOURT LES CAGNICOURT', 'RIEULAY', 'RIEUX EN CAMBRESIS', 'RIMBOVAL', 'RINXENT', 'RIVIERE', 'ROBECQ', 'ROBERSART', 'ROCLINCOURT', 'ROCQUIGNY', 'RODELINGHEM', 'ROELLECOURT', 'ROEULX', 'ROEUX', 'ROLLANCOURT', 'ROMBIES ET MARCHIPONT', 'ROMBLY', 'ROMERIES', 'RONCHIN', 'RONCQ', 'ROOST WARENDIN', 'ROQUETOIRE', 'ROSENDAEL', 'ROSULT', 'ROUBAIX', 'ROUCOURT', 'ROUGEFAY', 'ROUSIES', 'ROUSSENT', 'ROUVIGNIES', 'ROUVROY', 'ROYON', 'RUBROUCK', 'RUESNES', 'RUISSEAUVILLE', 'RUITZ', 'RUMAUCOURT', 'RUMEGIES', 'RUMILLY', 'RUMILLY EN CAMBRESIS', 'RUMINGHEM', 'RUYAULCOURT', 'SACHIN', 'SAILLY AU BOIS', 'SAILLY EN OSTREVENT', 'SAILLY LABOURSE', 'SAILLY LEZ CAMBRAI', 'SAILLY LEZ LANNOY', 'SAILLY SUR LA LYS', 'SAINGHIN EN MELANTOIS', 'SAINGHIN EN WEPPES', 'SAINS DU NORD', 'SAINS EN GOHELLE', 'SAINS LES FRESSIN', 'SAINS LES MARQUION', 'SAINS LES PERNES', 'SALESCHES', 'SALLAUMINES', 'SALOME', 'SALPERWICK', 'SAMEON', 'SAMER', 'SANCOURT', 'SANGATTE', 'SANGHEN', 'SANTES', 'SAPIGNIES', 'SARS ET ROSIERES', 'SARS LE BOIS', 'SARS POTERIES', 'SARTON', 'SASSEGNIES', 'SAUCHY CAUCHY', 'SAUCHY LESTREE', 'SAUDEMONT', 'SAULCHOY', 'SAULTAIN', 'SAULTY', 'SAULZOIR', 'SAVY BERLETTE', 'SEBOURG', 'SECLIN', 'SELLES', 'SELVIGNY', 'SEMERIES', 'SEMOUSIES', 'SEMPY', 'SENINGHEM', 'SENLECQUES', 'SENLIS', 'SEPMERIES', 'SEQUEDIN', 'SERANVILLERS FORENVILLE', 'SERCUS', 'SERICOURT', 'SERQUES', 'SERVINS', 'SETQUES', 'SIBIVILLE', 'SIMENCOURT', 'SIN LE NOBLE', 'SIRACOURT', 'SOCX', 'SOLESMES', 'SOLRE LE CHATEAU', 'SOLRINNES', 'SOMAIN', 'SOMBRIN', 'SOMMAING', 'SORRUS', 'SOUASTRE', 'SOUCHEZ', 'SPYCKER', 'ST AMAND', 'ST AMAND LES EAUX', 'ST ANDRE LEZ LILLE', 'ST AUBERT', 'ST AUBIN', 'ST AUBIN', 'ST AYBERT', 'ST BENIN', 'ST DENOEUX', 'ST ETIENNE AU MONT', 'ST FLORIS', 'ST FOLQUIN', 'ST GEORGES', 'ST GEORGES SUR L AA', 'ST HILAIRE COTTES', 'ST HILAIRE LES CAMBRAI', 'ST HILAIRE SUR HELPE', 'ST INGLEVERT', 'ST JANS CAPPEL', 'ST JOSSE', 'ST LAURENT BLANGY', 'ST LEGER', 'ST LEONARD', 'ST MARTIN AU LAERT', 'ST MARTIN BOULOGNE', 'ST MARTIN CHOQUEL', 'ST MARTIN COJEUL', 'ST MARTIN D HARDINGHEM', 'ST MARTIN RIVIERE', 'ST MARTIN SUR ECAILLON', 'ST MICHEL SOUS BOIS', 'ST MICHEL SUR TERNOISE', 'ST MOMELIN', 'ST NICOLAS', 'ST OMER', 'ST OMER CAPELLE', 'ST PIERRE BROUCK', 'ST POL SUR MER', 'ST POL SUR TERNOISE', 'ST PYTHON', 'ST REMY AU BOIS', 'ST REMY CHAUSSEE', 'ST REMY DU NORD', 'ST SAULVE', 'ST SOUPLET', 'ST SYLVESTRE CAPPEL', 'ST TRICAT', 'ST VAAST EN CAMBRESIS', 'ST VENANT', 'ST WAAST', 'STAPLE', 'STE AUSTREBERTHE', 'STE CATHERINE', 'STE CECILE', 'STE MARIE CAPPEL', 'STE MARIE KERQUE', 'STEENBECQUE', 'STEENE', 'STEENVOORDE', 'STEENWERCK', 'STELLA', 'STRAZEELE', 'SURQUES', 'SUS ST LEGER', 'TAISNIERES EN THIERACHE', 'TAISNIERES SUR HON', 'TANGRY', 'TARDINGHEN', 'TATINGHEM', 'TEMPLEMARS', 'TEMPLEUVE', 'TENEUR', 'TERDEGHEM', 'TERNAS', 'TETEGHEM', 'THELUS', 'THEROUANNE', 'THIANT', 'THIEMBRONNE', 'THIENNES', 'THIEVRES', 'THIVENCELLES', 'THUMERIES', 'THUN L EVEQUE', 'THUN ST AMAND', 'THUN ST MARTIN', 'TIGNY NOYELLE', 'TILLOY LES HERMAVILLE', 'TILLOY LES MOFFLAINES', 'TILLOY LEZ CAMBRAI', 'TILLOY LEZ MARCHIENNES', 'TILLY CAPELLE', 'TILQUES', 'TINCQUES', 'TINGRY', 'TOLLENT', 'TORCY', 'TORTEFONTAINE', 'TORTEQUESNE', 'TOUFFLERS', 'TOURCOING', 'TOURMIGNIES', 'TOURNEHEM SUR LA HEM', 'TRAMECOURT', 'TRELON', 'TREPIED', 'TRESCAULT', 'TRESSIN', 'TRITH ST LEGER', 'TROISVAUX', 'TROISVILLES', 'TUBERSENT', 'UXEM', 'VACQUERIE LE BOUCQ', 'VACQUERIETTE ERQUIERES', 'VALENCIENNES', 'VALHUON', 'VAUDRICOURT', 'VAUDRINGHEM', 'VAULX', 'VAULX VRAUCOURT', 'VELU', 'VENDEGIES AU BOIS', 'VENDEGIES SUR ECAILLON', 'VENDEVILLE', 'VENDIN LE VIEIL', 'VENDIN LES BETHUNE', 'VERCHAIN MAUGRE', 'VERCHIN', 'VERCHOCQ', 'VERLINCTHUN', 'VERLINGHEM', 'VERMELLES', 'VERQUIGNEUL', 'VERQUIN', 'VERTAIN', 'VERTON', 'VICQ', 'VIEIL HESDIN', 'VIEIL MOUTIER', 'VIEILLE CHAPELLE', 'VIEILLE EGLISE', 'VIESLY', 'VIEUX BERQUIN', 'VIEUX CONDE', 'VIEUX MESNIL', 'VIEUX RENG', 'VILLENEUVE D ASCQ', 'VILLEREAU', 'VILLERS AU BOIS', 'VILLERS AU FLOS', 'VILLERS AU TERTRE', 'VILLERS BRULIN', 'VILLERS CHATEL', 'VILLERS EN CAUCHIES', 'VILLERS GUISLAIN', 'VILLERS L HOPITAL', 'VILLERS LES CAGNICOURT', 'VILLERS OUTREAUX', 'VILLERS PLOUICH', 'VILLERS POL', 'VILLERS SIR SIMON', 'VILLERS SIRE NICOLE', 'VIMY', 'VINCLY', 'VIOLAINES', 'VIS EN ARTOIS', 'VITRY EN ARTOIS', 'VOLCKERINCKHOVE', 'VRED', 'WABEN', 'WACQUINGHEN', 'WAHAGNIES', 'WAIL', 'WAILLY', 'WAILLY BEAUCAMP', 'WALINCOURT SELVIGNY', 'WALLERS', 'WALLERS TRELON', 'WALLON CAPPEL', 'WAMBAIX', 'WAMBERCOURT', 'WAMBRECHIES', 'WAMIN', 'WANCOURT', 'WANDIGNIES HAMAGE', 'WANNEHAIN', 'WANQUETIN', 'WARDRECQUES', 'WARGNIES LE GRAND', 'WARGNIES LE PETIT', 'WARHEM', 'WARLAING', 'WARLENCOURT EAUCOURT', 'WARLINCOURT LES PAS', 'WARLUS', 'WARLUZEL', 'WARNETON', 'WASNES AU BAC', 'WASQUEHAL', 'WATTEN', 'WATTIGNIES', 'WATTIGNIES LA VICTOIRE', 'WATTRELOS', 'WAVRANS SUR L AA', 'WAVRANS SUR TERNOISE', 'WAVRECHAIN SOUS DENAIN', 'WAVRECHAIN SOUS FAULX', 'WAVRIN', 'WAZIERS', 'WEMAERS CAPPEL', 'WERVICQ SUD', 'WEST CAPPEL', 'WESTBECOURT', 'WESTREHEM', 'WICQUINGHEM', 'WICRES', 'WIDEHEM', 'WIERRE AU BOIS', 'WIERRE EFFROY', 'WIGNEHIES', 'WILLEMAN', 'WILLEMS', 'WILLENCOURT', 'WILLERVAL', 'WILLIES', 'WIMEREUX', 'WIMILLE', 'WINGLES', 'WINNEZEELE', 'WIRWIGNES', 'WISMES', 'WISQUES', 'WISSANT', 'WITTERNESSE', 'WITTES', 'WIZERNES', 'WORMHOUT', 'WULVERDINGHE', 'WYLDER', 'YTRES', 'ZEGERSCAPPEL', 'ZERMEZEELE', 'ZOTEUX', 'ZOUAFQUES', 'ZUDAUSQUES', 'ZUTKERQUE', 'ZUYDCOOTE', 'ZUYTPEENE');
mv_recipients = mv_recipients.sort();

window.onload = function()
{
	autocompletion(document.getElementById('champ-texte'), 10, findSuggestions);
}

// Fonction renvoyant un tableau de toutes les suggestions commencant par la chaîne de caractères "start"
findSuggestions = function()
{
	var liste = new Array(); // Liste de suggestions
	var start = this.currentInputFieldValue.toUpperCase();
	if (start == "")
		return liste;
	var len = start.length;
	for (var i=0 ; i<mv_recipients.length ; i++)
		if (mv_recipients[i].substr(0, len) == start)
		{
			liste.push(mv_recipients[i]); // Rajoute l'élément à la liste de suggestions
			if (liste.length >= this.MAX_SUGGESTIONS)
				break;
		}
	return liste;
}

// Rajoute une fonction d'autocomplétion au champ "field", proposant
// "max" suggestions au maximum, données par la fonction "findSuggestionsFunction"
autocompletion = function(field, max, findSuggestionsFunction)
{
	// Garde une trace de l'objet
	if (!document.autocompletion)
		document.autocompletion = new Array();
	document.autocompletion.push(field);
	field.autocompletionId = document.autocompletion.length-1;
	// Récupération des paramètres
	field.MAX_SUGGESTIONS = max;
	field.findSuggestions = findSuggestionsFunction;

	// Création et placement de la liste de suggestions
	field.suggestionsDiv = document.getElementById('autocompletion');
	field.setSuggestionsDivSize = setSuggestionsDivSize;
	field.setSuggestionsDivSize();

	// Définitions des attributs
	field.eventKeyCode = null;
	field.currentInputFieldValue = field.value;
	field.oldInputFieldValue = field.value;
	field.suggestionsCache = new Array();
	field.suggestionsCache[""] = "";
	field.selectedSuggestion = -1;
	field.lastKeyCode = -1;

	// Définitions des évènements
	field.onkeydown = autocompletionKeyDownHandler;
	field.onkeyup = autocompletionKeyUpHandler;
	field.onblur = autocompletionBlurHandler;

	// Définitions des méthodes
	field.showSuggestions = showSuggestions;
	field.highlightNewValue = highlightNewValue;
	field.rangeSize = rangeSize;
	field.beforeRangeSize = beforeRangeSize;

	// Boucle pour proposer en permanence de nouvelles suggestions
	field.autocompletionLoop = function()
	{
		if (this.currentInputFieldValue != this.oldInputFieldValue)
		{
			var suggestions = this.suggestionsCache[this.currentInputFieldValue];
			if (suggestions) // La réponse est encore dans le cache
				if (suggestions.length > 0)
					this.showSuggestions(suggestions);
				else
					this.suggestionsDiv.style.visibility = "hidden";
			else
			{
				var liste = this.findSuggestions();
				this.suggestionsCache[this.currentInputFieldValue.toLowerCase()] = liste;
				if (liste.length > 0)
					this.showSuggestions(liste);
				else
					this.suggestionsDiv.style.visibility = "hidden";
			}
		}
		this.oldInputFieldValue = this.currentInputFieldValue;
		setTimeout("document.autocompletion["+this.autocompletionId+"].autocompletionLoop()", 200); // La fonction se redéclenchera dans 200 ms
	}
	setTimeout("document.autocompletion["+field.autocompletionId+"].autocompletionLoop()", 200); // Ne pas utiliser setInterval, qui est asynchrone
}

// Actualise la liste de suggestions
function showSuggestions(liste)
{
	var content = '';
	if (this.lastKeyCode != 8)
		this.selectedSuggestion = 0;
	else
		this.selectedSuggestion = -1;
	for (var f=0 ; f<liste.length ; f++)
		content += '<div' + ((f==this.selectedSuggestion)?' class="selected"':'') + '>' + liste[f] + '</div>';
	this.suggestionsDiv.innerHTML = content;
	for (var i=0 ; i<liste.length ; i++)
	{
		this.suggestionsDiv.childNodes[i].autocompletionField = this;
		this.suggestionsDiv.childNodes[i].index = i;
		this.suggestionsDiv.childNodes[i].onmousedown = autocompletionSuggestionMouseDownHandler;
		this.suggestionsDiv.childNodes[i].onmouseover = autocompletionSuggestionMouseOverHandler;
		this.suggestionsDiv.childNodes[i].onmouseout = autocompletionSuggestionMouseOutHandler;
	}
	this.suggestionsDiv.style.visibility = "visible";

	if ((this.selectedSuggestion != -1) && (liste[0].toLowerCase().indexOf(this.value.toLowerCase()) == 0))
	{
		var pos = this.beforeRangeSize();
		this.value = liste[0];
		if (this.createTextRange)
		{
			var t = this.createTextRange();
			t.moveStart("character", pos);
			t.select();
		}
		else if (this.setSelectionRange)
			this.setSelectionRange(pos, this.value.length);
	}
}

// Handler pour le keydown du champ texte
var autocompletionKeyDownHandler = function(event)
{
	// Accès evenement compatible IE/Firefox
	if (!event && window.event)
		event = window.event;
	// On enregistre la touche ayant déclenché l'évènement
	if (event)
		this.lastKeyCode = event.keyCode;
}

// Handler pour le keyup du champ texte
var autocompletionKeyUpHandler = function(event)
{
	// Accès evenement compatible IE/Firefox
	if (!event && window.event)
		event = window.event;
	var keyCode = event.keyCode;
	switch (keyCode)
	{
		case 38: // "haut"
		if (this.value != "")
			this.highlightNewValue(this.selectedSuggestion - 1);
		break;

		case 40: // "bas"
		if (this.value != "")
			this.highlightNewValue(this.selectedSuggestion + 1);
		break;

		case 8: // "backspace"
		this.currentInputFieldValue = this.value;
		var suggestionsList = this.suggestionsDiv.childNodes;
		for (var i=0 ; i<suggestionsList.length ; i++)
			suggestionsList[i].className = '';
		this.selectedSuggestion = -1;
		break;

		default:
		this.currentInputFieldValue = this.value.substr(0, this.beforeRangeSize());
		break;
	}
}

// Handler pour le blur du champ texte
var autocompletionBlurHandler = function()
{
	this.suggestionsDiv.style.visibility = "hidden";
}

// Handler pour le mousedown de chaque div de suggestion
var autocompletionSuggestionMouseDownHandler = function()
{
	this.autocompletionField.value = this.innerHTML;
}

// Handler pour le mouseover de chaque div de suggestion
var autocompletionSuggestionMouseOverHandler = function()
{
	if ((this.autocompletionField.selectedSuggestion != -1) && (this.index != this.autocompletionField.selectedSuggestion))
		this.autocompletionField.suggestionsDiv.childNodes[this.autocompletionField.selectedSuggestion].className = '';
	this.className = 'selected';
	this.autocompletionField.selectedSuggestion = this.index;
}

// Handler pour le mouseout de chaque div de suggestion
var autocompletionSuggestionMouseOutHandler = function()
{
	this.className = '';
}

// Sélectionne une nouvelle suggestion dans la liste
function highlightNewValue(index)
{
	var suggestionsList = this.suggestionsDiv.childNodes;
	var nbSuggestions = suggestionsList.length;
	if (!suggestionsList || (nbSuggestions <= 0) || ((nbSuggestions == 1) && (this.suggestionsDiv.innerHTML.indexOf('<') == -1)))
		return;
	if (index >= nbSuggestions)
		index = nbSuggestions - 1;
	if ((this.selectedSuggestion != -1) && (index != this.selectedSuggestion))
		suggestionsList[this.selectedSuggestion].className = '';
	if (index < 0)
	{
		this.value = this.oldInputFieldValue;
		this.currentInputFieldValue = this.oldInputFieldValue;
		this.selectedSuggestion = -1;
		return;
	}
	this.selectedSuggestion = index;
	suggestionsList[index].className = 'selected';
	this.currentInputFieldValue = this.oldInputFieldValue;
	this.value = suggestionsList[index].innerHTML;
	if (this.createTextRange)
	{
		var t = this.createTextRange();
		t.moveStart("character", this.currentInputFieldValue.length);
		t.select();
	}
	else if (this.setSelectionRange)
		this.setSelectionRange(this.currentInputFieldValue.length, this.value.length);
}

// Taille de la sélection dans le champ input
function rangeSize()
{
	var size = 0;
	if (this.createTextRange)
		size = document.selection.createRange().duplicate().text.length;
	else if (this.setSelectionRange)
		size = this.selectionEnd - this.selectionStart;
	return size;
}

// Taille du champ input non sélectionné
function beforeRangeSize()
{
	return this.value.length - this.rangeSize();
}

// Défini la position et la taille de la liste de suggestions
function setSuggestionsDivSize()
{
	var absoluteOffsetLeft = 0, absoluteOffsetTop = 0;
	var obj = this;
	while (obj)
	{
		absoluteOffsetLeft += obj.offsetLeft;
		absoluteOffsetTop += obj.offsetTop;
		obj = obj.offsetParent;
	}
	this.suggestionsDiv.style.left = absoluteOffsetLeft + "px";
	this.suggestionsDiv.style.top = (absoluteOffsetTop + this.offsetHeight - 1) + "px";
	this.suggestionsDiv.style.width = this.offsetWidth-2 + "px";
}
