// Globales
var g_cookiesActives = false;
var g_iModuleEnVisionnement=0;// Le numéro du module actuellement en visionnement
var g_iModuleEtapeEnVisionnement=0;// Le numéro du module de l'étape actuellement en visionnement
var g_iEtapeEnVisionnement=0;// Le numéro de l'étape en visionnement (pas nécessairement l'étape déclarée en cours)
// Pour définir les URLs
var g_sURLPagePrincipale="index.html";
var g_sURLRacine = retournerUrlRacine();
var g_sURLPagePresentation="video.html";
var g_sURLPageTuto="tuto.html";
var g_sUrlSkin = "medias/animations/SkinOverAllNoFullNoCaptionWithTimer.swf";


// **** FONCTIONS DE GESTION ***************************************************
//
/**
* Au clic d'un hyperlien dans le menu des étapes ou de l'hyperlien-icône "En cours", prépare l'affichage de l'étape
* dans une nouvelle fenêtre, la liaison vers son fichier vidéo et les variables à transmettre via une querystring à
* celui-ci, et définit l'étape cliquée en cours si aucune autre étape ne l'est déjà dans le cookie
*
* @ param  Event evt L'événement appelé lors du clic sur une étape ou sur le btn "en cours"
*/
function gererClicHypEtape(evt)
{
	var sUrlVideo = '';
	var iModule = 0;
	var iEtape = 0;
	var iModuleEnCours = 0;
	var iEtapeEnCours = 0;
	var iSeconde = 0;
	var oLien = evt.findElement('a');
	var bVideo = oLien.href.indexOf('.flv') != -1;
	var bRelancerVideoEnCours = evt.element().href == $("aEnCours").href;


	// Si ce n'est pas un vidéo, on n'arrête pas l'événement, il faut suivre le lien spécifié dans le href
	if(!bVideo)
	{
		return true;
	}
	// Sinon on arrête l'événement pour ne pas suivre le lien href mais plutôt ouvrir le popup vidéo
	else
	{
		evt.stop();
		var sUrlVideo = oLien.href;
		var bSeekIntoVideo = sUrlVideo.indexOf('#') != -1;
		if(bSeekIntoVideo)
		{
			iSeconde = sUrlVideo.substring(sUrlVideo.indexOf('#')+1);
			sUrlVideo = sUrlVideo.substring(0, sUrlVideo.indexOf('#'));
		}
	}

	if(bRelancerVideoEnCours && g_cookiesActives)
	{
		iModuleEnCours=retournerInfoEnCoursCookie("module","videos_visionnes");
		iEtapeEnCours=retournerInfoEnCoursCookie("etape","videos_visionnes");
		iModule = iModuleEnCours;
		iEtape = iEtapeEnCours;
		iSeconde = retournerInfoCookie("videos_visionnes",iModule,iEtape,5);
	}
	else if (g_cookiesActives)
	{
		iModule = g_iModuleEnVisionnement;
		iEtape = oLien.up('tr').id.match(/etape_([0-9]+)/).pop();
		iModuleEnCours=retournerInfoEnCoursCookie("module","videos_visionnes");
		iEtapeEnCours=retournerInfoEnCoursCookie("etape","videos_visionnes");

		// Si aucune autre étape du module n'est déclarée en cours dans le cookie
		if(iModuleEnCours == null && iEtapeEnCours==null)
		{
			modifierCookie(iModule, iEtape, "definitionEtapeEnCours",null,"videos_visionnes");
			ecrireCookie(oLien.href, 'video_en_cours');
			$("lienvideo").style.visibility = 'visible';
			// attache l'ouverture du video sur le clic du btn en cours
			$("aEnCours").observe('click', gererClicHypEtape);
			$("aEnCours").href = oLien.href;
			iModuleEnCours = iModule;
			iEtapeEnCours = iEtape;
		}
	}

	// Enregistrement des globales
	g_iModuleEtapeEnVisionnement=iModule;
	g_iEtapeEnVisionnement=iEtape;

	// Appelle la génération de la chaÓne URL, permettant d'envoyer en méthode GET des variables au fichier SWF
	sChaineParamUrl = Hash.toQueryString({	iModule:iModule,
			 								iEtape:iEtape,
											iModuleEnCours:iModuleEnCours,
											iEtapeEnCours:iEtapeEnCours,
											iSeconde:iSeconde,
											sUrlVideo:sUrlVideo });

	var sUrlPopup= g_sURLRacine + g_sURLPagePresentation +  '?' + sChaineParamUrl;
	ouvrirFenetrePresentation(sUrlPopup);
}

