/****************************************************************************************
 VFORM est un script de contrôle de formulaire
 source : http://smitst.homelinux.com
 Fonction permettant de controler les fomulaires selon les codes pays 
****************************************************************************************/

//***********************************************
// Format et retour des expression réguliére selon le pays  ....
//************************************************

// Retourne la string regexp 'téléphone fixe' en fonction du code pays
// Si pas de pays, numéro international
function formatTelephone(pays){
    var expr='';

    //si le pays n'est pas défini 
    if(typeof(pays) == 'undefined'){
        var pays = navigator.language; // on prend la langue du navigateur
    }
    var pays = pays.toLowerCase(); // si majuscule on le met en petit ....
        
    switch (pays){
        case 'ad' :
            var expr = "^([+]376[ ]|[+]376)?[0-9]{6,9}$";
            break;
        case 'ae' :
            var expr = "^([+]31[ ]|[+]31|0)[0-9]{1,2}[ \.\-]?[0-9]{7,9}$";
            break;
        case 'af' :
            var expr = "^([+]93[ ]|[+]93|0)[0-9]{2}[ \.\-]?[0-9]{6}$";
            break;
        case 'ag' :
            var expr = "^([+]1[ ]|[+]1)?268[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'ai' :
            var expr = "^([+]1[ ]|[+]1)?264[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'al' :
            var expr = "^([+]355[ ]|[+]355|0)[0-9]{1,3}[ \.\-]?[0-9]{4,6}?$";
            break;
        case 'am' :
            var expr = "^([+]374[ ]|[+]374|0)[0-9]{2,5}[ \.\-]?[0-9]{3,6}$";
            break;
        case 'an' :
            var expr = "^([+]599[ ]|[+]599|0)[0-9]{0,1}[ \.\-]?[0-9]{7}$";
            break;
        case 'ao' :
            var expr = "^([+]244[ ]|[+]244|0)[0-9]{1,2}[ \.\-]?[0-9]{5,8}$";
            break;
        case 'ar' :
            var expr = "^([+]54[ ]|[+]54|0)[0-9]{2,4}[ \.\-]?[0-9]{5,8}$";
            break;
        case 'as' :
            var expr = "^([+]1[ ]|[+]1)?684[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'at' :
            var expr = "^([+]43[ ]|[+]43|0)[0-9]{1,4}[ \.\-]?[0-9]{3,12}$";
            break;
        case 'au' :
            var expr = "^([+]61[ ]|[+]61|0)[0-9]{1,2}[ \.\-]?[0-9]{5,15}$";
            break;
        case 'aw' :
            var expr = "^([+]297[ ]|[+]297)?[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'ax' :
            var expr = "^([+]358[ ]|[+]358)?18[ \.\-]??[0-9]{4}([0-9]{6})?$";
            break;
        case 'az' :
            var expr = "^([+]994[ ]|[+]994|0)[0-9]{2,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ba' :
            var expr = "^([+]387[ ]|[+]387|0)[0-9]{2}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'bb' :
            var expr = "^([+]1[ ]|[+]1)?246[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'bd' :
            var expr = "^([+]880[ ]|[+]880|0)[0-9]{1,4}[ \.\-]?[0-9]{3,7}$";
            break;
        case 'be' :
            var expr = "^([+]32[ ]|[+]32|0)[0-9]{1,2}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'bf' :
            var expr = "^([+]226[ ]|[+]226)?[0-9]{8}$";
            break;
        case 'bg' :
            var expr = "^([+]359[ ]|[+]359|0)[0-9]{1,5}[ \.\-]?[0-9]{3,7}$";
            break;
        case 'bh' :
            var expr = "^([+]973[ ]|[+]973)?[0-9]{6,8}$";
            break;
        case 'bi' :
            var expr = "^([+]257[ ]|[+]257)?[0-9]{7}$";
            break;
        case 'bj' :
            var expr = "^([+]229[ ]|[+]229)?[0-9]{8}$";
            break;
        case 'bm' :
            var expr = "^([+]1[ ]|[+]1)?441[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'bn' :
            var expr = "^([+]673[ ]|[+]673)?[0-9]{6,7}$";
            break;
        case 'bo' :
            var expr = "^([+]49[ ]|[+]49|0)[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'br' :
            var expr = "^([+]55[ ]|[+]55|0)[0-9]{2}[ \.\-]?[0-9]{8}$";
            break;
        case 'bs' :
            var expr = "^([+]1[ ]|[+]1)?242[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'bt' :
            var expr = "^([+]975[ ]|[+]975|0)?[0-9]{1}[ \.\-]?[0-9]{6}$";
            break;
        case 'bw' :
            var expr = "^([+]267[ ]|[+]267)?[0-9]{6,7}$";
            break;
        case 'by' :
            var expr = "^([+]375[ ]|[+]375|8)[0-9]{2,4}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'bz' :
            var expr = "^([+]501[ ]|[+]501)?[0-9]{7}$";
            break;
        case 'ca' :
            var expr = "^([+]1[ ]|[+]1)?[0-9]{3}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'cd' :
            var expr = "^([+]243[ ]|[+]243|0)[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'cf' :
            var expr = "^([+]236[ ]|[+]236)?[0-9]{6}$";
            break;
        case 'cg' :
            var expr = "^([+]242[ ]|[+]242)?[0-9]{7}$";
            break;
        case 'ch' :
            var expr = "^([+]41[ ]|[+]41|0)[0-9]{2,3}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'ci' :
            var expr = "^([+]225[ ]|[+]225)?[0-9]{8}$";
            break;
        case 'ck' :
            var expr = "^([+]682[ ]|[+]682)?[0-9]{5}$";
            break;
        case 'cl' :
            var expr = "^([+]56[ ]|[+]56|0)[0-9]{1,2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'cm' :
            var expr = "^([+]237[ ]|[+]237)?[0-9]{7}$";
            break;
        case 'cn' :
            var expr = "^([+]86[ ]|[+]86|0)[0-9]{2,4}[ \.\-]?[0-9]{4,8}$";
            break;
        case 'co' :
            var expr = "^([+]57[ ]|[+]57|09)[0-9]{1,5}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'cr' :
            var expr = "^([+]506[ ]|[+]506)?[0-9]{7}$";
            break;
        case 'cs' :
            var expr = "^([+]381[ ]|[+]381|0)[0-9]{2,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'cu' :
            var expr = "^([+]53[ ]|[+]53|0)[0-9]{1,4}[ \.\-]?[0-9]{4,7}$";
            break;
        case 'cv' :
            var expr = "^([+]238[ ]|[+]238)?[0-9]{7}$";
            break;
        case 'cz' :
            var expr = "^([+]420[ ]|[+]420)?[0-9]{3}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}$";
            break;
        case 'cy' :
            var expr = "^([+]357[ ]|[+]357)?[0-9]{1,2}[ \.\-]?[0-9]{4,6}$";
            break;
        case 'de' :
            var expr = "^([+]49[ ]|[+]49|0)[0-9]{2,5}[ \.\-]?[0-9]{3,9}$";
            break;
        case 'dj' :
            var expr = "^([+]253[ ]|[+]253)?[0-9]{6}$";
            break;
        case 'dk' :
            var expr = "^([+]45[ ]|[+]45)?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'do' :
            var expr = "^([+]1[ ]|[+]1)?767[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'dz' :
            var expr = "^([+]213[ ]|[+]213|0)[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'ec' :
            var expr = "^([+]49[ ]|[+]49|0)[0-9]{1}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'ee' :
            var expr = "^([+]372[ ]|[+]372)?[0-9]{7,8}$";
            break;
        case 'eg' :
            var expr = "^([+]20[ ]|[+]20|0)[0-9]{1,2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'er' :
            var expr = "^([+]291[ ]|[+]291|0)[0-9]{1}[ \.\-]?[0-9]{6}$";
            break;
        case 'es' :
            var expr = "^([+]34[ ]|[+]34)?[0-9]{9}$";
            break;
        case 'et' :
            var expr = "^([+]251[ ]|[+]251|0)[0-9]{2}[ \.\-]?[0-9]{7}$";
            break;
        case 'fi' :
            var expr = "^([+]358[ ]|[+]358|0)[0-9]{1,2}[ \.\-]?[0-9]{4,9}$";
            break;
        case 'fj' :
            var expr = "^([+]679[ ]|[+]679)?[0-9]{7}$";
            break;
        case 'fk' :
            var expr = "^([+]500[ ]|[+]500)?[0-9]{5}$";
            break;
        case 'fm' :
            var expr = "^([+]691[ ]|[+]691|1)[0-9]{7}$";
            break;
        case 'fo' :
            var expr = "^([+]298[ ]|[+]298)?[0-9]{6}$";
            break;
        case 'fr' :
            var expr = "^([+]33[ ]|[+]33|0)[1-6,8-9]{1}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'ga' :
            var expr = "^([+]241[ ]|[+]241)?[0-9]{6}$";
            break;
        case 'gb' :
            var expr = "^([+]44[ ]|[+]44|0)[0-9]{2,6}[ \.\-]?[0-9]{3,8}$";
            break;
        case 'gd' :
            var expr = "^([+]1[ ]|[+]1)?473[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'ge' :
            var expr = "^([+]995[ ]|[+]995|8)[0-9]{2,3}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'gf' :
            var expr = "^([+]594[ ]594|0594)[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}$";
            break;
        case 'gh' :
            var expr = "^([+]233[ ]|[+]233|0)[0-9]{2,3}[ \.\-]?[0-9]{3,6}$";
            break;
        case 'gi' :
            var expr = "^([+]350[ ]|[+]350)?[0-9]{4,8}$";
            break;
        case 'gl' :
            var expr = "^([+]299[ ]|[+]299)?[0-9]{6}$";
            break;
        case 'gm' :
            var expr = "^([+]220[ ]|[+]220)?[0-9]{7}$";
            break;
        case 'gn' :
            var expr = "^([+]224[ ]|[+]224)?[0-9]{6}$";
            break;
        case 'gp' :
            var expr = "^([+]590[ ]590|[+]590|0590)[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}$";
            break;
        case 'gq' :
            var expr = "^([+]240[ ]|[+]240)?[0-9]{0,1}[ \.\-]?[0-9]{6}$";
            break;
        case 'gr' :
            var expr = "^([+]30[ ]|[+]30|0)[0-9]{1,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'gt' :
            var expr = "^([+]502[ ]|[+]502)?[0-9]{7,8}$";
            break;
        case 'gu' :
            var expr = "^([+]1[ ]|[+]1)?671[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'gw' :
            var expr = "^([+]245[ ]|[+]245)?[0-9]{6}$";
            break;
        case 'gy' :
            var expr = "^([+]591[ ]|[+]591)?[0-9]{1}[ \.\-]?[0-9]{5}$";
            break;
        case 'hk' :
            var expr = "^([+]852[ ]|[+]852)?[0-9]{8}$";
            break;
        case 'hn' :
            var expr = "^([+]504[ ]|[+]504)?[0-9]{7}$";
            break;
        case 'hr' :
            var expr = "^([+]385[ ]|[+]385|0)[0-9]{1,2}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ht' :
            var expr = "^([+]509[ ]|[+]509)?[0-9]{7}$";
            break;
        case 'hu' :
            var expr = "^([+]36[ ]|[+]36|06)?[0-9]{1,2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'id' :
            var expr = "^([+]62[ ]|[+]62|0)[0-9]{1,4}[ \.\-]?[0-9]{5,11}$";
            break;
        case 'ie' :
            var expr = "^([+]353[ ]|[+]353|0)[0-9]{1,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'il' :
            var expr = "^([+]972[ ]|[+]972|0)[0-9]{1,2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'in' :
            var expr = "^([+]91[ ]|[+]91|0)[0-9]{2,7}[ \.\-]?[0-9]{4,8}$";
            break;
        case 'iq' :
            var expr = "^([+]964[ ]|[+]964|0)[0-9]{1,2}[ \.\-]?[0-9]{4,9}$";
            break;
        case 'ir' :
            var expr = "^([+]97[ ]|[+]97|0)[0-9]{3}[ \.\-]?[0-9]{7}$";
            break;
        case 'is' :
            var expr = "^([+]354[ ]|[+]354)?[0-9]{7,9}$";
            break;
        case 'it' :
            var expr = "^([+]39[ ]|[+]39)?[0-9]{1,3}[ \.\-]?[0-9]{5,8}$";
            break;
        case 'jm' :
            var expr = "^([+]1[ ]|[+]1)?876[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'jo' :
            var expr = "^([+]962[ ]|[+]962|0)[0-9]{1}[ \.\-]?[0-9]{7,8}$";
            break;
        case 'jp' :
            var expr = "^([+]81[ ]|[+]81|0)[0-9]{1,5}[ \.\-]?[0-9]{4,8}$";
            break;
        case 'ke' :
            var expr = "^([+]254[ ]|[+]254|0)[0-9]{1,3}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'kg' :
            var expr = "^([+]996[ ]|[+]996|0)[0-9]{3,4}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'kh' :
            var expr = "^([+]855[ ]|[+]855|0)[0-9]{2}[ \.\-]?[0-9]{6}$";
            break;
        case 'ki' :
            var expr = "^([+]686[ ]|[+]686)?[0-9]{5}$";
            break;
        case 'km' :
            var expr = "^([+]262[ ]|[+]262|[+]269[ ]|[+]269)?[0-9]{6}$";
            break;
        case 'kn' :
            var expr = "^([+]1[ ]|[+]1)?869[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'kp' :
            var expr = "^([+]82[ ]|[+]82|0)[0-9]{1,2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'kr' :
            var expr = "^([+]850[ ]|[+]850|0)?[0-9]{1,2}[ \.\-]?[0-9]{7}$";
            break;
        case 'ky' :
            var expr = "^([+]1[ ]|[+]1)?345[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'kw' :
            var expr = "^([+]965[ ]|[+]965)?[0-9]{7}$";
            break;
        case 'kz' :
            var expr = "^([+]7[ ]|[+]7|8)[0-9]{3}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'la' :
            var expr = "^([+]856[ ]|[+]856|0)[0-9]{2}[ \.\-]?[0-9]{6}$";
            break;
        case 'lb' :
            var expr = "^([+]961[ ]|[+]961|0)[0-9]{1,2}[ \.\-]?[0-9]{6}$";
            break;
        case 'lc' :
            var expr = "^([+]1[ ]|[+]1)?758[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'li' :
            var expr = "^([+]423[ ]|[+]423)?[0-9]{7}$";
            break;
        case 'lk' :
            var expr = "^([+]94[ ]|[+]94|0)[0-9]{1,2}[ \.\-]?[0-9]{4,6}$";
            break;
        case 'lr' :
            var expr = "^([+]231[ ]|[+]231)?[0-9]{6}$";
            break;
        case 'ls' :
            var expr = "^([+]266[ ]|[+]266)?[0-9]{8}$";
            break;
        case 'lt' :
            var expr = "^([+]370[ ]|[+]370|0|8)[0-9]{1,2}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'lu' :
            var expr = "^([+]352[ ]|[+]352)?[0-9]{5,11}$";
            break;
        case 'lv' :
            var expr = "^([+]371[ ]|[+]371|8)?[0-9]{0,2}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ly' :
            var expr = "^([+]218[ ]|[+]218|0)[0-9]{2,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ma' :
            var expr = "^([+]212[ ]|[+]212|0)[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'mc' :
            var expr = "^([+]377[ ]|[+]377)?[0-9]{8,9}$";
            break;
        case 'md' :
            var expr = "^([+]373[ ]|[+]373|0)[0-9]{2,3}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'me' :
            var expr = "^([+]382[ ]|[+]382|0)[0-9]{2,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'mg' :
            var expr = "^([+]261[ ]|[+]261)?([0-9]{2})?[0-9]{7}$";
            break;
        case 'mh' :
            var expr = "^([+]692[ ]|[+]692)?[1]{0,1}[ \.\-]?[0-9]{7}$";
            break;
        case 'mk' :
            var expr = "^([+]389[ ]|[+]389|0)[0-9]{1,2}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ml' :
            var expr = "^([+]223[ ]|[+]223)?[0-9]{7}$";
            break;
        case 'mm' :
            var expr = "^([+]95[ ]|[+]95|0)?[0-9]{1,2}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'mn' :
            var expr = "^([+]976[ ]|[+]976|01|02)[0-9]{1,4}[ \.\-]?[0-9]{4,6}$";
            break;
        case 'mo' :
            var expr = "^([+]853[ ]|[+]853)?[0-9]{6,7}$";
            break;
        case 'mp' :
            var expr = "^([+]1[ ]|[+]1)?670[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'mq' :
            var expr = "^([+]596[ ]596|0596)[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}$";
            break;
        case 'mr' :
            var expr = "^([+]222[ ]|[+]222)?[0-9]{7}$";
            break;
        case 'ms' :
            var expr = "^([+]1[ ]|[+]1)?664[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'mt' :
            var expr = "^([+]356[ ]|[+]356)?[0-9]{2}[ \.\-][0-9]{3}[ \.\-][0-9]{3}$";
            break;
        case 'mu' :
            var expr = "^([+]230[ ]|[+]230)?[0-9]{7}$";
            break;
        case 'mv' :
            var expr = "^([+]960[ ]|[+]960)?[0-9]{7}$";
            break;
        case 'mw' :
            var expr = "^([+]265[ ]|[+]265)?[0-9]{8}$";
            break;
        case 'mx' :
            var expr = "^([+]52[ ]|[+]52|01|02)[0-9]{1,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'my' :
            var expr = "^([+]60[ ]|[+]60|0)[0-9]{1,2}[ \.\-]?[0-9]{6,8}$";
            break;
        case 'mz' :
            var expr = "^([+]258[ ]|[+]258)?[0-9]{1,2}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'na' :
            var expr = "^([+]264[ ]|[+]264|0)[0-9]{2,4}[ \.\-]?[0-9]{2,6}$";
            break;
        case 'nc' :
            var expr = "^([+]687[ ]|[+]687)?[0-9]{6}$";
            break;
        case 'ne' :
            var expr = "^([+]227[ ]|[+]227)?[0-9]{6}$";
            break;
        case 'ng' :
            var expr = "^([+]233[ ]|[+]233|0)[0-9]{1,2}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ni' :
            var expr = "^([+]505[ ]|[+]505)?[0-9]{7}$";
            break;
        case 'nl' :
            var expr = "^([+]31[ ]|[+]31|0)[0-9]{2,3}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'np' :
            var expr = "^([+]977[ ]|[+]977|0)[0-9]{1,2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'nr' :
            var expr = "^([+]674[ ]|[+]674)?[0-9]{7}$";
            break;
        case 'nu' :
            var expr = "^([+]683[ ]|[+]683)?[0-9]{4}$";
            break;
        case 'pa' :
            var expr = "^([+]507[ ]|[+]507)?[0-9]{7}$";
            break;
        case 'pf' :
            var expr = "^([+]689[ ]|[+]689)?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'pr' :
            var expr = "^([+]1[ ]|[+]1)?[787|939][ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'nf' :
        case 'pn' :
            var expr = "^([+]672[ ]|[+]672|0)[0-9]{1,2}[ \.\-]?[0-9]{3,5}$";
            break;
        case 'nl' :
            var expr = "^([+]31[ ]|[+]31|0)[0-9]{2}[ \.\-]?[0-9]{7}$";
            break;
        case 'no' :
            var expr = "^([+]47[ ]|[+]47)?[0-9]{8}$";
            break;
        case 'nz' :
            var expr = "^([+]64[ ]|[+]64|0)[0-9]{1,2}[ \.\-]?[0-9]{6,8}$";
            break;
        case 'om' :
            var expr = "^([+]968[ ]|[+]968)?[0-9]{6,8}$";
            break;
        case 'pe' :
            var expr = "^([+]51[ ]|[+]51|0)[0-9]{1,2}[ \.\-]?[0-9]{6,8}$";
            break;
        case 'pg' :
            var expr = "^([+]675[ ]|[+]675)?[0-9]{7}$";
            break;
        case 'ph' :
            var expr = "^([+]63[ ]|[+]63|0)[0-9]{1,4}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'pk' :
            var expr = "^([+]92[ ]|[+]92|0)[0-9]{2,5}[ \.\-]?[0-9]{4,7}$";
            break;
        case 'pl' :
            var expr = "^([+]48[ ]|[+]48|0)[0-9]{2}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'pm' :
            var expr = "^([+]508[ ]|[+]508)?[0-9]{6}$";
            break;
        case 'ps' :
            var expr = "^([+]970[ ]|[+]970|0)[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'pt' :
            var expr = "^([+]351[ ]|[+]351)?[0-9]{1,2}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'pw' :
            var expr = "^([+]680[ ]|[+]680)?[0-9]{7}$";
            break;
        case 'py' :
            var expr = "^([+]595[ ]|[+]595|0)[0-9]{2,4}[ \.\-]?[0-9]{3,7}$";
            break;
        case 'qa' :
            var expr = "^([+]974[ ]|[+]974)?[0-9]{6}$";
            break;
        case 'ro' :
            var expr = "^([+]40[ ]|[+]40|0)[0-9]{1,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ru' :
            var expr = "^([+]7[ ]|[+]7|8)[0-9]{3,5}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'rw' :
            var expr = "^([+]250[ ]|[+]250)?[0-9]{5,8}$";
            break;
        case 'sa' :
            var expr = "^([+]966[ ]|[+]966|0)[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'sc' :
            var expr = "^([+]248[ ]|[+]248)?[0-9]{6}$";
            break;
        case 'sd' :
            var expr = "^([+]249[ ]|[+]249|0)[0-9]{2,3}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'sk' :
            var expr = "^([+]421[ ]|[+]421|0)[0-9]{1,2}[ \.\-]?[0-9]{7,8}$";
            break;
        case 're' :
            var expr = "^([+]262[ ]262|0262)[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}$";
            break;
        case 'sb' :
            var expr = "^([+]677[ ]|[+]677)?[0-9]{5}$";
            break;
        case 'se' :
            var expr = "^([+]46[ ]|[+]46|0)[0-9]{1,3}[ \.\-]?[0-9]{5,8}$";
            break;
        case 'sg' :
            var expr = "^([+]65[ ]|[+]65)?[0-9]{7,8}$";
            break;
        case 'sh' :
            var expr = "^([+]290[ ]|[+]290)?[0-9]{4}$";
            break;
        case 'si' :
            var expr = "^([+]386[ ]|[+]386|0)[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'sl' :
            var expr = "^([+]232[ ]|[+]232|0)[0-9]{2}[ \.\-]?[0-9]{6}$";
            break;
        case 'sm' :
            var expr = "^([+]378[ ]|[+]378)?[0-9]{10,12}$";
            break;
        case 'sn' :
            var expr = "^([+]221[ ]|[+]221)?[0-9]{7}$";
            break;
        case 'so' :
            var expr = "^([+]252[ ]|[+]252)?[0-9]{7}$";
            break;
        case 'sr' :
            var expr = "^([+]597[ ]|[+]597)?[0-9]{6}$";
            break;
        case 'st' :
            var expr = "^([+]239[ ]|[+]239)?[0-9]{6}$";
            break;
        case 'sv' :
            var expr = "^([+]503[ ]|[+]503)?[0-9]{7}$";
            break;
        case 'sy' :
            var expr = "^([+]963[ ]|[+]963|0)[0-9]{2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'sz' :
            var expr = "^([+]268[ ]|[+]268|0)[0-9]{7}$";
            break;
        case 'tc' :
            var expr = "^([+]1[ ]|[+]1)?649[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'td' :
            var expr = "^([+]235[ ]|[+]235)?[0-9]{6}$";
            break;
        case 'th' :
            var expr = "^([+]66[ ]|[+]66|0)[0-9]{1,3}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'tg' :
            var expr = "^([+]228[ ]|[+]228)?[0-9]{7}$";
            break;
        case 'tj' :
            var expr = "^([+]998[ ]|[+]998|8)[0-9]{2,4}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'tk' :
            var expr = "^([+]690[ ]|[+]690)?[0-9]{1}[ \.\-]?[0-9]{3}$";
            break;
        case 'tl' :
            var expr = "^([+]670[ ]|[+]670)?[0-9]{7}$";
            break;
        case 'tm' :
            var expr = "^([+]993[ ]|[+]993|8)[0-9]{2,3}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'tn' :
            var expr = "^([+]216[ ]|[+]216|0)[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'to' :
            var expr = "^([+]676[ ]|[+]676)?[0-9]{7}$";
            break;
        case 'tr' :
            var expr = "^([+]90[ ]|[+]90|0)[0-9]{3}[ \.\-]?[0-9]{7}$";
            break;
        case 'tt' :
            var expr = "^([+]1[ ]|[+]1)?868[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'tv' :
            var expr = "^([+]688[ ]|[+]688)?[0-9]{5}$";
            break;
        case 'tw' :
            var expr = "^([+]886[ ]|[+]886|0)[0-9]{1,2}[ \.\-]?[0-9]{6,8}$";
            break;
        case 'tz' :
            var expr = "^([+]255[ ]|[+]255|0)[0-9]{2}[ \.\-]?[0-9]{7}$";
            break;
        case 'ua' :
            var expr = "^([+]380[ ]|[+]380|8)[0-9]{2,4}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ug' :
            var expr = "^([+]256[ ]|[+]256|0)[0-9]{2,3}[ \.\-]?[0-9]{4,7}$";
            break;
        case 'us' :
            var expr = "^([+]1[ ]|[+]1)?[0-9]{3}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            // var expr = "^([+]1[ ])?[0-9]{3}[ \.\-]?(([0-9]{3}[ \.\-]?[0-9]{4})|[a-zA-Z]{7})$";
            break;
        case 'uy' :
            var expr = "^([+]598[ ]|[+]598|0)[0-9]{1,4}[ \.\-]?[0-9]{4,6}$";
            break;
        case 'uz' :
            var expr = "^([+]998[ ]|[+]998|8)[0-9]{2}[ \.\-]?[0-9]{7}$";
            break;
        case 'vc' :
            var expr = "^([+]1[ ]|[+]1)?784[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 've' :
            var expr = "^([+]58[ ]|[+]58|0)[0-9]{3}[ \.\-]?[0-9]{7}$";
            break;
        case 'vg' :
            var expr = "^([+]1[ ]|[+]1)?284[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'vi' :
            var expr = "^([+]1[ ]|[+]1)?340[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'vn' :
            var expr = "^([+]84[ ]|[+]84|0)[0-9]{1,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'vu' :
            var expr = "^([+]678[ ]|[+]678)?[0-9]{5}$";
            break;
        case 'wf' :
            var expr = "^([+]681[ ]|[+]681)?[0-9]{6}$";
            break;
        case 'ws' :
            var expr = "^([+]685[ ]|[+]685)?[0-9]{6,7}$";
            break;
        case 'ye' :
            var expr = "^([+]967[ ]|[+]967|0)[0-9]{1,2}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'yt' :
            var expr = "^([+]262[ ]269|0269)[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}$";
            break;
        case 'za' :
            var expr = "^([+]27[ ]|[+]27|0)[0-9]{2,5}[ \.\-]?[0-9]{3,7}$";
            break;
        case 'zm' :
            var expr = "^([+]260[ ]|[+]260|0)[0-9]{1,2}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'zw' :
            var expr = "^([+]263[ ]|[+]263|0)[0-9]{1,4}[ \.\-]?[0-9]{3,8}$";
            break;
        default :
            var expr = "^([+][0-9]{2,3}[ ])?[0-9]{6,11}$";
            break;
    }
    
    return expr;
}


