function AJAX(b,a,c){if(b==null){throw new Error("Le constructeur requiert un url");}if(a==null){throw new Error("Le deuxième argument (post ou get) est requis par le constructeur de la classe AJAX");}else{if(a.toLowerCase()!="post"&&a.toLowerCase()!="get"){throw new Error("Le type d'envoi (post ou get 2e argument string) est requis dans le constructeur");
}}if(c==null){throw new Error("Le troisième argument est requis par le constructeur de la classe AJAX");}else{if(typeof c!="boolean"){throw new Error("Le troisième argument requis par le constructeur de la classe AJAX doit être booléen");}}this.__request__=null;if(window.XMLHttpRequest){this.__request__=new XMLHttpRequest();
}else{if(window.ActiveXObject){this.__request__=new ActiveXObject("Msxml2.XMLHTTP");if(!this.__request__){this.__request__=new ActiveXObject("Microsoft.XMLHTTP");if(!this.__request__){if(this.debug){alert("Ce navigateur ne prend pas en charge les requêtes asynchrones");}throw new Error("AJAX n'est pas pris en charge par ce navigateur");
}}}}this.__url__=b;this.__asynch__=c;this.__reqType__=a;this.__url__Vars=arguments[3];this.__urlVars__=new Array();this.handleResponse=null;this.onreadystatechange=null;this.responseXML=null;this.responseText=null;this.waitingForResponse=false;this.status=null;this.statusText=null;this.json=null;this.charsetRequest="UTF-8";
this.debug=false;this.readyState=null;this.onInitRequest=null;this.onResponse=null;}AJAX.prototype.addResponseListener=function(a){AJAX.prototype.responseListeners.push(a);};AJAX.prototype.responseListeners=new Array();AJAX.prototype.addInitRequestListener=function(a){AJAX.prototype.initRequestListeners.push(a);
};AJAX.prototype.initRequestListeners=new Array();AJAX.prototype.addUrlKeyVal=function(b,a){if((typeof b).toLowerCase()=="string"){this.__urlVars__.push(b+"="+encodeURIComponent(a));}else{if(b.type=="select-multiple"){for(t=0;t<b.options.length;t++){if(!b.options[t].selected){continue;}this.__urlVars__.push(b.name+"[]"+"="+encodeURIComponent(b.options[t].value));
}}else{if(b.type=="select-one"){this.__urlVars__.push(b.name+"="+encodeURIComponent(b.options[b.selectedIndex].text));}else{if(b.type=="checkbox"){if(b.checked){this.__urlVars__.push(b.name+"="+encodeURIComponent("on"));return;}this.__urlVars__.push(b.name+"="+encodeURIComponent("off"));}}}}};AJAX.prototype.initRequest=function(){if(this.onInitRequest!=null){this.onInitRequest();
}if(this.__request__==null){alert("Votre fureteur ne permet pas d'utiliser toutes"+"\n les fonctionalités de cette application!\n Faites vos mises  jour");return false;}for(var a=0;a<AJAX.prototype.initRequestListeners.length;a++){try{AJAX.prototype.initRequestListeners[a](b);}catch(c){}}try{var b=this;
this.__request__.onreadystatechange=function(){b.__onreadystatechange();};this.__open(this.__reqType__,this.__url__,this.__asynch__);this.waitingForResponse=true;if(this.__reqType__.toLowerCase()=="post"){this.__setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset="+this.charsetRequest);
if(this.__url__Vars!=null){this.__urlVars__.push(this.__url__Vars);}this.__send(this.__urlVars__.join("&"));}else{this.__send(null);}}catch(c){if(this.debug){alert("L'application ne peut contacter "+"le serveur pour le moment.\n"+"Essayez de nouveau dans quelques secondes.\n"+"Detail de l'erreur: "+c.message+"."+"\n\n(mode débogage)");
}return false;}};AJAX.prototype.__onreadystatechange=function(){if(!this.waitingForResponse){return false;}this.readyState=this.__request__.readyState;if(this.readyState==4){try{this.status=this.__request__.status;this.statusText=this.__request__.statusText;if(this.status==200||this.status==304){this.waitingForResponse=false;
this.responseXML=this.__request__.responseXML;this.responseText=this.__request__.responseText;if(this.responseText==null){throw new Error("Vous devez exécuter la requête asynchrone avant d'appeler cette méthode");}if(this.getResponseHeader("Content-Type").search(/json/gi)!=-1){try{this.json=eval("("+this.responseText+")");
}catch(e){if(this.debug){alert("Le document JSON récupéré n'est pas bien formé\nRetour du serveur:\n\n"+this.responseText+"\n(mode déboguage)");}throw new Error("Le document récupérée ne correspond pas à un format JSON");}}if(this.handleResponse!=null){try{this.handleResponse();}catch(e){if(this.debug){alert(e.message+"\n\n(mode débogage)");
}}}if(this.onResponse!=null){this.onResponse();}for(var i=0;i<AJAX.prototype.responseListeners.length;i++){AJAX.prototype.responseListeners[i](this);}}else{if(this.status==404){if(this.debug){alert("La page n'a pu être trouvée sur le serveur"+"\n\n(mode débogage)");}throw new Error("La page n'a pu être trouvée sur le serveur");
}else{if(this.debug){alert("Une erreur a été rencontrée sur le serveur\nNo. de l'erreur : "+this.status+"\n\n(mode débogage)");}throw new Error("Une erreur a été rencontrée sur le serveur\nNo. de l'erreur : "+this.status);}}}catch(e){}}if(this.onreadystatechange!=null){this.onreadystatechange();}};AJAX.prototype.statusText=function(){return this.__request__.statusText;
};AJAX.prototype.abort=function(){if(this.__request__.readyState!=0&&this.__request__.readyState!=4){this.__request__.abort();this.handleResponse=function(){};}this.waitingForResponse=false;};AJAX.prototype.getAllResponseHeaders=function(){return this.__request__.getAllResponseHeaders();};AJAX.prototype.getResponseHeader=function(a){return this.__request__.getResponseHeader(a);
};AJAX.prototype.__open=function(a,b){this.__request__.open(a,b);};AJAX.prototype.__send=function(a){this.__request__.send(a);};AJAX.prototype.__setRequestHeader=function(b,a){this.__request__.setRequestHeader(b,a);};function WebAccessor(c,a,d){var b=this;this.responseListeners=new Array();this.ajax=new AJAX(c,a?"POST":"GET",true);
for(x in d){this.ajax.addUrlKeyVal(x,d[x]);}this.ajax.debug=true;this.ajax.handleResponse=function(){alert(this.responseText);for(var e=0;e<b.responseListeners.length;e++){b.responseListeners[e](b,this.json);}};this.ajax.initRequest();}WebAccessor.prototype.addResponseListener=function(a){this.responseListeners.push(a);
};