 /*! \file nom du fichier
* Fonctions Javascript communes
* 
* Iconeweb - Ataraxia
* Application : Ataraxia
* \date 18/08/2008
* \author Iconeweb 2002-2006
*/

/* Ce programme est la propriété exclusive de la société Iconeweb Multimedia
* Toute modification, diffusion et utilisation sous quelle que forme que ce
* soit, ainsi que l'effacement de cet en-tête sont formellement interdits
* sans autorisation écrite de la société.
* Iconeweb Immobilier - 21, rue de Cléry 75002 Paris
* 33 1 45 85 30 45 - contact@iconeweb.com - http://www.iconeweb-immobilier.com
*/ 

//fonction de changement de la langue en cours 
function p_set_lang(lang) 
{
	if (lang == '')
		return;
		
	var cur_url = new String(window.location);
	
	regex = /(.*)([&?]l=)[a-z]{2}(.*)$/;
	regex2 = /\?/;
	
	if ((regex.test(cur_url))) {
		cur_url = cur_url.replace(regex, "$1$2" + lang + "$3");
	} else { 
		if (regex2.test(cur_url))
			cur_url += "&l=" + lang;
		else 
			cur_url += "?l=" + lang; 
	}
	window.location = cur_url;
}

// fonction d'ajout / modification de paramètre dans un URL
// @ p_param : nom du paramètres
// @p_valeur : valeur du paramètre 

function f_set_param(p_param, p_valeur) 
{
	var cur_url = new String(window.location);
	if (p_valeur == '') {
		window.location = cur_url;
		return;	
	}
	r_tmp = "(.*)([&?]"+p_param+"=)[a-z]{2}(.*)$";
	r_regex = new RegExp (r_tmp, "gi");
	r_regex2 = /\?/;
	
	if ((r_regex.test(cur_url))) {
		cur_url = cur_url.replace(r_regex, "$1$2" + p_valeur + "$3");
	} else { 
		if (r_regex2.test(cur_url))
			cur_url += "&"+p_param+"=" + p_valeur;
		else
			cur_url += "?"+p_param+"=" + p_valeur;
	}
	window.location = cur_url;
} // Fin donction p_set_param (...)

//******************************************************************************
//**   Confirmation de suppression
//******************************************************************************
function f_ConfirmerSuppression(langue, URL)
{
    if (langue == "defaut")
    	msg = "Etes-vous sûr de vouloir supprimer cet enregistrement (cette opération est irréversible) ?";
    else
    	msg = "Are you sure you want to apply changes (this will be irreversible)?";
    if (confirm(msg))
    {
        window.location = URL ;
    }
} // fin f_ConfirmerSuppression

//******************************************************************************
//**   Confirmation de copie récursive
//******************************************************************************
function f_ConfirmerCopieRecursive(URL)
{
    if (confirm("Etes-vous sûr de vouloir faire une copie récursive de cet enregistrement ?"))
    {
        window.location = URL ;
    }
} // fin f_ConfirmerCopieRecursive

//******************************************************************************
//**   Test si une valeur ne contient que les caractères a-z et 0-9
//******************************************************************************
function f_TestCode(p_code)
{
    var reg = /^[a-zA-Z0-9_]+$/ ;
    if (!reg.test(p_code))
    {
        return false ;
    }
    return true ;
} // f_TestCode

//******************************************************************************
//**   Test si une valeur est numérique uniquement
//******************************************************************************
function f_TestChiffres(entree)
{
      var seulement_ca ="0123456789.,-" ;
      for (a = 0; a < entree.length; a++)
       {
           if (seulement_ca.indexOf(entree.charAt(a))<0 ) return false;
    }
      return true ;
} // fin f_TestChiffres

//******************************************************************************
//**   Test si une valeur est un e-mail valide
//******************************************************************************
function f_TestEmail(entree)
{
    var supported = 0 ;
    if (window.RegExp)
    {
        var tempStr = "a" ;
        var tempReg = new RegExp(tempStr) ;
        if (tempReg.test(tempStr))
        {
            supported = 1 ;
        }
      }
      if (!supported)
    {
        return (str.indexOf(".") > 2) && (str.indexOf("@") > 0) ;
    }
      var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)") ;
      var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,4})(\\]?)$") ;
      return (!r1.test(entree) && r2.test(entree)) ;
    
} // fin f_TestEmail

//******************************************************************************
//**   Test si une valeur est un URl valide
//******************************************************************************
function f_test_url(url){
    var RegExp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
    if(RegExp.test(url)){
        return true;
    }else{
        return false;
    } 
}// fin f_TestUrl
//******************************************************************************
//**   Test si une valeur est une date valide
//******************************************************************************
function f_TestDate(entree)
{
    expression_regulaire=/^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;

    if (expression_regulaire.test(entree))
    {
        return true ;
    }
    else
    {
        return false ;
    }
} // fin f_TestDate

//******************************************************************************
//**   Test la validité de noms d'images
//******************************************************************************
function f_TestImage(entree)
{
    tableau=entree.split(".")
    if ((tableau[tableau.length-1] != "jpg") && (tableau[tableau.length-1] != "gif") && (tableau[tableau.length-1] != "png") && (tableau[tableau.length-1] != "JPG") && (tableau[tableau.length-1] != "GIF") && (tableau[tableau.length-1] != "PNG")&&(tableau[tableau.length-1] != "jpeg")&&(tableau[tableau.length-1] != "JPEG"))
    {
        return false ;
    }
    else
    {
        return true ;
    }
} // fin f_TestImage

//******************************************************************************
//**   Test la longueur d'une chaîne
//******************************************************************************
function f_TestTaille(entree,longueur)
{
    expression_regulaire=new RegExp("^[a-zA-Z0-9]{0,"+longueur+"}$") ;
    if (expression_regulaire.test(entree))
    {
        return true ;
    }
    else
    {
        return false ;
    }

} // fin f_TestTaille

//******************************************************************************
//**   Fonction de l'administration rapide permettant l'affichage de l'arbre
//******************************************************************************
function f_arbre_deplier(p_entree,p_action)
{
    if (p_action=="deplier")
    {
        if ((document.form_arbre.elements[p_entree].value=="deplier") || (document.form_arbre.elements[p_entree].value=="depliertout"))
        {
            document.form_arbre.elements[p_entree].value="repliertout" ;
        }
        else
        {
            document.form_arbre.elements[p_entree].value="deplier" ;
        }
    }
    else
    {
        if ((document.form_arbre.elements[p_entree].value=="deplier") || (document.form_arbre.elements[p_entree].value=="depliertout"))
        {
            document.form_arbre.elements[p_entree].value="repliertout" ;
        }
        else
        {
            document.form_arbre.elements[p_entree].value="depliertout" ;
        }
    }

    document.form_arbre.action="#" + p_entree ;
    
    document.form_arbre.submit() ;
    
} // f_arbre_deplier

//******************************************************************************
//**   Fonction qui permet d'appliquer une valeur a plusieurs variables de type form1.v_val1, form1.v_val2, form1.v_val3... 
//******************************************************************************
function f_appliquer_a_tout(form_in, form_val)
{
    var i=1;
    while(1)
    {
        if(eval(form_in+i))
        {
            eval(form_in+i+".value="+form_val+".value") ;
            i++ ;
        }
        else
            break ;
    }
} // f_appliquer_a_tout

