  function AJAX(a_sURL, a_sDiv){
  	if (a_sURL != undefined){
  		this.m_sURL = a_sURL;}
  	
  	if (a_sDiv != undefined){
  		this.m_sDiv = a_sDiv;}
  	
  	if (this.m_Request != undefined){
  	  this.m_Request.abort();
  	  delete this.m_Request;}
  	
  	this.m_Request = this.createReqestObject();
  	
  	var m_This = this;
  	
  	this.m_Request.onreadystatechange = function() {m_This.handleResponse()};
  	this.m_Request.open("POST", this.m_sURL, true);
  	this.m_Request.send(null);}
  
  AJAX.prototype.m_sURL = undefined;
  AJAX.prototype.m_sDiv = undefined;
  AJAX.prototype.m_Request = undefined;
  
  AJAX.prototype.createReqestObject = function(){
  	var req;
  	try {
      // Mozilla, Firefox, Opera et le reste du monde.
      req = new XMLHttpRequest();}
    catch (error) {
      try   {
        // IE
        req = new ActiveXObject("Microsoft.XMLHTTP");}
      catch (error) {
        try {
          // IE
          req = new ActiveXObject("Msxml2.XMLHTTP");}
        catch (error) {
          req = false;}}}
  	return req;}
  
  AJAX.prototype.handleResponse = function(){
  	if (this.m_Request.readyState == 4){
  		// On regarde pour 0 à cause d'un bug dans Firefox.
  		if (this.m_Request.status == "200" || this.m_Request.status == "0"){
  			var content = getById(this.m_sDiv);
		
		//var ha=document.defaultView.getComputedStyle(getById(this.m_sDiv), null).height;
		
  		content.innerHTML = this.m_Request.responseText;
		
		//var hb=document.defaultView.getComputedStyle(getById(this.m_sDiv), null).height;
		//document.getElementById(this.m_sDiv).style.height = ha;
		//resize(ha,hb,this.m_sDiv);
  			
  			if (this.onDraw != undefined){
  				this.onDraw();}}
  		else{	
  			if (this.onError != undefined){
  				this.onError({status:this.m_Request.status, statusText:this.m_Request.statusText});}}
  
  		delete this.m_Request;}
  	else{
		if(this.m_sDiv.substr(0,7)=="reponse"){
		getById(this.m_sDiv).innerHTML = '';}
		}}
  
  function getById(a_id){
  	if (document.getElementById){
  		return document.getElementById(a_id);}
  	else if (document.all){
  		return document.all[a_id];}
  	else if (document.layers){
  		return document.layers[a_id];}
  
  	return null;}
	
/*	function resize(ha,hb){
		i++;
		var diff=(hb-ha); var incr=parseInt(diff)/100;
		res=ha+(i*incr);
		document.getElementById(div).style.height = res;
		alert(hb);
	}
	function resize_t(ha,hb,div){
		ha=parseInt(ha.replace("px",""));
		hb=parseInt(hb.replace("px",""));
		
	timer=setInterval("resize(hb,hb)", 100);
	}*/
	
/* recups */

/*function strreplace(val,need,haystack){
	var array = new Array();
	array = vab.split(need);
	var va = array.join(haystack);
	return va;}*/

function entity_decode(val){
	var quotes = new Array;
	quotes = {"20":" ","21":"!","22":'"',"23":"#","24":"$","25":"%","26":"&","27":"'","2C":",","3A":":","3B":";","3D":"=","3F":"?","5B":"[","5D":"]","5E":"^","7B":"{","7C":"|","7D":"}","7E":"~","A7":"§","B0":"°","E9":"é","E8":"è","E7":"ç","E0":"à","F9":"ù","B5":"µ","A3":"£","E2":"â","C0":"À","C9":"É","EA":"ê","EB":"ë","EE":"î","EF":"ï","F4":"ô","FB":"û","FC":"ü"};
	for(i in quotes){
			val=clean_entity(val,"%"+i,quotes[i]);		
	}
return val;}

