// JavaScript Document

function Remplace(expr,a,b) {
//dans expr, remplace toutes les occurences de a par b
      var i=0
      while (i!=-1) {
         i=expr.indexOf(a,i);
         if (i>=0) {
            expr=expr.substring(0,i)+b+expr.substring(i+a.length);
            i+=b.length;
         }
      }
      return expr
}
//PARCOURS_________________________________________________________________________________

function domaine(){
	var hote= window.location.hostname;
	reg=new RegExp('serveur');
	var domracine=(reg.test(hote))?"/matou/":"/";
 	return domracine;
}

var dom=domaine();

function test_navig(){
//test du navigateur la 1e fois qu'on affiche le menu prof
	if (document.all) alert("ATTENTION : \n Votre navigateur Internet Explorer risque de ne pas afficher correctement les parcours : problèmes de mise à jour de l'affichage de la zone parcours suite à une mauvaise gestion du cache par IE. Un SEUL parcours par séance de cours est tout à fait envisageable !\n\nN.B. : Les parcours fonctionnent parfaitement sous Mozilla FireFox 1.x.\nNous essayons de les rendre compatibles avec Internet Explorer.\nMerci de patienter...ou bien passez à FireFox !");
	montre_parcours('W', 1);
}

function montre_parcours(mode,rafraichir)//mode=R(read) ou W(write) rafraichir=0 ou 1
{
	//enregistre le cookie "visiparcours=1"
	if (mode) setCookie('modeparcours',mode,null,dom);
	if ((rafraichir==1)&&(mode=='W')) setCookie('id_parcours','',null,dom);//pour éviter que les élèves puissent modifier le parcours
	setCookie('visiparcours',1,null,dom);
	if (rafraichir==1) {window.location.reload();}else{document.getElementById('parcours').style.visibility='visible';}
};

function cache(id_div){
	if(document.getElementById(id_div)){
		document.getElementById(id_div).innerHTML='';
		document.getElementById(id_div).style.visibility='hidden';
	}
}

function cache_parcours()
{
	if(getCookie('modeparcours')=='W'){
		cache('creer');
		cache('charger');
	}
	document.getElementById('parcours').style.visibility='hidden';
	//enregistre le cookie "visiparcours=0"
	setCookie('visiparcours',0,null,dom);
};

function montre_cache_div(id_div, contenu){
	var calque=document.getElementById(id_div);
	var v=calque.style.visibility;
	if (v=='hidden'){ calque.innerHTML=contenu; calque.style.visibility='visible';}
	else{ calque.innerHTML=''; calque.style.visibility='hidden';}
}


function suivre_parcours(num){//mode=R(read) ou W(write)
	setCookie('id_parcours',num,null,dom);
	setCookie('visiparcours',1,null,dom);
	montre_parcours('R',1);//mode=R(read) ou W(write)
};


function racine(){
	var repracine='matou';
	var root=window.location.href;
	if (document.all)root=root.replace("\\","/"); //dans ie, remplace les antislashs par des slashs, en cas de chemin local dans la capture du site
	var reg=new RegExp("/"+repracine+"/","i")
	var p=root.search(reg);
	if (p==-1){
		return "/";
	}else{
		return root.slice(0,p+repracine.length+2); //debut_href + "/" + repracine + "/"
	}
}

function cree_parcours(mdp){
	var xhr= xhr_object();
	var data="mdp="+mdp;

	xhr.open("GET", racine+"parcours/parcours_creer.php?"+data, false);
	xhr.send(null); 
	if(xhr.readyState == 4){
		var id=xhr.responseText;
		if(!isNaN(id)){//id est bien un entier. Le parcours a été créé
			setCookie ('id_parcours', id,null,dom);
			alert('Votre parcours a été créé sous le numéro ' + id +'\nCe numéro vous permettra de le retrouver à tout moment.\nNE LE PERDEZ PAS !');
			window.location.reload();
		}else{//message d'erreur
			alert("ERREUR :\n"+id);
		}
	}
	
}