// Retourne la string regexp 'téléphone portable' en fonction du code pays
// Si pas de pays, numéro international
function formatPortable(pays){
    var expr='';
    
    //si le pays n'est pas défini 
    if(typeof(pays) == 'undefined'){
        var pays = navigator.language; // on prend la langue du navigateur
    }
    
    var pays = pays.toLowerCase();

    switch (pays){
        case 'ad' :
            var expr = "^([+]376[ ]|[+]376)?[0-9]{6,9}$";
            break;
        case 'ae' :
            var expr = "^([+]31[ ]|[+]31|0)[0-9]{1,2}[ \.\-]?[0-9]{7,9}$";
            break;
        case 'af' :
            var expr = "^([+]93[ ]|[+]93|0)[0-9]{2}[ \.\-]?[0-9]{6}$";
            break;
        case 'ag' :
            var expr = "^([+]1[ ]|[+]1)?268[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'ai' :
            var expr = "^([+]1[ ]|[+]1)?264[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'al' :
            var expr = "^([+]355[ ]|[+]355|0)[0-9]{1,3}[ \.\-]?[0-9]{4,6}?$";
            break;
        case 'am' :
            var expr = "^([+]374[ ]|[+]374|0)[0-9]{2,5}[ \.\-]?[0-9]{3,6}$";
            break;
        case 'an' :
            var expr = "^([+]599[ ]|[+]599|0)[0-9]{0,1}[ \.\-]?[0-9]{7}$";
            break;
        case 'ao' :
            var expr = "^([+]244[ ]|[+]244|0)[0-9]{1,2}[ \.\-]?[0-9]{5,8}$";
            break;
        case 'ar' :
            var expr = "^([+]54[ ]|[+]54|0)[0-9]{2,4}[ \.\-]?[0-9]{5,8}$";
            break;
        case 'as' :
            var expr = "^([+]1[ ]|[+]1)?684[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'at' :
            var expr = "^([+]43[ ]|[+]43|0)[0-9]{1,4}[ \.\-]?[0-9]{3,12}$";
            break;
        case 'au' :
            var expr = "^([+]61[ ]|[+]61|0)[0-9]{1,2}[ \.\-]?[0-9]{5,15}$";
            break;
        case 'aw' :
            var expr = "^([+]297[ ]|[+]297)?[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'ax' :
            var expr = "^([+]358[ ]|[+]358)?18[ \.\-]??[0-9]{4}([0-9]{6})?$";
            break;
        case 'az' :
            var expr = "^([+]994[ ]|[+]994|0)[0-9]{2,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ba' :
            var expr = "^([+]387[ ]|[+]387|0)[0-9]{2}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'bb' :
            var expr = "^([+]1[ ]|[+]1)?246[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'bd' :
            var expr = "^([+]880[ ]|[+]880|0)[0-9]{1,4}[ \.\-]?[0-9]{3,7}$";
            break;
        case 'be' :
            var expr = "^([+]32[ ]|[+]32|0)[0-9]{1,2}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'bf' :
            var expr = "^([+]226[ ]|[+]226)?[0-9]{8}$";
            break;
        case 'bg' :
            var expr = "^([+]359[ ]|[+]359|0)[0-9]{1,5}[ \.\-]?[0-9]{3,7}$";
            break;
        case 'bh' :
            var expr = "^([+]973[ ]|[+]973)?[0-9]{6,8}$";
            break;
        case 'bi' :
            var expr = "^([+]257[ ]|[+]257)?[0-9]{7}$";
            break;
        case 'bj' :
            var expr = "^([+]229[ ]|[+]229)?[0-9]{8}$";
            break;
        case 'bm' :
            var expr = "^([+]1[ ]|[+]1)?441[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'bn' :
            var expr = "^([+]673[ ]|[+]673)?[0-9]{6,7}$";
            break;
        case 'bo' :
            var expr = "^([+]49[ ]|[+]49|0)[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'br' :
            var expr = "^([+]55[ ]|[+]55|0)[0-9]{2}[ \.\-]?[0-9]{8}$";
            break;
        case 'bs' :
            var expr = "^([+]1[ ]|[+]1)?242[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'bt' :
            var expr = "^([+]975[ ]|[+]975|0)?[0-9]{1}[ \.\-]?[0-9]{6}$";
            break;
        case 'bw' :
            var expr = "^([+]267[ ]|[+]267)?[0-9]{6,7}$";
            break;
        case 'by' :
            var expr = "^([+]375[ ]|[+]375|8)[0-9]{2,4}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'bz' :
            var expr = "^([+]501[ ]|[+]501)?[0-9]{7}$";
            break;
        case 'ca' :
            var expr = "^([+]1[ ]|[+]1)?[0-9]{3}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'cd' :
            var expr = "^([+]243[ ]|[+]243|0)[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'cf' :
            var expr = "^([+]236[ ]|[+]236)?[0-9]{6}$";
            break;
        case 'cg' :
            var expr = "^([+]242[ ]|[+]242)?[0-9]{7}$";
            break;
        case 'ch' :
            var expr = "^([+]41[ ]|[+]41|0)[0-9]{2,3}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'ci' :
            var expr = "^([+]225[ ]|[+]225)?[0-9]{8}$";
            break;
        case 'ck' :
            var expr = "^([+]682[ ]|[+]682)?[0-9]{5}$";
            break;
        case 'cl' :
            var expr = "^([+]56[ ]|0|[+]56)[0-9]{1,2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'cm' :
            var expr = "^([+]237[ ]|[+]237)?[0-9]{7}$";
            break;
        case 'cn' :
            var expr = "^([+]86[ ]|[+]86|0)[0-9]{2,4}[ \.\-]?[0-9]{4,8}$";
            break;
        case 'co' :
            var expr = "^([+]57[ ]|[+]57|09)[0-9]{1,5}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'cr' :
            var expr = "^([+]506[ ]|[+]506)?[0-9]{7}$";
            break;
        case 'cs' :
            var expr = "^([+]381[ ]|[+]381|0)[0-9]{2,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'cu' :
            var expr = "^([+]53[ ]|[+]53|0)[0-9]{1,4}[ \.\-]?[0-9]{4,7}$";
            break;
        case 'cv' :
            var expr = "^([+]238[ ]|[+]238)?[0-9]{7}$";
            break;
        case 'cz' :
            var expr = "^([+]420[ ]|[+]420)?[0-9]{3}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}$";
            break;
        case 'cy' :
            var expr = "^([+]357[ ]|[+]357)?[0-9]{1,2}[ \.\-]?[0-9]{4,6}$";
            break;
        case 'de' :
            var expr = "^([+]49[ ]|[+]49|0)[0-9]{2,5}[ \.\-]?[0-9]{3,9}$";
            break;
        case 'dj' :
            var expr = "^([+]253[ ]|[+]253)?[0-9]{6}$";
            break;
        case 'dk' :
            var expr = "^([+]45[ ]|[+]45)?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'do' :
            var expr = "^([+]1[ ]|[+]1)?767[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'dz' :
            var expr = "^([+]213[ ]|[+]213|0)[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'ec' :
            var expr = "^([+]49[ ]|[+]49|0)[0-9]{1}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'ee' :
            var expr = "^([+]372[ ]|[+]372)?[0-9]{7,8}$";
            break;
        case 'eg' :
            var expr = "^([+]20[ ]|[+]20|0)[0-9]{1,2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'er' :
            var expr = "^([+]291[ ]|[+]291|0)[0-9]{1}[ \.\-]?[0-9]{6}$";
            break;
        case 'es' :
            var expr = "^([+]34[ ]|[+]34)?[0-9]{9}$";
            break;
        case 'et' :
            var expr = "^([+]251[ ]|[+]251|0)[0-9]{2}[ \.\-]?[0-9]{7}$";
            break;
        case 'fi' :
            var expr = "^([+]358[ ]|[+]358|0)[0-9]{1,2}[ \.\-]?[0-9]{4,9}$";
            break;
        case 'fj' :
            var expr = "^([+]679[ ]|[+]679)?[0-9]{7}$";
            break;
        case 'fk' :
            var expr = "^([+]500[ ]|[+]500)?[0-9]{5}$";
            break;
        case 'fm' :
            var expr = "^([+]691[ ]|[+]691|1)[0-9]{7}$";
            break;
        case 'fo' :
            var expr = "^([+]298[ ]|[+]298)?[0-9]{6}$";
            break;
        case 'fr' :
            var expr = "^([+]33[ ]|[+]33|0)6[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'ga' :
            var expr = "^([+]241[ ]|[+]241)?[0-9]{6}$";
            break;
        case 'gb' :
            var expr = "^([+]44[ ]|[+]44|0)[0-9]{2,6}[ \.\-]?[0-9]{3,8}$";
            break;
        case 'gd' :
            var expr = "^([+]1[ ]|[+]1)?473[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'ge' :
            var expr = "^([+]995[ ]|[+]995|8)[0-9]{2,3}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'gf' :
            var expr = "^([+]594[ ]694|0694)[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}$";
            break;
        case 'gh' :
            var expr = "^([+]233[ ]|[+]233|0)[0-9]{2,3}[ \.\-]?[0-9]{3,6}$";
            break;
        case 'gi' :
            var expr = "^([+]350[ ]|[+]350)?[0-9]{4,8}$";
            break;
        case 'gl' :
            var expr = "^([+]299[ ]|[+]299)?[0-9]{6}$";
            break;
        case 'gm' :
            var expr = "^([+]220[ ]|[+]220)?[0-9]{7}$";
            break;
        case 'gn' :
            var expr = "^([+]224[ ]|[+]224)?[0-9]{6}$";
            break;
        case 'gp' :
            var expr = "^([+]590[ ]690|0690)[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}$";
            break;
        case 'gq' :
            var expr = "^([+]240[ ]|[+]240)?[0-9]{0,1}[ \.\-]?[0-9]{6}$";
            break;
        case 'gr' :
            var expr = "^([+]30[ ]|[+]30|0)[0-9]{1,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'gt' :
            var expr = "^([+]502[ ]|[+]502)?[0-9]{7,8}$";
            break;
        case 'gu' :
            var expr = "^([+]1[ ]|[+]1)?671[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'gw' :
            var expr = "^([+]245[ ]|[+]245)?[0-9]{6}$";
            break;
        case 'gy' :
            var expr = "^([+]591[ ]|[+]591)?[0-9]{1}[ \.\-]?[0-9]{5}$";
            break;
        case 'hk' :
            var expr = "^([+]852[ ]|[+]852)?[0-9]{8}$";
            break;
        case 'hn' :
            var expr = "^([+]504[ ]|[+]504)?[0-9]{7}$";
            break;
        case 'hr' :
            var expr = "^([+]385[ ]|[+]385|0)[0-9]{1,2}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ht' :
            var expr = "^([+]509[ ]|[+]509)?[0-9]{7}$";
            break;
        case 'hu' :
            var expr = "^([+]36[ ]|[+]36|06)?[0-9]{1,2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'id' :
            var expr = "^([+]62[ ]|[+]62|0)[0-9]{1,4}[ \.\-]?[0-9]{5,11}$";
            break;
        case 'ie' :
            var expr = "^([+]353[ ]|[+]353|0)[0-9]{1,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'il' :
            var expr = "^([+]972[ ]|[+]972|0)[0-9]{1,2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'in' :
            var expr = "^([+]91[ ]|[+]91|0)[0-9]{2,7}[ \.\-]?[0-9]{4,8}$";
            break;
        case 'iq' :
            var expr = "^([+]964[ ]|[+]964|0)[0-9]{1,2}[ \.\-]?[0-9]{4,9}$";
            break;
        case 'ir' :
            var expr = "^([+]97[ ]|[+]97|0)[0-9]{3}[ \.\-]?[0-9]{7}$";
            break;
        case 'is' :
            var expr = "^([+]354[ ]|[+]354)?[0-9]{7,9}$";
            break;
        case 'it' :
            var expr = "^([+]39[ ]|[+]39)?[0-9]{1,3}[ \.\-]?[0-9]{5,8}$";
            break;
        case 'jm' :
            var expr = "^([+]1[ ]|[+]1)?876[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'jo' :
            var expr = "^([+]962[ ]|[+]962|0)[0-9]{1}[ \.\-]?[0-9]{7,8}$";
            break;
        case 'jp' :
            var expr = "^([+]81[ ]|[+]81|0)[0-9]{1,5}[ \.\-]?[0-9]{4,8}$";
            break;
        case 'ke' :
            var expr = "^([+]254[ ]|[+]254|0)[0-9]{1,3}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'kg' :
            var expr = "^([+]996[ ]|[+]996|0)[0-9]{3,4}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'kh' :
            var expr = "^([+]855[ ]|[+]855|0)[0-9]{2}[ \.\-]?[0-9]{6}$";
            break;
        case 'ki' :
            var expr = "^([+]686[ ]|[+]686)?[0-9]{5}$";
            break;
        case 'km' :
            var expr = "^([+]262[ ]|[+]262|[+]269[ ]|[+]269)?[0-9]{6}$";
            break;
        case 'kn' :
            var expr = "^([+]1[ ]|[+]1)?869[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'kp' :
            var expr = "^([+]82[ ]|[+]82|0)[0-9]{1,2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'kr' :
            var expr = "^([+]850[ ]|[+]850|0)?[0-9]{1,2}[ \.\-]?[0-9]{7}$";
            break;
        case 'ky' :
            var expr = "^([+]1[ ]|[+]1)?345[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'kw' :
            var expr = "^([+]965[ ]|[+]965)?[0-9]{7}$";
            break;
        case 'kz' :
            var expr = "^([+]7[ ]|[+]7|8)[0-9]{3}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'la' :
            var expr = "^([+]856[ ]|[+]856|0)[0-9]{2}[ \.\-]?[0-9]{6}$";
            break;
        case 'lb' :
            var expr = "^([+]961[ ]|[+]961|0)[0-9]{1,2}[ \.\-]?[0-9]{6}$";
            break;
        case 'lc' :
            var expr = "^([+]1[ ]|[+]1)?758[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'li' :
            var expr = "^([+]423[ ]|[+]423)?[0-9]{7}$";
            break;
        case 'lk' :
            var expr = "^([+]94[ ]|[+]94|0)[0-9]{1,2}[ \.\-]?[0-9]{4,6}$";
            break;
        case 'lr' :
            var expr = "^([+]231[ ]|[+]231)?[0-9]{6}$";
            break;
        case 'ls' :
            var expr = "^([+]266[ ]|[+]266)?[0-9]{8}$";
            break;
        case 'lt' :
            var expr = "^([+]370[ ]|[+]370|0|8)[0-9]{1,2}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'lu' :
            var expr = "^([+]352[ ]|[+]352)?[0-9]{5,11}$";
            break;
        case 'lv' :
            var expr = "^([+]371[ ]|[+]371|8)?[0-9]{0,2}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ly' :
            var expr = "^([+]218[ ]|[+]218|0)[0-9]{2,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ma' :
            var expr = "^([+]212[ ]|[+]212|0)[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'mc' :
            var expr = "^([+]377[ ]|[+]377)?[0-9]{8,9}$";
            break;
        case 'md' :
            var expr = "^([+]373[ ]|[+]373|0)[0-9]{2,3}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'me' :
            var expr = "^([+]382[ ]|[+]382|0)[0-9]{2,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'mg' :
            var expr = "^([+]261[ ]|[+]261)?([0-9]{2})?[0-9]{7}$";
            break;
        case 'mh' :
            var expr = "^([+]692[ ]|[+]692)?[1]{0,1}[ \.\-]?[0-9]{7}$";
            break;
        case 'mk' :
            var expr = "^([+]389[ ]|[+]389|0)[0-9]{1,2}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ml' :
            var expr = "^([+]223[ ]|[+]223)?[0-9]{7}$";
            break;
        case 'mm' :
            var expr = "^([+]95[ ]|[+]95|0)?[0-9]{1,2}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'mn' :
            var expr = "^([+]976[ ]|[+]976|01|02)[0-9]{1,4}[ \.\-]?[0-9]{4,6}$";
            break;
        case 'mo' :
            var expr = "^([+]853[ ]|[+]853)?[0-9]{6,7}$";
            break;
        case 'mp' :
            var expr = "^([+]1[ ]|[+]1)?670[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'mq' :
            var expr = "^([+]596[ ]696|0696)[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}$";
            break;
        case 'mr' :
            var expr = "^([+]222[ ]|[+]222)?[0-9]{7}$";
            break;
        case 'ms' :
            var expr = "^([+]1[ ]|[+]1)?664[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'mt' :
            var expr = "^([+]356[ ]|[+]356)?[0-9]{2}[ \.\-][0-9]{3}[ \.\-][0-9]{3}$";
            break;
        case 'mu' :
            var expr = "^([+]230[ ]|[+]230)?[0-9]{7}$";
            break;
        case 'mv' :
            var expr = "^([+]960[ ]|[+]960)?[0-9]{7}$";
            break;
        case 'mw' :
            var expr = "^([+]265[ ]|[+]265)?[0-9]{8}$";
            break;
        case 'mx' :
            var expr = "^([+]52[ ]|[+]52|01|02)[0-9]{1,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'my' :
            var expr = "^([+]60[ ]|[+]60|0)[0-9]{1,2}[ \.\-]?[0-9]{6,8}$";
            break;
        case 'mz' :
            var expr = "^([+]258[ ]|[+]258)?[0-9]{1,2}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'na' :
            var expr = "^([+]264[ ]|[+]264|0)[0-9]{2,4}[ \.\-]?[0-9]{2,6}$";
            break;
        case 'nc' :
            var expr = "^([+]687[ ]|[+]687)?[0-9]{6}$";
            break;
        case 'ne' :
            var expr = "^([+]227[ ]|[+]227)?[0-9]{6}$";
            break;
        case 'ng' :
            var expr = "^([+]233[ ]|[+]233|0)[0-9]{1,2}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ni' :
            var expr = "^([+]505[ ]|[+]505)?[0-9]{7}$";
            break;
        case 'nl' :
            var expr = "^([+]31[ ]|[+]31|0)[0-9]{2,3}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'np' :
            var expr = "^([+]977[ ]|[+]977|0)[0-9]{1,2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'nr' :
            var expr = "^([+]674[ ]|[+]674)?[0-9]{7}$";
            break;
        case 'nu' :
            var expr = "^([+]683[ ]|[+]683)?[0-9]{4}$";
            break;
        case 'pa' :
            var expr = "^([+]507[ ]|[+]507)?[0-9]{7}$";
            break;
        case 'pf' :
            var expr = "^([+]689[ ]|[+]689)?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'pr' :
            var expr = "^([+]1[ ]|[+]1)?[787|939][ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'nf' :
        case 'pn' :
            var expr = "^([+]672[ ]|[+]672|0)[0-9]{1,2}[ \.\-]?[0-9]{3,5}$";
            break;
        case 'nl' :
            var expr = "^([+]31[ ]|[+]31|0)[0-9]{2}[ \.\-]?[0-9]{7}$";
            break;
        case 'no' :
            var expr = "^([+]47[ ]|[+]47)?[0-9]{8}$";
            break;
        case 'nz' :
            var expr = "^([+]64[ ]|[+]64|0)[0-9]{1,2}[ \.\-]?[0-9]{6,8}$";
            break;
        case 'om' :
            var expr = "^([+]968[ ]|[+]968)?[0-9]{6,8}$";
            break;
        case 'pe' :
            var expr = "^([+]51[ ]|[+]51|0)[0-9]{1,2}[ \.\-]?[0-9]{6,8}$";
            break;
        case 'pg' :
            var expr = "^([+]675[ ]|[+]675)?[0-9]{7}$";
            break;
        case 'ph' :
            var expr = "^([+]63[ ]|[+]63|0)[0-9]{1,4}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'pk' :
            var expr = "^([+]92[ ]|[+]92|0)[0-9]{2,5}[ \.\-]?[0-9]{4,7}$";
            break;
        case 'pl' :
            var expr = "^([+]48[ ]|[+]48|0)[0-9]{2}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$";
            break;
        case 'pm' :
            var expr = "^([+]508[ ]|[+]508)?[0-9]{6}$";
            break;
        case 'ps' :
            var expr = "^([+]970[ ]|[+]970|0)[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'pt' :
            var expr = "^([+]351[ ]|[+]351)?[0-9]{1,2}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'pw' :
            var expr = "^([+]680[ ]|[+]680)?[0-9]{7}$";
            break;
        case 'py' :
            var expr = "^([+]595[ ]|[+]595|0)[0-9]{2,4}[ \.\-]?[0-9]{3,7}$";
            break;
        case 'qa' :
            var expr = "^([+]974[ ]|[+]974)?[0-9]{6}$";
            break;
        case 'ro' :
            var expr = "^([+]40[ ]|[+]40|0)[0-9]{1,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ru' :
            var expr = "^([+]7[ ]|[+]7|8)[0-9]{3,5}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'rw' :
            var expr = "^([+]250[ ]|[+]250)?[0-9]{5,8}$";
            break;
        case 'sa' :
            var expr = "^([+]966[ ]|[+]966|0)[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'sc' :
            var expr = "^([+]248[ ]|[+]248)?[0-9]{6}$";
            break;
        case 'sd' :
            var expr = "^([+]249[ ]|[+]249|0)[0-9]{2,3}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'sk' :
            var expr = "^([+]421[ ]|[+]421|0)[0-9]{1,2}[ \.\-]?[0-9]{7,8}$";
            break;
        case 're' :
            var expr = "^([+]262[ ]692|0692)[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}$";
            break;
        case 'sb' :
            var expr = "^([+]677[ ]|[+]677)?[0-9]{5}$";
            break;
        case 'se' :
            var expr = "^([+]46[ ]|[+]46|0)[0-9]{1,3}[ \.\-]?[0-9]{5,8}$";
            break;
        case 'sg' :
            var expr = "^([+]65[ ]|[+]65)?[0-9]{7,8}$";
            break;
        case 'sh' :
            var expr = "^([+]290[ ]|[+]290)?[0-9]{4}$";
            break;
        case 'si' :
            var expr = "^([+]386[ ]|[+]386|0)[0-9]{1}[ \.\-]?[0-9]{7}$";
            break;
        case 'sl' :
            var expr = "^([+]232[ ]|[+]232|0)[0-9]{2}[ \.\-]?[0-9]{6}$";
            break;
        case 'sm' :
            var expr = "^([+]378[ ]|[+]378)?[0-9]{10,12}$";
            break;
        case 'sn' :
            var expr = "^([+]221[ ]|[+]221)?[0-9]{7}$";
            break;
        case 'so' :
            var expr = "^([+]252[ ]|[+]252)?[0-9]{7}$";
            break;
        case 'sr' :
            var expr = "^([+]597[ ]|[+]597)?[0-9]{6}$";
            break;
        case 'st' :
            var expr = "^([+]239[ ]|[+]239)?[0-9]{6}$";
            break;
        case 'sv' :
            var expr = "^([+]503[ ]|[+]503)?[0-9]{7}$";
            break;
        case 'sy' :
            var expr = "^([+]963[ ]|[+]963|0)[0-9]{2}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'sz' :
            var expr = "^([+]268[ ]|[+]268|0)[0-9]{7}$";
            break;
        case 'tc' :
            var expr = "^([+]1[ ]|[+]1)?649[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'td' :
            var expr = "^([+]235[ ]|[+]235)?[0-9]{6}$";
            break;
        case 'th' :
            var expr = "^([+]66[ ]|[+]66|0)[0-9]{1,3}[ \.\-]?[0-9]{6,7}$";
            break;
        case 'tg' :
            var expr = "^([+]228[ ]|[+]228)?[0-9]{7}$";
            break;
        case 'tj' :
            var expr = "^([+]998[ ]|[+]998|8)[0-9]{2,4}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'tk' :
            var expr = "^([+]690[ ]|[+]690)?[0-9]{1}[ \.\-]?[0-9]{3}$";
            break;
        case 'tl' :
            var expr = "^([+]670[ ]|[+]670)?[0-9]{7}$";
            break;
        case 'tm' :
            var expr = "^([+]993[ ]|[+]993|8)[0-9]{2,3}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'tn' :
            var expr = "^([+]216[ ]|[+]216|0)[0-9]{8}$";
            break;
        case 'to' :
            var expr = "^([+]676[ ]|[+]676)?[0-9]{7}$";
            break;
        case 'tr' :
            var expr = "^([+]90[ ]|[+]90|0)[0-9]{3}[ \.\-]?[0-9]{7}$";
            break;
        case 'tt' :
            var expr = "^([+]1[ ]|[+]1)?868[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'tv' :
            var expr = "^([+]688[ ]|[+]688)?[0-9]{5}$";
            break;
        case 'tw' :
            var expr = "^([+]886[ ]|[+]886|0)[0-9]{1,2}[ \.\-]?[0-9]{6,8}$";
            break;
        case 'tz' :
            var expr = "^([+]255[ ]||0)[0-9]{2}[ \.\-]?[0-9]{7}$";
            break;
        case 'ua' :
            var expr = "^([+]380[ ]|[+]380|8)[0-9]{2,4}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'ug' :
            var expr = "^([+]256[ ]|[+]256|0)[0-9]{2,3}[ \.\-]?[0-9]{4,7}$";
            break;
        case 'us' :
            var expr = "^([+]1[ ]|[+]1)?[0-9]{3}[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'uy' :
            var expr = "^([+]598[ ]|[+]598|0)[0-9]{1,4}[ \.\-]?[0-9]{4,6}$";
            break;
        case 'uz' :
            var expr = "^([+]998[ ]|[+]998|8)[0-9]{2}[ \.\-]?[0-9]{7}$";
            break;
        case 'vc' :
            var expr = "^([+]1[ ]|[+]1)?784[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 've' :
            var expr = "^([+]58[ ]|[+]58|0)[0-9]{3}[ \.\-]?[0-9]{7}$";
            break;
        case 'vg' :
            var expr = "^([+]1[ ]|[+]1)?284[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'vi' :
            var expr = "^([+]1[ ]|[+]1)?340[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{4}$";
            break;
        case 'vn' :
            var expr = "^([+]84[ ]|[+]84|0)[0-9]{1,3}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'vu' :
            var expr = "^([+]678[ ]|[+]678)?[0-9]{5}$";
            break;
        case 'wf' :
            var expr = "^([+]681[ ]|[+]681)?[0-9]{6}$";
            break;
        case 'ws' :
            var expr = "^([+]685[ ]|[+]685)?[0-9]{6,7}$";
            break;
        case 'ye' :
            var expr = "^([+]967[ ]|[+]967|0)[0-9]{1,2}[ \.\-]?[0-9]{5,7}$";
            break;
        case 'yt' :
            var expr = "^([+]262[ ]639|0639)[ \.\-]?[0-9]{3}[ \.\-]?[0-9]{3}$";
            break;
        case 'za' :
            var expr = "^([+]27[ ]|[+]27|0)[0-9]{2,5}[ \.\-]?[0-9]{3,7}$";
            break;
        case 'zm' :
            var expr = "^([+]260[ ]|[+]260|0)[0-9]{1,2}[ \.\-]?[0-9]{5,6}$";
            break;
        case 'zw' :
            var expr = "^([+]263[ ]|[+]263|0)[0-9]{1,4}[ \.\-]?[0-9]{3,8}$";
            break;
        default :
            var expr = "^([+][0-9]{2,3}[ ])?[0-9]{6,11}$";
            break;
    }

    return expr;
}