function clean_entity(v,a,b){
	for(i=0;i<100;i++){v=v.replace(a,b);}
	return v;}
	
function prep_item(lm,ln){
	ln=clean_entity(ln,"_","*");
	//ln=ln.replace(/"_"/g,"*");
	//ln=ln.split("'").join("\'");
	ln=ln.replace(/"%20"/g,"");
	if(ln && ln!=1){var lna=ln+":";}else{var lna="";}
	lm=lm.replace("_","*");
	var item=lna+lm;
	return item;
}
	
function serializeList(list,sv,d,m){
		var items = list.getElementsByTagName("li");
		var array = new Array();
			
	if(sv=="add"){
		var bar = escape(document.getElementById("modbar").value).replace("_","*");
		var po = escape(document.getElementById("modpos").value).replace("_","*");
		po=po.replace("%3A",":").replace("%3A",":");
		var pod = po.split(":"); 
		if(pod[0]){var pob = pod[0];} else {var pob = "1" ;}
		if(pod[1]){var pob = pob+":"+pod[1].replace("_","*");} 
		//else {var pob = po.replace("_","*");}
		if(pod[2]){var pob = pob+":"+pod[2].replace("_","*");}
	}
	if(pob=="-"){array.push(bar);}
	
		for (var i = 0, n = items.length; i < n; i++) {
		//	var ditems = list.getElementsByTagName("div")
		//place
			var lm = escape(items[i].getElementsByTagName("input").lm.value);//conn
			var ln = escape(items[i].getElementsByTagName("input").ln.value);//value
			ln=clean_entity(ln,"_","*");
			//ln=ln.replace(/"_"/g,"*");
			ln=ln.replace(/"%20"/g,"");
			if(ln && ln!=1){var lna=ln+":";}else{var lna="";}
			lm=clean_entity(lm,"_","*");
			//lm=lm.replace(/"_"/g,"*");
			var item=lna+lm;
		//	var item=prep_item(lm,ln);
			var todel=lm+ln;
			todel=entity_decode(todel);
			if(ln!="1") var toadd=ln+":"+lm; else toadd=lm;
			toadd=toadd.replace(/"%3A"/g,":");
			
		//alert(todel+"##"+d);			
			//del
			if(sv=="del"){
				if(todel!=d){array.push(item);}
			}
			//save
			if(sv=="sav"){
				if(todel==d){
				var lm = escape(document.getElementById("lmedit").value);//conn
				var ln = escape(document.getElementById("lnsav").value);//value
		//	alert(ln);
				ln=clean_entity(ln,"%26","~");//replace & by ~
				ln=clean_entity(ln,"%23","");//# => used separator
				ln=clean_entity(ln,"%7C","");//| => subseparator
				ln=clean_entity(ln,"%22","");//" => impossible to save
				ln=clean_entity(ln,"%u2019","'");//’ 
				//ln=clean_entity(ln,"%27","'");//' 
				
				var item = prep_item(lm,ln);}
			else{}
		//alert(item+"#"+d+"#");
			array.push(item);}
			//add
			if(sv=="add"){
				array.push(item);
				if(pob==toadd){array.push(bar);}
			}
			//move
			if(sv=="move"){
				if(todel==d){
					if(array[(i-1)]){
						var itemb=array[(i-1)]; 
						array[(i-1)]=item;
						array.push(itemb);
					}
					else{array.push(item);}
				}
				else{array.push(item);}
			}
		}
		//if(m=="MENUS"){var separator=", ";}else{var separator=" ";}
		return array.join("|"); //separator
	}

	function inspectListOrder(id,s,d,m) {//Save Del Mod
		var va = serializeList(document.getElementById(id),s,d,m) 
	//	alert(va,true)
		return va ;
	}
	
  function SaveB(val){ //admin_config_Gsav
  dn = val.split("_"); 
  var cal = dn[0];
  var dir = dn[1];
  var sav = dn[2];
  	if(sav){var vas=inspectListOrder(cal+dir,sav,dn[3],dir);}
	if(sav=="del" && vas==""){var vas="nothing";}
	var URL = 'progb/ajax.php?dir='+cal+"_"+dir+"_"+vas;//
	var ajax = new AJAX(URL, cal+dir); 
	if(sav=="del"){Close("popup");}
	if(sav=="sav"){Close("popup");}
	if(sav=="add"){Close("popup");}
	//	var bar = escape(document.getElementById("modbar").value).replace("_","*");
	//	SaveBe(dn[0]+"_"+dn[1]+"_"+bar+"_1");
	}
	
  function SaveBb(val){ //admin_config_mod
  dn = val.split("_"); 
	var URL = 'progb/ajax.php?dir='+val;
	var ajax = new AJAX(URL, dn[0]+dn[1]); 
	}
	
  function SaveBe(val){ //admin_config_mod //popup
  dn = val.split("_"); 
//	window.outerHeight //haueur globale
  var URL = 'progb/ajax.php?dir='+val;
	var ajax = new AJAX(URL, "popup"); //dn[0]+dn[1]
	popup(550,150);
  }
  
  function popup(w,h){
  //ha=document.defaultView.getComputedStyle(getById("popup"), null).height;
  //la=document.defaultView.getComputedStyle(getById("popup"), null).width;
  //alert(la);
  pospage=window.pageYOffset+h;
  //margeh=(window.innerheight-ha)/2;
  margel=(window.innerWidth-w)/2;
	document.getElementById("popup").style.marginTop = pospage+"px";//style/cssText
	document.getElementById("popup").style.marginLeft = margel+"px"; 
  }

  function SaveBc(val){ //toggleart 
  dn = val.split("_"); 
  var op = document.getElementById("toggleart"+dn[1]).innerHTML;
  if(op=="ouvrir"){var nb = 3 ; 
  document.getElementById("toggleart"+dn[1]).innerHTML = "fermer";
  document.getElementById("toggleart"+dn[1]).className = "txtred";} //style/cssText
  else{var nb = 2 ; ob = "ouvrir";
  document.getElementById("toggleart"+dn[1]).innerHTML = "ouvrir";
  document.getElementById("toggleart"+dn[1]).className = "txtx";}
	var URL = 'progb/ajax.php?dir='+val+"_"+nb;
	var ajax = new AJAX(URL, dn[0]+dn[1]); 
	}
	
  function SaveA(val){ //admin_config
  dn = val.split("_"); 
  var cal = dn[0];
  var dir = dn[1];
	var URL = 'progb/ajax.php?dir='+val+'_' + escape(document.getElementById(dir).value);
	var ajax = new AJAX(URL, cal+dir); 
	}
	
  function Save(val){ //même IDcible que case_name in ajax
  dn = val.split("_"); 
  var cal = dn[0];
  var dir = dn[1];
	var URL = 'progb/ajax.php?dir='+val;
	var ajax = new AJAX(URL, cal);
	}

  function SaveD(val){
  dn = val.split("_"); 
	var URL = 'progb/ajax.php?dir='+dn[1]+'_'+dn[2]+'_'+dn[3]+'_'+dn[4];
	var ajax = new AJAX(URL, dn[0]);
	}
  
  function Envoyer(val){
  dn = val.split("_"); 
  var nb = dn[1];
	var URL = 'progb/ajax.php?dir='+val;
	var ajax = new AJAX(URL, 'reponse'+nb);
	}

  function SaveR(val){
	var nb = val.substr(4);
	var src = escape(document.getElementById(val).value);
	var URL = '/progb/ajax.php?dir='+val+'&nom=' + src;
	var ajax = new AJAX(URL, 'reponse'+nb);
	}
	
  function SaveI(val){//import
  	var nobr="";
	if(document.getElementById("nobr").checked==true){var nobr="&nobr=ok";}
	var src=escape(document.getElementById(val).value.replace('http://',''));
	var URL = 'progb/ajax.php?dir='+val+'&nom='+src+nobr
	var ajax = new AJAX(URL, 'textarea_1');
	var ajax = new AJAX(URL+'&t==', 'suj_1');
	}
  function SaveIb(val,id){//import_in_place
  	var src = prompt("Source","http://").replace('http://','');
	var URL = '/progb/ajax.php?dir='+val+'&nom='+src+"&import="+id;
	var ajax = new AJAX(URL, 'textarea_1');
	}
  function SaveIc(val){//preview
  	var goto = escape(document.getElementById("textarea_1").value);
	var lght=goto.length;
	if(lght>8136){
	alert("Sélection trop longue ("+lght+") : limite : 8136 caractères");}
	else{
	var URL = '/progb/ajax.php?dir=articlearea_'+val+'&nom=' + goto;
	var ajax = new AJAX(URL, 'reponse');
	}}

