// Affichage de la page

var readyState_code = [ ["<b>0</b> (<i>uninitialized</i>)", "non initialisé"], ["<b>1</b> (<i>loading</i>)", "début du transfert des données"], ["<b>2</b> (<i>loaded</i>)", "données transférées"], ["<b>3</b> (<i>interactive</i>)", "les données reçues sont accssibles en partie"], ["<b>4</b> (<i>complete</i>)", "les données sont complètement accessibles"] ];

var status_code = [ [100, "Continue"], [101, "Switching protocols"], [200, "OK"], [201, "Created"], [202, "Accepted"], [203, "Non-Authoritative Information"], [204, "No Content"], [205, "Reset Content"], [206, "Partial Content"], [300, "Multiple Choices"], [301, "Moved Permanently"], [302, "Found"], [303, "See Other"], [304, "Not Modified"], [305, "Use Proxy"], [307, "Temporary Redirect"], [400, "Bad Request"], [401, "Unauthorized"], [402, "Payment Required"], [403, "Forbidden"], [404, "Not Found"], [405, "Method Not Allowed"], [406, "Not Acceptable"], [407, "Proxy Authentication Required"], [408, "Request Timeout"], [409, "Conflict"], [410, "Gone"], [411, "Length Required"], [412, "Precondition Failed"], [413, "Request Entity Too Large"], [414, "Request-URI Too Long"], [415, "Unsupported Media Type"], [416, "Requested Range Not Suitable"], [417, "Expectation Failed"], [500, "Internal Server Error"], [501, "Not Implemented"], [502, "Bad Gateway"], [503, "Service Unavailable"], [504, "Gateway Timeout"], [505, "HTTP Version Not Supported"] ];

var animals = [ [1, "Bovidés", "vache"], [2, "Bovidés", "taureau"], [3, "Bovidés", "zébu"], [4, "Bovidés", "buffle"], [5, "Bovidés", "yack"], [6, "Canidés", "chien"], [7, "Canidés", "loup"], [8, "Canidés", "renard"], [9, "Canidés", "lycaon"], [10, "Équidés", "âne"], [11, "Équidés", "cheval"], [12, "Équidés", "zèbre"], [13, "Félidés", "chat"], [14, "Félidés", "lynx"], [15, "Félidés", "puma"], [16, "Félidés", "tigre"], [17, "Félidés", "lion"], [18, "Félidés", "Frosty"] ];

Array.prototype.displayTable = function anonymous(t_class, t_headrow) {
	document.write('<table class="'+t_class+'">'+
	               '<thead><tr><th>'+t_headrow.join('</th><th>')+'</th></tr></thead>'+
				   '<tbody>'+this.applyConcat(tableRow)+'</tbody></table>');
}

Array.prototype.applyConcat = function anonymous(fn) {
	if(!fn) return this.join("|");

	var intLength = this.length;
	var strConcat = "";
	for(i=0; i<intLength; ++i)
		strConcat += fn(this[i]);
	return strConcat;
}

function tableRow(a) {
	return ('<tr><td>'+a.join('</td><td>')+'</td></tr>');
}

function toggleCode(i) {
	var d = document.getElementById("code_"+i);
	var s = document.getElementById("s_code_"+i);
    if(d.style.display == "none") {
		s.innerHTML     = s.innerHTML.replace("Voir", "Masquer");
        d.style.display = "block";
    }
    else {
		s.innerHTML     = s.innerHTML.replace("Masquer", "Voir");
        d.style.display = "none";
    }
}

	
// Fonctions utilisées dans le tutorial

function request01() {
	var xhr_object = null;
	
	if(window.XMLHttpRequest) // Firefox
		xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // Internet Explorer
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else { // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		return;
	}

	xhr_object.open("GET", location.href, false);
	xhr_object.send(null);
	if(xhr_object.readyState == 4) alert("Requête effectuée !");
}

function request02() {
	var xhr_object = null;
	
	if(window.XMLHttpRequest) // Firefox
		xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // Internet Explorer
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else { // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		return;
	}

	xhr_object.open("GET", location.href.split("#")[0], false);
	xhr_object.send(null);
	if(xhr_object.readyState == 4) alert(xhr_object.responseText);
}

function request03() {
	var xhr_object = null;
	
	if(window.XMLHttpRequest) // Firefox
		xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // Internet Explorer
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else { // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		return;
	}

	xhr_object.open("GET", "foo.txt", true);
	
	xhr_object.onreadystatechange = function anonymous() {
		if(xhr_object.readyState == 4) alert(xhr_object.responseText);
	}
	
	xhr_object.send(null);
}

function request04(f) {
	var xhr_object = null;
	
	if(window.XMLHttpRequest) // Firefox
		xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // Internet Explorer
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else { // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		return;
	}

	var method   = f.elements["method"][0].checked ? "GET" : "POST";
	var filename = "strings2.php";
	var s1       = f.elements["string1"].value;
	var s2       = f.elements["string2"].value;
	var data     = null;
	
	if(s1 != "" && s2 != "")
		data = "s1="+s1+"&s2="+s2;
	
	if(method == "GET" && data != null) {
		filename += "?"+data;
		data      = null;
	}
	
	xhr_object.open(method, filename, true);
	
	xhr_object.onreadystatechange = function anonymous() {
		if(xhr_object.readyState == 4) {
			var tmp = xhr_object.responseText.split(":");
			if(typeof(tmp[1]) != "undefined") {
				f.elements["string1_r"].value = tmp[1];
				f.elements["string2_r"].value = tmp[2];
			}
			alert(tmp[0]);
		}
	}

	if(method == "POST")
		xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

	xhr_object.send(data);
}

function request05(f) {
	var l1    = f.elements["list1"];
	var l2    = f.elements["list2"];
	var index = l1.selectedIndex;
	if(index < 1)
		l2.options.length = 0;
	else {
		var xhr_object = null;
		
		if(window.XMLHttpRequest) // Firefox
			xhr_object = new XMLHttpRequest();
		else if(window.ActiveXObject) // Internet Explorer
			xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
		else { // XMLHttpRequest non supporté par le navigateur
			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
			return;
		}
	
		xhr_object.open("POST", "species.php", true);
		
		xhr_object.onreadystatechange = function anonymous() {
			if(xhr_object.readyState == 4)
				eval(xhr_object.responseText);
		}
	
		xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		var data = "family="+escape(l1.options[index].value)+"&form="+f.name+"&select=list2";
		xhr_object.send(data);
	}
}