//******************************************************************************
//**   Permet dans recherche rapide de faire des search replace dans une colonne entiere
//******************************************************************************
function f_rech_rempl_a_tout(form_in, form_rech, form_rempl)
{
    var i=1;
    
    if (eval("val_rech = "+form_rech+".value") != "")
    {
        while(1)
        {
            if(eval(form_in+i))
            {
                eval("val_res = "+form_in+i+".value") ;
                eval("val_rech = "+form_rech+".value") ;
                eval("val_rempl = "+form_rempl+".value") ;
                eval("var n = val_res.replace(/"+val_rech+"/,\""+val_rempl+"\")") ;
                eval(form_in+i+".value = n" ) ;
                i++ ;
            }
            else
                break ;
        }
    }
    else
        alert("Vous devez d'abord indiquer une valeur à rechercher") ;

} // f_rech_rempl_a_tout

//******************************************************************************
//**   
//******************************************************************************
function f_popup_aide(p_texte,p_chemin_serveur)
{
    tableau_aide='<table width="200" border="0" cellspacing="0" cellpadding="0">' ;
    tableau_aide+='  <tr height="11">' ;
    tableau_aide+='    <td width="21" colspan="2"><img src="aide/coin_hg.gif" width="21" height="11"></td>' ;
    tableau_aide+='    <td valign="top"><img src="aide/pixel_orange.gif" width="100%" height="1"></td>' ;
    tableau_aide+='    <td width="21" colspan="2"><img src="aide/coin_hd.gif" width="21" height="11"></td>' ;
    tableau_aide+='  </tr>' ;
    tableau_aide+='  <tr>' ;
    tableau_aide+='    <td width="1" bgcolor="#FF3300"><img src="aide/pixel_orange.gif" width="1" height="1"></td>' ;
    tableau_aide+='    <td width="20">&nbsp;</td>' ;
    tableau_aide+='    <td width="100%">' + p_texte + '</td>' ;
    tableau_aide+='    <td width="20">&nbsp;</td>' ;
    tableau_aide+='    <td align="right" width="1" bgcolor="#FF3300"><img src="aide/pixel_orange.gif" width="1" height="1"></td>' ;
    tableau_aide+='  </tr>' ;
    tableau_aide+='  <tr height="22">' ;
    tableau_aide+='    <td colspan="2"><img src="aide/coin_bg.gif" width="21" height="22"></td>' ;
    tableau_aide+='    <td valign="bottom"><img src="aide/pixel_orange.gif" width="100%" height="1"></td>' ;
    tableau_aide+='    <td colspan="2"><img src="aide/coin_bd.gif" width="21" height="22"></td>' ;
    tableau_aide+='  </tr>' ;
    tableau_aide+='</table>' ;

    document.write(tableau_aide) ;
} // f_popup_aide

//******************************************************************************
//**   Fonction de cochage et décochage des cases à cocher
//******************************************************************************
function f_checkboxes(p_form, p_valeur)
{
    var elts      = document.forms[p_form].elements['selected_tbl[]'] ;
    var elts_cnt  = (typeof(elts.length) != 'undefined')
                  ? elts.length
                  : 0 ;
    
    if (elts_cnt)
    {
        for (var i = 0; i < elts_cnt; i++)
        {
            if (p_valeur == "inverser")
            {
                if (elts[i].checked == true)
                    elts[i].checked = false ;
                else
                    elts[i].checked = true ;
            }
            else
                elts[i].checked = p_valeur;
        } // end for
    }
    else
    {
        elts.checked        = p_valeur ;
    } // end if... else

    return true ;
} // f_checkboxes

//******************************************************************************
//**   Fonction d'ouverture d'un popup
//******************************************************************************
function f_popup(p_url, p_nom, p_width, p_height, p_left, p_top, p_menu, p_scroll, p_tool, p_status, p_resizable, p_location)
{
    var strProperties ;
    var wbg_popup ;
    
    if (p_top == "center")
        p_top = (screen.height - p_height) / 2 ;
    
    if (p_left == "center")
        p_left = (screen.width - p_width) / 2 ;
    
    strProperties = 'width=' + p_width + ',height=' + p_height ;
    strProperties = strProperties + ',left='+ p_left +',top='+ p_top +',directories=0,hotkeys=1' ;
    strProperties = strProperties + ',menubar='+p_menu +',scrollbars='+p_scroll+',toolbar='+p_tool+',status='+p_status ;
    strProperties = strProperties + ',resizable='+p_resizable+',location='+p_location ;
    wbg_popup = window.open(p_url, p_nom, strProperties) ;
    return ;
}
//******************************************************************************
//**   Popup diaporama
//******************************************************************************
function f_popup_diaporama(p_chemin,code_diaporama)
{
    // Définition de la largeur et de la hauteur de la fenêtre, à modifier selon les cas
    LargeurFenetre = 400;
    HauteurFenetre = 350;
    // Calcul des coordonnées du point supérieur gauche de la fenêtre
    PixelsDepuisHaut = (screen.height - HauteurFenetre) / 2 ;
    PixelsDepuisGauche = (screen.width - LargeurFenetre) / 2 ;
    // Construction des paramètres du window.open
    ParametresOuverture = "width=" + LargeurFenetre + " ,height=" + HauteurFenetre + " ,top=" + PixelsDepuisHaut + " ,left =" + PixelsDepuisGauche ;
    // Ouverture de la fenêtre, à gérer ensuite comme n'importe quelle fenêtre (en utilisant son nom ;-))
    url_diaporama = p_chemin+"pages/diaporama.php?s_code="+code_diaporama+"&action=1";
    windowscreencenter = window.open(url_diaporama,"Diaporama",ParametresOuverture).focus() ;
} // f_popup_diaporama

//******************************************************************************
//**   f_affecte_valeur_champ
//******************************************************************************
function f_affecte_valeur_champ(p_form,p_champ_source,p_champ_cible,p_id)
{
    var form = document.forms[p_form];
    var cible = form.elements[p_champ_cible];
    if(p_id == 'id')
 	{
 		var source = document.getElementById(p_champ_source);
 	}
 	else
 	{
	    var source = form.elements[p_champ_source];
 	}
    cible.value = source.value;
} // f_affecte_valeur_champ

//******************************************************************************
//**   Fonction de lecteur d'un cookie
//******************************************************************************
function getCookie(name)
{
    var cname = name + "=";               
    var dc = document.cookie;             
    
    if (dc.length > 0)
    {              
        begin = dc.indexOf(cname);       
        if (begin != -1)
        {
            begin += cname.length;
            end = dc.indexOf(";", begin);
            if (end == -1) end = dc.length;
            return unescape(dc.substring(begin, end));
         } 
    }
} // getCookie

//******************************************************************************
//**   Fonction d'écriture d'un cookie : on passe en paramètre son nom, sa valeur, et
//**   une date d'expiration en milisecondes (1 jour = 1000 * 60 * 60 * 24)
//**
//**   Exemple :     var expdate = new Date ();
//**                   expdate.setTime (expdate.getTime() + (12 * 60 * 60 * 1000));
//**                   setCookie("memento",TexteCookie,expdate) ;
//**
//******************************************************************************
function setCookie(name, value, expires)
{
    document.cookie = name + "=" + escape(value) + 
    ((expires != null) ? "; expires=" + expires.toGMTString() : "")
    + "; path=/";
} // setCookie

//******************************************************************************
//**   Fonction de recherche remplace (p_recherche est un regexp)
//******************************************************************************
function f_recherche_remplace(p_recherche,p_remplace,p_var)
{
    resultat=p_var.search(eval(p_recherche))
    if(resultat != -1)
    {
        p_var = p_var.replace(eval(p_recherche),p_remplace) ;
        p_var = f_recherche_remplace(p_recherche,p_remplace,p_var) ;
    }
    
    return p_var ;
} // f_recherche_remplace

//******************************************************************************
//**   RollOver Macromedia
//******************************************************************************
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}//RollOver Macromedia

