<!--
/* Begin code */
var	gOtherTestsImplemented	= false;	// false
var	debug_series 		= false;	// false
var	debug_NbQuestions	= 40;		// 45
var	debug_preload		= false;	// false
var	debug_tests		= false;	// false
var	debug_tlibre		= false;	// false
var	debug_tlibre_random	= false;	// false
var	use_js_pl		= false;	// false
var	cMaxDeltaLP		= 6;		// 6?
var	gNbQSerieTLibre		= 40;		// 40
var	gNbQuestionsMax		= 99;		// 99
var	bln_usr_alert		= true;		// true
var	bln_dev_alert		= false;	// false
var	cNbMinFramesForQuestions = 50;		// 50
var	cMaxLessonModules	= 10;		// 10
var	cLPNbMinFrames		= 100;		// 100
var	submit_VList_OnLoad	= false;	// false

var	gStr = "";
function usr_alert(msg) { if (bln_usr_alert) { alert(msg); } }
function dev_alert(msg) { if (bln_dev_alert) { alert(msg); } }
function debug_tlibre_alert(msg) { if (debug_tlibre) { alert(msg); } }
function debug_str_alert(mes) { gStr += "<br>"+mes; }
function debug_lesson_alert(mes) { gStr += "<br>"+mes+getIndexes(); }

function whichfso(fsoName) {
	if(navigator.appName=="Netscape") { return document[fsoName]; } 
	else { return window[fsoName]; }
}
var	InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;

var	gObjetsLoaded = 0;
var	gObjetsTestLoaded = 0;
var	gObjetsQuestionLoaded = 0;

var	xposPropIdx		= 0;
var	yposPropIdx		= 1;
var	xscalePropIdx		= 2;
var	yscalePropIdx		= 3;
var	currentframePropIdx	= 4;
var	totalframesPropIdx	= 5;
var	alphaPropIdx		= 6;
var	visibilityPropIdx	= 7;
var	widthPropIdx		= 8;
var	heightPropIdx		= 9;
var	rotationPropIdx		= 10;
var	targetPropIdx		= 11;
var	framesloadedPropIdx	= 12;
var	namePropIdx 		= 13;
var	droptargetPropIdx 	= 14;
var	urlPropIdx 		= 15;
var	highqualityPropIdx 	= 16;
var	focusrectPropIdx 	= 17;
var	soundbuftimePropIdx 	= 18;

var	gAudio00kbps = 0;
var	gAudio08kbps = 1;
var	gAudio16kbps = 2;
var	gAudio24kbps = 3;
var	gAudio32kbps = 4;
var	gAudioPath = new Array("swf_00kbps", "swf_08kbps", "swf_16kbps", "swf_24kbps", "swf_32kbps");
var	gPhoto400x268 = 0;
var	gPhoto512x342 = 1;
var	gPhotoPath = new Array("_400x268","_512x342");

var	LayerBase	= 0;		
var	LayerFond	= 1;
var	LayerAudio	= 2;
var	LayerSom	= 4;
var	LayerPaGpe	= 6;
var	LayerPaInd	= 7;
var	LayerQuestion	= 80;
var	LayerLesson	= 80;
var	LayerObjet	= 100;
var	LayerObjetTest	= 100;

var	ContextSom	= 0;
var	ContextPaGpe	= 3;
var	ContextPaInd	= 4;

