//------------------------------------------------------------
// MY AJAX ENGINE //////////////////////////////////////
// Author : Emmanuel Gauthier
//------------------------------------------------------------

var viewed_pages = new Array();
var currentPage = '';
var gotolink = '';
var is_ie_nav = 0;

var post_requestS = new Array();
var post_div = null;

function ajaxObject(){
	var AJAXrequest  = null;
	if(window.ActiveXObject){ 
		// Support Internet Explorer
		
		    var ieversions = ['Msxml2.XMLHTTP',
                      'Microsoft.XMLHTTP',
                      'Msxml2.XMLHTTP.5.0',
                      'Msxml2.XMLHTTP.4.0',
                      'Msxml2.XMLHTTP.3.0'
                      ];             
		    for(var i=0; !AJAXrequest && i<ieversions.length; i++)     
		    {         
			 try        
			 {            
			     AJAXrequest = new ActiveXObject(ieversions[i]);        
			 }         
			 catch(e)         
			 {             
			     AJAXrequest = null;         
			 }     
		    }
		
		//AJAXrequest = new ActiveXObject("Microsoft.XMLHTTP");
		return AJAXrequest;
	} else 	if(window.XMLHttpRequest){ 
		// Support Firefox, Safari, Opera
		AJAXrequest = new XMLHttpRequest();		
		return AJAXrequest;
	} else {
		// Aucun support
		alert('Désolé, mais votre navigateur ne supporte pas la technologie AJAX. Nous vous conseillons d\'utiliser un de ces navigateurs compatibles : Mozilla Firefox, Microsoft Internet Explorer, Opera.');
		return false;
	}
}


/////////////////// AJAX.LoadPage  /////////////////////:

function writeHTML(htmlStream, div){
	document.getElementById(div).innerHTML = htmlStream;
}

// A utiliser le moins possible, utiliser plutot le transfert en tache de fond avec postPage
function loadPage(url,div){
	
	if(document.getElementById(div)){
		var request = ajaxObject()
		request.open("POST", url, false);
		request.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");
		request.setRequestHeader("Content-Language", "fr");
		request.send(null);
		if(request.readyState == 4) {
			writeHTML(request.responseText, div);
			if(window.ActiveXObject){  document.recalc() } ; // hack pour recalculer les effets css avec le hack IE7
			hide_chargement();
			//writeHTML(viewed_pages.join(';---;') + '<br />'+currentPage,"footer"); //debug
		} else { 
			return false;
		}
	}
}


function getPage(url,destination){
	defauturl = url ;
	div = destination ;
	if(defauturl	 != ''){
		show_chargement('Chargement en cours ...',div);
		setTimeout("postPage(defauturl,'',div);",200); 
		currentPage = viewed_pages.push(""+defauturl) - 1;
		//setTimeout("loadPage(defauturl,defautdestination);",800); 
		//writeHTML('&nbsp;&nbsp;Veuillez patienter...',defautdestination);	
	}
	
	update_ajax_buttons();

}

var to_return = null;

function getPageContent(url,param){

	var last_id = post_requestS.push(ajaxObject()) - 1;
	
	var post_request = post_requestS[last_id];

	post_request.onreadystatechange = function(){
	      if (post_request.readyState == 4) {
		  if (post_request.status == 200) {
		     //alert(http_request.responseText);
		    to_return = post_request.responseText ;    
		    if(window.ActiveXObject){  document.recalc() } ; // hack pour recalculer les effets css avec le hack IE7
		  } else {
		     alert('Un problème est survenu, rendant le chargement de la page impossible. Si le problème persiste contactez l\'administrateur.');
		  }
	      }else{
			//writeHTML(post_request.readyState,post_div);
	      }
	}
	post_request.open("POST", url, true);

	//post_request.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");
	post_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	//request.setRequestHeader("Content-Language", "fr");
	post_request.setRequestHeader("Content-length", param.length);
	post_request.setRequestHeader("Connection", "close");
	post_request.send(param);
		       
       return to_return ;
}


function postPage(url,param,div){

	var post_div = div;
	var last_id = post_requestS.push(ajaxObject()) - 1;
	
	var post_request = post_requestS[last_id];
	//alert('blop');
	//post_request = ajaxObject()
	//request.onreadystatechange = alertContents(div);
	post_request.onreadystatechange = function(){
	      if (post_request.readyState == 4) {
		  if (post_request.status == 200) {
		     //alert(http_request.responseText);
		    writeHTML(post_request.responseText, post_div);    
		    if(window.ActiveXObject){  document.recalc() } ; // hack pour recalculer les effets css avec le hack IE7
		  } else {
		     writeHTML('Un problème est survenu, rendant le chargement de la page impossible. Si le problème persiste contactez l\'administrateur.',post_div);
		  }
		  hide_chargement();
	      }else{
			//writeHTML(post_request.readyState,post_div);
	      }
	}
	post_request.open("POST", url, true);

	//post_request.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");
	post_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	//request.setRequestHeader("Content-Language", "fr");
	post_request.setRequestHeader("Content-length", param.length);
	post_request.setRequestHeader("Connection", "close");
	post_request.send(param);
		
	if(document.getElementById('retour_infos')){
		document.getElementById('retour_infos').innerHTML = '';
	}
       
}


function encodeParams(form_name){
	// fonction qui va recupérer tout les champs d'un formulaire dont l'id est form_name ou le nom est form_name
	if(document.getElementById(form_name)){
		myForm = document.getElementById(form_name) ;
	}else if( document.forms[form_name]) {
		myForm = document.forms[form_name] ;
	}else if( document.forms['the_form']) {
		myForm = document.forms['the_form'] ;
	}else return;
	
	parametres = 'any=any';

	for(t=0; t<myForm.elements.length;t++){
		myElement = myForm.elements[t];
		if(myElement.name && myElement.value){
			if(myElement.type == 'radio' || myElement.type == 'checkbox' ){
				if(myElement.checked){
					parametres += '&' + myElement.name + '=' + encodeURIComponent(myElement.value) ;
				}
			}else if(myElement.type == 'select-multiple'){
				for (var i=0; i<myElement.options.length; i++) {
					if (myElement.options[i].selected) {
						//selectedList.push(selectBox.options[i]);
						parametres += '&' + myElement.name + '=' + encodeURIComponent(myElement.options[i].value) ;
					}
				}
			}else{
				parametres += '&' + myElement.name + '=' + encodeURIComponent(myElement.value) ;
			}
						
		}
			
	}
	
	self.location.hash="centre";
	
	return encodeURI(parametres);
	
}


function addEvent(wobj, evType, fn) {
	if (wobj.addEventListener) {
		wobj.addEventListener(evType, fn, false);
		return true;
	} else if (wobj.attachEvent) {
		var r = wobj.attachEvent('on'+evType, fn);
		return r;
	} else {
		return false;
	}
}