/**
* Au clic du bouton "Retour à la page principale", reÁoit le nombre de secondes auquel le vidéo de l'étape s'est arrêté, le mémorise dans le cookie et ré-oriente vers la fenêtre principale
*
* @ param integer "iModule" "le numéro du module de l'étape actuellement en visionnement"
* @ param integer "iEtape" "le numéro de l'étape actuellement en visionnement"
* @ param integer "iSeconde" "le nombre de secondes auquel le vidéo de l'étape s'est arrêté"
*/
function gererRetourPagePrincipale(iModule,iEtape,iSeconde)
{
	// Envoit le temps ecoulé en sec pour le module et l'étape courants
	if(g_cookiesActives)
		modifierCookie(iModule, iEtape,"retourPagePrecedente",iSeconde,"videos_visionnes");

	// On arrête de surveiller la fermeture de la fenetre via le bouton du navigateur puisque l'utilisateur
	// a demander explicitement de revenir à la page principale sans annuler le visionnement en cours.
	Event.stopObserving(window, "unload",gererTerminaisonPresentation); // *** fait boguer l'ouverture de la fenêtre lorsqu'on la change d'url

	reorienteVersFenetrePrincipale(g_sURLPagePrincipale);
}

/**
* Au clic du bouton "Terminer la présentation" ou du bouton-systËme de fermeture de la fenêtre, ré-oriente vers la fenêtre principale, ferme la fenêtre de l'étape (vidéo) en visionnement, et si l'étape est définie en cours dans le cookie, enlËve cette mémorisation et cache les éléments de lecture en cours
*/
function gererTerminaisonPresentation()
{
	var arrInfos;
	var iModuleEtapeEnVisionnement = window.opener.g_iModuleEtapeEnVisionnement;
	var iEtapeEnVisionnement = window.opener.g_iEtapeEnVisionnement;
	var sUrlVideo;

	reorienteVersFenetrePrincipale(g_sURLPagePrincipale);
	// Si les module et étape en visionnement correspondent aux module et étape en cours
	iModuleEnCours=retournerValeurParamUrl("iModuleEnCours");
	iEtapeEnCours=retournerValeurParamUrl("iEtapeEnCours");
	if(g_cookiesActives && iModuleEtapeEnVisionnement==iModuleEnCours && iEtapeEnVisionnement==iEtapeEnCours)
	{
		sUrlVideo=retournerValeurParamUrl("sUrlVideo");;
		modifierCookie(iModuleEtapeEnVisionnement,iEtapeEnVisionnement,"terminaisonPresentation",null,"videos_visionnes");
		ecrireCookie('', 'video_en_cours');
		arrInfos=Array(iModuleEtapeEnVisionnement,iEtapeEnVisionnement,null);
		window.opener.document.getElementById("lienvideo").style.visibility = 'hidden';
		window.opener.document.getElementById("lienvideo").href="";
	}
	window.close();
}

/**
* GénËre et affiche le contenu textuel de l'annexe de l'étape courante, et désactive le clic de sécurité sur l'objet Flash pour le navigateur IE et détecte la fermeture de la fenêtre de présentation vidéo
*
* @ param string "sXMLRecu" "le contenu textuel du fichier XML chargé'"
*/
function gererAffichageFenetreVideo()
{
	// Initialise les variables
	var iModule = retournerValeurParamUrl("iModule");
	var iEtape = retournerValeurParamUrl("iEtape");
	var iModuleEnCours = retournerValeurParamUrl("iModuleEnCours");
	var iEtapeEnCours = retournerValeurParamUrl("iEtapeEnCours");
	var iSeconde = retournerValeurParamUrl("iSeconde");
	var sUrlVideo = retournerValeurParamUrl("sUrlVideo");
	// url relative vers le fichier d'annexe depuis le fichier /video.html
	var sUrlAnnexe = "contenu/annexes/annexe" + iModule + ".html";

	var sChaineParam = Hash.toQueryString({	iModule: iModule,
					 						iEtape: iEtape,
											iSeconde: iSeconde,
											sUrlVideo: sUrlVideo,
											sUrlSkin: g_sUrlSkin,
											sUrlAnnexe: sUrlAnnexe,
											iModuleEnCours: iModuleEnCours,
											iEtapeEnCours: iEtapeEnCours,
											bDebug: 1
										});

	// Affiche l'objet flash
	oFlash={id: 'video',
			movie:"medias/animations/videos.swf",
			width:"965", height:"660",
			majorversion:"9", build:"0",
			bgcolor:"#ebf3f6",
			wmode:"transparent",
			salign:"lt",
			scale:"noscale",
			flashvars: sChaineParam };

	UFO.create(oFlash, "objetFlash");
}