// Retourne la string regexp 'code postal' en fonction du code pays
// Si pas de pays, rien
function formatCodePostal(pays){
    var expr='';

    //si le pays n'est pas défini 
    if(typeof(pays) == 'undefined'){
        var pays = navigator.language; // on prend la langue du navigateur
    }
    
    var pays = pays.toLowerCase();

    switch (pays){
        case 'ca' :
            var expr = "^[a-zA-Z]{1}[0-9]{1}[a-zA-Z]{1}[ \-][0-9]{1}[a-zA-Z]{1}[0-9]{1}$";
            break;
        case 'au' :
            var expr = "^[2-7]{1}[0-9]{3}$";
            break;
        case 'be' :
        case 'cy' :
        case 'hu' :
            var expr = "^[0-9]{4}$";
            break;
        case 'br' :
            var expr = "^[0-9]{5}[\-][0-9]{3}$";
            break;
        case 'cn' :
        case 'in' :
        case 'ro' :
        case 'ru' :
        case 'sg' :
        case 'in' :
            var expr = "^[0-9]{6}$";
            break;
        case 'jp' :
            var expr = "^[0-9]{7}$";
            break;
        case 'cz' :
        case 'sk' :
            var expr = "^[0-9]{3}[ ][0-9]{2}$";
            break;
        case 'dk' :
            var expr = "^(DK-)?[0-9]{4}$";
            break;
        case 'md' :
            var expr = "^MD-[0-9]{4}$";
            break;
        case 'fo' :
            var expr = "^[0-9]{3}$";
            break;
        case 'gl' :
        case 'no' :
        case 'nz' :
        case 'ph' :
        case 'za' :
            var expr = "^[0-9]{4}$";
            break;
        case 'ch' :
        case 'cs' :
        case 'de' :
        case 'dz' :
        case 'es' :
        case 'fi' :
        case 'fr' :
        case 'il' :
        case 'it' :
        case 'lk' :
        case 'ma' :
        case 'my' :
        case 'tr' :
            var expr = "^[0-9]{5}$";
            break;
        case 'nl' :
            var expr = "^[0-9]{4}[ ][a-zA-Z]{2}([ ][0-9]{2})?$";
            break;
        case 'pl' :
        case 'kr' :
            var expr = "^[0-9]{3}\-[0-9]{3}$";
            break;
        case 'pl' :
            var expr = "^[0-9]{4}\-[0-9]{3}$";
            break;
        case 'gb' :
            var expr = "^[a-zA-Z]{1}[0-9a-zA-Z]{1,3}[ ][0-9]{1}[a-zA-Z]{2}$";
            // ^(GIR ?0AA|(?:[A-PR-UWYZ](?:\d|\d{2}|[A-HK-Y]\d|[A-HK-Y]\d\d|\d[A-HJKSTUW]|[A-HK-Y]\d[ABEHMNPRV-Y])) ?\d[ABD-HJLNP-UW-Z]{2})$
            break;
        case 'nl' :
            var expr = "^[1-9][0-9]{3}[ ]?[a-zA-Z]{2}$";
            break;
        case 'se' :
            var expr = "^(s-|S-){0,1}[0-9]{3}[ ][0-9]{2}$";
            break;
        case 'tw' :
            var expr = "^[0-9]{3}([0-9]{2})?$";
            break;
        case 'us' :
            var expr = "^[0-9]{5}(\-[0-9]{4})?$";
            break;
        default :
            break;
    }
    return expr;
}


