/* ajax.js : regroupe les scripts AJAX de www.matrix-editeur.com @date 11-2006 */


	
	/**
	* Méthode qui sera appelée sur le click du bouton
	*/
	function kit_keyboard(eve){
		if(eve.keyCode==83 && eve.ctrlKey==true){   /* CTRL + s */
			eve.preventDefault();
			eve.stopPropagation();
			dynamicsave();
		}
		if(eve.keyCode==81 && eve.ctrlKey==true){   /* CTRL + q */
			history.back();
		}
	}

	function dynamicsave(){
		getXhr();
		/* On défini ce qu'on va faire quand on aura la réponse */
		xhr.onreadystatechange = function(){
			/* On ne fait quelque chose que si on a tout reçu et que le serveur est ok */
			if(xhr.readyState == 4 && xhr.status == 200){		
				
				var docXML= cleanXML(xhr.responseXML.documentElement);
				/* if(docXML.childNodes[0].lastChild.data == "1"){  */
				if(docXML.getAttribute("result") == '1'){	
					// sauvegarde réussi
					document.getElementById('message').style.display = '';
          			document.getElementById('message').innerHTML = docXML.firstChild.data;
                    setTimeout("document.getElementById('message').style.display = 'none'",20000);
				}
	            else{
	            	// erreur de sauvegarde
					document.getElementById('formerror').style.display = '';
          			document.getElementById('formerror').innerHTML = docXML.firstChild.data;
				}
			}
		}
		// envoi POST de toutes les variables du formulaire
		formulaire = document.getElementById('form');
		xhr.open("POST",formulaire.action,true);
	  	xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		/*xhr.setRequestHeader('Content-Encoding','ISO-8859-1');*/
		/*overrideMimeType('text/html; charset=ISO-8859-15');*/
		
		/* récupération des champs via la propriété elements. */
		elts = formulaire.elements;
		for(var s="",i=0;i<elts.length;i++){
			 if(elts[i].type == 'checkbox') s += "&"+elts[i].id+"="+elts[i].checked;
			 else s += "&"+elts[i].id+"="+elts[i].value;
		}
		xhr.send("ajax=1"+s);
	}
	
	
	function who_is_there(){
		getXhr();
		/* On défini ce qu'on va faire quand on aura la réponse */
		xhr.onreadystatechange = function(){
			/* On ne fait quelque chose que si on a tout reçu et que le serveur est ok */
			if(xhr.readyState == 4 && xhr.status == 200){		
				// on affiche le nombre de connectés au site
				var docXML= xhr.responseXML.documentElement;
				//alert(docXML.firstChild.data);
				document.getElementById('online').innerHTML = "<img src='../images/users.png' alt='nombre de connectés' title='nombre de connectés' />"+docXML.firstChild.data;
				//if(document.getElementById('complete_online')) document.getElementById('complete_online') 
				setTimeout("who_is_there(0)",60000);
			}
		}
		xhr.open("GET","../tools/online.php5",true);
		xhr.send(null);
	}
	
	
	/* Chargement ajax d'une page à partir de son id dans la BD */
	function load(id){
		getXhr();
		/* On défini ce qu'on va faire quand on aura la réponse */
		xhr.onreadystatechange = function(){
			if(xhr.readyState == 4 && xhr.status == 200){
				
				var doc = xhr.responseText.split("[matrixseparator]");
				//alert(xhr.responseText);
				document.getElementById('tabnav').innerHTML = doc[0];
				document.getElementById('sousmenu').innerHTML = doc[1];
				document.getElementById('fil').innerHTML = doc[2];
				document.getElementById('content').innerHTML = doc[3];
				
				// alert('done');
			}
		}
		xhr.open("POST",'../tools/ajaxHandler.php5',true);
	  	xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		xhr.send("page="+id);
	}
	
	/* Chargement ajax d'une page à partir de son URL */
	/*function loadURL(url,param){
		getXhr();
		// On défini ce qu'on va faire quand on aura la réponse
		xhr.onreadystatechange = function(){
			if(xhr.readyState == 4 && xhr.status == 200){		
				
				var doc = xhr.responseText.split("[matrixseparator]");
				//alert(xhr.responseText);
				document.getElementById('tabnav').innerHTML = doc[0];
				document.getElementById('sousmenu').innerHTML = doc[1];
				document.getElementById('fil').innerHTML = doc[2];
				document.getElementById('content').innerHTML = doc[3];
				
				// alert('done');
			}
		}
		xhr.open("POST",url,true);
	  	xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		xhr.send(param);
	}*/


	/* Requête ajax sur la BD */
	function ajaxRequest(param){
		getXhr();
		/* On défini ce qu'on va faire quand on aura la réponse */
		xhr.onreadystatechange = function(){
			if(xhr.readyState == 4 && xhr.status == 200){		
				/*var docXML= cleanXML(xhr.responseXML.documentElement);			
				document.getElementById(docXML.firstChild.data).innerHTML = docXML.lastChild.data;*/

				//alert(xhr.responseText);
				var doc = xhr.responseText.split("[matrixseparator]");
				document.getElementById(doc[0]).innerHTML = doc[1];
			}
		}
		xhr.open("POST",'../tools/ajaxHandler.php5',true);
	  	xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		xhr.send(param);
	}
	
	/* Requête ajax multiple sur la BD */
	function ajaxRequests(form){
		getXhr();
		/* On défini ce qu'on va faire quand on aura la réponse */
		xhr.onreadystatechange = function(){
			if(xhr.readyState == 4 && xhr.status == 200){		
				
				var doc = xhr.responseText.split("[matrixseparator]");
				var count = doc[0]+1;
				//	alert(xhr.responseText);
				for(i=1;i<count;i+=2){
					document.getElementById(doc[i]).innerHTML = doc[i+1];
				}
			}
		}

		xhr.open("POST",'../tools/ajaxHandler.php5',true);
	  	xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
				
		/* récupération des champs via la propriété elements. */
		elts = form.elements;
		for(var s="",i=0;i<elts.length;i++){
			 if(elts[i].type == 'checkbox') s += "&"+elts[i].id+"="+elts[i].checked;
			 else s += "&"+elts[i].id+"="+elts[i].value;
		}
		// alert(s);
		xhr.send(s);
		
	}