/**
* Affiche le lecteur video des tutoriels
* L'url de la page courant doit comporter le paramétre sUrlVideo.
*
*/
function gererAffichageFenetreTuto()
{
	var sChaineParam = Hash.toQueryString(
		{	sUrlVideo: retournerValeurParamUrl("sUrlVideo"),
		    iSeconde: retournerValeurParamUrl("iSeconde"),
			sUrlSkin: g_sUrlSkin,
			iDebug: retournerValeurParamUrl("iDebug")
		});

	// Affiche l'objet flash
	oFlash={id: 'video',
			movie:"medias/animations/tuto.swf",
			width:"890", height:"670",
			majorversion:"9", build:"0",
			bgcolor:"#ebf3f6",
			wmode:"transparent",
			salign:"lt",
			scale:"noscale",
			flashvars: sChaineParam };

	UFO.create(oFlash, "objetFlash");
}

// ****************************************************************************************************

// **** SOUS-FONCTIONS DE GESTION DE LA NAVIGATION ***************************************************

/**
* Au clic du bouton "Retour à la page principale", "Terminer la présentation" ou du bouton-systËme de fermeture de la fenêtre, ré-oriente vers la fenêtre principale
*/
function reorienteVersFenetrePrincipale()
{
	window.opener.focus();
	window.close();
}

/**
* Ouvre une nouvelle fenêtre présentant la page correspondant à l'adresse URL reÁue (le vidéo de l'étape cliquée et le menu vidéo)
*
* @ param integer "sUrl" "l'adresse URL à laquelle la fenêtre doit pointer"
* @ param integer "iHaut" "la position à partir du haut, en pixels, de la fenêtre"
* @ param integer "iGauche" "la position à partir de la gauche, en pixels, de la fenêtre"
* @ param integer "iLargeur" "la largeur en pixels de la fenêtre"
* @ param integer "iHauteur" "la hauteur en pixels de la fenêtre"
*/
function ouvrirFenetrePresentation(param) {
	var iHaut = Math.round((screen.height - 690 - 35)/2);
	iHaut = iHaut < 0 ? 0 : iHaut;
	var iGauche = Math.round((screen.width - 990)/2);
	iGauche < 0 ? 0 : iGauche;

	var iLargeur = 960 + 2*10; // 10px de marge
	var iHauteur= 660;

	if(Object.isString(param)) // param est la string contenu dans le href du lien "En cours"
	{
		sUrl = param;
	}
	else
	{
		 // Param est l'événement déclanché lors du clic sur l'étape
		sUrl = param.element().href;
		param.stop();
	}

	if(iHaut < 0)
		iHaut = 0;

	if(iGauche < 0)
		iGauche = 0;

	// Ouvre la nouvelle fenêtre
	oNouvFenetre=window.open(sUrl,'name','location=no, menubar=no, status=no, scrollbars=no, resizable=yes, toolbar=no,width='+ iLargeur +',height='+ iHauteur +',top='+  iHaut +',left='+ iGauche);
	oNouvFenetre.focus();
}

/**
 * Ouvre la video des tutoriels
 *
 * L'attribut href défini l'url du video à ouvrir (relative à la page contenant le swf player)
 *
 * @param event evt l'événement déclenché par le clic sur le lien
 */