PATH = new Array();
PATH["cdrflash"] = "cdrflash/";
PATH["pa"]	 = "pa/";
PATH["test"]	 = "test/";
PATH["lesson"]	 = "lesson/";
//---------------------
// affichages
function StopSounds(fso) {
	fso.TPlay("_level"+LayerObjet+"/ClipStopSoundsOc1");
}
function getShwChrono30s() {
	var shwChrono30s = (( (gMod == "exam")
			&&    (gSubMod != "explication") 
			&&    (gSubMod != "show_errors")
			&&   (!((gExamMode == "Exam") && (gHideChrono == "yes"))) ) ? 1 : 0 );
	return shwChrono30s;
}
function getEnableChrono30s() {
	var enableChrono30s = ( (gMod == "exam")
			&&   ((gSubMod != "explication") && (gSubMod != "show_errors")) ? 1 : 0 ) ;
	return enableChrono30s;
}
function hideQuestionStopSounds(fso,idx) {
	StopSounds(fso);
	var target = "_level"+gQtl[idx].layer;
	fso.TGotoLabel(target,"lblStop");
}
function hideMenuTLibre(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCMenuTLibreOc1","lblHide");
}
function showMenuTLibre(fso) {
	var	lbl = "lblInit";
	var	target = "_level"+LayerObjetTest+"/MCMenuTLibreOc1";

	fso.TGotoLabel(target,lbl);
	if ((gMod == "tlibre") && (gQserie.type == "liste")) {
		fso.TSetProperty(target+"/MCRubOc1",visibilityPropIdx,0);
	}
}
function hideNavTest(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCNavTestOc1","lblHide");
}
function showNavExamens(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCNavTestOc1","lblComplet");
}
function showNavTestLibre(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCNavTestOc1","lblComplet");
}
function hideBtResultats(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCResultatsOc1","lblHide");
}
function showBtResultats(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCResultatsOc1","lblOn");
}
function hideBtConseils(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCConseilsOc1","lblHide");
}
function showBtConseils(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCConseilsOc1","lblOn");
}
function hideTelco(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCTelcoOc1","lblHide");
}
function showTelco(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCTelcoOc1","lblInit");
}
function hideChrono30s(fso) {
	fso.TSetProperty("_level"+LayerObjetTest+"/MCChronoOc1",visibilityPropIdx,0);
}
function showChrono30s(fso) {
	fso.TSetProperty("_level"+LayerObjetTest+"/MCChronoOc1",visibilityPropIdx,getShwChrono30s());
}
function hideAndResetChrono30s(fso) {
	var	lbl = "lblHide";
	hideChrono30s(fso);
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCChronoOc1",lbl);
}
function stopLoading0(fso) {
	fso.TStopPlay("_level0/MCLoadingOc1");
}
function startLoading0(fso) {
	fso.TPlay("_level0/MCLoadingOc1");
}
function stopLoading(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCLoadingOc1","lblHide");
}
function startLoading(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCLoadingOc1","lblInit");
}
function SetMoviesVisibility(fso) {
	var	shwSortie = 0;
	var	shwMenu = 0;
	var	shwSommaire = 0;
	var	lblRetour = "lblHide";
	var	lblTest = "lblHide";
	var	shwTelco = 0;
	var	shwTestQuestion = 0;
	var	shwSolA = 0;
	var	shwSolB = 0;
	var	shwSolC = 0;
	var	shwSolD = 0;
	var	shwMenuTLibre = 0;
	var	shwNavTest = 0;
	var	shwExamTest = 0;
	var	shwResultats = 0;
	var	shwConseils = 0;

	if (gObjetsLoaded || gObjetsTestLoaded) {
		shwSortie = 1; 
		fso.TSetProperty("_level"+LayerObjet+"/MCSortieOc1",visibilityPropIdx,shwSortie);
	}
	if (gObjetsLoaded) {
		if ((FStack.length > 2) && (gMod == "pa")) {
			lblRetour = "lblStop"; 
		}
		fso.TGotoLabel("_level"+LayerObjet+"/MCRetourOc1",lblRetour);
	}
	if (gObjetsTestLoaded && gObjetsQuestionLoaded) {
		if (gSubMod == "show_errors") {
			shwResultats = 1;
			if (gExamMode == "Test") {
				shwConseils = 1;
			}
		} else {
			if (gMod == "exam") {
				shwExamTest = 1;
			}
			if ((gMod == "exam") || (gMod == "tlibre")) {
				shwTestQuestion = 1;
			}
			if (    (gMod == "tlibre")
			    || (shwExamTest && (gSubMod != "explication"))) {
				shwTelco = 1;
				// lblTelco = "lblInit";
			}
			if (shwTestQuestion) {
				shwSolA = 1;
				shwSolB = 1;
				if (gPCur >= 0) {
					if (gQtl[gPCur].Reponse_C == "C") { shwSolC = 1; }
					if (gQtl[gPCur].Reponse_D == "D") { shwSolD = 1; }
				}
			}
			if (gMod == "tlibre") {
				shwMenuTLibre = 1;
			}
			if (   (gMod == "tlibre")
			    || (shwExamTest && (gSubMod == "explication"))) {
				shwNavTest = 1;
			}
			if (   shwExamTest && (gSubMod == "explication")) {
				shwResultats = 1;
				if (gExamMode == "Test") {
					shwConseils = 1;
				}
			}
		}
		fso.TSetProperty("_level"+LayerObjetTest+"/MCTelcoOc1",visibilityPropIdx,shwTelco);
		fso.TSetProperty("_level"+LayerObjetTest+"/MCChronoOc1",visibilityPropIdx,getShwChrono30s());
		fso.TSetProperty("_level"+LayerObjetTest+"/MCMenuTLibreOc1",visibilityPropIdx,shwMenuTLibre);
		fso.TSetProperty("_level"+LayerObjetTest+"/MCResultatsOc1",visibilityPropIdx,shwResultats);
		fso.TSetProperty("_level"+LayerObjetTest+"/MCConseilsOc1",visibilityPropIdx,shwConseils);
		fso.TSetProperty("_level"+LayerObjetTest+"/MCNavTestOc1",visibilityPropIdx,shwNavTest);
		fso.TSetProperty("_level"+LayerObjetTest+"/SolA",visibilityPropIdx,shwSolA);
		fso.TSetProperty("_level"+LayerObjetTest+"/SolB",visibilityPropIdx,shwSolB);
		fso.TSetProperty("_level"+LayerObjetTest+"/SolC",visibilityPropIdx,shwSolC);
		fso.TSetProperty("_level"+LayerObjetTest+"/SolD",visibilityPropIdx,shwSolD);
	}
}
//---------------------
// nav. panneaux 
function FPAGE(context,loadURL,layer,target,lbl) {
	this.context = context;
	this.loadURL = loadURL;
	this.layer = layer;
	this.target = target;
	this.lbl = lbl;
}
FP = new Array();
FP["lesson"] = new FPAGE(ContextSom,PATH["lesson"]+"som_lessons.swf",LayerSom,"_level"+LayerSom+"/","");
FP["som_pa"] = new FPAGE(ContextSom,PATH["pa"]+"som_pa.swf",LayerSom,"_level"+LayerSom+"/","");
function FSTACK(context,loadURL,layer,target,lbl) {
	this.context = context;
	this.loadURL = loadURL;
	this.layer = layer;
	this.target = target;
	this.lbl = lbl;
}
FStack = new Array();
FStack[0] = new FSTACK(ContextSom,PATH["cdrflash"]+"base_flash.swf?FlashLoad=som_cdr",LayerBase,"_level"+LayerBase+"/","");
function HideLayer(fso,layer) {
	var level = "_level" + layer + "/";
	if (level != "_level0/") {
		fso.TSetProperty(level,visibilityPropIdx,0);
	}
}
function ShowLayer(fso,layer) {
	var level = "_level" + layer + "/";
	fso.TSetProperty(level,visibilityPropIdx,1);
}
function FPush(context,loadURL,layer,target,lbl) {
	FStack[FStack.length] = new FSTACK(context,loadURL,layer,target,lbl);
}
function NavGotoPush(fso,context,loadURL,layer,target,lbl) {
	FPush(context,loadURL,layer,target,lbl);
	fso.TGotoLabel(FStack[FStack.length-1].target,FStack[FStack.length-1].lbl);
}
function NavLoadPush(fso,context,loadURL,layer,target,lbl) {
	StopSounds(fso);
	HideLayer(fso,FStack[FStack.length-1].layer);
	fso.LoadMovie(parseInt(layer),loadURL);
	FPush(context,loadURL,layer,target,lbl);
}
function FlashLoad(fso,page) {
	NavLoadPush(fso,FP[page].context,FP[page].loadURL,FP[page].layer,FP[page].target,FP[page].lbl);
}
function NavPop(fso) {
	var msg;
	StopSounds(fso);
	HideLayer(fso,FStack[FStack.length-1].layer);
	if (FStack.length > 1) {
		delete FStack[FStack.length-1];
		FStack.length = FStack.length-1;
		// pour IE5 : il faut forcer la nouvelle valeur de la FStack apres le delete du dernier element
	}
	if (gOtherTestsImplemented) {
		msg = "pop de la pile de navigation : retour à : \n" 
			+ ShowStack(FStack.length-1);
		dev_alert(msg);
	}
	fso.LoadMovie(parseInt(FStack[FStack.length-1].layer),FStack[FStack.length-1].loadURL);
}
//---------------------
// section panneaux
function LoadPaGrp(fso,paGpe,paPage,mode) {
	var context = ContextPaGpe;
	var InitLbl = ""+paGpe+paPage;
	var loadURL = PATH["pa"]+paGpe+".swf?InitLbl="+InitLbl;
	var layer = LayerPaGpe;
	var target = "_level" + layer + "/";
	var lbl = InitLbl;

	if (mode == "push") {
		NavLoadPush(fso,context,loadURL,layer,target,lbl);
	} else {
		HideLayer(fso,FStack[FStack.length-1].layer);
		fso.LoadMovie(parseInt(layer),loadURL);
	}
}
//---------------------
// preload lessons
var gPrevMovieEnded = 1;
var gWaitStartLoaded = 1;
var gPIdx = -1;
var gPCur = -1;
var gLIdx = -1;
var	gNavMod = "unloaded";

gLP = new Array();
function initLP1(layer) {
	this.layer = layer; 
	this.LStatus = "UnLoaded";
	this.PStatus = "Waiting";
	this.next = "uninit";
}
function initLP(baselayer,num) {
	var i;
	for (i=0;i<num;i++) {
		gLP[i] = new initLP1(baselayer - i);
	} 
}
var gLessonNum = 0;
function preloadLessonModuleMovie(fso) {
	debug_lesson_alert("preloadLessonModuleMovie 1");
	var target = "_level"+LayerBase+"/MCPreLoaderOc1";
	if (++gLIdx == 0) {
		fso.SetVariable(target+":ld_nbminframes",cLPNbMinFrames);
		initLP(LayerLesson,cMaxLessonModules+1);
	}
	var numModule = gLIdx + 1;
	var lessonFileName = "lesson"+gLessonNum+"_"+numModule+".swf"
	var loadURL = PATH["lesson"]+gAudioPath[gProfilAudio]+"/"+lessonFileName;
	fso.LoadMovie(gLP[gLIdx].layer,loadURL);
	gLP[gLIdx].LStatus = "WaitStart";
	fso.SetVariable(target+":ld_layer",gLP[gLIdx].layer);
	fso.SetVariable(target+":ld_nbminframes",cLPNbMinFrames);
	fso.TGotoLabel(target,"lblWaitStart");
}
function lessonModuleStartLoaded(fso,next) {
	debug_lesson_alert("lessonModuleStartLoaded 1 : next="+next);
	gLP[gLIdx].next = next;
	gLP[gLIdx].LStatus = "StartLoaded";
	if ((next != "list_getnext") && (next != "list_end")) {
		dev_alert("Erreur dans lessonModuleStartLoaded : listMode invalide listMode="+next+", gLIdx="+gLIdx);
	}
	testIfStartPlayingLessonModule(fso);
}
function lessonModuleEndLoaded(fso,next) {
	var doPlay = false;
	debug_lesson_alert("lessonModuleEndLoaded 1 : next="+next);
	gLP[gLIdx].next = next;
	gLP[gLIdx].LStatus = "EndLoaded";

	testIfStartPlayingLessonModule(fso);

	if (next == "list_getnext") {
		debug_lesson_alert("lessonModuleEndLoaded 2");
		preloadLessonModuleMovie(fso);
	} else if (next == "list_end") {
		//
	} else {
		//
	}
}
function testIfStartPlayingLessonModule(fso) {
	var doPlay = false;
	debug_lesson_alert("testIfStartPlayingLessonModule 1");

	if (gPIdx == -1) { doPlay = true; }
	else if (gLP[gPIdx].PStatus == "Played") {
		if 	(  (gLP[gPIdx].next == "list_getnext") 
			&& ((gLP[gPIdx+1].LStatus == "StartLoaded") || (gLP[gPIdx+1].LStatus == "EndLoaded"))) {
			doPlay = true;
		}
	}

	if (doPlay) {
		debug_lesson_alert("testIfStartPlayingLessonModule 2");
		startPlayingLessonModule(fso);
	}
}
function startPlayingLessonModule(fso) {
	debug_lesson_alert("startPlayingLessonModule 1 : ");
	gPIdx++;
	target = "_level"+gLP[gPIdx].layer;
	gLP[gPIdx].PStatus = "Playing";
	if (1) {
		fso.TPlay(target);
	} else {
		fso.TGotoLabel(target,"lblStart");
	}
}
function lessonModuleEndFound(fso) {
	debug_lesson_alert("lessonModuleEndFound 1 : ");
	var next = gLP[gPIdx].next;
	gLP[gPIdx].PStatus = "Played";

	testIfStartPlayingLessonModule(fso);

	if (next == "list_end") {
		submitLink("gotoLessonUpdate",gLessonNum,"");
		showBtTest(fso);
	}
}
//---------------------
// init Test/Exam/TLibre
function QSERIE(NoSerie,NbQuestions,NbErreurs) {
	this.type = "random";
	this.NoSerie = NoSerie;
	this.NbQuestions = NbQuestions;
	this.NbErreurs = NbErreurs;
	this.qList = "";
}
var gQList;
var gQserie = new QSERIE(0,0,0);
var gQtl = new Array();