function charge_parcours(id,mdp){
	var xhr= xhr_object();
	var data="id_parcours="+id+"&mdp="+mdp;
	xhr.open("GET", racine+"parcours/parcours_charger.php?"+data, false);
	xhr.send(null); 
	if(xhr.readyState == 4){
		var rep=xhr.responseText;
		if(!isNaN(rep)){//rep est un entier. Le parcours a été chargé
			setCookie ('id_parcours', rep,null,dom);
			window.location.reload();
		}else{//message d'erreur
			alert("ERREUR :\n"+rep);
		}
	}
	
}

function ajoute_page(pid,param){//ajoute la page pid au parcours en cours. param est le complément éventuel de l'URL (par ex. #4)
	var xhr= xhr_object();
	var data="pid="+pid+"&param="+escape(param);
	xhr.open("GET", racine+"parcours/parcours_ajout.php?"+data, false);
	xhr.send(null); 
	if(xhr.readyState == 4){
		var rep=xhr.responseText;
		if(!isNaN(rep)){//rep est un entier. La page rep a été ajoutée
			window.location.reload();
		}else{//message d'erreur
			alert("ERREUR :\n"+rep);
		}
	}
	
}

function xhr_object(){//crée un objet XMLHttpRequest
	var xhr = null;
   if(window.XMLHttpRequest) // Firefox
	  xhr = new XMLHttpRequest();
   else if(window.ActiveXObject) // Internet Explorer
	  xhr = new ActiveXObject("Microsoft.XMLHTTP");
   else { // XMLHttpRequest non supporté par le navigateur
	  alert("Votre navigateur ne supporte pas la technologie utilisée pour afficher les parcours (XMLHTTPRequest).\nLes parcours ont été testés sous Internet Explorer 6 et Firefox 1.0.");
	  return;
   }
   return xhr;
}

var divcreer='Choisissez un<br />mot de passe<br />pour prot&eacute;ger<br />le parcours<br /><input name="mdp" id="mdp" type="text" size="4" class="T8" /><input name="bt_creer" type="button" id="bt_creer" value="créer" class="T8" onclick="cree_parcours(document.getElementById(\'mdp\').value)"/>';
var divcharger='<table border="0" cellpadding="3">';
divcharger+='\n    <tr>';
divcharger+='\n      <td class="T8">N&deg; du<br />parcours </span></td>';
divcharger+='\n      <td class="T8">';
divcharger+='\n        <input name="id_parcours" type="text" id="id_parcours" size="4" class="T8" />';
divcharger+='\n      </td>';
divcharger+='\n    </tr>';
divcharger+='\n    <tr>';
divcharger+='\n      <td class="T8">Mot de<br />passe :</td>';
divcharger+='\n      <td class="T8">';
divcharger+='\n        <input name="mdpcharg" id="mdpcharg" type="text" size="4" class="T8"/>';
divcharger+='\n      </td>';
divcharger+='\n    </tr>';
divcharger+='\n    <tr>';
divcharger+='\n      <td colspan=2 align="center">';
divcharger+='\n        <input name="bt_charger" type="button" id="bt_charger" value="charger" class="T8" onclick="charge_parcours(document.getElementById(\'id_parcours\').value,document.getElementById(\'mdpcharg\').value)"/>';
divcharger+='\n      </td>';
divcharger+='\n    </tr>';
divcharger+='\n  </table>';