var xhr = null;
var mAjax = {

	getXhr: function (){
		if(window.XMLHttpRequest) /* Firefox et autres */
		   xhr = new XMLHttpRequest();
		else if(window.ActiveXObject){ /* Internet Explorer */
		   try {
					xhr = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (e) {
					xhr = new ActiveXObject("Microsoft.XMLHTTP");
				}
		}
		else { /* XMLHttpRequest non supporté par le navigateur */
		   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		   xhr = false;
		}
	},

        /* Node cleaner */
	go: function(c){
		if(!c.data.replace(/\s/g,''))
			c.parentNode.removeChild(c);
	},

        cleanXML: function(d){
		var bal=d.getElementsByTagName('*');

		for(i=0;i<bal.length;i++){
			a=bal[i].previousSibling;
			if(a && a.nodeType==3)
				mAjax.go(a);
			b=bal[i].nextSibling;
			if(b && b.nodeType==3)
				mAjax.go(b);
		}
		return d;
	},

        /* Gestion formulaire */
	ajaxForm: function(form){
		mAjax.getXhr();
		/* On défini ce qu'on va faire quand on aura la réponse */
		xhr.onreadystatechange = function(){
			if(xhr.readyState == 4 && xhr.status == 200){

				// alert('hihi');
				var response = mAjax.cleanXML(xhr.responseXML.documentElement);
				var items = response.getElementsByTagName("error");

				var count = response.getElementsByTagName("count")[0].firstChild.nodeValue;
                                if(count == 0){
                                  document.location = "../accueil/";
                                  return true;
                                }

				for(i = 0; i < count; i++) { /* POUR CHAQUE item */
					field = items[i].getElementsByTagName("field")[0].firstChild.nodeValue;
					document.getElementById("lb_"+field).className = "simple_error";
					document.getElementById(field).onchange = function(){document.getElementById("lb_"+this.name).className = "";};
					// html += '<h1>' + items[i].getElementsByTagName("title")[0].firstChild.nodeValue + '</h1>'
				}
				// alert(xhr.responseText);

				document.getElementById("formerror").innerHTML = "une erreur de saisie a été détectée.";
                                new Fx.Scroll(window).toElement($('formerror'));
				return false;
			}
		}

		xhr.open("POST",'../ajax/',true);
	  	xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');

		/* récupération des champs via la propriété elements. */
		elts = form.elements;
		for(var s="",i=0;i<elts.length;i++){
			if(elts[i].type == 'checkbox') s += "&"+elts[i].id+"="+elts[i].checked;
			else s += "&"+elts[i].id+"="+elts[i].value;
		}
		// alert(s);
		xhr.send(s);
	},

	/* Chargement ajax d'une page à partir de son URL */
	loadURL: function(url){
		mAjax.getXhr();
		/* On défini ce qu'on va faire quand on aura la réponse */
		xhr.onreadystatechange = function(){
                  try{
			if(xhr.readyState == 4 && xhr.status == 200){
				var response = mAjax.cleanXML(xhr.responseXML.documentElement);
				//var fil = response.getElementsByTagName("fil");
				var content = response.getElementsByTagName('content');  // content = NodeList
                                var fil = response.getElementsByTagName('fil');  // fil = NodeList

                                // le premier élément est un type 1 (Element_Node) dont le contenu est dans ses fils (le premier est le texte)
				document.getElementById('content').innerHTML = content[0].firstChild.nodeValue;

				document.getElementById('ariane').innerHTML = fil[0].firstChild.nodeValue;
				// alert('done');
			}
                  }
                  catch(e){
                    alert('Une erreur est survenue : '+e);
                  }
		}
		xhr.open("POST",url,true);
	  	xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		xhr.send("&ajax=1");
	}

 };