function ouvrirFenetreTuto(evt)
{
	evt.stop();

	// Haut et bas
	var iHaut = Math.round((screen.height - 670 - 35)/2);
	iHaut = iHaut < 0 ? 0 : iHaut;
	var iGauche = Math.round((screen.width - 890)/2);
	iGauche < 0 ? 0 : iGauche;
	if(iHaut < 0)
		iHaut = 0;

	if(iGauche < 0)
		iGauche = 0;

	// Largeur et hauteur
	var iLargeur = 880 + 10; // 10px de marge
	var iHauteur= 660 + 10;

	var sUrlVideo = evt.element().href;
	var bSeekIntoVideo = sUrlVideo.indexOf('#') != -1;
	if(bSeekIntoVideo)
	{
		iSeconde = sUrlVideo.substring(sUrlVideo.indexOf('#')+1);
		sUrlVideo = sUrlVideo.substring(0, sUrlVideo.indexOf('#'));
	}

	// Paramétres à passer au lecteur video
	var options = {	sUrlVideo: sUrlVideo,
					iSeconde: bSeekIntoVideo ? iSeconde : 0 };

	var sUrlPopup= g_sURLRacine + g_sURLPageTuto +  '?' + Hash.toQueryString(options);
	
	// Ouvre la nouvelle fenêtre
	oNouvFenetre=window.open(sUrlPopup,'name','location=no, menubar=no, status=no, scrollbars=no, resizable=yes, toolbar=no,width='+ iLargeur +',height='+ iHauteur +',top='+  iHaut +',left='+ iGauche);
	oNouvFenetre.focus();
}

/****************************************************************************************************/

// **** FONCTIONS DE GESTION D'AFFICHAGE DU CONTENU ***************************************************

/**
* Affiche le contenu HTML reÁu dans le contenant HTML, et applique son formatage HTML
*
* @ param object "oContenantHTML" "l'objet du contenant HTML"
* @ param string "sContenuTexte" "le contenu contenu textuel HTML à inclure dans le contenant HTML"
* @ param string "sTypeFormatage" "le type de formatage du contenant HTML"
*/
function afficherContenuHTML(oContenantHTML,sContenuTexte,sTypeFormatage)
{
	var sDebutContenuHTML="";
	var sFinContenuHTML="";

	switch (sTypeFormatage)
	{
		case "erreur" :
			sDebutContenuHTML="<p class='erreur'>";
			sFinContenuHTML="</p>";
			break;
		default :
			break;
	}
	oContenantHTML.update();
	new Insertion.Bottom(oContenantHTML,(sDebutContenuHTML+sContenuTexte+sFinContenuHTML));
}

/**
* Selon le type d'élément reÁu, affiche ou cache l'élément HTML désiré et surligne ou dé-surligne un hyperlien
*
* SI le type d'élément reÁu est "enCours" : affiche ou cache l'hyperlien-icône "En cours" et lui attribue ou enlËve une action au clic, et surligne en rouge (applique une classe) ou dé-surligne l'hyperlien dont l'indice numérique correspond ou correspondait (avant l'appel de la fonction) au numéro de l'étape en cours (iEtape). Vérifie que le module actuellement visité correspond au module de l'étape en cours, avant de surligner l'hyperlien ayant le bon indice numérique.
*
* SI le type d'élément reÁu est autre : affiche ou cache l'élément HTML correspondant
*
* @ param bool "blnAffichage" "si l'élément HTML doit s'afficher"
* @ param string "sIdElement" "l'identifiant de l'élément HTML à afficher ou à cacher"
* @ param array "arrInfos" "le tableau des informations pour compléter la gestion de l'affichage et les actions des éléments HTML"
*/
function afficherCacherElementHTML(blnAffichage,sIdElement)
{
	var oElementHTML=$(sIdElement);
	var iModule, iEtape;

	switch (blnAffichage)
	{
		case true :
			oElementHTML.style.visibility="visible";
			break;
		case false :
			oElementHTML.style.visibility="hidden";
			break;
	}
}