function initLP_Q1(qName,MskRep,MskSol,Reponse_A,Reponse_B,Reponse_C,Reponse_D,layer) {
	this.qName = qName;
	this.MskRep = MskRep;
	this.MskSol = MskSol;
	this.Reponse_A = Reponse_A;
	this.Reponse_B = Reponse_B;
	this.Reponse_C = Reponse_C;
	this.Reponse_D = Reponse_D;
	this.MskRepUser = "----";
	this.layer = layer; 
	this.LStatus = "UnLoaded";
	this.PStatus = "Waiting";
	this.next = "uninit";
}
function initLP_Q(baselayer,num) {
	var i;
	for (i=0;i<num;i++) {
		gQtl[i] = new initLP_Q1("","","","","","","",(baselayer - (i%cMaxDeltaLP)));
	} 
}
//---------------------
// preload questions
function getIndexes() {
	return s = ""+"gLIdx="+gLIdx+", gPIdx="+gPIdx+", gPCur="+gPCur;
}
function inc_gLIdx(fso) {
	gLIdx++;
	var offset = LayerQuestion - gQtl[gLIdx].layer;
	var target = "_level"+LayerObjetTest+"/MCPLStatusOc1/Status"+offset;
	fso.SetVariable(target+":tl_idx",gLIdx);
	fso.SetVariable(target+":tp_idx",-2);
	fso.SetVariable(target+":tl_status","UnLoaded");
	fso.SetVariable(target+":tp_status","Waiting");
}
function inc_gPIdx(fso) {
	var qName = "";
	gPIdx++;
	qName = gQtl[gPIdx].qName;
	gPCur = gPIdx;
	if ((gMod == "tlibre") && (gQserie.type == "random")) {
		if (gQTLViewedList != "") {
			gQTLViewedList += ",";
		}
		gQTLViewedList += qName;
		prepareFormUpdateVList("add",qName);
	}
	var offset = LayerQuestion - gQtl[gPIdx].layer;
	var target = "_level"+LayerObjetTest+"/MCPLStatusOc1/Status"+offset;
	fso.SetVariable(target+":tp_idx",gPIdx);
}
function setLStatus(fso,idx,s) {
	var offset = LayerQuestion - gQtl[idx].layer;
	var target = "_level"+LayerObjetTest+"/MCPLStatusOc1/Status"+offset;
	gQtl[idx].LStatus = s;
	fso.SetVariable(target+":tl_status",s);
}
function setPStatus(fso,idx,s) {
	var offset = LayerQuestion - gQtl[idx].layer;
	var target = "_level"+LayerObjetTest+"/MCPLStatusOc1/Status"+offset;
	gQtl[idx].PStatus = s;
	fso.SetVariable(target+":tp_status",s);
}
function getLStatus(fso,idx) {
	var s = ""+gQtl[idx].LStatus;
	return(s);
}
function getPStatus(fso,idx) {
	var s = ""+gQtl[idx].PStatus;
	return(s);
}
function myLoadMovie(fso,layer,loadURL) {
	fso.LoadMovie(parseInt(layer),loadURL);
}
function resetQuestion(fso,n) {
	setLStatus(fso,n,"UnLoaded");
	setPStatus(fso,n,"Waiting");
}
function flushPreloader(fso) {
	var old_gLIdx = gLIdx;
	var i;
	gLIdx = gPIdx;
	for (i=gPIdx+1;i<=old_gLIdx;i++) {
		resetQuestion(fso,i);
	}
}
function preloadQuestion(fso) {
	var layer;
	var loadURL = "";
	inc_gLIdx(fso);
	if (gLIdx < gQserie.NbQuestions) {
		gQtl[gLIdx].qName = getQName(gLIdx+1);
		layer = gQtl[gLIdx].layer;
		loadURL = PATH["test"]+gAudioPhotoPath+gQtl[gLIdx].qName+".swf";
		if (use_js_pl) {
			jsLoadMovie(fso,loadURL);
		} else {
			myLoadMovie(fso,layer,loadURL);
		}
	} else {
		dev_alert("erreur 0");
	}
}
function questionEndAck(fso,idx) {
	if (gQtl[idx] != null) {
		fso.SetVariable("_level"+gQtl[idx].layer+"/MCPreloaderOc1:plAck","ack");
	}
}
//---------------------
function newQuestionEndLoaded(fso,idx) {
	if (idx == gLIdx) {
		setLStatus(fso,idx,"EndLoaded");
		testIfStartPlayingQuestion(fso);
		if (gLIdx < gQserie.NbQuestions - 1) {
			preloadNextQuestion(fso);
		}
	}
}
function questionEndWaitAck(fso,idx) {
	if (idx == gLIdx) {
		if (getLStatus(fso,idx) != "EndLoaded") {
			newQuestionEndLoaded(fso,idx);
		}
	}
}
function preloadNextQuestion(fso) {
	if (   (gLIdx < gQserie.NbQuestions-1) 
	    && (   (gLIdx == gPIdx)
	        || (   ((gLIdx - gPIdx) < cMaxDeltaLP-1) 
	            && (getLStatus(fso,gLIdx) == "EndLoaded")))) {
		preloadQuestion(fso);
	} else {
		;// wait questionEndFound
	}
}
function testIfStartPlayingQuestion(fso) {
	var doPlay = false;
	if (gPIdx == -1) { doPlay = true; }
	else if (gPIdx >= gQserie.NbQuestions - 1) { doPlay = false; }
	else if ((getPStatus(fso,gPIdx) == "Played") && (getPStatus(fso,gPIdx+1) == "Waiting")) { doPlay = true; }

	if (doPlay) {
		startPlayingQuestion(fso);
	}
}
function startPlayingQuestion(fso) {
	inc_gPIdx(fso);
	target = "_level"+gQtl[gPIdx].layer;
	fso.TGotoLabel(target,"lblTest");
	setPStatus(fso,gPIdx,"Playing");
}
function questionEndFound(fso) {
	setPStatus(fso,gPIdx,"Played");
	setLStatus(fso,gPIdx,"UnLoaded");
	if (gPIdx < gQserie.NbQuestions-1) {
		if (getLStatus(fso,gPIdx+1) == "EndLoaded") {
			testIfStartPlayingQuestion(fso);
		}
	}
	preloadNextQuestion(fso);
}
//---------------------
// section tests
function getQName(i) {
	var s = "";
	parseArgs(gQserie.qList);
	s = ""+a[i];
	return(s);
}
function getIdxFromQName(qName) {
	var i;
	for (i=gLIdx;i>=0;i--) {
		if (gQtl[i].qName == qName) {
			return i;
		}
	}
	return -2;
}
function min(a,b) {
	return (a<b ? a : b);
}
function initQtl() {
	var i;
	gLIdx = -1;
	gPIdx = -1;
	gPCur = -1;

	for (i=0;i<gQtl.length;i++) {
		delete gQtl[i];
	}
	gQtl.length = 0;
	initLP_Q(LayerQuestion,gNbQuestionsMax);
	gNavMod = "unloaded";
}
function getTestSerie(fso,mode) {
	if (mode == "random") {
		gQuestionsList = "0";
	}
	initQtl();
	if (gMod == "tlibre") {
		if (gQuestionsList == "0") {
			getRandomList(fso,"flash");
			gQserie.type = "random";
		} else {
			gQserie.type = "liste";
		}
	}
	gQserie.qList = gQuestionsList;
	parseArgs(gQserie.qList);
	gQserie.NbQuestions = a[0];
	if (debug_series) {
		gQserie.NbQuestions = min(debug_NbQuestions,gQserie.NbQuestions);
	}
	preloadQuestion(fso);
}
function loadTestMovie(fso,layer,qName) {
	var loadURL = PATH["test"]+gAudioPhotoPath+qName+".swf";
	myLoadMovie(fso,layer,loadURL);
}
function showExamExplication(fso,qn) {
	gSubMod = "explication";
	hideQuestionStopSounds(fso,gPCur);
	gPCur = qn-1;
	loadTestMovie(fso,gQtl[gPCur].layer,gQtl[gPCur].qName);
}
function showConseils() {
	var mes = "";
	if (typeof(top.frames["nothing"].strCorrectionComment) == "string") {
		mes = top.frames["nothing"].strCorrectionComment;
	} else {
		mes = "le module expert est en train de travailler et affichera bientôt ses conseils, veuillez patienter";
	}
	usr_alert(mes);
}
function alertEndOfList() {
	var mesUser = "dernière question de la liste courante.\n\n";
	if ((gMod == "tlibre") && (gQserie.type == "random")) {
		mesUser += "Appuyer sur VALID pour obtenir une nouvelle question";
	} else {
		mesUser += "Appuyer sur SORTIE pour revenir au dossier personnel";
	}
	usr_alert(mesUser);
}
function alertBegOfList() {
	var mesUser = "première question de la liste courante.\n\n";
	usr_alert(mesUser);
}
function getPrevError() {
	var i = gPCur - 1;
	while (i >= 0) {
		if (gQtl[i].MskRep != gQtl[i].MskRepUser) {
			return i;
		}
		i--;
	}
	return gQserie.NbQuestions;
}
function getNextError() {
	var i = gPCur + 1;
	while (i < gQserie.NbQuestions) {
		if (gQtl[i].MskRep != gQtl[i].MskRepUser) {
			return i;
		}
		i++;
	}
	return 0;
}
function gotoQuestion(fso,nav) {
	var shwQ = false;
	var getQ = false;
	var oldPCur = gPCur;

	if (flagNewCodeRubList == true) {
		//submitLink("gotoTLibreQuestion",0,"");
		flagNewCodeRubList = false;
		//alert("réinitialisation de la mémoire de questions");
		hideQuestionStopSounds(fso,oldPCur);
		getTestSerie(fso,"random");
		return true;
	}
	if (   (gMod == "tlibre")
	    || (gMod == "exam")  ) {
		if (nav == "<<") {
			if (gPCur == 0) { alertBegOfList(); }
			gPCur = 0;
			shwQ = true;
		} else if (nav == "<") {
			if (gMod == "exam") {
				gPCur = getPrevError();
			} else {
				if (gPCur == 0) { alertBegOfList(); }
				if (gPCur > 0) { gPCur--; }
			}
			shwQ = true;
		} else if (nav == ">") {
			if (gMod == "exam") {
				gPCur = getNextError();
				shwQ = true;
			} else {
				if (gPCur < gPIdx) {
					gPCur++;
					shwQ = true;
				} else {
					if (gPCur < gQserie.NbQuestions-1) {
						getQ = true;
					} else {
						alertEndOfList();
						if (gQserie.type == "random") {
							shwQ = true;
						} else {
							shwQ = true;
						}
					}
				}
			}
		} else if (nav == ">>") {
			if (gPCur == (gQserie.NbQuestions-1)) { alertEndOfList(); }
			gPCur = gPIdx;
			shwQ = true;
		} else if (nav == ">>>") {
			gPCur = gPIdx;
			if (gMod == "tlibre") {
				if (gPCur < gQserie.NbQuestions-1) {
					getQ = true;
				} else {
					if (gQserie.type == "random") {
						if (confirm("La série courante de "+gQserie.NbQuestions+" questions aléatoires est terminée.\nVoulez vous une nouvelle série avec réinitialisation de la mémoire de questions ?")) {
							hideQuestionStopSounds(fso,oldPCur);
							getTestSerie(fso,"random");
							return true;
						} else {
							shwQ = true;
						}
					} else {
						alertEndOfList();
						shwQ = true;
					}
				}
			} else {
				shwQ = true;
			}
		}
		if (shwQ) { 
			flushPreloader(fso);
			gNavMod = "preloaded";
			if (  (oldPCur != gPCur)
			    || (gPCur == gQserie.NbQuestions-1)) {
				hideQuestionStopSounds(fso,oldPCur);
				loadTestMovie(fso,gQtl[gPCur].layer,gQtl[gPCur].qName); 
			}
		}
		if (getQ && (gMod == "tlibre")) { 
			gNavMod = "unloaded";
			hideQuestionStopSounds(fso,oldPCur);
			getQuestionSuiv(fso,"QSGotoQuestion"); 
		}
	} else {
		//
	}
	return true;
}
function getQuestionSuiv(fso,src) {
	var qName = "";
	
	//	sound systeme
	if (gPCur > 0 && gPCur < 2) {
		if (document.all) {
			if(document.all.LH) LH.style.visibility="hidden";
			} else {
			if(document.layers["LH"]) document.layers["LH"].visibility="hide";
			}
		}
		
	if (src == "QSChrono30s") {
		if (gWaitChrono30sFin == 0) { return 1; }
	} else if (src == "QSValid") {
		if (gWaitValid == 0) { return 1; }
	} else if (   (src == "QSGotoQuestion")
		   || (src == "QSInitTLibre")
		   || (src == "QSChrono2s")) {
		//
	} else {
		//
	}
	hideTelco(fso);
	hideAndResetChrono30s(fso);
	hideMenuTLibre(fso);
	hideNavTest(fso);
	hideSolutionABCD(fso);
	hideReponseABCD(fso);
	startLoading0(fso);

	if ((gPIdx >= 0) && (gMod == "exam")) {
		setMskRepUser(fso,gPIdx);
		stopChrono30s(fso);
	}
	if (gMod == "tlibre") {
		if (gPIdx == gQserie.NbQuestions -1) {
			//
		} else {
			questionEndFound(fso);
		}
	} else if (gMod == "exam") {
		hideQuestionStopSounds(fso,gPIdx);
		if (gPIdx == gQserie.NbQuestions -1) {
			setMskRepUserSerie();
			showListeResultats(fso);
			if (gExamMode == "Exam") {
				submitLink("gotoTestExamCorrection",0,"");
			} else if (gExamMode == "Test") {
				submitLink("gotoTestExamCorrection",0,"");
			}
		} else {
			questionEndFound(fso);
		}
	}
	return 2;
}
//---------------------
// section tests et telecommande
var gWaitChrono30sFin = 0;
var gWaitValid = 0;
function startChrono30s(fso) {
	var lbl = "lblHide";
	if (getEnableChrono30s() == 1) { 
		lbl = "l30"; 
		gWaitChrono30sFin = 1;
	}
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCChronoOc1/",lbl);
	showChrono30s(fso);
}
function stopChrono30s(fso) {
	gWaitChrono30sFin = 0;
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCChronoOc1/","lblHide");
}
function startChrono2s(fso) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCChrono3sOc1","lblStart");
}
function freezeChrono(fso) {
	if (gExamMode == "Test") {
		fso.TStopPlay("_level"+LayerObjetTest+"/MCChronoOc1");
	}
}
function unfreezeChrono(fso) {
	if (gExamMode == "Test") {
		fso.TPlay("_level"+LayerObjetTest+"/MCChronoOc1");
	}
}
function showSolutionX(fso,X,lbl,idx) {
	if ((lbl == "lblOff") || (eval('gQtl[idx].Reponse_'+X) == X)) { 
		fso.TGotoLabel("_level"+LayerObjetTest+"/Sol"+X,lbl);
	}
}
function showSolutionABCD(fso,idx) {
	var s = gQtl[idx].MskRep;
	var lblA = ((s.substr(0,1) == "*") ? "lblOn" : "lblHide");
	var lblB = ((s.substr(1,1) == "*") ? "lblOn" : "lblHide");
	var lblC = ((s.substr(2,1) == "*") ? "lblOn" : "lblHide");
	var lblD = ((s.substr(3,1) == "*") ? "lblOn" : "lblHide");
	showSolutionX(fso,"A",lblA,idx);
	showSolutionX(fso,"B",lblB,idx);
	showSolutionX(fso,"C",lblC,idx);
	showSolutionX(fso,"D",lblD,idx);
}
function hideSolutionABCD(fso) {
	var lbl = "lblHide";
	fso.TGotoLabel("_level"+LayerObjetTest+"/SolA",lbl);
	fso.TGotoLabel("_level"+LayerObjetTest+"/SolB",lbl);
	fso.TGotoLabel("_level"+LayerObjetTest+"/SolC",lbl);
	fso.TGotoLabel("_level"+LayerObjetTest+"/SolD",lbl);
}
function showReponseX(fso,X,lbl,idx) {
  var my_lbl;
  
  if (lbl=="lblOff"){
    if (eval('gQtl[idx].Reponse_'+X) != X)
      my_lbl = "lblHide";
    else
      my_lbl = lbl;}
  else
    my_lbl = lbl;
	fso.TGotoLabel("_level"+LayerObjetTest+"/Rep"+X,my_lbl);
}
function showReponseABCD(fso,idx) {
	var s = gQtl[idx].MskRep;
	var su = gQtl[gPCur].MskRepUser;
	var lblA = ((su.substr(0,1) == "*") ? "lblRep" : "lblOff");
	var lblB = ((su.substr(1,1) == "*") ? "lblRep" : "lblOff");
	var lblC = ((su.substr(2,1) == "*") ? "lblRep" : "lblOff");
	var lblD = ((su.substr(3,1) == "*") ? "lblRep" : "lblOff");
	showReponseX(fso,"A",lblA,idx);
	showReponseX(fso,"B",lblB,idx);
	showReponseX(fso,"C",lblC,idx);
	showReponseX(fso,"D",lblD,idx);
	var lblOkErr = ((s == su) ? "lblOk" : "lblErr");
	fso.SetVariable("_level"+LayerObjetTest+"/MCOkErrOc1:QNum",idx+1);
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCOkErrOc1",lblOkErr);
}
function hideReponseABCD(fso) {
	var lbl = "lblHide";
	fso.TGotoLabel("_level"+LayerObjetTest+"/RepA",lbl);
	fso.TGotoLabel("_level"+LayerObjetTest+"/RepB",lbl);
	fso.TGotoLabel("_level"+LayerObjetTest+"/RepC",lbl);
	fso.TGotoLabel("_level"+LayerObjetTest+"/RepD",lbl);
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCOkErrOc1",lbl);
}
function showExplication(fso,idx) {
	StopSounds(fso);
	showSolutionABCD(fso,idx);
	if (gMod == "exam") {
		showReponseABCD(fso,idx);
	}
	var layer = gQtl[idx].layer;
	fso.TGotoLabel("_level"+layer+"/","lblExplBegin");
	fso.TGotoFrame("_level"+layer+"/MCExplOc1/",1);
	fso.TPlay("_level"+layer+"/MCExplOc1/");
}
function showQuestion(fso,idx) {
	var layer = gQtl[idx].layer;
	fso.TGotoLabel("_level"+layer+"/","lblQuestBegin");
}
function showBtTest(fso) {
	fso.TGotoLabel("_level"+LayerObjet+"/MCTestOc1","lblActive");
}
function stopBtTest(fso) {
	fso.TGotoLabel("_level"+LayerObjet+"/MCTestOc1","lblInactive");
}
function startTest(fso,idx) {
	if (idx >= 0) {
		layer = gQtl[idx].layer;
		fso.TGotoLabel("_level"+layer+"/","lblStart");
	}
}
function setRepX(fso,repName,value,idx) {
	var X = repName.substr(3,1);
  var my_lbl;
  
	var my_lbl = ((value == "") ? "lblOff" : "lblRep");
  if (my_lbl=="lblOff"){
    if (eval('gQtl[idx].Reponse_'+X) == "-")
      my_lbl="lblHide";}
	fso.SetVariable("_level"+LayerObjetTest+"/MCTelcoOc1:"+repName,value);
	fso.TGotoLabel("_level"+LayerObjetTest+"/Rep"+X,my_lbl);
}
function resetSolution(fso,idx) {
	showSolutionX(fso,"A","lblOff",idx);
	showSolutionX(fso,"B","lblOff",idx);
	showSolutionX(fso,"C","lblOff",idx);
	showSolutionX(fso,"D","lblOff",idx);
}
function resetRepABCD(fso,idx) {
	setRepX(fso,"RepA","",idx);
	setRepX(fso,"RepB","",idx);
	setRepX(fso,"RepC","",idx);
	setRepX(fso,"RepD","",idx);
}
function resetTelco(fso,num) {
	var NX = (num+1) % 10;
	var N10X = (num+1 - NX) / 10;
	var lblExam = "lblOff";
	fso.TGotoFrame("_level"+LayerObjetTest+"/MCTelcoOc1/MCTelcoN10X",N10X);
	fso.TGotoFrame("_level"+LayerObjetTest+"/MCTelcoOc1/MCTelcoNX",NX);
	resetRepABCD(fso, num);
	if (gMod == "exam") {
		lblExam = "lblOn";
	}
	fso.TGotoLabel("_level"+LayerObjetTest+"/MCTelcoOc1/MCExamenOc1",lblExam);
}
function initQuestion(fso,idx) {
	var layer;
	gObjetsQuestionLoaded = 1;
	// stopLoading(fso);
	if (gMod == "tlibre") {
		showMenuTLibre(fso);
  	showNavTestLibre(fso);
	}
	if (gSubMod != "explication") {
		layer = gQtl[idx].layer;
		if (debug_tests) {
			fso.TSetProperty("_level"+layer+"/MCInfosOc1",xposPropIdx,150);
			fso.TSetProperty("_level"+layer+"/MCInfosOc1",yposPropIdx,10);
		}
		gQtl[idx].MskRep    = ""+fso.GetVariable("_level"+layer+"/MCInfosOc1:MskRep");
		gQtl[idx].MskSol    = ""+fso.GetVariable("_level"+layer+"/MCInfosOc1:MskSol");
		gQtl[idx].Reponse_A = ""+gQtl[idx].MskSol.charAt(0);
		gQtl[idx].Reponse_B = ""+gQtl[idx].MskSol.charAt(1);
		gQtl[idx].Reponse_C = ""+gQtl[idx].MskSol.charAt(2);
		gQtl[idx].Reponse_D = ""+gQtl[idx].MskSol.charAt(3);
	}
	if (gSubMod != "explication") {
		gWaitValid = 1;
		showTelco(fso);
		resetTelco(fso,idx);
		if (gMod != "tlibre") {
			startChrono30s(fso);
		}
	}
	else
	{
	    showNavExamens(fso);
	}

	resetSolution(fso,idx);
	if (gSubMod == "explication") {
		showExplication(fso,idx);
	} else {
		showQuestion(fso,idx);
	}
	if ((gMod == "tlibre") && (gQserie.type == "random") && (gNavMod == "unloaded")) {
		if (submit_VList_OnLoad == false) {
			//submitFormUpdateVList();
		}
	}
}
function setMskRepUser(fso,idx) {
	var MskRepUser = "";
	MskRepUser += ((fso.GetVariable("_level"+LayerObjetTest+"/MCTelcoOc1:repA") == "A") ? "*" : "-");
	MskRepUser += ((fso.GetVariable("_level"+LayerObjetTest+"/MCTelcoOc1:repB") == "B") ? "*" : "-");
	MskRepUser += ((fso.GetVariable("_level"+LayerObjetTest+"/MCTelcoOc1:repC") == "C") ? "*" : "-");
	MskRepUser += ((fso.GetVariable("_level"+LayerObjetTest+"/MCTelcoOc1:repD") == "D") ? "*" : "-");
	gQtl[idx].MskRepUser = MskRepUser;
}
//---------------------
// resultats
function setMskRepUserSerie() {
	var i;
	var msg;
	var strHtml = "";
	msg = "liste des réponses user : \n";
	gQserie.NbErreurs = 0;

	for (i=0;i<gQserie.NbQuestions;i++) {
		if (gQtl[i].MskRep != gQtl[i].MskRepUser) {
			gQserie.NbErreurs++;
		}
	}
	strHtml  = "<html><head></head><body><form name=\"FCdr\" method=\"post\">";
	strHtml += "<input type=\"hidden\" name=\"NbX\" value=\""+gQserie.NoSerie+"\">";
	strHtml += "<input type=\"hidden\" name=\"NbQuestions\" value=\""+gQserie.NbQuestions+"\">";
	if (gExamMode == "Exam") {
		strHtml += "<input type=\"hidden\" name=\"Mode\" value=\"ExamCorrection\">";
	} else {
		strHtml += "<input type=\"hidden\" name=\"Mode\" value=\"TestCorrection\">";
	}
	top.frames["nothing"].document.write(strHtml);
   		for (i=0;i<gQserie.NbQuestions;i++) {
		strHtml = "";
		strHtml += "<input type=\"hidden\" name=\"qName"+(i+1)+"\" value=\""+gQtl[i].qName+"\">";
		strHtml += "<input type=\"hidden\" name=\"MskRep"+(i+1)+"\" value=\""+gQtl[i].MskRep+"\">";
		strHtml += "<input type=\"hidden\" name=\"MskRepUser"+(i+1)+"\" value=\""+gQtl[i].MskRepUser+"\">";
		top.frames["nothing"].document.write(strHtml);
	}
	top.frames["nothing"].document.write("</form></body></html>");
}
function getTxtResultat1() {
	var s;
	var sp = ((gQserie.NbErreurs >= 2) ? "s" : "");
	var s1 = "J'ai effectué "+gQserie.NbErreurs+" faute"+sp+". ";
	if (gExamMode == "Exam") {
		if (gQserie.NbErreurs <= 5) {
			s = "Félicitations. J'ai réussi mon examen blanc. "+s1;
		} else {
			s = s1+"Je n'aurais pas réussi mon examen. Je dois encore m'entraîner. "
		}
	} else {
		if (gQserie.NbErreurs <= 5) {
			s = "Félicitations. J'ai réussi mon test. "+s1;
		} else {
			s = s1+"Je n'ai pas réussi mon test. Je dois encore m'entraîner. "
		}
	}
	return s;
}
function showListeResultats(fso) {
	var lbl;
	var i,iplus;
	var movie_objet_test = "_level"+LayerObjetTest+"/";
	var movie_errlist = movie_objet_test+"MCErrorListOc1/";
	var movie = "";
	var txtResultat1 = "";
	var txtResultat2 = "";
	gSubMod = "show_errors";

	showBtResultats(fso);
	if (gExamMode == "Test") {
		showBtConseils(fso);
	}
	StopSounds(fso);
	
	txtResultat1 = getTxtResultat1();
	txtResultat2 = "";
	fso.SetVariable(movie_errlist+":txtResultat1",txtResultat1);
	for (i=0;i<45;i++) {
		iplus = i+1;
		movie = movie_errlist + iplus;
		if (i >= gQserie.NbQuestions) {
			lbl = "lblOff";
			fso.SetVariable(movie+":qNum","");
		} else if (gQtl[i].MskRep != gQtl[i].MskRepUser) {
			lbl = "lblError";
		} else {
			lbl = "lblNoError";
		}
		fso.TGotoLabel(movie,lbl);
	}
	fso.TGotoLabel(movie_objet_test,"lblError");
	hideSolutionABCD(fso);
	hideReponseABCD(fso);
}
	