// Retourne la string regexp 'iban' en fonction du code pays
// Si pas de pays, rien
function formatIban(pays)
{
    var expr='';
    
    //si le pays n'est pas défini 
    if(typeof(pays) == 'undefined'){
        var pays = navigator.language; // on prend la langue du navigateur
    }
    
    var pays = pays.toLowerCase();

    switch (pays){
        case 'no' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{3}|"+pays.toUpperCase()+"[0-9]{13}$";
            break;
        case 'be' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}|"+pays.toUpperCase()+"[0-9]{14}$";
            break;
        case 'dk' :
        case 'fi' :
        case 'fo' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{2}|"+pays.toUpperCase()+"[0-9]{16}$";
            break;
        case 'nl' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9,A-Z]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{2}|"+pays.toUpperCase()+"[0-9]{2}[0-9,A-Z]{4}[0-9]{10}$";
            break;
        case 'mk' :
        case 'si' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{3}|"+pays.toUpperCase()+"[0-9]{17}$";
            break;
        case 'at' :
        case 'ba' :
        case 'ee' :
        case 'lt' :
        case 'lu' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}|"+pays.toUpperCase()+"[0-9]{18}$";
            break;
        case 'ch' :
        case 'cs' :
        case 'de' :
        case 'hr' :
        case 'li' :
        case 'lv' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{1}|"+pays.toUpperCase()+"[0-9]{19}$";
            break;
        case 'bg' :
        case 'me' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{2}|"+pays.toUpperCase()+"[0-9]{20}$";
            break;
        case 'gb' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9,A-Z]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{2}|"+pays.toUpperCase()+"[0-9]{2}[0-9,A-Z]{4}[0-9]{14}$";
            break;
        case 'gi' :
        case 'il' :
        case 'rs' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{3}|"+pays.toUpperCase()+"[0-9]{21}$";
            break;
        case 'ie' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][A-Z]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{3}|"+pays.toUpperCase()+"[0-9]{2}[A-Z]{4}[0-9]{15}$";
            break;
        case 'ad' :
        case 'es' :
        case 'cz' :
        case 'se' :
        case 'sk' :
        case 'tn' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}|"+pays.toUpperCase()+"[0-9]{22}$";
            break;
        case 'ro' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9,A-Z]{4}[ ][0-9,A-Z]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}|"+pays.toUpperCase()+"[0-9]{2}[0-9,A-Z]{8}[0-9]{12}$";
            break;
        case 'pt' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{1}|"+pays.toUpperCase()+"[0-9]{23}$";
            break;
        case 'is' :
        case 'tr' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{2}|"+pays.toUpperCase()+"[0-9]{24}$";
            break;
        case 'fr' :
        case 'gf' :
        case 'gp' :
        case 'gr' :
        case 'it' :
        case 'mq' :
        case 'nc' :
        case 'pm' :
        case 're' :
        case 'tf' :
        case 'wf' :
        case 'yt' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{3}|"+pays.toUpperCase()+"[0-9]{25}$";
            break;
        case 'sm' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9,A-Z]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{3}|"+pays.toUpperCase()+"[0-9]{2}[0-9,A-Z]{4}[0-9]{19}$";
            break;
        case 'mc' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9,A-Z,a-z]{3}|"+pays.toUpperCase()+"[0-9]{22}[0-9,A-Z,a-z]{3}$";
            break;
        case 'hu' :
        case 'cy' :
        case 'pl' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}|"+pays.toUpperCase()+"[0-9]{26}$";
            break;
        case 'mu' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][A-Z]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][A-Z,0-9]{4}[ ][0-9,A-Z]{2}|"+pays.toUpperCase()+"[0-9]{2}[A-Z]{4}[0-9]{16}[0-9,A-Z]{6}$";
            break;
        case 'mt' :
            var expr = "^"+pays.toUpperCase()+"[0-9]{2}[ ][A-Z]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][A-Z,0-9]{4}[ ][A-Z,0-9]{4}[ ][0-9,A-Z]{3}|"+pays.toUpperCase()+"[0-9]{2}[A-Z]{4}[0-9]{12}[0-9,A-Z]{11}$";
            break;
        default :
            var expr = "^[A-Z]{2}[0-9]{2}[0-9]{30}$";
            break;
    }
    return expr;
}