/**
* Coche ou décoche la boÓte à cocher de l'étape correspondante et mémorise le visionnement ou non de l'étape dans le cookie
*
* @ param integer "iModule" "le numéro du module correspondant à la boÓte à cocher"
* @ param integer "iEtape" "le numéro de l'étape correspondant à la boÓte à cocher"
*/
function cocherEtapeVisionnee(evt)
{
	var oTd = evt.findElement('td');
	var iModule = g_iModuleEnVisionnement;
	var iEtape = oTd.up('tr').id.match(/etape_([0-9]+)/).pop();

	if(oTd.hasClassName('non_coche'))
	{ // Coche la boÓte
		oTd.addClassName('coche');
		oTd.removeClassName('non_coche');
		modifierCookie(iModule,iEtape,"cochageBoiteCocher",null,"videos_visionnes");
		oTd.title = "Activité réalisée";
	}
	else
	{ // Dechoche la boite
		oTd.addClassName('non_coche');
		oTd.removeClassName('coche');
		modifierCookie(iModule,iEtape,"decochageBoiteCocher",null,"videos_visionnes");
		oTd.title = "Activité non réalisée";
	}
}

/**
* Surligne le li correspondant au module visité et afface le surlignement des autres
*
*/
function surlignerBtnModuleSurClic()
{
	var oLisMenuModules=$("menu2").getElementsBySelector("li");
	var oLiCourant;

	for(var i=1; i<=oLisMenuModules.length; i++)
	{
		oLiCourant=oLisMenuModules[i-1];
		 // Si le module courant correspond au module actuellement visité
		if(i==g_iModuleEnVisionnement)
		//if(blnPageCouranteEstModule==true && i==g_iModuleEnVisionnement)
			oLiCourant.id="active";  // Surligne le li courant
		else // Sinon, empêche le surlignement du li courant
			oLiCourant.id="";
	}
}

// ****************************************************************************************************

// **** FONCTIONS DE RETOUR DE VALEUR  ******************************************************
/**
* GénËre et retourne une chaÓne paramËtre-valeur de variables Flash
*
*/
function retournerChaineVarsFlash(sAnnexe)
{
	var arrNomParam, arrValeurParam;
	var iEtape=retournerValeurParamUrl("iEtape");
	var iEtapeEnCours=retournerValeurParamUrl("iEtapeEnCours");
	var iModule=retournerValeurParamUrl("iModule");
	var iModuleEnCours=retournerValeurParamUrl("iModuleEnCours");
	var iSeconde=retournerValeurParamUrl("iSeconde");
	var sChaineParam, sUrlVideo;
	var sUrlVideo=retournerValeurParamUrl("sUrlVideo");
	var sCheminAcces="../videos/";
	var sUrlVideo=sCheminAcces+sUrlVideo;
	var sUrlAnnexe=sCheminAcces+sUrlVideo;

	sChaineParam= Hash.toQueryString({	iModule:iModule,
										 						iEtape:iEtape,
																iSeconde:iSeconde,
																sUrlVideo:sUrlVideo,
																sUrlAnnexe: sUrlAnnexe,
																iModuleEnCours:iModuleEnCours,
																iEtapeEnCours:iEtapeEnCours,
																sAnnexe: sAnnexe});

	return sChaineParam;
}

/**
* RecupËre la valeur du paramËtre URL "sParametre"
*
* @param string "sParametre" "Le nom du paramËtre"
* @return string "sValeurParamUrl" "La valeur du paramËtre"
				*** -1 si le para n'est pas présent
*/
function retournerValeurParamUrl(sParametre)
{
	var sChaineParamUrl;
	var sValeurParamUrl=-1; // ***
	var iPosValeurParamUrl;

	sChaineParamUrl=location.search; // ex. : ?param1=xxx&param2=yyy
	iPosValeurParamUrl=sChaineParamUrl.indexOf(sParametre);
	if(iPosValeurParamUrl!=-1) // Si le paramËtre est trouvé
	{
		sChaineParamUrl = sChaineParamUrl.substring(sChaineParamUrl.indexOf(sParametre), sChaineParamUrl.length) +"&";
		sValeurParamUrl=sChaineParamUrl.substring(sChaineParamUrl.indexOf('=')+1,sChaineParamUrl.indexOf('&'));
	}

	return decodeURIComponent(sValeurParamUrl);
}