function SaveChat(val){
  var nam=escape(document.forms['chat'+val]["name"].value);
  var msg=escape(document.forms['chat'+val]["msg"].value);
	var msg=verifSend(msg,"msg"); 
	if(msg){
	var URL = 'progb/ajax.php?dir=chat_'+val+"_"+nam+"&nom="+msg;
	var ajax = new AJAX(URL, val);}
	getById('msg'+val).value = '';
}
function verifSend(val,defo){
	if(val==defo){	var val = prompt("message: ");	}
	return val ;
}

/*///////////////////*/
	
function EditTopo(val){
	var URL = 'progb/ajax.php?dir=editmod_'+val;
	var ajax = new AJAX(URL, 'editmodule');
	var URL = 'progb/ajax.php?dir=topo_node_'+val;
	var ajax = new AJAX(URL, 'edittopo');
	//document.getElementById("topot_"+val).className = "txtred";
	getById('editcommand').innerHTML = '';
}

function mod_recup(){
	var parent = escape(document.getElementById("parent").value);
	var node = escape(document.getElementById("node").value);
	var style = escape(document.getElementById("style").value);
	var condi = escape(document.getElementById("condition").value);
	var command = escape(document.getElementById("comd").value);
	var childs = escape(document.getElementById("childs").value);
	var templ = escape(document.getElementById("value").value);
	var opt = parent+"~"+node+"~"+style+"~"+condi+"~"+command+"~"+childs+"~"+templ;
	return opt;
}