// Retourne la string regexp 'email' 
function formatMail(){
    //return "^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-z0-9]{2,4}$";
    return "^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,6}$";
}


// Retourne la string regexp 'email' 
// on précise le type :  integer, unsigned, real, realUnsigned
function formatNombre(type){
    if(typeof(type) == 'undefined'){
        var type = 'integer'; //si le type n'est pas passé par defaut c'est un entier 
    }
    
    if(type == 'integer'){
        var expr = "^[\+\-]?[0-9]*$";
    }else if(type == 'unsigned'){
        var expr = "^[0-9]*$";
    }else if(type == 'real'){
        var expr = "^[\+\-]?[0-9]+(\.[0-9]{0,})?$";
    }else if(type == 'realUnsigned'){
        var expr = "^[0-9]+(\.[0-9]{0,})?$";
    }
    
    return expr;
}

// Retourne la string regexp 'date' 
// masque en javascript soit dd/mm/yyyy ou yyy-mm-dd soit dd jour, mm mois et yyyy année
function formatDate(masque){
    
    //selon le masque on crée la verification
    //on recherche si c'est des / ou - ou un espace qui sépare la date
    if(masque.indexOf('/') > 0) var separateur='/';
    else if(masque.indexOf('-')  > 0) var separateur='-';
    else if(masque.indexOf(' ')  > 0) var separateur=' ';
    else if(masque.indexOf('.')  > 0) var separateur='.';
    else if(masque.indexOf(',')  > 0) var separateur=',';
    
    var tabMasque =  masque.split(separateur);
    
    //creation du masque de recherche ....
    var eregFormat = "^";
    for(var i=0;i<tabMasque.length;i++){
        if(tabMasque[i]=='dd'){
            eregFormat+= '[0-9]{1,2}';
            var positionJour = i;
        }else if(tabMasque[i]=='mm'){
            eregFormat+= '[0-9]{1,2}'; 
            var positionMois = i;
        }else if(tabMasque[i]=='yyyy'){
            eregFormat+= '[0-9]{4}';
            var positionAnnee = i;
        }
        if(i!=2) eregFormat+= "\\"+separateur;
    }
    eregFormat += "$";

    return eregFormat;
}