/**
* Retourne un message d'erreur si le navigateur de l'utilisateur est invalide
*
* @ return string "sMessageErreur" "le message d'erreur"
			*** chaÓne vide si le navigateur est valide
*/
function retournerMessageSiNavigateurInvalide()
{
	var sMessageErreur=""; // ***
	var blnNavigateurValide=retournerSiNavigateurValide();
	var sNavigateursProposes="";
	var sPlateforme=retournerPlateforme();
	var arrNavigateurPropose=Array();
	var sSeparateurNavigateur=", ";

	arrNavigateurPropose["Win"]=Array("Firefox","Explorer");
	arrNavigateurPropose["Macintosh"]=Array("Firefox","Safari");
	arrNavigateurPropose["Unix"]=Array("Firefox");
	// Si le navigateur n'est pas valide
	if(blnNavigateurValide==false)
	{ // GénËre la liste de navigateurs proposés
		for(var i=1; i<=(arrNavigateurPropose[sPlateforme].length); i++)
		{
			if(i==arrNavigateurPropose[sPlateforme].length)
				sSeparateurNavigateur="";

			sNavigateursProposes+=arrNavigateurPropose[sPlateforme][i-1]+sSeparateurNavigateur;
		}
		sMessageErreur=	"La version de votre navigateur Internet n'est pas à jour. Le contenu risque de ne pas s'afficher correctement et certaines fonctionnalités du site pourraient ne pas fonctionner. Veuillez utiliser, ou télécharger si nécessaire, la derniËre version d'un des navigateurs suivants : "+ sNavigateursProposes;
	}

	return sMessageErreur;
}

/**
* Vérifie et retourne si le navigateur de l'utilisateur est valide
*
* @ return bool "blnNavigateurValide" "si le navigateur est valide"
*/
function retournerSiNavigateurValide()
{
	var sNavigateur=retournerNavigateurWeb();
	var sPlateforme=retournerPlateforme();
	var iVersion=retournerVersionNavigateurWeb();
	var arrVersionMinimale=Array();
	var iVersionMinimale;
	var blnNavigateurValide=false;
	arrVersionMinimale["Explorer"]=4;
	arrVersionMinimale["Netscape"]=5;
	arrVersionMinimale["Safari"]=3;
	iVersionMinimale=arrVersionMinimale[sNavigateur];

	if (sNavigateur.indexOf("Netscape")!=-1) // Firefox et Netscape
	{
		if(iVersion>=iVersionMinimale)
			blnNavigateurValide=true;
	}
	else
	{
		if(sNavigateur.indexOf("Explorer")!=-1)
		{
			if(sPlateforme.indexOf("Macintosh")==-1 && iVersion>=iVersionMinimale) // Explorer Mac non supporté
				blnNavigateurValide=true;
		}
		else
		{
			if(sNavigateur.indexOf("Safari")!=-1)
			{
				if(sPlateforme.indexOf("Macintosh")==-1 && iVersion>=iVersionMinimale)
					blnNavigateurValide=true;
			}
		}
	}
	return blnNavigateurValide;
}

/**
* Détecte et retourne le nom du navigateur de l'utilisateur
*
* @ return string "sNavigateurWeb" "le nom du navigateur de l'utilisateur"
*/
function retournerNavigateurWeb()
{
	var sNavigateurWeb="Unknown";

	if (navigator.appName.indexOf("Netscape") > -1)
		sNavigateurWeb="Netscape";
	if (navigator.appName.indexOf("Explorer") > -1)
		sNavigateurWeb="Explorer";

	return sNavigateurWeb;
}

/**
* Détecte et retourne le nom de la plate-forme de l'utilisateur
*
* @ return string "sPlateforme" "le nom de la plate-forme de l'utilisateur"
*/
function retournerPlateforme()
{
	var sPlateforme="Unknown";

	if (navigator.appVersion.indexOf("Win") > -1)
		sPlateforme="Win";
	if (navigator.appVersion.indexOf("Macintosh") > -1)
		sPlateforme="Macintosh";
	if (navigator.appVersion.indexOf("X11") > -1)
		sPlateforme="Unix";
	if (navigator.appVersion.indexOf("Unix") > -1)
		sPlateforme="Unix";
	if (navigator.appVersion.indexOf("Linux") > -1)
		sPlateforme="Unix";

	return sPlateforme;
}

