// variable globale contenant une message d'erreur
var err_message_txt = "javascript : Problème interne" ;

/**
* Classe AJAX permettant de charger des données de façon asynchrone 
*/
function fastServConnection() {
	// Attributs de la classe
	var lnk = null ;
	var callBack = null ;
	var http_mode = null ;
	var post_datas = null ;
	
	// Définition des méthodes de la classe
	
	/**
	* Méthode qui initialise l'objet xmlHTTP pour la requête asynchrone vers le serveur
	*/
	this.init_connection = function() {
		var xmlhttp;
		/*@cc_on
			@if (@_jscript_version >= 5)
				try {
					xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (e) {
					try {
						xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
					} catch (E) {
						xmlhttp = false;
					}
				}
			@else
				xmlhttp = false;
		@end @*/
		if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
				try {
					xmlhttp = new XMLHttpRequest();
				} catch (e) {
					xmlhttp = false;
				}
		}
		return xmlhttp;
	}
	lnk = this.init_connection() ;
	
	this.append_post_data = function(name, value) {
		if(post_datas != null) post_datas += "&"+name+"="+value ;
		else post_datas = name+"="+value ;
	}
	
	/**
	* Méthode qui permet de charger en arrière plan des données du serveur
	* url : adresse de la page à charger
	* handler : gestionnaire de chargement 
	* param : paramètre de la requête
	*/
	this.bg_load = function (url, handler, ptype ){
		// ouverture de la connexion

		callback = handler ;
		http_mode = ptype ;
		// s'il est correctement initialisé
		if(lnk){
			// on prépare une requête vers l'url 'url' de type GET vers le serveur
			switch(http_mode){
				case "POST" :
					lnk.open("POST", url, true) ;
					lnk.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
					lnk.send(post_datas);
					
					break ;
				case "GET" :
					lnk.open("GET", url, true) ;
					lnk.send(null);
					break ;
				default : break ;
			}
	// 		alert(handler) ;
			// on attend la réponse
			return lnk.onreadystatechange = function () {
				// Si la réponse a été reçu 
				if (lnk.readyState == 4) {
				        if (lnk.status == 200) { /* 200 : code HTTP pour OK */
						// on la récupère
						if (typeof callback == "function") {
								callback(lnk) ;
						}
					}
				}
				return false
			}
			
		}
		return false ;
	}
	
	this.bg_load_post = function (url, handler) {
		this.bg_load(url, handler, "POST") ;
	}
	
	this.bg_load_get = function (url, handler) {
		this.bg_load(url, handler, "GET") ;
	}

}
// fin de la classe fastServConnection


