// JavaScript Documentvar isIE = false;
var ma_requete;

function loadDoc(langue,evt) {
	// Charge le document XML choisis, efface les entrees du
	// menu select et cree les nouvelles entrees.
	
    evt = (evt) ? 
		evt : ((window.event) ? window.event : null);
		
    if (evt) {
        // equalize W3C/IE models to get event target reference
		
        var elem = (evt.target) ? 
			evt.target : ((evt.srcElement) ? evt.srcElement : null);
			
        if (elem) {
		
            try {
                if ( elem.selectedIndex > 0 ) { loadXMLDoc( '/xml/contacts.php?CC='+langue+'&parentID='+elem.options[elem.selectedIndex].value ); }
            }
			
            catch(e) {
                var msg = (typeof e == "string") ? 
					e : ((e.message) ? e.message : "Erreur inconnue");
                alert("Impossible de recuperer les donnees XML :\n" + msg);
                return;
            }
			
        }
    }
}

function loadXMLDoc(url) {
	// Recherche un document XML ( fonction generique reutilisable );
	// Le parametre est une URL ( relative ou absolue ) vers
	// un fichier .xml dont le Content-Type est un XML valide,
	// comme une text/xml; La source XML doit provenir du meme
	// domaine que le fichier HTML.

    // Objet natif XMLHttpRequest
	
		if ( window.XMLHttpRequest ) {
			ma_requete						= new XMLHttpRequest();
			ma_requete.onreadystatechange	= SELECT_ChangementDeSelection;
			ma_requete.open( "GET", url, true );
			ma_requete.send( null );
		}
			
    // Version IE/Windows ActiveX
	
		else if ( window.ActiveXObject ) {
		
			isIE		= true;
			ma_requete	= new ActiveXObject( "Microsoft.XMLHTTP" );
			
			if ( ma_requete ) {
				ma_requete.onreadystatechange = SELECT_ChangementDeSelection;
				ma_requete.open( "GET", url, true );
				ma_requete.send();
			}
			
		}
}

function SELECT_ChangementDeSelection() {
	// handle onreadystatechange event of ma_requete object.
    // only if ma_requete shows "loaded"
	
    if ( ma_requete.readyState == 4 ) {
        // Seulement si c'est "OK"
        if ( ma_requete.status == 200 ) {
            SELECT_EffaceLesEntreesDuMenu( "menu2_select" );
            SELECT_CreeLesEntreesDuMenu( "menu2_select" );
			DIV_clear( "contact_details" );
		}
		 
		else { alert( "Probleme dans la recuperation des donnees XML :\n" + ma_requete.statusText ); }
    }
	
}

function getElementTextNS(prefix, local, parentElem, index) {
	// Fonction :
	// retrieve text of an XML document element, including
	// elements using namespaces
	
    var result = "";
	
    if ( prefix && isIE ) {
        // IE/Windows way of handling namespaces
        result = parentElem.getElementsByTagName(prefix + ":" + local)[index];
    }
	
	else {
        // the namespace versions of this method 
        // (getElementsByTagNameNS()) operate
        // differently in Safari and Mozilla, but both
        // return value with just local name, provided 
        // there aren't conflicts with non-namespace element
        // names
        result = parentElem.getElementsByTagName(local)[index];
    }
	
    if ( result ) {
        // get text, accounting for possible
        // whitespace (carriage return) text nodes 
        if ( result.childNodes.length > 1 ) { 
			return result.childNodes[1].nodeValue; 
			SELECT_EffaceLesEntreesDuMenu( "menu2_select" ); 
		}
		else { return result.firstChild.nodeValue; }
    }
	
	else { return "n/a"; }
}


function SELECT_CreeLesEntreesDuMenu( id_html_du_select ) {
    // Effectue une boucle a travers toutes les sous balises des balises <balises_a_recuperer> et
    // ajoute chaque sous balise nommee <sous_balise_a_afficher> aux entrees du menu select.

	var balises_a_recuperer		= "item";
	var sous_balise_a_afficher	= "title";
	
    var select					= document.getElementById( id_html_du_select );
    var balises					= ma_requete.responseXML.getElementsByTagName( balises_a_recuperer );
	
		for ( var i = 0 ; i < balises.length ; i++ ) {
		
			var id = getElementTextNS( "", "id", balises[i], 0);
			
			SELECT_AjouteUnElementAuMenu( select, id,
				document.createTextNode( getElementTextNS( "", sous_balise_a_afficher, balises[i], 0) ) 
			);
			
		}

}

function SELECT_EffaceLesEntreesDuMenu( id_html_du_select ) {
    var select = document.getElementById( id_html_du_select );
    while ( select.length > 0 ) { select.remove(0); }
}

function SELECT_AjouteUnElementAuMenu( select, value, content ) {
    var opt;
    opt			= document.createElement( "option" );
    opt.value	= value;
    opt.appendChild( content );
    select.appendChild( opt );
}