/**
* Détecte et retourne la version du navigateur de l'utilisateur
*
* @ return string "sVersionNavigateurWeb" "la version du navigateur de l'utilisateur"
*/
function retournerVersionNavigateurWeb()
{
    var sVersionNavigateurWeb=parseFloat(navigator.appVersion);

	return sVersionNavigateurWeb;
}


/**
* Appelle la détection de la version de Flash et retourne un message d'erreur si la version est périmée
*
* @return integer "flashVer" "Le numéro de la version de SWF détectée"
*/
function retournerMessageSiErreurFlash()
{
	// Variables globales
	var sMessageErreur;
	// Version majeure de Flash requise
	var requiredMajorVersion = 8;
	// Version mineure de Flash requise
	var requiredMinorVersion = 0;
	// Révision de Flash requise
	var requiredRevision = 0;
	// Version de javascript prise en charge
	//var jiVersion = 1.0;
	var jiVersion = 1.1;
	var blnBonneVersionFlash = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
	if(!blnBonneVersionFlash)
	{  // si nous avons détecté une version acceptable
		// version Flash trop ancienne ou détection du plug-in impossible
		sMessageErreur="Le visionnement des vidéos requiert le plugiciel Macromedia Flash Player 8.0 et plus. Ce plugiciel n'est actuellement pas installé sur votre navigateur Internet ou existe dans une version antérieure. Veuillez télécharger <a href='http://www.macromedia.com/go/getflash/'>Flash</a>";
	}
	else
		sMessageErreur="";

	return sMessageErreur;
}

function retournerMessageSiResolutionMin()
{
	var sMsg = "";

	if(screen.height < 768)
		sMsg = "Le visionnement des vidéos requiert une hauteur minimale de 768px.";

	return sMsg;
}

/**
 * Retourne le numero de module de la page courante si cette derniËre est de la forme /contenu/mudules/moduleN.html
 *
 * @return mixed false si la page n'est pas un module, le numéro de module sinon
 */
function retournerNoModule()
{
	var	regx = /\/contenu\/modules\/module([0-9]+).html/
	var url = document.location.href;

	if(regx.test(url))
		return url.match(regx).pop();
	else
		return false
}

/**
 * Retourne le nom de la page en cours. Par exemple pour la page /contenu/synthese.html,
 * retourne 'synthese'.
 *
 * @return string le nom de la page en cours sans l'extension.
 */
function retournerNomPage()
{
	var url = document.location.href;
	var iDebut = url.lastIndexOf('/');
	if((iParams = url.indexOf('?')) != -1)// Tronque les params si il y en a
		url = url.substring(0, iParams);
	var iFin = url.lastIndexOf('.');
	return url.substring(iDebut + 1, iFin);
}

/**
 * Retourne le numero de l'étape dans laquelle se trouve l'objet passé en param dans le DOM
 *
 * @return mixed false si l'objet n'est pas dans une balise étape, sinon le numéro de l'étape
 */
function retournerNoEtape(oElt)
{
	arrMatch = oElt.up('tr').id.match(/etape_([0-9]+)/);

	if(arrMatch)
		return arrMatch.pop();
	else
		return false
}

function retournerUrlRacine()
{
	var url = document.location.href;
	var sURLRacine = '';

	if(url.indexOf('TRAVAUX') != -1) // Melissa
		sURLRacine = "/TRAVAUX EN COURS SVN/FPHI-DeKoninck-origines/application/tronc/";
	else if(url.indexOf('localhost') != -1)// JP
		sURLRacine = "/FPHI-DeKoninck-origines/application/tronc/";
	else if(url.indexOf('svn.rve.ulaval.ca') != -1) //SVN
		sURLRacine = "/projets/FPHI-DeKoninck-origines/";
	else if(url.indexOf('webct') != -1) //WebCT
	{
		var session = url.substr(url.indexOf("phi1110_z1_") + 11, 1);
		sURLRacine = "/phi1110_z1_" + session +"/cours/";
	}
	else if(url.indexOf('www.fp.ulaval.ca/_docs/dist/origines') != -1) // Faculté de philosophie
		sURLRacine = "/_docs/dist/origines/";
	else
		sURLRacine = "/";

	return sURLRacine;
}

// ****************************************************************************************************

// ************ FONCTIONS DE SURVOL DE BOUTONS ***************************************************