//******************************************************************************
//**   Converti une date au format jjmmaa au format jj/mm/aaaa
//******************************************************************************
function f_date_formatage(p_date)
{
    resultat = p_date.search("/") ;
    
    if(resultat == -1)
    {
        jour = p_date.substr(0,2) ;
        mois = p_date.substr(2,2) ;
        annee = p_date.substr(4,2) ;
        
        if (annee < 10)
            annee = "20" + annee ;
        else
            annee = "19" + annee ;
        
        v_date = jour + "/" + mois + "/" + annee ;
    }
    else
        v_date = p_date ;
    
    return v_date ;
}

// f_listedyn
function f_listedyn(p_param,p_liste_1,p_champ_1,p_champ_2)
{
    //***************************** NE PAS EFFACER *****************************//
    /*menu=new Array() ;
    menu[1]=new Array() ;
    menu[1][0]=new Option("","") ;
    <select name="choix_table" onChange="f_listedyn(this.form,this.name,'tri_table','tri_champs')"
    <option value="Javascript:f_listedyn_change('form_commande','choix_table','tri_champs','menu',1)">*/
    //***************************** NE PAS EFFACER *****************************//

    if (eval("p_param."+p_liste_1+".selectedIndex") == 0)
    {
        eval("p_param."+p_champ_1+".value = \"\"") ;
        eval("p_param."+p_champ_2+".value = \"\"") ;
    }
    else
    {
        window.top.location.href = eval("p_param."+p_liste_1+".options["+eval("p_param."+p_liste_1+".selectedIndex")+"].value") ;
        eval("p_param."+p_champ_1+".value = p_param."+p_liste_1+".options["+eval("p_param."+p_liste_1+".selectedIndex")+"].text") ;
        eval("p_param."+p_champ_2+".value = \"\"") ;
    }
}// f_listedyn

// f_listedyn_change
function f_listedyn_change(p_form,p_champ_1,p_champ_2,p_var_tableau,z)
{
    for (a = eval("document." + p_form + "." + p_champ_2 + ".options.length-1") ; a>0 ; a--)
    {
        eval("document." + p_form + "." + p_champ_2 + ".options[a]=null") ;
    }
    
    for (a=0;a<eval(p_var_tableau+"["+z+"].length");a++)
    {
        eval("document." + p_form + "." + p_champ_2 + ".options["+a+"] = new Option('"+eval(p_var_tableau+"["+z+"]["+a+"].text")+"','"+eval(p_var_tableau+"["+z+"]["+a+"].value")+"')") ;
    }
    eval("document." + p_form + "." + p_champ_2 + ".selectedIndex = 0") ;
}// f_listedyn_change

//****************************************************************************** 
//** Teste si une valeur est un entier positif 
//****************************************************************************** 
function f_TestEntierPositif(entree) 
{ 
var seulement_ca ="0123456789"; 
for (a = 0; a < entree.length; a++) 
{ 
if (seulement_ca.indexOf(entree.charAt(a))<0 ) return false; 
} 
return true; 
} // fin f_TestEntierPositif 

//****************************************************************************** 
//** Teste si une valeur contient au moins un chiffre 
//****************************************************************************** 
function f_TestContientChiffre(entree) 
{ 
var seulement_ca ="0123456789"; 
for (a = 0; a < entree.length; a++) 
{ 
if (seulement_ca.indexOf(entree.charAt(a))>0 ) return true; 
} 
return false; 
} // fin f_TestContientChiffre 

//****************************************************************************** 
//** Test la validité d'une date, y compris l'adéquation mois / jour / année 
//****************************************************************************** 
function f_TestDateEtendu(d) { 

if (d == "") // si la variable est vide on retourne faux 
return false; 

e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$"); 

if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date 
return false; // Si pas bon, retourne faux 

// On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier 
j = parseInt(d.split("/")[0], 10); // jour 
m = parseInt(d.split("/")[1], 10); // mois 
a = parseInt(d.split("/")[2], 10); // année 

// Si l'année n'est composée que de 2 chiffres on complète automatiquement 
if (a < 1000) { 
if (a < 89) a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900 
else a+=1900; 
} 

// Définition du dernier jour de février 
// Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400 
if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29; 
else fev = 28; 

// Nombre de jours pour chaque mois 
nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31); 

// Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux 
return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] ); 
} 

//******************************************************************************
//*** permet de tester si une date est bien dans le futur par rapport à la date du jour
//******************************************************************************
function f_TestDateFutur(d)
{
    aujourdhui = new Date() ; 
    d = document.form_creation.s_date_maj.value ; 
    j = parseInt(d.split("/")[0], 10); // jour 
    m = parseInt(d.split("/")[1], 10); // mois 
    a = parseInt(d.split("/")[2], 10); // année 
    datemaj = new Date(a,m-1,j,23,59,59) ; 

    if (datemaj.getTime() < aujourdhui.getTime()) 
        return false;

    return true;
}   //f_TestDateFutur

//*****************************************************
//** Affiche ou masque un élément et change une image
//** en correspondance (facultatif)
//****************************************************
function f_Affiche(p_Element,p_Image,p_Image2,p_chemin)
{

	var elem = document.getElementById(p_Element);

	if( elem.style.display == '')
	{
		elem.style.display='none';
		if (p_Image != '') {
			document.images[p_Image].src = p_chemin + "img/display/" + p_Image2 + ".gif";
		}
	}
	else
	{
		elem.style.display='';
		if (p_Image != '') {
			document.images[p_Image].src = p_chemin + "img/display/" + p_Image2 + "2.gif";
		}
	}
}
//*****************************************************
//** Affiche ou masque un groupe d'éléments et change une image
//** en correspondance (facultatif)
//****************************************************
function f_Affiche2(p_Element,p_Image,p_Image2,p_chemin)
{
	for (i = 1 ; i < p_Element.length ; i++)
	{
		
		var elem = document.getElementById(p_Element[i]);
		
		if (elem == null) 
			continue;
		
		if( elem.style.display == '')
		{
			elem.style.display='none';
			if (p_Image != '') {
			document.images[p_Image].src = p_chemin + "img/display/" + p_Image2 + ".gif";
			}
		}
		else
		{
			elem.style.display='';
			if (p_Image != '') {
			document.images[p_Image].src = p_chemin + "img/display/" + p_Image2 + "2.gif";
			}
		}
	}
}

// Cette fonction est utilisé pour les boutons "suite" qui affichent leur contenu sur une ligne inférieure.

function ChangeText(text, p_chemin, tableau_valeur, ligne, colonne)
{

var elemTR1 = document.getElementById("L" + ligne);
var elemTD1 = document.getElementById("ligne_aveugle" + ligne);
var elemImg1 = document.getElementById("img_" + colonne + "_" + ligne);
if (elemTD1.innerHTML.indexOf(text) == -1)
	{
for (i = 0 ; i < tableau_valeur.length ; i++) //RAZ
{
		var elemTR = document.getElementById("L" + ligne);
		var elemTD = document.getElementById("ligne_aveugle" + ligne);
		var elemImg = document.getElementById("img_" + tableau_valeur[i] + "_" + ligne);
		elemTD.innerHTML = '';
		elemImg.src = p_chemin+"suite.gif";
		elemTR.style.display='none';
	}

	elemTD1.innerHTML = "<img src='"+p_chemin+"suite2.gif' border='0' align='bottom'>"+elemImg1.alt;
	elemTR1.style.display='';
	elemImg1.src = p_chemin+"suite2.gif";
	}

else
{
	for (i = 0 ; i < tableau_valeur.length ; i++) //RAZ
{
		var elemTR = document.getElementById("L" + ligne);
		var elemTD = document.getElementById("ligne_aveugle" + ligne);
		var elemImg = document.getElementById("img_" + tableau_valeur[i] + "_" + ligne);
		elemTD.innerHTML = '';
		elemImg.src = p_chemin+"suite.gif";
		elemTR.style.display='none';
	}

	
	}

}