function EditMod(val){
	var URL = 'progb/ajax.php?dir=editmod_'+val
	var ajax = new AJAX(URL, 'editmodule');
	EditCommand("");
}

function SaveMod(val){//node_cond
	var opt=mod_recup();
	var URL = 'progb/ajax.php?dir=savemod_'+val+"_"+opt;
	var ajax = new AJAX(URL, 'editmodule');
}
	
function CreateMod(val){
	var opt=mod_recup();
	var URL = 'progb/ajax.php?dir=createmod_'+val+'_'+opt;
	var ajax = new AJAX(URL, 'editmodule');
}
	
function DelMod(val){
	var URL = 'progb/ajax.php?dir=delmod_'+val;
	var ajax = new AJAX(URL, 'editmodule');
	dn = val.split("_"); 
}

function AddChild(val){//node_cond
	var vlb = escape(document.getElementById("node").value);
	var URL = 'progb/ajax.php?dir=addchild_'+val+'&nom='+vlb;
	var ajax = new AJAX(URL, 'editmodule');
}
/*function AddChild(val){//node_cond
	//dn = val.split("_"); 
	var vlb = escape(document.getElementById("childs").value);
	var URL = 'progb/ajax.php?dir=editcom_'+val+'&nom='+vlb;
	var ajax = new AJAX(URL, 'editcommand');
}*/
function DelChild(val){
	var URL = 'progb/ajax.php?dir=delchild_'+val;
	var ajax = new AJAX(URL, 'editmodule');
	dn = val.split("_");
	//EditTopo(dn[2]);
}