function gotoError(fso,qNb) {
	fso.TGotoLabel("_level"+LayerObjetTest+"/","lblTest");
	showExamExplication(fso,qNb)
}
//---------------------
// section TLibre : rubriques
function buildQName(rub,n) {
	var qName = "";
	var s1 = "000"+n;
	var s2 = s1.substr(s1.length-3,3);
	qName = ""+rub+s2;
	return qName;
}
function getQNameFromIdx(idx) {
	var nRub;
	var idx1 = idx;
	var sIdx1 = "";
	var sIdx2 = "";
	var qName = "";
	var viewed = false;
	for (nRub in gRubItems) {
		rub = gRubItems[nRub];
		if (gRub2[rub].textSel != "") {
			if (idx1 <= gRub2[rub].rMax) {
				qName = ""+buildQName(rub,idx1);
				break;
			} else {
				idx1 -= gRub2[rub].rMax;
			}
		}
	}
	if (qName == "") { alert("getQNameFromIdx : erreur ! idx="+idx); }
	return qName;
}
var gCheckViewed = true;
function alreadyViewed(qName,idx) {
	var i;
	if (gQTLViewedList.indexOf(qName) != -1) {
		return 1;
	}
	for (i=0;i<idx;i++) {
		if (qName == gQtl[i].qName) {
			return 1;
		}
	}
	return 0;
}
function flushQTLViewedList() {
	var sp = gQTLViewedList.split(",");
	var i;
	var nRub;
	var rub;
	gCheckViewed = false;
	var mes = "";
	for (i=0;i<sp.length;i++) {
		mes += "sp["+i+"] = "+sp[i]+"\n";
	}
	for (nRub in gRubItems) {
		rub = gRubItems[nRub];
		if (gRub2[rub].textSel != "") {
			for (i=0;i<sp.length;i++) {
				if (sp[i].indexOf(rub) != -1) {
					sp[i] = "";
				}
			}
		}
	}
	mes = "";
	for (i=0;i<sp.length;i++) {
		mes += "sp["+i+"] = "+sp[i]+"\n";
	}
	gQTLViewedList = "";
	for (i=0;i<sp.length;i++) {
		if (sp[i] != "") {
			if (gQTLViewedList != "") { gQTLViewedList += ","; }
			gQTLViewedList += sp[i];
		}
	}
	prepareFormUpdateVList("replace","");
	if (submit_VList_OnLoad == false) {
		submitFormUpdateVList();
	}
}
var gStrForm = "";
function prepareFormUpdateVList(mode,qName) {
	var str;
	var strMode = "";
	var strVal = "";
	var strOnLoad = "";
	if (mode == "add") {
		strMode = "TLibreAddVList";
		strVal = qName;
	} else {
		strMode = "TLibreUpdateVList";
		strVal = gQTLViewedList;
	}
	if (submit_VList_OnLoad == true) {
		// pbm : would be nice but does not execute as expected
		strOnLoad = " onLoad='document.fqlist.submit()'";
	} else {
		strOnLoad = "";
	}
	str  = "<html><body "+strOnLoad+">";
	str += "<br><form name=\"fqlist\" method=\"post\" action=\"perso_work.asp\">";
	str += "<br><input type=\"hidden\" name=\"NbX\" value=\""+strVal+"\">";
	str += "<br><input type=\"hidden\" name=\"Mode\" value=\""+strMode+"\">";
	str += "<br></form></body></html>\n";
	gStrForm = str;
	with (top.frames["nothing"]) {
		document.clear();
		document.write(top.frames["main"].gStrForm);
	}
}
function submitFormUpdateVList() {
	with (top.frames["nothing"]) {
		document.fqlist.submit();
	}
}
function getRandomQuestion(fso,zIdx) {
	var qName = "";
	var nbQinRub = 0;
	var idx0 = 0;
	var idx1 = 0;
	var offset = 0;
	nbQinRub = Flash2CodeRubList(fso) ;
	if (debug_tlibre_random) {
		idx0 = 1;
	} else {
		idx0 = Math.ceil(nbQinRub*Math.random());
	}
	qName = getQNameFromIdx(idx0);
	while (alreadyViewed(qName,zIdx) == 1) {
		offset++;
		if (offset == nbQinRub) {
			usr_alert("Toutes les questions des rubriques sélectionnées ont été vues => réinitialisation des listes de questions");
			flushQTLViewedList();
			// return "";
		}
		if ((idx0+offset) <= nbQinRub) {
			idx1 = idx0+offset;
		} else {
			idx1 = 1;
			offset = 0;
			idx0 = idx1;
		}
		qName = getQNameFromIdx(idx1);
	}
	return qName;
}
function showQuestionList() {
	var mes = "list=";
	var i = 0;
	for (i=0;i<=gPIdx;i++) {
		mes += "\n"+i+"  "+gQtl[i].qName;
	}
	for (i=gPIdx+1;i<gQserie.NbQuestions;i++) {
		mes += "\n"+i+"  	"+gQtl[i].qName;
	}
	mes += "\n"+"gLIdx="+gLIdx+", gPIdx="+gPIdx+"\n";
}
function advanceFormQuestion() {
	gPIdx++;
	var qName = gQtl[gPIdx].qName;
	if (gQTLViewedList != "") {
		gQTLViewedList += ",";
	}
	gQTLViewedList += qName;
	submitLink("gotoTLibreUpdate",0,qName);
}
function advanceFormPreload() {
	gLIdx++;
}
function getRandomList(fso,mode) {
	var i;
	if (mode == "form") {
		gRub2["CD"].textSel = (document.FRub.CD.checked ? "CD" : "");
		gRub2["CI"].textSel = (document.FRub.CI.checked ? "CI" : "");
		gRub2["MO"].textSel = (document.FRub.MO.checked ? "MO" : "");
		gRub2["PR"].textSel = (document.FRub.PR.checked ? "PR" : "");
		gRub2["SI"].textSel = (document.FRub.SI.checked ? "SI" : "");
		gRub2["ST"].textSel = (document.FRub.ST.checked ? "ST" : "");
		gRub2["VC"].textSel = (document.FRub.VC.checked ? "VC" : "");
		initLP_Q(LayerQuestion,gNbQuestionsMax);
		if (gLIdx != -1) {
			gLIdx = gPIdx;
		}
	} else {
		CodeRubList2Flash();
	}
	gQserie.NbQuestions = gNbQSerieTLibre;
	gQuestionsList = ""+gQserie.NbQuestions;
	for (i=gLIdx+1;i<gQserie.NbQuestions;i++) {
		gQtl[i].qName = getRandomQuestion(fso,i);
		gQuestionsList += ","+gQtl[i].qName;
	}
	if (debug_tlibre) { showQuestionList(); }
}
function setRubrique(rub,state) {
	var s = rub.substr(5,2);
	if (state == "on")	{ gRub2[s].textSel = s; }
	else			{ gRub2[s].textSel = ""; }
}
var flagNewCodeRubList = false;
function Flash2CodeRubList(fso) {
	var nRub;
	var rub;
	var nbQinRub = 0;
	var old_ckCodeRubList = ckCodeRubList;
	ckCodeRubList = "";
	for (nRub in gRubItems) {
		rub = gRubItems[nRub];
		if (gRub2[rub].textSel != "") {
			if (ckCodeRubList != "") { ckCodeRubList += ","; }
			ckCodeRubList += "'"+gRub2[rub].textSel+"'";
			nbQinRub += gRub2[rub].rMax;
		}
	}
	if (ckCodeRubList == "") {
		ckCodeRubList = "'CD'";
	}
	if (old_ckCodeRubList != ckCodeRubList) {
		flagNewCodeRubList = true;
		//flushPreloader(fso);
	}
	setCookieCodeRubList(ckCodeRubList);
	return(nbQinRub);
}
function CodeRubList2Flash() {
	var nRub;
	var rub;
	for (nRub in gRubItems) {
		rub = gRubItems[nRub];
		if (ckCodeRubList.indexOf(rub,0) >= 0) {
			gRub2[rub].textSel = rub;
		} else {
			gRub2[rub].textSel = "";
		}
	}
}
function showFlashRubriques(fso) {
	var nRub;
	var target;
	var lbl;
	CodeRubList2Flash();
	for (nRub in gRubItems) {
		rub = gRubItems[nRub];
		lbl = "lblOff";
		if (gRub2[rub].textSel != "") {
			lbl = "lblOn";
		}
		target = "_level"+LayerObjetTest+"/MCMenuTLibreOc1/MCRubOc1/MCMenuRubOc1/MCRub"+rub;
		fso.TGotoLabel(target,lbl);
	}
}
//--------------------
// interpreteur GetURL
var	a = new Array(50);
function parseArgs(args)
{pS="";
pS+=args;
pC=pS.indexOf(',');
pN=0;
while(pC !=-1)
{
pL=pS.length;
a[pN]=pS.substring(0,pC);
pS=pS.substring(pC+1,pL);
pN++;
pC=pS.indexOf(',');
}
a[pN]=pS;
for (pD=0;pD<=pN;pD++)
{if (a[pN]=='returnVar')
{a[pN]=returnVar;}
else if (a[pN]=='returnPlayStatus')
{a[pN]=returnPlayStatus;}
else if (a[pN]=='returnPercentLoaded')
{a[pN]=returnPercentLoaded;}
else if (a[pN]=='returnCurrentFrameNumber')
{a[pN]=returnCurrentFrameNumber;}
else if (a[pN]=='returnCurrentFrameLabel')
{a[pN]=returnCurrentFrameLabel;}
else if (a[pN]=='returnPropString')
{a[pN]=returnPropString;}
else if (a[pN]=='returnPropNumber')
{a[pN]=returnPropNumber;}
}}
var gMod = "";
var gExamMode = "";
var gSubMod = "";
var gQuestionNameTLibre = "";