// Fonction pour preloader des images. Utilisée pour les regroupements / degroupements et les icones de texte "suite"...

function preload_em() { 
img_1 = new Image
img_2 = new Image
img_3 = new Image
img_4 = new Image
 
img_1.src = "../img/defaut/suite2.gif"
img_2.src = "../img/defaut/suite.gif"
img_3.src = "../../themes/defaut/img/display/plus2.gif"
img_4.src = "../../themes/defaut/img/display/plus.gif"

}

//************************************************************************//
//*************** Fonctions de protection des emails**********************//
//************************************************************************//

// echange un caractere
function replaceChar(theString, oldChar, newChar) {
	var i = 0;
	var j = theString.length;

	for(i=0; i < theString.length; i++) {
		if(theString.charAt(i) == oldChar) {
			theString = theString.substring(0,i) + newChar +
			theString.substring(i+1,theString.length);
			if(i > j) { // loop-killer, just in case we mess with the code
				break;
			}
		}
	}
return theString;
}

// lien mailto avec ("mail|domaine.com")
function protected_mail_display(mail){
	if(mail.length !=0){
		
		var i=0;
		for (i=0;i<=mail.length;i++){
			if (mail.charAt(i) == "|"){
				mail = replaceChar(mail,"|","@");			
			}
		}		
			document.write("<a href=\"mailto:"+mail+"\">"+mail+"</a>");
	}
		
}
// lien mailto avec ("mail|domaine.com")
function protected_mail_display_text(mail,text,classss){
	
	
	if(mail.length !=0){
		
		if (text == mail) { text = "" ;}
		var i=0;
		for (i=0;i<=mail.length;i++){
			if (mail.charAt(i) == "|"){
				mail = replaceChar(mail,"|","@");			
			}
		}
		if (text == "") { text = mail ;}		
			document.write("<a class="+classss+" href=\"mailto:"+mail+"\">"+text+"</a>");
	}		
}

// lien mailto avec ("mail|domaine.com",subject)
// sans le texte correspondant 
// util pour placer des images 
// !!!  fermer la balise </a>!!!

function protected_mail_display2(mail,subject){

	if(mail.length !=0){
		
		var i=0;
		for (i=0;i<=mail.length;i++){
			if (mail.charAt(i) == "|"){
				mail = replaceChar(mail,"|","@");			
			}
		}
		document.write("<a href=\"mailto:"+mail+"?subject="+subject+"\">");
	}
		
}

// lien mailto avec ("mail|domaine.com",subject)
// avec le texte correspondant
function protected_mail_display3(mail,subject){

	if(mail.length !=0){
		
		var i=0;
		for (i=0;i<=mail.length;i++){
			if (mail.charAt(i) == "|"){
				mail = replaceChar(mail,"|","@");
			}
		}
		document.write("<a href=\"mailto:"+mail+"?subject="+subject+"\">"+mail+"</a>");
	}
		
}
// -------------------------------------------------------------------------------------------------------------------
// Fonctions de lecture et d'écriture d'un cookie
// -------------------------------------------------------------------------------------------------------------------

// Fonction de lecteur d'un cookie
function f_getCookie(name)
{

var cname = name + "=";
var dc = document.cookie;
//alert(dc.length);
if (dc.length > 0)
{
begin = dc.indexOf(cname);
if (begin != -1)
{
begin += cname.length;
end = dc.indexOf(";", begin);
	if (end == -1) {
		end = dc.length;
		return unescape(dc.substring(begin, end));
	}
}
return null;
}
}
// Fonction d'écriture d'un cookie : on passe en paramètre son nom, sa valeur, et
// une durée de validité en minutes
function f_setCookie(name, value, duree)
{
	var expires=new Date() ;
	expires.setTime(expires.getTime() + (1000 * 60 * duree)) ;
	document.cookie = name + "=" + escape(value) +
	((expires != null) ? "; expires=" + expires.toGMTString() : "")
	+ "; path=/";
}

function opencarte(url){
		if(screen.width >= 1024){
			var w = 1020;
			var h = 642;
		}
		else{
			var w = 796;
			var h = 474;
		}
		window.open(url,'','width='+w+', height='+h+', scrollbars=0, resizable=yes, menubar=yes');
}

function infoslegales(url){
		window.open(url,'','width=520, height=650, scrollbars=yes, resizable=yes, menubar=no');
}
function openmeteo(){
	if(document.getElementById('Layer1').style.display == 'block') {
		document.getElementById('Layer1').style.display = 'none';
	}else{
		document.getElementById('Layer1').style.display = 'block';
	}
}

function popup() {
	alert('(^_^)');
}

// changement de la racine sur le select en haut de page dans l'entete.inc.php.
// chemin (parametre pour avoir l'url du site)
function change_index (chemin){
	var page_cible = chemin + "index.php?r="+document.getElementById('choix_index').value;
	document.getElementById('hidden_r').value=document.getElementById('choix_index').value;
	
	document.getElementById('form_choix_index').action=page_cible;
	//alert ("action="+document.getElementById('form_choix_index').action);
	document.getElementById('form_choix_index').submit();		
}

// ouvre le lien choisi dans une nouvelle fenetre.
function ouvre_lien (){
	//alert(document.getElementById('choix_lien').value);
	if ("" != document.getElementById('choix_lien').value){
		var tab_lien = document.getElementById('choix_lien').value.split("##");
		if (tab_lien[1] == "_Blank") {
			window.open(tab_lien[0]);	
		}
		if (tab_lien[1] == "_Self") {
			window.location = tab_lien[0];	
		}		
	}	
}
 
 /*! \brief Enlève les espaces avant / après une chaîne
* description détaillée
* \author ablavot (en fait Olivier Brouckaert, soyons honnête)
* \param $p_Chaine La chaîne...
* \return La chaîne sans espaces avant et après
*/
function f_Trim(p_Chaine)
{
  if (p_Chaine != null) {
    return p_Chaine.replace(/(^\s*)|(\s*$)/g,'');  
  } else {
    return "" ;
  }
} // f_Trim

/*
* -------------------------------------------------------------------------------------------------------------------------------------------------------------
* -------------------------------------------------------------------------------------------------------------------------------------------------------------
*								Début des fonctions captcha-Ajax
* -------------------------------------------------------------------------------------------------------------------------------------------------------------
* -------------------------------------------------------------------------------------------------------------------------------------------------------------
*/

/*! \brief f_verifier_captcha: fonction qui sert à faire une requête HTTP asynchrone en utilisant les fonctionalités Ajax de 
* la librairie prototype.js
*
* \author akahlaoui <céation de la fonction>
*/ 

function f_verifier_captcha(serveur) {
	var url = serveur + 'lib/captcha/verifier_captcha.php';
	var txt = $F($('s_code_captcha'));
	txt = txt.toUpperCase();
	var pars = 'code_captcha=' + txt.toUpperCase();
	var myRequest = new Ajax.Request(url, {   
			method: 'get',   
			parameters: pars,
			onSuccess: function (transport) {
			xmlResponse = transport.responseXML;
			// obtenir la racine du document XML
			xmlDocumentElement = xmlResponse.documentElement;
			// récupérer le texte du message, qui est stocké dans le premier enfant
			reponse_serveur = xmlDocumentElement.firstChild.data;
			// vérifier la réponse du serveur et mettre à jour un flag qui sera utilisé 
			// par la fonction f_captcha_est_correct 
			if (reponse_serveur == "OK")
				document.getElementById("h_drapeau_captcha").value = 'true';
			else
				document.getElementById("h_drapeau_captcha").value = 'false';							
		} 
		
	
	}); 
}

