function getHTTPObject()
{
  var xmlhttp = false;

  /* Compilation conditionnelle d'IE */
  /*@cc_on
  @if (@_jscript_version >= 5)
     try
     {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     }
     catch (e)
     {
        try
        {
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E)
        {
           xmlhttp = false;
        }
     }
  @else
     xmlhttp = false;
  @end @*/

  /* on essaie de creer l'objet si ce n'est pas deja fait */
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
  {
     try
     {
        xmlhttp = new XMLHttpRequest();
     }
     catch (e)
     {
        xmlhttp = false;
     }
  }

  if (xmlhttp)
  {
     /* on definit ce qui doit se passer quand la page repondra */
     xmlhttp.onreadystatechange=function()
     {
        if (xmlhttp.readyState == 4) /* 4 : Žtat "complete" */
        {
           if (xmlhttp.status == 200) /* 200 : code HTTP pour OK */
           {
              /*
              On fait le test sur le H1 pour palier ˆ un bug: si l'utilisateur clique trop vite sur un dossier
              juste aprs en avoir ajoutŽ un, c'est a dire avant que le chargement automatique du contenu n'ai lieu,
              le contenu de la page totale (qui commence par <h1>) est reu dans le xmlhttp.reponseText. 
              */
              if(xmlhttp.responseText.substr(0,4) != '<h1>'){
                  document.getElementById('favoris_content').innerHTML = xmlhttp.responseText ;
              }
           }
        }
     }
  }
  return xmlhttp;
}
function displayFolder(folder_id, category_id,content_title, module_id) {

    document.getElementById('content_title').innerHTML	= '<h2>'+content_title+'</h2>' ;
    
	// affichage image d'attente
 	document.getElementById('favoris_content').innerHTML = '<img src="/i/indicator.gif" alt="..." width="16" height="16" style="padding-top:2px;"/>' ;
    
    //envoi des donnees
    return !sendData(
       'POST',
       _BaseUrl+'favourites_content.php',
       'xmlhttp=1&'+
       'Display=folder&'+
       'folder_id='+folder_id+'&'+
       'category_id='+category_id+'&'+
       'module_id='+module_id);
 }
 
function displayCategory(category_id,content_title, module_id) {

    document.getElementById('content_title').innerHTML	= '<h2>'+content_title+'</h2>' ;
    
	// affichage image d'attente
 	document.getElementById('favoris_content').innerHTML = '<img src="/i/indicator.gif" alt="..." width="16" height="16" style="padding-top:2px;"/>' ;
    
    //envoi des donnees
    return !sendData(
       'POST',
       _BaseUrl+'favourites_content.php',
       'xmlhttp=1&'+
       'Display=category&'+
       'category_id='+category_id+'&'+
       'module_id='+module_id);
 }
 
 /**
 *Affiche tout les favoris d'un module.
 *
 */
 function displayAll(module_id,content_title ) {

    document.getElementById('content_title').innerHTML	= '<h2>'+content_title+'</h2>' ;
    
	// affichage image d'attente
 	document.getElementById('favoris_content').innerHTML = '<img src="/i/indicator.gif" alt="..." width="16" height="16" style="padding-top:2px;"/>' ;
    
    //envoi des donnees
    return !sendData(
       'POST',
       _BaseUrl+'favourites_content.php',
       'xmlhttp=1&'+
       'Display=module&'+
       'module_id='+module_id);
 }
 
 
 /**
  * Envoie des donn?es ? l'aide d'XmlHttpRequest?
  * @param string methode d'envoi ['GET'|'POST']
  * @param string url
  * @param string donn?es ? envoyer sous la forme var1=value1&var2=value2...
  */
 function sendData(method, url, data)
 {
    var xmlhttp = getHTTPObject();

    if (!xmlhttp)
    {
        return false;
    }

    if(method == "GET")
     {
     if(data == 'null')
     {
            xmlhttp.open("GET", url, true); //ouverture asynchrone
     }
     else
     {
            xmlhttp.open("GET", url+"?"+data, true);
     }
        xmlhttp.send(null);
     }
     else if(method == "POST")
     {
        xmlhttp.open("POST", url, true); //ouverture asynchrone
        xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        xmlhttp.send(data);
     }
    return true;
 }
 
 function openBlock(block_id,unselect_blocs){
     
     var modules_blocs = unselect_blocs.split('/');
     
     document.getElementById("home_block").style.display = "none" ;
     
     for(i=0;i<modules_blocs.length;i++){
         document.getElementById(modules_blocs[i]+"_block").className       = "favorite_onglet" ;
         document.getElementById(modules_blocs[i]+"_content").style.display = "none" ;
         document.getElementById(modules_blocs[i]+"_footer").style.display  = "none" ;
     }
     
     if(document.getElementById(block_id+"_block").className == "favorite_onglet"){
         document.getElementById(block_id+"_content").style.display = "block" ;
         document.getElementById(block_id+"_footer").style.display  = "block" ;
         document.getElementById(block_id+"_block").className       = "favorite_onglet selected_onglet" ;
     } 
     
 }
 
 function selectItem(select_item, unselect_items){
     var items = unselect_items.split('/');
     nb_selected = 0;
     for(i=0;i<items.length;i++){
         document.getElementById(items[i]).style.backgroundColor = getCssValue('unselected_item_default','backgroundColor') ;
     }
     document.getElementById(select_item).style.backgroundColor = getCssValue('selected_item_default','backgroundColor') ;
 }
 
 function getCssValue(tagRef,element) {
	  var tag = document.getElementById(tagRef);
	  var value= tag.style[element];
	  if(value==null || value=='' || value=='undefined'){
	    var aClass = tag.className;
	    var cssRules = 0;
	    for (var sSheet=0; sSheet < document.styleSheets.length; sSheet++){
	      for (var rule=0; rule < document.styleSheets[sSheet].cssRules.length; rule++) {
		    var currentClass = document.styleSheets[sSheet].cssRules[rule].selectorText.substring(1);
		    
	        if (currentClass == aClass) {
	          	return document.styleSheets[sSheet].cssRules[rule].style[element];
	        }
	      }
	    }
	  }
	  return  value;
	}	
 
 