function EditCommand(val){//$nod,$cnd,$com,$val
	dn = val.split("_"); 
	var vlb = escape(document.getElementById(dn[2]).value);
	var URL = 'progb/ajax.php?dir=editcom_'+val+'&nom='+vlb;
	var ajax = new AJAX(URL, 'editcommand');
}
function SaveCommand(val){
	dn = val.split("_"); 
	var vlb = escape(document.getElementById('edit'+dn[2]).value);
	var URL = 'progb/ajax.php?dir=savecom_'+val+'&nom='+vlb;
	var ajax = new AJAX(URL, 'editcommand');
	if(dn[2]=='node'){EditTopo(vlb+'_'+dn[1]);} else{EditMod(val);}
}

function jumpMenu_menu(tar,selObj){
	var val = selObj.options[selObj.selectedIndex].value ;
	var URL = 'progb/ajax.php?dir=comdbar_'+val;
	var ajax = new AJAX(URL, tar);
}
function jumpMenu_text(obj,tar,selObj){
	//var add=selObj.elements[obj].options[selObj.elements[obj].selectedIndex].value;//form.
	var add = selObj.options[selObj.selectedIndex].value;
	document.getElementById(tar).value=add;
}

/*///////////////*/

function SaveForm(val){
	/*alert(val);*/
	dn = val.split("_"); 
	var res = "";
	var nb = escape(document.getElementById('nbr').value);
	var formname = escape(document.getElementById('formname').value);
	for (var i = 1 ; i < nb; i++) {
		var nm = escape(document.getElementById('rfe'+i).value);
		var il = escape(document.getElementById('ref'+i).value);
		if(il==""){	var il = prompt("Remplir ce champ : "+nm);}
			if(nm=="email"){
			if(il.indexOf("@",0)<0) {var il = prompt("Spécifier : adresse mail");}}
		var res = res + nm + " : " + il + "<br>" ;
	}
	if(il!="" && il!=null){alert(il);
	var URL = 'progb/ajax.php?dir=form_'+formname+'_'+res;
	var ajax = new AJAX(URL, dn[0]+dn[1]);}
}
	 
/*
  function SaveT(val){
  var nb = val.substr(4);
	var URL = 'progb/ajax.php?dir='+val+'&nom=' + escape(document.forms['form'][val].value);
	var ajax = new AJAX(URL, 'reponse'+nb);
	}*/

function Close(val){
//	document.getElementById("popup").style.height = "0px"; 
		var content = getById(val);
		content.innerHTML = "";
	}

/* keyPressEnter */
function checkEnter(e,frm){ 
	var character	
		if(e && e.which){ e = e
		characterCode = e.which }
		else{e = event
		characterCode = e.keyCode }	
	if(characterCode == 13){ 
	document.forms[frm].submit()
	return false}
	else{return true}
}

/* menus */
function jumpMenuTag(nb,selObj,restore){
	var deb=document.getElementById('tga_'+nb).form.thm.value;
	var add=selObj.form.elements['thmb'+nb].options[selObj.form.elements['thmb'+nb].selectedIndex].value;
	if(deb) {var add=deb+', '+add;}
	document.getElementById('tga_'+nb).form.thm.value=add;
	//document.forms['formtagb'+nb].submit();
	//SaveR('tga_'.$nb);
  //if (restore) selObj.selectedIndex=0;
}
function jumpMenuCat(n,nb,selObj,restore){
	document.getElementById("frm"+n+'_'+nb).form.elements['cat'+n].value=
	selObj.form.elements['cat'+n+nb].options[selObj.form.elements['cat'+n+nb].selectedIndex].value ;
}

function ValiderMail(formulaire) {
	if (formulaire.mail.value.indexOf("@",0)<0) {
	alert("Adresse mail saisie invalide.\nLe formulaire ne sera pas validé.")}
	else {
	alert("Formulaire validé.\nPour valider un formulaire : formulaire.submit()");
	// Pour valider le formulaire en javascript :
	// formulaire.submit()
	}
}

/*
   function Horloge() {
       var dt=new Date();
       window.status=dt.getHours()+":"+dt.getMinutes()+":"+dt.getSeconds();
   }
   var timer=setInterval("Horloge()", 1000);*/
//<A href='javascript:clearInterval(timer)'>Arrêter l'horloge</A>
 