/*! \brief bon_captcha: fonction qui sert à tester l'exactitude de la saisie du code captcha 
*
* fonction qui sert à tester l'exactitude de la saisie du code captcha
* \author akahlaoui <céation de la fonction>
* \return retourne un boulean
*/
function f_captcha_est_correct() {
	if (document.getElementById("h_drapeau_captcha").value == 'true')
		return true;
	else
		return false;
}

function f_init_flag_captcha() {
	document.getElementById("h_drapeau_captcha").value = 'false';
}

/*
* -----------------------------------------------------------------------------------------
* -----------------------------------------------------------------------------------------
*								Fin des fonctions captcha-Ajax
* -----------------------------------------------------------------------------------------
* -----------------------------------------------------------------------------------------
*/

/*-----------------------------------------------------------------------------------------
*------------------------------------------------------------------------------------------
*								Début f_submit_recherche_ultra_rapide(...)
*------------------------------------------------------------------------------------------
*------------------------------------------------------------------------------------------
/*! \brief f_submit_recherche_ultra_rapide: fonction qui sert à appeler le script de recherche 
*
* \author akahlaoui <céation de la fonction>
* \param chemin_script_action :		chemin de l'administration
* \param table nom de la table:		dans laquelle on effectuera la recherche
*/
function f_submit_recherche_ultra_rapide(chemin_script_action, table) {
	var erreurpresente = false ;
	var msgerreur = "Les erreurs suivantes ont été rencontrées dans le formulaire :\n\n" ;
	var obligatoire = false ;

	if (document.recherche_tres_rapide_tables.s_ToutChercher.value == "")
	{
		erreurpresente = true ;
		msgerreur = msgerreur + "- Vous devez remplir le champ de recherche\n" ;
	}
	if (document.recherche_tres_rapide_tables.liste_recherche_ultra_rapide_tables.value == "none")
	{
		erreurpresente = true ;
		msgerreur = msgerreur + "- Vous devez choisir une table\n" ;
	}
	// soumission du formulaire
	if (erreurpresente == false)
	{
		chemin_script_action += table+"/liste.php";
		document.recherche_tres_rapide_tables.action = chemin_script_action;
		document.recherche_tres_rapide_tables.submit();
	}
	else
	{
		msgerreur = msgerreur + "\nMerci de corriger votre saisie et de soumettre à nouveau le formulaire." ;
		alert(msgerreur) ;
	}
}
/*-----------------------------------------------------------------------------------------
*								Fin f_submit_recherche_ultra_rapide(...)
*------------------------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------------------
*------------------------------------------------------------------------------------------
*								Début f_submit_creation_ultra_rapide(...)
*------------------------------------------------------------------------------------------
*------------------------------------------------------------------------------------------*/

/*! \brief f_submit_creation_ultra_rapide: fonction qui sert à appeler le script de création 
* d'un nouvel enregistrement pour n'importe quelle table à partir de la page d'accueil 
*
* \author akahlaoui <céation de la fonction>
* \param chemin_script_action :		chemin de l'administration
* \param table nom de la table:		dans laquelle on effectuera la recherche
*/
function f_submit_creation_ultra_rapide(chemin_script_action, table) {
	var erreurpresente = false ;
	var msgerreur = "Les erreurs suivantes ont été rencontrées dans le formulaire :\n\n" ;
	var obligatoire = false ;

	if (document.recherche_tres_rapide_tables.liste_recherche_ultra_rapide_tables.value == "none")
	{
		erreurpresente = true ;
		msgerreur = msgerreur + "- Vous devez choisir une table\n" ;
	}
	// soumission du formulaire
	if (erreurpresente == false)
	{
		chemin_script_action += table+"/modification.php?s_Creation_Nouvel_Enregistrement=1";
		window.location.href = chemin_script_action;
	}
	else
	{
		msgerreur = msgerreur + "\nMerci de corriger votre saisie et de soumettre à nouveau le formulaire." ;
		alert(msgerreur) ;
	}
}

/*-----------------------------------------------------------------------------------------
*								Fin f_submit_creation_ultra_rapide(...)
*------------------------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------------------
*------------------------------------------------------------------------------------------
*								Début f_mettre_par_defaut(...)
*------------------------------------------------------------------------------------------
*------------------------------------------------------------------------------------------

/*! \brief Mettre un élément d'une liste déroulante comme élément par défaut
*
* la fonction cherche, dans une liste déroulante, un élément et le met par séléctionné par défaut
* 
* \author akahlaoui
* \param liste 		: l'élément liste
* \param element	: valeur de l'option
* 
*/ 
function f_mettre_par_defaut(liste, element) {
	for (var i = 0; i < liste.length; i++) {
		if (liste.options[i].value == element) {
			liste.selectedIndex = i;
			break;
		}
	}
}
/*-----------------------------------------------------------------------------------------
*								Fin f_mettre_par_defaut(...)
*------------------------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------------------
*------------------------------------------------------------------------------------------
*				Début fonctions Bulle de Log
*------------------------------------------------------------------------------------------
*------------------------------------------------------------------------------------------

/*! \brief Affiche la bulle
*
* 
* \author agayraud
* \param msge 		: message à afficher
* \param evt : event, l'évenement qui a déclenché l'ouverture de la bulle
*/ 
function f_log_valeur_bulle(p_msg,p_evt){
 
     
 var xfenetre,yfenetre,xpage,ypage,element=null;
 element=document.getElementById('tip_log')
 xfenetre = p_evt.clientX ;yfenetre = p_evt.clientY ;
 xpage=xfenetre ; ypage=yfenetre	;	
 if(p_evt.pageX) xpage = p_evt.pageX ;
 if(p_evt.pageY) ypage  = p_evt.pageY ;
    
 if(element) 
	{
		element.innerHTML=p_msg;
		bulleStyle = element.style;	 	
	    xpage=xpage+8;
	    ypage=ypage+5;

		bulleStyle.left=xpage+'px'; bulleStyle.top=ypage+'px';  
		bulleStyle.display=""; 
	}
}

/* ! \brief Fermer la bulle
*
* 
* \author agayraud
*/ 
 
function f_log_valeur_bulle_ferme(){
  document.getElementById('tip_log').style.display="none";
}
/*-----------------------------------------------------------------------------------------
*------------------------------------------------------------------------------------------
*				Fin  fonctions Bulle de Log
*------------------------------------------------------------------------------------------
*------------------------------------------------------------------------------------------
*/

/*--------------------------------------------------------------------------------
*---------------------------------------------------------------------------------
*   Fonctions qui retournent les dimensions de l'écran et du document en cours
*---------------------------------------------------------------------------------
*---------------------------------------------------------------------------------
*/
function pageWidth() 
{
	return window.innerWidth != null? window.innerWidth : document.documentElement && document.documentElement.clientWidth ?       document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;
} 
function pageHeight() 
{
	return  window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ?  document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;
} 

function posLeft() 
{
	return typeof window.pageXOffset != 'undefined' ? window.pageXOffset :document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0;
} 

function posTop() 
{
	return typeof window.pageYOffset != 'undefined' ?  window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0;} 

function posRight() 
{
	return posLeft()+pageWidth();
} 

function posBottom() 
{
	return posTop()+pageHeight();
}