//***********************************************
// Fonction de controle des formulaires ....
//************************************************

//verifie La valeur selon le type de format souhaité ....
// typeFormat : type de format souhaité soit 'telephone' , 'portable' , 'codePostal','Iban',  'mail', 'entierPositif', 'entier','double' , 'doublePositif', 'date'
// critere : soit c'est le pays pour téléphone, portable, code pastal, ibam, ou format date pour la date
function controleTypeInput(valeur,typeFormat,critere){
    
    //on verifie si le type de format existe ....
    //on récupére l'expression réguliére
    switch (typeFormat){
        case 'telephone' :
            var formatExpr = formatTelephone(critere); //critére le pays
        break;
        case 'portable' :
            var formatExpr = formatPortable(critere); //critére le pays
        break;
        case 'codePostal' :
            var formatExpr = formatCodePostal(critere); //critére le pays
        break;
        case 'Iban' :
            var formatExpr = formatIban(critere); //critére le pays
        break;
        case 'mail' :
            var formatExpr = formatMail();
        break;
        case 'entier' :
            var formatExpr = formatNombre('integer');
        break;
        case 'entierPositif' :
            var formatExpr = formatNombre('unsigned');
        break;
        case 'double' :
            var formatExpr = formatNombre('real');
        break;
        case 'doublePositif' :
            var formatExpr = formatNombre('realUnsigned');
        break;
        case 'date' :
            var formatExpr = formatDate(loc_dateJsFormatJourMoisAnnee,critere); //critére le format date
        break;
        default :
            var formatExpr = "";
        break;
    }
    
    //on verifie le format ...
    if(formatExpr !=''){
        var expr = new RegExp(formatExpr,"gi");
    
        if (expr.test(valeur) == true){
            //pour la date on verfie aussi  si les valeurs sont juste 
            if(typeFormat == "date"){
                return dateExiste(valeur,loc_dateJsFormatJourMoisAnnee);
            }else{
                return true;
            }
        }else{
            return false;
        }

    }else{
        //si aucune expressino n'est retourné soit le pays n'a pas été renseigné ou touvé ou retourne ok
        return true;
    }

}