function fQuit(fso) {
	 top.Shadowbox.close();
	 
	/*if (1) {
		top.close();
	} else {
		//with (window.opener) : pbm sous NS
		with (top.opener) {
//			location.href = "dossier_perso.asp";
		}
		location.href = "dossier_quit.asp"; 
	} */
}
var ckCodeRubList = "";
var gAudioPhotoPath = "";
var gProfilAudio = "";
var gProfilPhoto = "";
var gHideChrono = "";
var gValidOff   = "";
function initFlash(fso) {
	gProfilAudio	= GetCookieElement("CDR","PrefAudio");
	gProfilPhoto	= GetCookieElement("CDR","PrefPhoto");
	if (   (gProfilAudio == gAudio08kbps)
	    && (gMod == "lesson") ) {
		gProfilAudio = gAudio16kbps;
	}
	gAudioPhotoPath	= gAudioPath[gProfilAudio]+gPhotoPath[gProfilPhoto]+"/";
	ckCodeRubList = GetCookie("CodeRubList");
	if (ckCodeRubList == null) {
		ckCodeRubList = "'CD'";
		setCookieCodeRubList(ckCodeRubList);
	}
	gHideChrono = GetCookie("HideChrono");
	gValidOff   = GetCookie("ValidOff");
}
function flashmovie_DoFSCommand(a1,a2) {
	var fso = InternetExplorer ? window.flashmovie : window.document.flashmovie;
	var doSetMoviesVisibility = true;
	var n;
	var idx = -2;
	var qName = "";
	
	parseArgs(a2);

    if ((a1 == "fs_bt") && (a2 == "sortie")) {
	fQuit(fso);
    } else {
	if (a1 == "fs_bt") {
 		if (typeof FP[a2] != "undefined") {
			FlashLoad(fso,a2);
		} else if (a2 == "quit") {
			doSetMoviesVisibility = fquit(fso);
		} else if (a2 == "menu") {
			FlashLoad(fso,"pref");
		} else if (a2 == "sommaire") {
			FlashLoad(fso,"som_cdr");
		} else if (a2 == "retour") {
			NavPop(fso);
		} else if (a2 == "test") {
			stopBtTest(fso);
			submitLink("gotoTestFlash",gLessonNum,"");
		//----------------
		} else if (a2 == "debut") {
			gotoQuestion(fso,"<<");
		} else if (a2 == "prec") {
			gotoQuestion(fso,"<");
		} else if (a2 == "suiv") {
			gotoQuestion(fso,">");
		} else if (a2 == "fin") {
			gotoQuestion(fso,">>");
		//----------------
		} else if (a2 == "solution") {
			showSolutionABCD(fso,gPCur);
		} else if (a2 == "explication") {
			showExplication(fso,gPCur);
		} else if (a2 == "show_rubriques") {
			showFlashRubriques(fso);
		} else if (a2 == "show_errors") {
			showListeResultats(fso);
		} else if (a2 == "show_conseils") {
			showConseils();
		} else if (a[0] == "goto_error") {
			gotoError(fso,a[1]);
		} else if (a[0] == "rub") {
			setRubrique(a[1],a[2]);
			n = Flash2CodeRubList(fso) ;
		} else {
			msg = "Erreur dans fs_bt : page flash inconnue : " + a2;
			dev_alert(msg);
		}
	} else if (a1 == "fs_loaded") {
		if (a[0] == "base") {
			if ((a[1] == "tlibre") || (a[1] == "ReviewErrors")) {
				gMod = "tlibre";

			} else if (a[1] == "Exam") {
				gQserie.NoSerie = a[2];
				gMod = "exam";
				gExamMode = "Exam";
			} else if (a[1] == "Test") {
				gQserie.NoSerie = a[2];
				gMod = "exam";
				gExamMode = "Test";
			} else if (a[1] == "lesson") {
				gMod = "lesson";
				gLessonNum = a[2];
			} else if (a[1] == "som_pa") {
				gMod = "pa";
			}
			//-- init Flash
			initFlash(fso);
			//-- next actions
			if (   (gMod == "tlibre") 
			    || (gMod == "exam")  ) { 
				fso.LoadMovie(LayerObjetTest,"test/objets_test"+gPhotoPath[gProfilPhoto]+".swf");
			} else {
				fso.LoadMovie(LayerObjet,"cdrflash/objets.swf");
			}
		} else if (a[0] == "objets") {
			gObjetsLoaded = 1;
			// stopLoading0(fso);
			if (gMod == "lesson") {
				gLIdx = -1;
				preloadLessonModuleMovie(fso);
			} else if (gMod == "pa") {
				FlashLoad(fso,"som_pa");
			} else {
				;
			}
		} else if (a[0] == "objets_test") {
			gObjetsTestLoaded = 1;
			if (debug_preload) {
				fso.TGotoLabel("_level"+LayerObjetTest+"/MCPLStatusOc1","lblOn");
			}
			if (gMod == "tlibre") {
				getTestSerie(fso,"liste");
			} else if (gMod == "exam") {
				getTestSerie(fso,"liste");
			}
		} else if (   (a[0] == "expl_preloaded")
			   || (a[0] == "expl_pl_wait_ack")) {
			qName = a[1];
			idx = getIdxFromQName(qName);
			if ((idx >= 0) && (gQtl[idx] != null)) {
				questionEndAck(fso,idx);
				if (gSubMod == "explication") {
					initQuestion(fso,idx);
				} else if ((gMod == "tlibre") && (gNavMod == "preloaded")) {
					startTest(fso,idx);
				} else if (   ((gMod == "tlibre") && (gNavMod == "unloaded"))
					   || (gMod == "exam")) {
					if (a[0] == "expl_preloaded") {
						if (use_js_pl) {
							jsQuestionEndLoaded(fso,idx);
						} else {
							newQuestionEndLoaded(fso,idx);
						}
					} else {
						questionEndWaitAck(fso,idx);
					}
				}
			}
		} else if (a[0] == "test") {
			stopLoading0(fso);
			qName = a[1];
			idx = getIdxFromQName(qName);
			initQuestion(fso,idx);
		}
	} else if (a1 == "lesson_end") {
		lessonModuleEndFound(fso);
	} else if (a1 == "lesson_next") {
		// old (for prev versions compatibility)
	} else if (a1 == "preload_ctl") {
		if (a[0] == "start_loaded") {
			if (gMod == "lesson") {
				lessonModuleStartLoaded(fso,a[1]);
			} else {
				//
			}
		} else if (a[0] == "end_loaded") {
			if (gMod == "lesson") {
				lessonModuleEndLoaded(fso,a[1]);
			} else {
				//
			}
		}
	} else if (a1 == "ctl_telco") {
		if (a2 == "corr") {
			resetRepABCD(fso, gPCur);
		} else if (a2 == "sel,A") {
			setRepX(fso,"repA","A",gPCur);
		} else if (a2 == "sel,B") {
			setRepX(fso,"repB","B",gPCur);
		} else if (a2 == "sel,C") {
			setRepX(fso,"repC","C",gPCur);
		} else if (a2 == "sel,D") {
			setRepX(fso,"repD","D",gPCur);
		} else if (a2 == "valid") {
			if ((gValidOff == "yes") && (gMod == "exam") && (gExamMode == "Exam")) {
			} else {
				hideTelco(fso);
				hideAndResetChrono30s(fso);
				if (gMod == "tlibre") {
					showSolutionABCD(fso,gPCur);
					startChrono2s(fso);
				} else {
					getQuestionSuiv(fso,"QSValid");
				}
			}
		} else if (a2 == "fin_chrono_3s") {
			gotoQuestion(fso,">>>");
			//getQuestionSuiv(fso,"QSChrono2s");
		} else {
			msg = "Erreur dans le controle de la telecommande";
			dev_alert(msg);
		}
	} else if (a1 == "ctl_chrono") {
		if (a2 == "fin_chrono") {
			getQuestionSuiv(fso,"QSChrono30s");
		} else if (a2 == "freeze_chrono") {
			freezeChrono(fso);
		} else if (a2 == "unfreeze_chrono") {
			unfreezeChrono(fso);
		}
	//-----------------
	// section panneaux
	} else if (a1 == "som_load_pagrp") {
		LoadPaGrp(fso,a[0],a[1],"push");
	} else if (a1 == "load_pagrp") {
		LoadPaGrp(fso,a[0],a[1],"nopush");
	//-----------------
	} else if (gOtherTestsImplemented) {
		OtherTests(fso,a1,a2);
	} else {
		dev_alert("invalid FSCommand a1="+a1+", a2="+a2);
	}
	//-----------------
	if (doSetMoviesVisibility) {
		SetMoviesVisibility(fso);
	}
    }
}
//------------------
// Hook for IE
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && 
	  navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) {
	document.write('<SCRIPT LANGUAGE=VBScript\> \n');
	document.write('on error resume next \n');
	document.write('Sub flashmovie_FSCommand(ByVal a1, ByVal a2)\n');
	document.write('  call flashmovie_DoFSCommand(a1, a2)\n');
	document.write('end sub\n');
	document.write('</SCRIPT\> \n');
}
gFlashLibLoaded = 1;
/* End code */
//-->