/*--------------------------------------------------------------------------------
*---------------------------------------------------------------------------------
*                          Fonctions fenêtre popup liste
*---------------------------------------------------------------------------------
*---------------------------------------------------------------------------------
*/
/*! \brief Création d'une fenêtre AJAX à la position de la souris et remplissage à partir d'un programme
*
* La fonction va créer la fenêtre et la remplir à partir du résultat du programme passé en paramètre.
* Il va tester l'existence de cette fenêtre et la détruire au besoin (seulement si au moins un des paramètres
* passés est différent, sinon il ne fait rien.
* \author jboussaa
* \param p_programme_contenu le programme (PHP ou non) qui va renvoyer le contenu - texte - de la fenêtre (en absolu - http://.. - ou relatif)
* \param p_parametres_programme paramètres à ajouter au programme ci-dessus pour constituer l'URL (fait par la fonction AJAX de prototype)
* \return true si tout s'est bien passé, false en cas d'erreur
*/ 
var largeur = 0;
var hauteur = 0;
var popupListe = new Array();
var popupLock = new Array();
var sourisX = 0;
var sourisY = 0;

function f_enregistreSouris(p_evenement)
{
	sourisX = Event.pointerX(p_evenement);
	sourisY = Event.pointerY(p_evenement);
}

function f_ajax_creer_fenetre(p_programme_contenu, p_parametres_programme,fenetre_ajax, p_largeur, p_hauteur, p_evenement, p_element)
{
if (popupLock[p_element]) return;
	largeur = p_largeur;
	hauteur = p_hauteur;
	
	//Fermer toutes les autres fenêtres
	for(cpt_element=0;cpt_element<popupLock.length;cpt_element++)
	{
		if(cpt_element != p_element) popupListe[cpt_element].hide();
	}
	
	if (popupListe[p_element])
	{
		f_positionner_fenetre(p_evenement, p_element, fenetre_ajax);
		return;
	}
	
	id = p_element;
	element_title = "popupid"+id;
	element_fenetre = "fenetre"+id;
	popupLock[id] = true;
	//Si la fenêtre est créée et les parametres passés sont différent.
	
	//Instancier une popup
	if (fenetre_ajax == 0) 
		popupListe[id] = new Window({id: "popupid"+id, className: "alphacube", title: "", width:largeur, height:hauteur, top:0, left: 1, parent:document.body,minimizable: false,maximizable: false,closable : false, draggable:false});
	//Instancier une fenêtre fiche
	else 
	{
		popupListe[id] = new Window({id: "fenetre"+id, className: "alphacube", title: "", width:largeur, height:hauteur, top:0, left: 1, parent:document.body,minimizable: false,maximizable: false,closable : true, draggable:true});
		popupListe[id].setDestroyOnClose();
	}
	//Caracteristiques de la popup
	
	popupLock[id] = false;
    f_positionner_fenetre(p_evenement, p_element, fenetre_ajax);
	
	//Requete ajax pour remplir la popup
	var url = p_programme_contenu;
	var pars = p_parametres_programme;
	var myAjax = new Ajax.Request( url, { method: 'post', parameters: pars, encoding:'ISO-8859-1', 
		onSuccess: function(transport) 
	{	
		popupListe[id].getContent().innerHTML = transport.responseText;
	} 
	});
	onFailure: return false;
	//Fin requete ajax
} //Fin f_ajax_creer_fenetre

/*! \brief Destruction de la fenêtre créée.
*
* \La fonction va détruire la fenêtre si elle existe, sinon elle fait rien
* \author jboussaa
*/ 
function f_detruire_fenetre(p_element)
{
		if (popupLock[p_element])
		 	return;
		
		if (popupListe[p_element])
		{
			popupLock[p_element] = true;
			popupListe[p_element].hide();
			popupLock[p_element] = false;
		}
		
}

/*! \brief Positionnement de la fenêtre.
*
* \La fonction positionne la fenêtre selon les coordonnées de la souris, adapter l'affichage par rapport aux 
* bordures (à droite et en bas), et afficher la popup au bon endroit.
* \author jboussaa
*/ 

function f_positionner_fenetre(p_evenement, p_element, p_fenetre)
{
		
		 var leftII = 0;
		 var topII = 0;
		 if (popupLock[p_element])
		 	return;
		 if (!popupListe[p_element])
		 	return;
		 popupLock[p_element] = true;
		 var abscisseII = sourisX;
		 var ordonneeII = sourisY;
		
		 var largeur_popup = popupListe[p_element].getSize().width;
		 var hauteur_popup = popupListe[p_element].getSize().height;
		if (p_fenetre == 0)
		{
			//Position du popup sur la bordure de l'eran (a droite)
			if(largeur_popup > (pageWidth()- abscisseII + posLeft() ))
				leftII =abscisseII - largeur_popup;
			else
				leftII =abscisseII;
			
			//Position du popup sur la bordure de l'ecran (en bas)
			if(hauteur_popup  > (pageHeight() - ordonneeII + posTop() - 20))
				topII = ordonneeII - hauteur_popup-40;
			else
				topII = ordonneeII + 10;
		}	
		else
		{
			//Position du popup sur la bordure de l'eran (a droite)
			if(largeur_popup > (pageWidth()- abscisseII + posLeft() ))
				leftII =abscisseII - largeur_popup;
			else
				leftII =abscisseII;
			
			//Position du popup sur la bordure de l'ecran (en bas)
			if(hauteur_popup  > (pageHeight() - ordonneeII + posTop() - 20))
				topII = ordonneeII - hauteur_popup-10;
			else
				topII = ordonneeII + 25;
		}
		
		/*else
		{
			leftII = (pageWidth()-largeur_popup)/2 + posLeft();
			topII = (pageHeight()-hauteur_popup)/2 + posTop();
		}*/
		//Afficher la popup au bon endroit	
		popupListe[p_element].setLocation(topII,leftII);
		popupListe[p_element].show();
		popupListe[p_element].toFront();
		popupLock[p_element] = false;
}

function reset_field(field)
{
	switch (field.wbg_type) {
		case "CommentaireHTML" : 
			if (document.getElementById(field.id+"_iframe").nodeName=="DIV") 
				FCKeditorAPI.GetInstance(field.id).SetHTML("");
			else
			    reset_htmlarea(field);
			break;
		case "CommHTMLPopUp" :
			reset_htmlpopup(field);
			break;
		default :
			field.value = "";
			break;
	}
}

/*! \brief Retourn la nom de la table à partir d'une URL
*
* 
* \author 			akahlaoui
* \param 			url			: Url de la page en cours
* \param 			admin_site	: specifie si l'URl correspond a l'administration (valeur 'admin') ou front (valeur 'site')
* \return 			nom de la table
* 
*/
function f_extraire_nomTable_Url(url, admin_site){
	var reg = new RegExp("[\/]+", "g");
	var a_dossiers = url.split(reg);
	if (admin_site = "site")
		v_comparaison = "pages";
	else
		v_comparaison = "administration";
	for (i=0; i<a_dossiers.length; i++){
		if (a_dossiers[i] == v_comparaison)
			var index_table = i+1;
	}
	return a_dossiers[index_table];
}

/*
* -------------------------------------------------------------------------------------------------------------------------------------------------------------
* -------------------------------------------------------------------------------------------------------------------------------------------------------------
*								Début des fonctions alert2
* -------------------------------------------------------------------------------------------------------------------------------------------------------------
* -------------------------------------------------------------------------------------------------------------------------------------------------------------
*/

function alert2Close(o, e)
{
	//Effet lors de la disparition
	//alerteWeb20PopUp = this.getEl();
	//alerteWeb20PopUp.frame("#6B6B70");

	//Disparition
	this.destroy();
}

/**
 * Popup d'alert JS en web 2.0 (comme "alert" du JS standard, mais en HTML)
 *
 * Calcul de la taille du body auto
 *
 * @param title : Le titre de la fenetre (possibilité d'inclure une image en 16*16 dans le titre, <img src="..." />)
 * @param msg : le body de la fenetre
 * @param sizeMinX : le minimum de la fenetre en X (c'est une option)
 * @param sizeMinY : le minimum de la fenetre en Y (c'est une option)
 * @author gmocquet
 */