// Vérifie si l la date est existe ou pas selon le masque ....
// masque en jvascript soit dd/mm/yyyy ou yyy-mm-dd soit dd jour, mm mois et yyyy année
function dateExiste(date,masque){
    //selon le masque on crée la verification
    //on recherche si c'est des / ou - ou un espace qui sépare la date
    if(masque.indexOf('/') > 0) var separateur='/';
    else if(masque.indexOf('-')  > 0) var separateur='-';
    else if(masque.indexOf(' ')  > 0) var separateur=' ';
    else if(masque.indexOf('.')  > 0) var separateur='.';
    else if(masque.indexOf(',')  > 0) var separateur=',';
    
    var tabMasque =  masque.split(separateur);
    
    for(var i=0;i<tabMasque.length;i++){
        if(tabMasque[i]=='dd'){
            var positionJour = i;
        }else if(tabMasque[i]=='mm'){
            var positionMois = i;
        }else if(tabMasque[i]=='yyyy'){
            var positionAnnee = i;
        }
    }
    
    //ensuite on verifie si le jour et mois et année est good
    var tabdate =  date.split(separateur);
    
    // On contrôle la validité du jour
    if ((tabdate[positionJour]==0) || (tabdate[positionJour]>31)){
        return false;
    }else{
        // vérification du nombre de jour dans le mois
        var dt_test = new Date(tabdate[positionAnnee], Number(tabdate[positionMois]-1), tabdate[positionJour]);
        if (dt_test.getMonth() != Number(tabdate[positionMois]-1)) return false;
    }

    // On contrôle la validité du mois
    if ((tabdate[positionMois]==0) || (tabdate[positionMois]>12)){
        return false;
    }
    
    return true;
}