function init_parcours(racine){//fonction appelée dans <body onload="init_parcours(racine)"> 
	var ecriture=(getCookie('modeparcours')=='W');
	var lecture=(getCookie('modeparcours')=='R');
	var id_parcours=getCookie('id_parcours');
	
	var div_parcours=document.getElementById('parcours');
	var largeur=parseInt((screen.width-770)/2);
	if(largeur<100) largeur=100;
	if(largeur>200) largeur=200;
	div_parcours.style.width=largeur;
	div_parcours.style.height=500;

	if (! racine) racine="/";
	
	var contenu='<table border="0" class="altern1" cellpadding="3" width="'+largeur+'">';
	contenu+='<tr>';
	contenu+='<td align="center">';

	var sep='<hr />';
	var saut='<br />';
	var txt_parcours='<span style="font-size:8pt; color:#C00000;">Parcours n° <b>'+id_parcours+'</b></span>';
	var txt_fermer='<a href="javascript:cache_parcours();">Fermer&nbsp;<img src="' + racine + 'parcours/cacher.gif" alt="fermer" width="14" height="14" border="0" align="absmiddle" /></a>';
	var txt_aide='<a href="'+racine+'parcours/aide.htm">Aide&nbsp;<img src="' + racine + 'parcours/aide.gif" alt="aide" width="14" height="14" border="0" align="absmiddle" /></a>';
	var txt_lister='<a href="'+racine+'parcours/lister.php?order=id_parcours">Lister les parcours</a>';
	
	if (ecriture){
		//détermine les paramètres éventuels à ajouter derrière l'url de pid (par ex. #4)
		//db_url contient l'url de la page pid enregistrée dans la base
		var url=window.location.href;
		var posparam=url.indexOf(db_url,0);
		var param=url.substring(posparam+db_url.length);
		
		var txt_creer='<a href="javascript:montre_cache_div(\'creer\', divcreer); cache(\'charger\');">Créer un parcours</a>';
		txt_creer+='<div id="creer" style="visibility: hidden; position:relative; overflow:hidden; font-size:8pt"; align="center"></div>';
		var txt_charger='<a href="javascript:montre_cache_div(\'charger\', divcharger); cache(\'creer\');">Charger un parcours</a>';
		txt_charger+='<div id="charger" style="visibility: hidden; position:relative"; overflow:hidden" align="left"></div>';
		var txt_ajout;
		if (pid==0){
			txt_ajout='<span style="color: grey;">Ajouter la page&nbsp;<img src="'+racine+'parcours/rouge.gif" alt="voyant rouge" /></span>';
		}else{
			txt_ajout='<a href="javascript:ajoute_page('+pid+', \''+param+'\')">Ajouter la page&nbsp;<img src="'+racine+'parcours/vert.gif" alt="voyant vert" border=0 /></a>';
		}
		var txt_gerer='<a href="javascript:fen_parcours()">G&eacute;rer le parcours</a>';
		if (id_parcours==""){
			contenu+=txt_aide+'&nbsp;&nbsp;&nbsp;'+txt_fermer+sep+txt_creer+txt_charger+txt_lister;
		}else{//un parcours est chargé
			contenu+=txt_aide+'&nbsp;&nbsp;&nbsp;'+txt_fermer+sep+txt_creer+txt_charger+txt_lister+sep+txt_parcours+saut+txt_ajout+saut+txt_gerer;
		}
	}
	
	if (lecture) contenu+=txt_fermer+sep+txt_parcours;
		
	if ((lecture)||(ecriture)){
		var xhr= xhr_object();
		xhr.open("GET", racine+"parcours/parcours_suivre.php", false);
		xhr.send(null); 
		if(xhr.readyState == 4){
			contenu+=xhr.responseText;
			contenu+='</td></tr></table>';
			div_parcours.innerHTML=contenu;
		}
	}

	if (getCookie('visiparcours')==1) {
		montre_parcours();
	} else {cache_parcours();}
}

function fen_parcours(){
		fen=window.open(racine + 'parcours/parcours_gerer.php','parcours','resizable=yes, location=no, width=500, height=550, menubar=no, status=no, scrollbars=auto, top=0, left=0')
}


//COOKIES_____________________________________________________________________________________


function getCookie(nom) {
	deb = document.cookie.indexOf(nom + "=")
	if (deb >= 0) {
		deb += nom.length + 1
		fin = document.cookie.indexOf(";",deb)
		if (fin < 0) fin = document.cookie.length
		return unescape(document.cookie.substring(deb,fin))
	}
	return ""
}


function setCookie (name, value,expires,path) {
	var argv=setCookie.arguments;
	var argc=setCookie.arguments.length;
	var domain=(argc > 4) ? argv[4] : null;
	var secure=(argc > 5) ? argv[5] : false;
	document.cookie=name+"="+escape(value)+
		((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
		((path==null) ? "" : ("; path="+path))+
		((domain==null) ? "" : ("; domain="+domain))+
		((secure==true) ? "; secure" : "");
}

function delCookie(nom){
//supprime le cookie nom
	setCookie(nom,"",-1);
}