function alert2Old(title, msg, sizeMinX, sizeMinY) 
{
	unikId = Ext.id();
	
	if (sizeMinX == "")
	{
		sizeMinX = 0;
	}

	if (sizeMinY == "")
	{
		sizeMinY = 0;
	}
	
	var alerteWeb20PopUp = new Ext.BasicDialog('alerte2PopUp_' + unikId, 
		{
			autoCreate: true,
		 	autoScroll: true,
			buttonAlign: 'center',
		    modal: true,
		    minHeight: sizeMinY, 
		    minWidth: sizeMinX,
		    proxyDrag: false,
	    	shadow: true,
	    	collapsible: false,
    	 	closable: true,
	    	syncHeightBeforeShow: true,
	    	title: title
		});
	
	alerteWeb20PopUp.addKeyListener([27, 13], alert2Close, alerteWeb20PopUp); // ESC ou ENTER can also close the dialog
	alerteWeb20PopUp.addButton('OK', alert2Close, alerteWeb20PopUp);    		// Could call a save function instead of hiding
	alerteWeb20PopUp.body.update(msg);

	//Calcul de la taille
	//Stockage en temp.
	alerteWeb20PopUp_tempContainer = document.createElement("DIV");
	alerteWeb20PopUp_tempContainer.style.display = "block";
	alerteWeb20PopUp_tempContainer.style.visibility = "hidden";
	alerteWeb20PopUp_tempContainer.style.position = "absolute";
	alerteWeb20PopUp_tempContainer.style.top = "0px";
	alerteWeb20PopUp_tempContainer.style.left = "0px";		
	alerteWeb20PopUp_tempContainer.id = 'alerte2PopUp_' + unikId + '_tempContainer';
	document.body.appendChild(alerteWeb20PopUp_tempContainer);
	document.getElementById('alerte2PopUp_' + unikId + '_tempContainer').innerHTML = msg;

	//Calcul (quand ready)
	YAHOO.util.Event.onContentReady('alerte2PopUp_' + unikId + '_tempContainer', function(o) 
	{
		alerteWeb20PopUp = o.alerteWeb20PopUp;
		dataSizeX = document.getElementById('alerte2PopUp_' + unikId + '_tempContainer').offsetWidth;
		dataSizeY = document.getElementById('alerte2PopUp_' + unikId + '_tempContainer').offsetHeight;			
		
		alerteWeb20PopUp.setContentSize(dataSizeX, dataSizeY);
	    alerteWeb20PopUp.center();
		alerteWeb20PopUp.show();
			
	}, {alerteWeb20PopUp: alerteWeb20PopUp});
}

/**
 * Popup d'alert JS en web 2.0 (comme "alert" du JS standard, mais en HTML)
 *
 * Calcul de la taille du body auto
 *
 * @param title : Le titre de la fenetre (possibilité d'inclure une image en 16*16 dans le titre, <img src="..." />)
 * @param msg : le body de la fenetre
 * @param sizeMinX : le minimum de la fenetre en X (c'est une option)
 * @param sizeMinY : le minimum de la fenetre en Y (c'est une option)
 * @author gmocquet
 */
function alert2(title, msg, sizeMinX, sizeMinY) 
{
	unikId = Ext.id();
	msg = '<br />' + msg;
	
	if (sizeMinX == "")
	{
		sizeMinX = 0;
	}

	if (sizeMinY == "")
	{
		sizeMinY = 0;
	}

/*	
	var alerteWeb20PopUp = new Ext.BasicDialog('alerte2PopUp_' + unikId, 
		{

		});
*/
	
//	alerteWeb20PopUp.addKeyListener([27, 13], alert2Close, alerteWeb20PopUp); // ESC ou ENTER can also close the dialog
//	alerteWeb20PopUp.addButton('OK', alert2Close, alerteWeb20PopUp);    		// Could call a save function instead of hiding
//	alerteWeb20PopUp.body.update(msg);

	//Calcul de la taille
	//Stockage en temp.
	alerteWeb20PopUp_tempContainer = document.createElement("DIV");
	alerteWeb20PopUp_tempContainer.style.display = "block";
	alerteWeb20PopUp_tempContainer.style.visibility = "hidden";
	alerteWeb20PopUp_tempContainer.style.position = "absolute";
	alerteWeb20PopUp_tempContainer.style.top = "0px";
	alerteWeb20PopUp_tempContainer.style.left = "0px";		
	alerteWeb20PopUp_tempContainer.id = 'alerte2PopUp_' + unikId + '_tempContainer';
	document.body.appendChild(alerteWeb20PopUp_tempContainer);
	document.getElementById('alerte2PopUp_' + unikId + '_tempContainer').innerHTML = msg;

	//Calcul (quand ready)
	YAHOO.util.Event.onContentReady('alerte2PopUp_' + unikId + '_tempContainer', function(o) 
	{
		dataSizeX = document.getElementById('alerte2PopUp_' + unikId + '_tempContainer').offsetWidth;
		dataSizeY = document.getElementById('alerte2PopUp_' + unikId + '_tempContainer').offsetHeight;			
		
		//alert(dataSizeX);
		if (dataSizeX < 300)
		{
			dataSizeX = 300;
		}
		
		// Affichage de la popup 2.0
		Ext.MessageBox.show({
	    	title: o.title,
			msg: o.msg,
			autoCreate: true,
		 	autoScroll: true,
			buttonAlign: 'center',
			buttons: Ext.MessageBox.OK,
		    modal: true,
		    proxyDrag: false,
	    	shadow: true,
	    	collapsible: false,
    	 	closable: true,
	    	width: dataSizeX,
			icon: Ext.MessageBox.WARNING,
			syncHeightBeforeShow: true
		});
		//alerteWeb20PopUp.setContentSize(dataSizeX, dataSizeY);
	
	
			
	}, {title: title, msg: msg, sizeMinX: sizeMinX, sizeMinY: sizeMinY});
}

/**
 * Popup d'alert JS en web 2.0 (comme "alert" du JS standard, mais en HTML)
 *
 * dérivée de alert2 pour les affichages de retour d'ajax
 *
  * @param phpMsg : le body de la fenetre
  * @param msgIsError : "true" : le msg est de type erreur | "false" : c'est un succès
 * @author gmocquet
 */
function alert2MsgPHP(phpMsg, msgIsError)
{
	img_ext = 'png';
	if(Ext.isIE)
	{
		img_ext = 'gif';
	}

	if (msgIsError)
	{
		title = 'Error';
		img = 'croix.'+img_ext;
		infoCss = 'info_error';
	}
	else
	{
		title = 'Success';
		img = 'ok.'+img_ext;
		infoCss = 'info_success';
	}

	title = '<img src="' + c_chemin_img + 'action/warning_16.'+img_ext+'" align="absmiddle" alt="" />&nbsp;' + title;
	data = '<table class="popupAlerte2PhpMsgContener"><tr align="center"><td class="popupAlerte2PhpMsgImgSector"><img src="' + c_chemin_img + 'action/' + img +'" alt="" /></td><td class="popupAlerte2PhpMsgTxtSector '+infoCss+'">' + phpMsg + '</td></tr></table>';
	
	alert2(title, data);
}

/**
 * Popup d'alert JS en web 2.0 (comme "alert" du JS standard, mais en HTML)
 *
 * dérivée de alert2 pour les affichages d'erreures JSON
 *
  * @param msg : le body de la fenetre
 * @author gmocquet
 */
