// ajax : change ecole en fonction du canton
var http = getHTTPObject();

/**
 * handle with "onkeyup" action on "canton" element
 * @param canton    value of the "canton" element
 * @param type_ecole value of the "type" element
 * @param fNom	    "form" name (string)
 * @param fEcole	"ecole" element name (string)
 */
function checkCanton(canton, type_ecole, fNom, fEcole) {
	http.open('get', '/profile/ecoles.php?canton=' + canton + '&type=' + type_ecole + '&fNom=' + fNom + '&fEcole=' + fEcole, true);
	http.onreadystatechange = handleCanton;
	http.send(null);
}

/**
 * récupère le fichier XML renvoyé par ville.php
 * require function getText() -> defined in J4ST.js
 */
function handleCanton() {
    //displayState();
    if (http.readyState == 4) {
		if (http.status == 200) { /* 200 : code HTTP pour OK */
			//alert(http.statusText); // debug
			//alert(http.responseText); // debug
			var xml = http.responseXML; // XMLDocument
			var rootEl = xml.documentElement; // Element: ville-form
			var ecole = rootEl.getElementsByTagName('ecole'); // HTMLCollection
			//var formInfo = rootEl.getElementsByTagName('form-info').item(0); // Element: form-info
			var formInfo = rootEl.getElementsByTagName('form-info').item(0); // Element: form-info
			var fNom = formInfo.getElementsByTagName('f-nom').item(0);
			var fEcole = formInfo.getElementsByTagName('f-ecole').item(0);
			
			var form = document.getElementsByName(getText(fNom)).item(0);
			var element = form.elements.namedItem(getText(fEcole));
			element.length = 1;
			if (ecole.length >0) {
				for (var i = 0; i < ecole.length; i ++) {
					var e = ecole.item(i);
					var id = e.getElementsByTagName('id').item(0);
					var nom = e.getElementsByTagName('nom').item(0);
					element[element.length] = new Option(getText(nom), getText(id));
				}
			}
		}
    }
}

/* http://openweb.eu.org/articles/objet_xmlhttprequest/ */
function getHTTPObject() {
	var xmlhttp = false;

	/* on essaie de créer l'objet si ce n'est pas déjà fait */
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}
	else if(window.ActiveXObject) {	// IE
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
	}
	return xmlhttp;
}

/**
 * Affiche le texte contenu dans cet element
 */
function getText(node) {
    var res = node.textContent; // w3c
    if (res == null)
	res = node.text; // IE
    return res;
}