/**
* Change la source de l'image au onmouseout
*
*/
function quitterImage()
{ //v3.0
	var i,x,a=document.MM_sr;

	for(var i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++)
		x.src=x.oSrc;
}

/**
* Trouve et retourne l'objet HTML de l'image
*
* @param integer n L'identifiant de l'image
* @param integer d L'objet document du fichier HTML
* @return integer d L'objet HTML de l'image
*/
function trouverObjetImage(n,d)
{ //v4.01
	var p,i,x;

	if(!d)
		d=document;

	if((p=n.indexOf("?"))>0 && parent.frames.length)
	{
		d=parent.frames[n.substring(p+1)].document;
		n=n.substring(0,p);
	}
	if(!(x=d[n]) && d.all)
		x=d.all[n];

	for (var i=0; !x&&i<d.forms.length; i++)
		x=d.forms[i][n];

	for(var i=0; !x&&d.layers&&i<d.layers.length; i++)
		x=trouverObjetImage(n,d.layers[i].document);

	if(!x && d.getElementById)
		x=d.getElementById(n);

	return x;
}

/**
* Change la source de l'image au onmouseover
*
*/
function survolerImage()
{ //v3.0
	var i,j=0;
	var x,a=survolerImage.arguments;

	document.MM_sr=new Array;
	for(var i=0; i<(a.length-2); i+=3)
	{
		if ((x=trouverObjetImage(a[i]))!=null)
		{
			document.MM_sr[j++]=x;
			if(!x.oSrc)
				x.oSrc=x.src;
				x.src=a[i+2];
		}
	}
}


// ****************************************************************************************************

// ************ FONCTIONS DE D√âTECTION DU PLUGICIEL FLASH ***************************************************

/**
* Programme d'assistance JavaScript requis pour détecter les informations de version du plug-in Flash Player
*
* @return integer "flashVer" "Le numéro de la version de SWF détectée"
*/
function JSGetSwfVer(){
	var flashVer;

	// Version NS/Opera >= 3 rechercher le plug-in Flash dans le tableau des plug-ins
	if (navigator.plugins != null && navigator.plugins.length > 0)
	{
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"])
		{
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" )
				tempArrayMinor = descArray[3].split("r");
			else
				tempArrayMinor = descArray[4].split("r");
			versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
			flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
		else
			flashVer = -1;
	}
	// MSN/WebTV 2.6 prend en charge Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1)
		flashVer = 4;
	// WebTV 2.5 prend en charge Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1)
		flashVer = 3;
	// La version antérieure de WebTV prend Flash 2 en charge
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1)
		flashVer = 2;
	// Détection impossible dans tous les autres cas
	else
		flashVer = -1;

	return flashVer;
}

/**
* Si elle est appelée sans paramËtres, cette fonction renvoie une valeur en virgule flottante indiquant la version Flash Player ou 0.0, ex : Flash Player 7r14 renvoie 7.14
*
* Si appelé avec reqMajorVer, reqMinorVer, reqRevision renvoie true si cette version ou une version ultérieure est disponible
*
* @return integer "flashVer" "Le numéro de la version de Flash détectée"
*/
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
	var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
	var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
	var blnDetectFlashVer;

	reqVer = parseFloat(reqMajorVer + "." + reqRevision);
	// Examiner les versions pour détecter la plus récente
	for (var i=25;i>0;i--)
	{
		if (isIE && isWin && !isOpera)
			versionStr = VBGetSwfVer(i);
		else
			versionStr = JSGetSwfVer(i);

		if (versionStr == -1 )
			return false;
		else if (versionStr != 0)
		{
			if(isIE && isWin && !isOpera)
			{
				tempArray         = versionStr.split(" ");
				tempString        = tempArray[1];
				versionArray      = tempString .split(",");
			}
			else
				versionArray      = versionStr.split(".");

			versionMajor      = versionArray[0];
			versionMinor      = versionArray[1];
			versionRevision   = versionArray[2];
			versionString     = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
			versionNum        = parseFloat(versionString);
			// est la révision.principale >= révision.principale demandée ET la version mineure >= mineure demandée
			if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) )
				return true;
			else
				return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );
		}
	}
	blnDetectFlashVer=reqVer ? false : 0.0;

	return blnDetectFlashVer;
}