function alert2JSONError(msg)
{
	img_ext = 'png';
	if(Ext.isIE)
	{
		img_ext = 'gif';
	}
	
	title = 'PHP Error &raquo; Corrupted JSON Data';
	img = 'croix.'+img_ext;
	infoCss = 'info_error';
	
	//msg = 'Data written by PHP Script :<br />' + msg;
	
	title = '<img src="' + c_chemin_img + 'action/warning_16.'+img_ext+'" align="absmiddle" alt="" />&nbsp;' + title;
	data = '<table class="popupAlerte2PhpMsgContener"><tr align="center"><td class="popupAlerte2PhpMsgImgSector"><img src="' + c_chemin_img + 'action/' + img +'" alt="" /></td><td class="popupAlerte2PhpMsgTxtSector '+infoCss+'">' + msg + '</td></tr></table>';
	
	alert2(title, data);
}

/**
 * Popup d'alert JS en web 2.0 (comme "alert" du JS standard, mais en HTML)
 *
 * dérivée de alert2 pour les affichages d'erreures AJAX (Framework YUI)
 *
  * @param o : l'objet YUI AJAX
 * @author gmocquet
 */
function y_ajax_error(o) 
{
	img_ext = 'png';
	if(Ext.isIE6)
	{
		img_ext = 'gif';
	}
	
	//Stop ajax
	YAHOO.util.Connect.abort(o);
	
	//Affichage d'un msg
	if (o.status == 0)
	{
		//Serveur Error

		alert2('<img src="' + c_chemin_img + 'action/warning_16.'+img_ext+'" align="absmiddle" alt="" />&nbsp;Server/Connection Troubles', '<div class="popupAlerte2ErrorContener"><div class="popupAlerte2ErrorImgSector"><img src="' + c_chemin_img + 'action/exclamation.'+img_ext+'" alt="" /></div><div class="popupAlerte2ErrorTxtSector"><div class="popupAlerte2ErrorTxtUp">Server error</div><div class="popupAlerte2ErrorTxtDown">Refresh your browser or retry later...</div></div></div>');
	}
	else if(o.status == -1)
	{
		//Time out...
		
		alert2('<img src="' + c_chemin_img + 'action/warning_16.'+img_ext+'" align="absmiddle" alt="" />&nbsp;Server/Connection Troubles', '<div class="popupAlerte2ErrorContener"><div class="popupAlerte2ErrorImgSector"><img src="' + c_chemin_img + 'action/reload.'+img_ext+'" alt="" /></div><div class="popupAlerte2ErrorTxtSector"><div class="popupAlerte2ErrorTxtUp">Connection Timeout</div><div class="popupAlerte2ErrorTxtDown">Refresh your browser or retry later...</div></div></div>');
	}
	else
	{
		//Server Error
		
		if (o.status)
		{
			//xxx Error (Server)
			dataWindows = '<div class="popupAlerte2ErrorContener"><div class="popupAlerte2ErrorImgSector"><img src="' + c_chemin_img + 'action/exclamation.'+img_ext+'" alt="" /></div><div class="popupAlerte2ErrorTxtSector"><div class="popupAlerte2ErrorTxtUp">Server error</div><div class="popupAlerte2ErrorTxtDown">';
			
			dataWindows += 'ERROR&nbsp;' + o.status + '&nbsp;-&nbsp;';
			
			switch(o.status)
			{
				case 404: dataWindows += 'Not Found'; break;
				case 500: dataWindows += 'Internal Server Error'; break;
				case 501: dataWindows += 'Not Implemented'; break;
				case 502: dataWindows += 'Bad Gateway'; break;
				case 503: dataWindows += 'Service Unavailable'; break;
				case 504: dataWindows += 'Gateway Timeout'; break;
				case 505: dataWindows += 'HTTP Version not supported'; break;
				case 403: dataWindows += 'Forbidden'; break;
				case 301: dataWindows += 'Moved Permanently'; break;
				case 302: dataWindows += 'Moved Temporarily'; break;
				case 307: dataWindows += 'Temporary Redirect';	 break;			
				default : dataWindows += 'Unknow'; break;
			}
			
			dataWindows += '</div></div></div>';
	
			
		
			alert2('<img src="' + c_chemin_img + 'action/warning_16.'+img_ext+'" align="absmiddle" alt="" />&nbsp;Server/Connection Troubles', dataWindows);
		}
		else
		{
			//Unknow Error
		
			alert2('<img src="' + c_chemin_img + 'action/warning_16.'+img_ext+'" align="absmiddle" alt="" />&nbsp;Server/Connection Troubles', '<div class="popupAlerte2ErrorContener"><div class="popupAlerte2ErrorImgSector"><img src="' + c_chemin_img + 'action/exclamation.'+img_ext+'" alt="" /></div><div class="popupAlerte2ErrorTxtSector"><div class="popupAlerte2ErrorTxtUp">Unknow error</div><div class="popupAlerte2ErrorTxtDown">Refresh your browser or retry later...</div></div></div>');
		}
	}
}

// This code was written by Tyler Akins and has been placed in the
// public domain.  It would be nice if you left this header intact.
// Base64 code from Tyler Akins -- http://rumkin.com
function base64_encode(input) 
{
   if(input=="") return input;
   var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   
   return output;
}

function base64_decode(input) 
{
   var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}

function f_convert_carac_spec_priv(p_chaine, search, replace)
{
	var a_motif = new RegExp(search, 'g');
	return p_chaine.replace(a_motif, replace);
}

/**
 * Convertion des caractères spéciaux en code html
 *
  * @param p_chaine : la chaine
  *
 * @author aelattar
 */
function f_convert_carac_spec(p_chaine)
{

	a_motif = new Array('\u20AC','\uFFFD','\u201A','\u0192','\u201E','\u2026','\u2020',
						'\u2021','\u02C6','\u2030','\u0160','\u2039','\u0152','\uFFFD',
						'\u017D','\uFFFD','\uFFFD','\u2018','\u2019','\u201C','\u201D',
						'\u2022','\u2013','\u2014','\u02DC','\u2122','\u0161','\u203A','\u0153',
						'\uFFFD','\u017E','\u0178');
	a_replace = new Array('&euro;','?','&sbquo;','&fnof;','&bdquo;','&hellip;','&dagger;',
						'&Dagger;','&circ;','&permil;','&scaron;','&lsaquo;','&OElig;','?',
						'Z','?','?','&lsquo;','&rsquo;','&quot;','&quot;',
						'&bull;','&ndash;','&mdash;','&tilde;','&trade;','&scaron;','&rsaquo;','&oelig;',
						'?','Z','&yuml;');
			
	for(var i=0; i<a_motif.length; i++)
	{
		p_chaine = f_convert_carac_spec_priv(p_chaine, a_motif[i], a_replace[i]);	
	}
	
	return p_chaine;
	
	/*$80$=€='\u20AC' $81$=?='\uFFFD' $82$=‚='\u201A' $83$=ƒ='\u0192' $84$=„='\u201E'
	$85$=…='\u2026' $86$=†='\u2020' $87$=‡='\u2021' $88$=ˆ='\u02C6' $89$=‰='\u2030'
	$8A$=Š='\u0160' $8B$=‹='\u2039' $8C$=Œ='\u0152' $8D$=?='\uFFFD' $8E$=Ž='\u017D'
	$8F$=?='\uFFFD' $90$=?='\uFFFD' $91$=‘='\u2018' $92$=’='\u2019' $93$="='\u201C'
	$94$="='\u201D' $95$=•='\u2022' $96$=–='\u2013' $97$=—='\u2014' $98$=˜='\u02DC'
	$99$=™='\u2122' $9A$=š='\u0161' $9B$=›='\u203A' $9C$=œ='\u0153' $9D$=?='\uFFFD'
	$9E$=ž='\u017E' $9F$=Ÿ='\u0178'*/
	
}