
/**
 * Fonction pour creation de l'objet XMLRequest AJAX
 */
function createRequestObject() {
    
    var xhr;
    
    try {
    	xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (err) {
    	try {
    		xhr = new ActiveXObject("Microsoft.XMLHTTP");
    	} catch(err) {
    		xhr = false;
    	}
    }
    
    if(!xhr && typeof XMLHttpRequest != 'undefined') {
    	xhr = new XMLHttpRequest();
    }
    
    return xhr;
}

var http = createRequestObject();

/**
 * Pour la gestion des submit de page avec redirection vers une ancre
 */ 
function select_champs_redirection (id_formulaire, ancre) {             
    if(ancre != '') {
        document.getElementById(id_formulaire).action += '#' + ancre;
    }
    
    document.getElementById(id_formulaire).submit();
}

/**
 * Pour la gestion de l'affichage d'un layer
 */ 
function gestion_affichage(id, mode) {

  var element;
  tableau_id = id.split('|');  

  for(i=0; i < tableau_id.length; i++) {    
  
      element = document.getElementById(tableau_id[i]);
      if(element != null) { 
          if(mode == 'montrer') {  
              element.style.display = 'block';
          }
          if(mode == 'cacher') {  
              element.style.display = 'none';
          }  
      }  
  }
} 

function traitement_ajax(lien, id_div_attente, message_attente, id_div_resultat) {

	document.getElementById(id_div_attente).innerHTML = message_attente;
	if(lien != '') {
		
		// Ouverture de la requete GET
		
		http.open("GET", lien, true);
		 
		 
		// Recupération du retour de la fonction	
		http.onreadystatechange = function() {
	         if(http.readyState == 4){ 
	         	    	
		        var response = http.responseText;
		        var html = '';
		   
		        // Récupération du code HTML (echo)
		        html = response;		        
		         
		        // On remplace le contenu du div spécifié		        
		        document.getElementById(id_div_resultat).innerHTML = html;
                // On fait disparaitre le div d'id_div_resultat		        		        
		        document.getElementById(id_div_attente).innerHTML = '';
		    }
	    }    
		http.send(null);
	}
}

/**
 * Fonction de mise en surbrillance d'une ligne de tableau
 * @param ligne La ligne en cours
 * @param classe La classe Css
 */
function surbrillanceLigneOn(ligne, classe) {    	
 		ligne.className = classe;
}
    
/**
 * Fonction de désavtivation de la surbrillance d'un ligne de tableau 
 * @param ligne La ligne en cours
 * @param classe La classe Css	
 */
function surbrillanceLigneOff(ligne, classe)	{
	ligne.className = classe;
}  

/**
 * Fonction de mise en surbrillance d'une colonne de tableau
 * @param ligne La ligne en cours
 * @param classe La classe Css
 */
function surbrillanceColonneOn(colonne, nbLigne, classe) {    
    for(var ligne=0; ligne < nbLigne; ligne++) {    	
 		document.getElementById('colonne' + colonne + '_' + ligne).className = classe;
 	}
}

/**
 * Fonction de désavtivation de la surbrillance d'une colonne de tableau
 * @param ligne La ligne en cours
 * @param classe La classe Css
 */
function surbrillanceColonneOff(colonne, nbLigne, classe) {
    for(var ligne=0; ligne < nbLigne; ligne++) {    	
 		document.getElementById('colonne' + colonne + '_' + ligne).className = classe;
 	} 	
}

/** 
 * Fonction de séléction en surbrillance d'une ligne de tableau
 * @param ligne La ligne en cours
 * @param classe La classe Css
 */
function surbrillanceLigneClick(ligne, classe) {
	var nb_cell = ligne.cells.length; 
	for(var c=0; c < nb_cell; c++) {
		if (ligne.cells[c].className == classe) {
			ligne.cells[c].className = '';// Déséléction ligne
		} else {
			ligne.cells[c].className = classe;// Séléction ligne
		}
	} 
}

/* Fonction pour confirmation d'une action vers un lien
 * @param theLink Le lien de l'action
 * @param confirmMsg Le message de confirmation
 * @return true ou flase
 */
function confirmLink(theLink, confirmMsg) {
	
  if (confirmMsg == '' || typeof(window.opera) != 'undefined') {
    return true;
  }
  
  var isConfirmed = confirm(confirmMsg);
  if (isConfirmed) {
	  if (typeof(theLink.href) != undefined) {
    	theLink.href;
  	  }
  }
  return isConfirmed;
}

// --- Gestion de la selection multiple des villes dans les moteurs de recherche --- //
function ajout_ville_moteur_recherche(champs_ville, champs_insee, ville, code_insee, code_postal) {
    var chaine_ville = document.getElementById(champs_ville);
    var chaine_insee = document.getElementById(champs_insee);
    var chaine_delete_ville = '';        
    
    if(chaine_ville.innerHTML == '') { chaine_insee.value = ''; } 
    
    // ------------------------------- //
    // --- Gestion des codes INSEE --- //
    // ------------------------------- //         
    if(chaine_insee.value != '') {
        chaine_insee.value = chaine_insee.value + ',' + code_insee; 
    } else {
        chaine_insee.value = code_insee;
    }
    
    // ----------------------------------------- //
    // --- Gestion de l'affichage des villes --- //
    // ----------------------------------------- //
    chaine_delete_ville = '';
    chaine_delete_ville += '<a href="#" onClick="suppression_ville_moteur_recherche(\'' + champs_ville + '\', \'' + champs_insee + '\', \'' + code_insee + '\')" style="color:#B22222;font-weight:bold;">';    
    chaine_delete_ville += '<img src="images/icones/16x16/delete-croix.png" style="margin-bottom:-3px;width:14px;height:14px;border:0px;">';
    chaine_delete_ville += '</a>';    
    if(chaine_ville.innerHTML != '') {
        chaine_ville.innerHTML = chaine_ville.innerHTML + '  |  ' + ville + chaine_delete_ville; 
    } else {
        chaine_ville.innerHTML = ville + chaine_delete_ville;
    }        
}
// --- Fonction de suppression des ville, dans la selection de ville des moteurs de recherche --- //
function suppression_ville_moteur_recherche(champs_ville, champs_insee, code_insee_delete) {
    var chaine_ville = document.getElementById(champs_ville);
    var chaine_insee = document.getElementById(champs_insee);    
    
    tableau_insee = chaine_insee.value.split(',');
    tableau_ville = chaine_ville.innerHTML.split('|');
    
    chaine_insee.value = '';
    chaine_ville.innerHTML = '';
    
    for(i_ville = 0; i_ville < tableau_insee.length; i_ville++) {
        code_insee_en_cours = tableau_insee[i_ville];
        ville_en_cours = tableau_ville[i_ville];                           
         
        if(code_insee_en_cours != code_insee_delete) {
            
            // ------------------------------- //
            // --- Gestion des codes INSEE --- //
            // ------------------------------- //         
            if(chaine_insee.value != '') {
                chaine_insee.value = chaine_insee.value + ',' + code_insee_en_cours; 
            } else {
                chaine_insee.value = code_insee_en_cours;
            }
            
            // ----------------------------------------- //
            // --- Gestion de l'affichage des villes --- //
            // ----------------------------------------- //                                                           
            if(chaine_ville.innerHTML != '') {
                chaine_ville.innerHTML = chaine_ville.innerHTML + '  |  ' + ville_en_cours; 
            } else {
                chaine_ville.innerHTML = ville_en_cours;
            }
            
        }
        
    }
    
}
// --- Gestion de la selection multiple des villes dans les moteurs de recherche --- //
function ajout_departement_moteur_recherche(champs_affichage_departement, champs_code_departement, departement, code_departement) {
    var chaine_affichage_departement = document.getElementById(champs_affichage_departement);
    var chaine_code_departement = document.getElementById(champs_code_departement);
    var chaine_delete_ville = '';        
    
    if(chaine_affichage_departement.innerHTML == '') { chaine_code_departement.value = ''; } 
    
    // ------------------------------- //
    // --- Gestion des codes INSEE --- //
    // ------------------------------- //         
    if(chaine_code_departement.value != '') {
        chaine_code_departement.value = chaine_code_departement.value + ',' + code_departement; 
    } else {
        chaine_code_departement.value = code_departement;
    }
    
    // ----------------------------------------------- //
    // --- Gestion de l'affichage des départements --- //
    // ----------------------------------------------- //
             
    chaine_delete_departement = '';
    chaine_delete_departement += '<a href="#" onClick="suppression_departement_moteur_recherche(\'' + champs_affichage_departement + '\', \'' + champs_code_departement + '\', \'' + code_departement + '\')" style="color:#B22222;font-weight:bold;">';    
    chaine_delete_departement += '<img src="images/icones/16x16/delete-croix.png" style="margin-bottom:-3px;width:14px;height:14px;border:0px;">';
    chaine_delete_departement += '</a>';    
    if(chaine_affichage_departement.innerHTML != '') {
        chaine_affichage_departement.innerHTML = chaine_affichage_departement.innerHTML + '  |  ' + departement + chaine_delete_departement; 
    } else {
        chaine_affichage_departement.innerHTML = departement + chaine_delete_departement;
    }        
}
// --- Fonction de suppression des départements, dans la selection de departement des moteurs de recherche --- //
function suppression_departement_moteur_recherche(champs_affichage_departement, champs_code_departement, code_departement_delete) {
    var chaine_affichage_departement = document.getElementById(champs_affichage_departement);
    var chaine_code_departement = document.getElementById(champs_code_departement);       
                
    tableau_code_departement = chaine_code_departement.value.split(',');
    tableau_affichage_departement = chaine_affichage_departement.innerHTML.split('|');
    
    chaine_code_departement.value = '';
    chaine_affichage_departement.innerHTML = '';    
    for(i_departement = 0; i_departement < tableau_code_departement.length; i_departement++) {
        code_departement_en_cours = tableau_code_departement[i_departement];
        departement_en_cours = tableau_affichage_departement[i_departement];                    
        
        if(code_departement_en_cours != code_departement_delete) {
            
            // ------------------------------------- //
            // --- Gestion des codes département --- //
            // ------------------------------------- //         
            if(chaine_code_departement.value != '') {
                chaine_code_departement.value = chaine_code_departement.value + ',' + code_departement_en_cours; 
            } else {
                chaine_code_departement.value = code_departement_en_cours;
            }
            
            // ---------------------------------------------- //
            // --- Gestion de l'affichage des département --- //
            // ---------------------------------------------- //                                                           
            if(chaine_affichage_departement.innerHTML != '') {
                chaine_affichage_departement.innerHTML = chaine_affichage_departement.innerHTML + '  |  ' + departement_en_cours; 
            } else {
                chaine_affichage_departement.innerHTML = departement_en_cours;
            }           
            
        }
    }
    
}