/************************************
Controler les heures d'un champs selon le type de pays ...
nomElement -> id du champs texte a verifier
PM ->  id du checkbox pour le pm si vide on le gére pas
formatDate -> format heure en php soit h:i:s
/** Attention a utiliser avec onblur, onchange , le test se fait lors de la sortie du champs 
** Il faut passer l'input et le la checkox du pm s'il existe ....
************************************/
function controleHeure(nomElement,PM,formatHeure){
  
  if(typeof(formatHeure) == 'undefined')  var formatDate = loc_formatHeureMin;  
  else var formatDate = formatHeure;  

  var formatHeure = formatDate.charAt(0);
  var formatSepar = formatDate.charAt(1);
  var formatMin = formatDate.charAt(3);
  
  var maVal = document.getElementById(nomElement).value;
  if(PM!='' && document.getElementById(PM)){
    checkPM = document.getElementById(PM);
  }
  
  var checkedPm=0; //si on selectionne ou pas le pm

  //en mode 12h on cherche s'il y a un pm ou pas ....
  if(formatHeure=='g' || formatHeure=='h'){
        if (maVal.search(/PM|pm/) != -1) checkedPm=1;
        //ensuite on remplace le am et pm par vide
        maVal = maVal.replace(/PM/g,''); //remplace les points ;
        maVal = maVal.replace(/pm/g,''); //remplace les points  -
        maVal = maVal.replace(/AM/g,''); //remplace les points  :
        maVal = maVal.replace(/am/g,''); //remplace les points  ,       
  }
  
  //si c'est vide on fait rien ou dépasse les 5 caractéres // on efface le contenu  ///|| maVal.length > 5
  if (maVal == "" ) {
    document.getElementById(nomElement).value = "";
    document.getElementById(nomElement).focus();
    return;
  }
  
 
  //on remplace les points, les espaces et par le bon carractére ....
  maVal = maVal.replace(/(^\s*)|(\s*$)/g,""); //supprimer les espaces
  maVal = maVal.replace(/;/g,formatSepar); //remplace les points ;
  maVal = maVal.replace(/-/g,formatSepar); //remplace les points  -
  maVal = maVal.replace(/:/g,formatSepar); //remplace les points  :
  maVal = maVal.replace(/,/g,formatSepar); //remplace les points  ,
  maVal = maVal.replace(/\./g,formatSepar); //remplace les points  .
  maVal = maVal.replace(/H/g,formatSepar); //remplace les points  .
  maVal = maVal.replace(/h/g,formatSepar); //remplace les points  .


  //si met 10 on ajoute :00
  if (maVal.length < 3){ // A tout hasard on ajoute 00
    maVal = maVal+formatSepar+"00";
  }

  
  //si c'est coller comme 1000 -> 10:00
  if (maVal.length == 4 && (maVal/1)==maVal){
     var maValH = maVal.substring(0,2);
     var maValM = maVal.substring(2,4);
     maVal = maValH+formatSepar+maValM;
  }
  
  tabVal = new Array();
  tabVal = maVal.split(formatSepar);

  
  //si les chiffres sont plus grand que les chiffres pour une heure on fait rien ...
  if (tabVal[0] < 0 || tabVal[0] > 24 || tabVal[1] < 0 || tabVal[1] > 59 || (tabVal[0]/1)!=tabVal[0] || (tabVal[1]/1)!=tabVal[1] ){
    document.getElementById(nomElement).value = "";
    document.getElementById(nomElement).focus();
    return;
  }
  
  if(tabVal[0] == 24) tabVal[0] ='00'; //si on marque 24 on met 00 pour minuit
  if(tabVal[1]=='')tabVal[1]='00';
  if(tabVal[1].length ==1) tabVal[1]=tabVal[1]+'0';
 
  //si mode 12h on met au format ...
  if ((formatHeure=='h' || formatHeure=='g')){
     
     //si c'est supérieur a 12 on divise et on ajoute le select de la box ...
    if(tabVal[0] > 12 && tabVal[1]!='' && tabVal[0] <= 23){
        checkedPm=1;
        tabVal[0]=(tabVal[0]-12);
    }
    
    //s'il tape 00 (minuit ca devient 12h pm) ou 0 idem
    if(tabVal[0]=='00' || tabVal[0]=='0' ){
        checkedPm=0;
        tabVal[0]='12';
    } 
    
  }
   
  //on rajoute le 0 devant s'il le faut 
  if ((formatHeure=='H' || formatHeure=='h')){
      if(tabVal[0] <= 9 && tabVal[0].charAt(0) != 0) tabVal[0]='0'+tabVal[0]; //tu écrit 9h ca donne  09
  }

  //si on est en mode 12h et c'est pas 09h mais 9h
  if((formatHeure=='G' || formatHeure=='g')){
    if(tabVal[0].length != 1){
        if(tabVal[0][0]==0 && tabVal[0][1]!='' ) tabVal[0] = tabVal[0].replace(/0/g,"");
    } 
  }

  document.getElementById(nomElement).value =tabVal[0]+formatSepar+tabVal[1];
  if(checkedPm==1 && PM!='') document.getElementById(PM).checked="checked";
}


/****************************************
Fonction  qui retourne le nombre de radio ou checkbox selectionner
idZone : identifiant de la div ou autre ou se trouve les checkbox ....
****************************************/
function controleSelectCheck(idZone) {
    var nbSelect = 0;

    var divRecherche = document.getElementById(idZone);
    var elements = divRecherche.getElementsByTagName('input');
         
    for (var iBCheckZ = 0; iBCheckZ < elements.length; iBCheckZ++) {
        if ((elements[iBCheckZ].type == 'checkbox'  || elements[iBCheckZ].type == 'radio') &&  elements[iBCheckZ].checked==true){
            nbSelect++;
        }
    }
    return nbSelect;
}


// retourne la longueur d'une chaine .....
function longueurValue(valeur){
    return valeur.length;
}


// Donne la qualité d'un mot de passe
// de 0 à 8 soit 0 null 8 bien
function niveauMdp(valpw){
    var nivpw=0;// Niveau calculé
    
    if ((valpw) && (valpw!="")){
        // Vérification majuscules
        if (valpw.match(/[A-Z]/)) nivpw++;

        // Vérification minuscules
        if (valpw.match(/[a-z]/)) nivpw++;

        // Vérification si caractères numériques
        if (valpw.match(/\d/)) nivpw++;

        // Vérification présence caractère souligné
        if (valpw.indexOf("_") > -1) nivpw++;

        // Il doit y avoir un caractère spécial
        if (valpw.match(/[\-\#\@\%\!\$\*\&\<\>]/))nivpw++;

        // Il doit y avoir une parenthèse spéciale
        if (valpw.match(/[\{\}\[\]]/))nivpw++;

        //  Il vaut mieux commencer avec une lettre
        if (valpw.match(/^[a-zA-Z]+/))nivpw++;
        
        // Les espaces ne sont pas recommandés
        var invalide = " ";
        if (!(valpw.indexOf(invalide) > -1)) nivpw++;
    }
    return nivpw;
}

//************************************
// fonction pour generer un mot de passe 
//************************************
function generateMDP(plength){
    var keylist="abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var temp='';
 
    for (i=0;i<plength;i++){
        temp+=keylist.charAt(Math.floor(Math.random()*keylist.length));
    }
    return temp;
}

//*********************************
//fonction pour  generer un login
//*********************************
function genereLogin(premierMot,secondMot){
  return premierMot.charAt(0)+"."+secondMot;
}


//Fonction permettant de limiter les touches au clavier
// format plusieurs format sont autorisé : entier, double, lettre, mail, date
// ex : onkeypress="return limiteTouch(event,'entier')"
function limiteTouch(event,format){
    
    //on verifie si le type de format existe ....
    switch (format){
        case 'entier' :
            var formatExpr = "^[\-]?[0-9]*$";
        break;
        case 'double' :
            var formatExpr = "^[\-]?[0-9]?[\.]*$";
        break;
        case 'lettre' :
            var formatExpr = "^[a-zA-Z\ \']+$";
        break;
        case 'mail' :
            var formatExpr = "^[a-zA-Z]?[\.\@\-\_]?[0-9]*$";
        break;
        case 'date' :
            var formatExpr = "^[\-\.\/]?[0-9]*$";
        break;
        case 'tel' :
            var formatExpr = "^[\-\.\ \+\(\)]?[0-9]*$";
        break;
        default :
            var formatExpr = "";
        break;
    }

    var carAccepte = new RegExp(formatExpr,"gi");
    event = event || window.event; 
    
    //Touche autorisée .... 
    /* backspace,  right ,left  del  ..... */
    //alert("keyCode for the key pressed: " + e.keyCode + "\n");
    if(event.keyCode == '37' || event.keyCode == '39' || event.keyCode == '8' 
        || event.keyCode == '46' || event.keyCode == '9'){
        return true
    }else{
        var car = String.fromCharCode(event.charCode || event.keyCode);
        return carAccepte.test(car);
    }
}



