 /*! \file nom du fichier
* Fonctions Javascript communes
* 
* Iconeweb - Moving Office
* Application : Moving Office
* \date 06/06/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(URL)
{
    if (confirm("Etes-vous sûr de vouloir supprimer cet enregistrement (cette opération est irréversible) ?"))
    {
        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 une date valide
//******************************************************************************
function f_TestDate(entree)
{
    expression_regulaire=/^[0123]{1}\d{1}\/[01]{1}\d{1}\/\d{4}$/ ;

    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];
}

