var XMLcache;

//Fonction d'initialisation du cache pour les données XML
function InitCache() {
  if (window.ActiveXObject) { 
    XMLcache = new ActiveXObject("Msxml2.DOMDocument"); 
    XMLcache.async="false";
    XMLcache.loadXML("<BODY></BODY>");
  } 
  if (document.implementation.createDocument) { 
    var parser = new DOMParser();
    XMLcache = parser.parseFromString("<BODY></BODY>", "text/xml"); 
  }
}

//Upload des données dans le cache
function upCache() {
  var numNode = xpathNodeList("/BODY/INFOMOIS/NUM",xmlDocumentLoaded,xmlDocumentLoaded);
  var anneeNode = xpathNodeList("/BODY/INFOMOIS/ANNEE",xmlDocumentLoaded,xmlDocumentLoaded);
  if(searchCache("/BODY/INFOMOIS[NUM="+ getChildData(numNode[0]) +" and ANNEE="+ getChildData(anneeNode[0]) +"]")) {
    //INFOMOIS que l'on récupère existe déjà
  }
  else {
    //INFOMOIS que l'on récupère n'existe pas
    var info = xpathNodeList("/BODY/INFOMOIS",xmlDocumentLoaded,xmlDocumentLoaded);
    AddNodes("/BODY",info[0],true);
  
    var evenement = xpathNodeList("/BODY/EVENEMENT",xmlDocumentLoaded,xmlDocumentLoaded);
    for(var i=0;i<evenement.length;i++) {
      AddNodes("/BODY/INFOMOIS[NUM="+ getChildData(numNode[0]) +" and ANNEE="+ getChildData(anneeNode[0]) +"]",evenement[i],true);
    }
  }  
}

//Suppression dans le chache
function destroyElement(item) {
  item.parentNode.removeChild(item);
}

//Fonctions de recherche dans le cache
function searchCache(expression) {
  var testCache = xpathNodeList(expression,XMLcache,XMLcache);
  
  return testCache.length>0;
}

//Fonctions de debug du cache
function displayCache() {
  if (window.ActiveXObject) {
    alert(XMLcache.xml);
  } 
  else { 
    var serializer = new XMLSerializer();
    alert(serializer.serializeToString(XMLcache));
  }
}
