// check for XPath implementation
if( document.implementation.hasFeature("XPath", "3.0") )
{
    // prototying the XMLDocument
    XMLDocument.prototype.selectNodes = function(cXPathString, xNode)
    {
        if( !xNode ) { xNode = this; } 
        var oNSResolver = this.createNSResolver(this.documentElement)
        var aItems = this.evaluate(cXPathString, xNode, oNSResolver, 
        XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
        var aResult = [];
        for( var i = 0; i < aItems.snapshotLength; i++)
        {
            aResult[i] = aItems.snapshotItem(i);
        }
        return aResult;
    }
    // prototying the Element
    Element.prototype.selectNodes = function(cXPathString)
    {
        if(this.ownerDocument.selectNodes)
        {
            return this.ownerDocument.selectNodes(cXPathString, this);
        }
        else{throw "For XML Elements Only";}
    }
}

// ########### SORT TABLE ########## 
function sortTable(col,idTable)
{
  var tblEl = document.getElementById(idTable).tBodies[0];

for(var j=0; j < tblEl.rows.length; j++) 
{
  minId = j;
  minVal = tblEl.rows[minId].cells[col].innerHTML;
  
  for (var i = j; i < tblEl.rows.length; i++) 
  {
    var currVal = tblEl.rows[i].cells[col].innerHTML;
    if(compareValues(minVal, currVal)>0) 
    {
      minId = i;
      minVal = tblEl.rows[minId].cells[col].innerHTML;
    }
  }

  if(minId!=j) 
  {
    var minEl = tblEl.rows[minId];
    tblEl.removeChild(minEl);
    tblEl.insertBefore(minEl,tblEl.rows[j]);    
  }
}
setStyle(idTable, 'ligne1', 'ligne2')
}
function setStyle(idTable, rowStyle, alternateRowStyle)
{
  var tblEl = document.getElementById(idTable).tBodies[0];
  var style1 = true;
  for(var i=0; i < tblEl.rows.length; i++) 
  {
    if(style1==true) 
    {
      tblEl.rows[i].className = rowStyle;
    } else {
      tblEl.rows[i].className = alternateRowStyle;
    }
    style1 = (style1==false);
  }
}
function compareValues(v1, v2) {

  var f1, f2;

  // If the values are numeric, convert them to floats.

  f1 = parseFloat(v1);
  f2 = parseFloat(v2);
  if (!isNaN(f1) && !isNaN(f2)) {
    v1 = f1;
    v2 = f2;
  }

  // Compare the two values.
  if (v1 == v2)
    return 0;
  if (v1 > v2)
    return 1
  return -1;
}
// ############### AJAX ################
function afficheListe() 
{
 document.getElementById('tbEtablissements').style.display = "block";
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Votre navigateur ne supporte pas AJAX !");
    return;
  }
  var url="listeEtablissements.xml";
  sendRequest(url,resultatEtablissements);
}

function GetXmlHttpObject()
{
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}
function resultatEtablissements(xmlDoc) 
{
  var sel = document.getElementById('selBassin');
  var bassin = sel.options[sel.selectedIndex].value;
  var col  = xmlDoc.selectNodes('etablissements/etablissement[bassin=\'' + bassin + '\']'); //[bassin=\'' +bassin '\']');

  tb = document.getElementById('tbEtablissements').tBodies[0];
  while(tb.childNodes.length>0) tb.removeChild(tb.childNodes[0]);

  for(i=0;i<col.length;i++) 
  {
    var row = document.createElement("tr");

    var cell = document.createElement("td");
    cell.appendChild(document.createTextNode(col[i].getElementsByTagName('nomEtablissement')[0].childNodes[0].nodeValue));
    row.appendChild(cell);

    var cell = document.createElement("td");
    cell.appendChild(document.createTextNode(col[i].getElementsByTagName('ville')[0].childNodes[0].nodeValue));
    row.appendChild(cell);

    var cell = document.createElement("td");
    cell.appendChild(document.createTextNode(col[i].getElementsByTagName('bassin')[0].attributes[0].value));
    row.appendChild(cell);

    var cell = document.createElement("td");
    var lnk =  document.createElement("a");
    lnk.appendChild(document.createTextNode(col[i].getElementsByTagName('diffuseur')[0].attributes[0].value));
    lnk.href='#' + col[i].getElementsByTagName('diffuseur')[0].childNodes[0].nodeValue;
    lnk.title = 'voir les coordonnées';
    cell.appendChild(lnk);
    row.appendChild(cell);
    tb.appendChild(row);
  }
  setStyle('tbEtablissements', 'ligne1', 'ligne2')
}
function sendRequest(url, fn) 
{
  xmlHttp.onreadystatechange= function () {
    if (xmlHttp.readyState==4)
    { 
      fn(xmlHttp.responseXML);
    }    
  };
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}