/*------------------------------------------------------------------------------- *
 *                          Pour l'ajout d'un dossier                             *
 *------------------------------------------------------------------------------- */
 
var _oldInputFieldValue=""; // valeur prŽcŽdente du champ texte
var _currentInputFieldValue=""; // valeur actuelle du champ texte
var _currentInputFieldId = "";
var _cats_name = "";
var _addDivId = "";
var _BaseUrl = "";
var _resultCache=new Object(); // mŽcanisme de cache des requetes
var _module_name = ""

 function setSelectedField(module_name, cats_name){
     _module_name            = module_name;
     field_id                = 'add_field_'+_module_name;
     _currentInputFieldId    = field_id;
     _addDivId               = _module_name+'_divConfirm';
     _cats_name              = cats_name.split(',');
     
     _inputField             = document.getElementById(_currentInputFieldId);
     _currentInputFieldValue = _inputField.value;
 }

/**
 * Lance l'Žcoute sur le champs texte d'ajout d'une categorie, pour afficher la div 'ajouter' et mettre a jour dynamiquement l'url d'ajout
 * selon le texte saisie.
 */
 function initAddFolder(module_name,baseUrl){
      setSelectedField(module_name,'');
      _oldInputFieldValue = _currentInputFieldValue;
      _BaseUrl = baseUrl;
      
      setTimeout("detectionLoop()",200);
 }

// tourne en permanence pour suggerer suite ˆ un changement du champ texte
function detectionLoop(){
  
      _currentInputFieldValue = document.getElementById(_currentInputFieldId).value;
      
	  if((_oldInputFieldValue!=_currentInputFieldValue)&&(_currentInputFieldValue!="")&&(_currentInputFieldValue!="Créez un nouveau dossier")){

		    var valeur=escapeURI(_currentInputFieldValue);
		    var suggestions=_resultCache[_currentInputFieldValue];
		    if(suggestions){ // la rŽponse Žtait encore dans le cache
		     	// metsEnPlace(valeur,suggestions)
		    }else{
		      	displayAddDiv();
		    }
		    _inputField.focus();
	  } else if((_currentInputFieldValue=="")||(_currentInputFieldValue=="CrŽez un nouveau dossier")) {
	      hideAddDiv();
	  }
	  _oldInputFieldValue=_currentInputFieldValue;
	  setTimeout("detectionLoop()",200); // la fonction se redŽclenchera dans 200 ms
	  return true
}

function displayAddDiv()
{
    document.getElementById(_addDivId).style.display = "block";
}

function hideAddDiv()
{
    document.getElementById(_addDivId).style.display = "none";
}

function submitCurrentForm(category_id)
{
   document.getElementById(_module_name+'_category_dest').value = category_id;
   document.getElementById('form_add_'+_module_name).submit();
}

/*------------------------------------------------------------------------------- *
 *                         dŽplacement dans un dossier                            *
 *------------------------------------------------------------------------------- */
function goChange()
{
	attributSelect = document.getElementById('destination_folder');
	if (attributSelect.selectedIndex == 0) return;
	document.favourite_form.favourite_action.value = 'move';
	document.favourite_form.submit();
}
function removeFavourites()
{
	document.favourite_form.favourite_action.value = 'removeFavourite';
	document.favourite_form.submit();
}

function editDescription(folder_id){
	document.favourite_form.folder_description_id.value = folder_id;
	document.favourite_form.favourite_action.value = 'editDescription';
	document.favourite_form.submit();
}

function displayEditDiv()
{
    document.getElementById('edit_folder').style.display = "block";
    document.getElementById('edit_folder_btn').style.display = "none";
    document.getElementById('description').style.display = "none";
}
function hideEditDiv()
{
    document.getElementById('edit_folder').style.display = "none";
    document.getElementById('edit_folder_btn').style.display = "block";
    document.getElementById('description').style.display = "block";
}

/* ---------  Pour la selection et la deselection d'un favoris -------- */

var nb_selected = 0;

function addOneSelected(){
	nb_selected ++;
	updateNbValue();
}

function delOneSelected(){
	nb_selected --;
	updateNbValue();
}

function updateNbValue(){
	if(nb_selected > 1)
	{
		document.getElementById('nb_selected').innerHTML = nb_selected;
	} 
	else 
	{
		document.getElementById('nb_selected').innerHTML = '';
	}
}

