function ajax_createRequestObject()
{
	var ro;
	try {
		return new XMLHttpRequest();
	} catch(e) {	
		try {
			var ro = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				var ro = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				return false;
			}
		}
	}
	return ro;
   
}

var ajax_http = ajax_createRequestObject();
var ajax_LoadingMessage = '<div class="search_more">Loading</div>';
// function a appeler lors du click
// exemple <a href="javascript: sn('d_search.asp' , 734676);">Lien</a>
// ca remplira <span id="d734676"></span>
// avec 734676|{ajax}|Contenu
function sn(TheURL , id) 
{
	if(document.getElementById('d' + id).innerHTML == '')
	{
		snStill(TheURL , id) 
	}
	else
	{
		document.getElementById('d' + id).innerHTML = '';
	}
	
}

function snStill(TheURL , id) 
{
		document.getElementById('d' + id).innerHTML = ajax_LoadingMessage;
		
		if(TheURL.indexOf('?') != -1){
			ajax_http.open('get', TheURL+'&ajid='+id);
		}else{
			ajax_http.open('get', TheURL+'?ajid='+id);
		}
		ajax_http.onreadystatechange = ajax_handleResponse;
		ajax_http.send(null);
	
}



function ajax_handleResponse()
{
   	if(ajax_http.readyState == 4)
    {
        var response = ajax_http.responseText;
        var update = new Array();
        //if(document.getElementById('d'+update[0])){
	        if(response.indexOf('|{ajax}|') != -1)
	        {
	            update = response.split('|{ajax}|');
	            document.getElementById('d'+update[0]).innerHTML = update[1];
	        }else if(response.indexOf('|{ajaxVisible}|') != -1){
	        	update = response.split('|{ajaxVisible}|');
	            document.getElementById('d'+update[0]).innerHTML = update[1];
	            document.getElementById('d'+update[0]).style.visibility = "visible";
	        }else{
	        	alert(response)
	    	}
	    //}
    }
}

 
function ajax_transform(xml, xsl, id) { 
	
	
	
	try { /*  Navigateur basé sur Gecko. */ 
		if (window.XSLTProcessor) { 
			var fragment; 
            var xsltProcessor = new XSLTProcessor(); 
			
			xsltProcessor.importStylesheet(xsl); 
            fragment = xsltProcessor.transformToFragment(xml, document); 
 
            var target = document.getElementById(id); 
            target.appendChild(fragment); 
            document.appendChild(target); 
        }  
		 
		else if (window.ActiveXObject) { /* ActiveX pour Internet Explorer. */ 
            var target = document.getElementById(id); 
			
			var xml = new ActiveXObject("Microsoft.XMLDOM") 
			xml.async = false 
			xml.load("xmldemo.xml") 
			       
            if (typeof xml == "string") xml = XML.load(xml);
	    	this.xml = xml;
	    	
	    	if (typeof xsl == "string") xsl = XML.load(xsl);
	    	this.xsl = xsl;
	    	
            target.innerHTML = xml.transformNode(xsl); 
            
        } 
 
    }  
	 
	catch (e) { 
        return e; 
    } 
}

//http://forum.alsacreations.com/topic.php?fid=3&tid=21107

 function loadXML(url)
  {
    var xmlDoc;
    /* chargement du fichier XML */
    try {
      // navigateur basé sur Gecko
      if (document.implementation && document.implementation.createDocument)
      {
        xmlDoc = document.implementation.createDocument('', '', null);
        xmlDoc.load(url);
      // ActiveX pour Internet Explorer
      } else if (window.ActiveXObject) {
        try {
          xmlDoc = new ActiveXObject('Msxml2.XMLDOM');
        } catch (e) {
          xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
        }
        xmlDoc.async = false;
        xmlDoc.load(url);
      // à l'aide de lobjet XMLHTTPRequest
      } else if (window.XMLHttpRequest) {
        xmlDoc = new XMLHttpRequest();
        xmlDoc.overrideMimeType('text/xml');
        xmlDoc.open('GET', url, false);
        xmlDoc.send(null);
        if (this.xmlDoc.readyState == 4) xmlDoc = xmlDoc.responseXML;
      }
    } catch (e) {
      return e;
    }
    return xmlDoc;
  }

  function transform(id)
  {  
     var xml = loadXML(artisteURL);
     var xsl = loadXML(paroleURL);

    try {
      // navigateur basé sur Gecko
      if (window.XSLTProcessor)
      {
        var fragment;
        var xsltProcessor = new XSLTProcessor();

        xsltProcessor.importStylesheet(xsl);
        fragment = xsltProcessor.transformToFragment(xml, document);
        var target = document.getElementById(id);            
        target.appendChild(fragment);
        document.appendChild(target);

      // ActiveX pour Internet Explorer
      } else if (window.ActiveXObject) {
        var target = document.getElementById(id);
        target.innerHTML = xml.transformNode(xsl);
      }

    } catch (e) {
      return e;
    }
  }

  var artisteURL = 'dyn.php';
  var paroleURL = 'xsldyn.xsl';


function XML()	{
	/**
	 * This XML.Transformer class encapsulates an XSL stylesheet.
	 * If the stylesheet parameter is a URL, we load it.
	 * Otherwise, we assume it is an appropriate DOM Document.
	 */
	
	XML.	er = function(stylesheet) {
	    // Load the stylesheet if necessary.
	    if (typeof stylesheet == "string") stylesheet = XML.load(stylesheet);
	    this.stylesheet = stylesheet;
	    // In Mozilla-based browsers, create an XSLTProcessor object and
	    // tell it about the stylesheet.
	    if (typeof XSLTProcessor != "undefined") {
	        this.processor = new XSLTProcessor();
	        this.processor.importStylesheet(this.stylesheet);
	    }
	};
	/**
	 * This is the transform() method of the XML.Transformer class.
	 * It transforms the specified xml node using the encapsulated stylesheet.
	 * The results of the transformation are assumed to be HTML and are used to
	 * replace the content of the specified element.
	 */
	XML.Transformer.prototype.transform = function(node, element) {
	    // If element is specified by id, look it up.
	    if (typeof element == "string") element = document.getElementById(element);
	    if (this.processor) {
	        // If we've created an XSLTProcessor (i.e., we're in Mozilla) use it.
	        // Transform the node into a DOM DocumentFragment.
	        var fragment = this.processor.transformToFragment(node, document);
	        // Erase the existing content of element.
	        element.innerHTML = "";
	        // And insert the transformed nodes.
	        element.appendChild(fragment);
	    }
	    else if ("transformNode" in node) {
	        // If the node has a transformNode() function (in IE), use that.
	        // Note that transformNode() returns a string.
	        element.innerHTML = node.transformNode(this.stylesheet);
	    }
	    else {
	        // Otherwise, we're out of luck.
	        throw "XSLT is not supported in this browser";
	    }
	};
	/**
	 * This is an XSLT utility function that is useful when a stylesheet is
	 * used only once.
	 */
	XML.transform = function(xmldoc, stylesheet, element) {
	    var transformer = new XML.Transformer(stylesheet);
	    transformer.transform(xmldoc, element);
	}
}