var fps = 25; // cadence de l'animation
var fonduSousMenu = 0.3;
var couleurLien = "#ff0066";
var navigateur = detecterNavigateur();
var pluginFlash = detecterFlash();
if (navigateur=="IE"){pluginFlash=false};
var rubrique = "";
var prochaineRubrique = "";
var url, flash;


/* ------------------------------ DÉTECTIONS  --------------------------- */

function detecterNavigateur(){
	var infos_navigateur = navigator.userAgent.toLowerCase();
	
	if (infos_navigateur.indexOf("chrome")!=-1){ return "Chrome";}
	else if (infos_navigateur.indexOf("safari")!=-1){ return "Safari";}
	else if (infos_navigateur.indexOf("opera")!=-1){ return "Opera"; }
	else if (infos_navigateur.indexOf("firefox")!=-1){ return "Firefox";}
	else if (infos_navigateur.indexOf("msie")!=-1){ return "IE"; }
}

function detecterFlash(){

	var resultat = false;
	var version = null;
	if (window.ActiveXObject) {
 		var control = null;
  		try {
    		control = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
		} catch (e) {
   			 return;
 		}
  		if (control) {
    		resultat = true;
    		version = control.GetVariable('$version').substring(4);
    		version = version.split(',');
    		version = parseFloat(version[0] + '.' + version[1]);
  		}
	} else {
  		for (var i=0 ; i<navigator.plugins.length; i++){
			if (navigator.plugins[i].name=="Shockwave Flash") { resultat = true; }
		}
	}

	return resultat;
}


/* ------------------------------ DÉPLACEMENT  --------------------------- */

function positionner(objet,y){
	objet.y = y;
	objet.style.marginTop = y + "px";
}

function deplacer(objet,arrivee,duree,fonction){
	duree*=fps;

	// calcul de la distance à parcourir
	var distance = arrivee - objet.y ;
	
	// lancement de l'animation
	clearInterval(objet.animation);
	objet.animation = setInterval(animer,1000/fps);

	function animer(){
		// déplacement
		objet.y += distance/duree;
		
		// limite
		if ( (distance>0 && objet.y >= arrivee) || (distance<0 && objet.y <= arrivee) ){
			objet.y = arrivee;
		}
		
		// affectation de la position
		objet.style.marginTop = Math.round(objet.y) + "px";
		
		if (objet.y == arrivee){
			objet.y = arrivee;
			if (fonction!=undefined){ setTimeout(fonction,0); }
			clearInterval(objet.animation);
		}
	}
}

/* ------------------------------ FONDU --------------------------- */

function apparaitre(objet,duree,attente,fonction){
	changerOpacite(objet, 0);
	setTimeout(function(){fondu(objet,1/(duree*fps),fonction)},attente*1000);	
}

function disparaitre(objet,duree,attente,fonction){
	changerOpacite(objet, 1);
	setTimeout(function(){fondu(objet,-1/(duree*fps),fonction)},attente*1000);	
}

function fondu(objet,vitesse,fonction){
	objet.alpha += vitesse;
		
	if ( objet.alpha<=0 || objet.alpha>=1){
		if (objet.alpha<=0){ objet.alpha=0 } else { objet.alpha=1; }
		if (fonction!=undefined){ setTimeout(fonction,0); }
	} else {
		setTimeout(function(){fondu(objet,vitesse,fonction)},1000/fps);	
	}
	changerOpacite(objet, objet.alpha);
}
	
function changerOpacite(objet,valeur) {
	objet.alpha = valeur;
	objet.style.filter='progid:DXImageTransform.Microsoft.Alpha(Opacity=' + (Math.round(valeur*100)) + ')';
	objet.style.opacity=valeur;
}

/* ------------------------------ COULEUR LIENS --------------------------- */

function colorerLiens(objet){
	var elts = document.getElementById(objet).getElementsByTagName("a"); 
	for (var i = 0; i < elts.length; i++) {
		elts[i].selection = false;
		ajouterEvenement(elts[i],"mouseover",lienOver);
		ajouterEvenement(elts[i],"mouseout",lienOut);
	}
}

function lienOver(evt){
	var lien = recupererLien(recupererCible(evt));
	if (!lien.selection){ lien.style.color = couleurLien; }
}

function lienOut(evt){
	var lien = recupererLien(recupererCible(evt));
	if (!lien.selection){ lien.style.color = "inherit"; }
}

function selectionnerLien(lien){
	lien.selection = true;
	lien.style.color = couleurLien;
}

function deselectionnerLien(lien){
	lien.selection = false;
	lien.style.color = "inherit";
}

/* ------------------------------ FERMETUTRE PAGE --------------------------- */

function fermerPage(evt){
	annulerEvenement(evt);
	url = recupererLien(evt).href;
	fermeturePage();
}

/* ------------------------------ ÉVÉNEMENTS --------------------------- */

function creerEvenements(){

	// menu principal
	var elts = document.getElementById("menu").getElementsByTagName("a"); 
	for (var i = 0; i < elts.length; i++) {
		if (page=="film" && elts[i].id=="bio"){ ajouterEvenement(elts[i],"click",fermerPage); }
		else { ajouterEvenement(elts[i],"click",afficherSousMenu); }
	}
	// sousmenus
	creerEvenementsSousmenu("fiction");
	creerEvenementsSousmenu("publicite");
	creerEvenementsSousmenu("television");
	creerEvenementsSousmenu("multimedia");
	
	//ajouterEvenement(document.getElementById("lienImage"),"click",fermerPage);
}

function creerEvenementsSousmenu(titre){
	var elts = document.getElementById("menu_"+titre).getElementsByTagName("a"); 
	for (var i = 0; i < elts.length; i++) {
		ajouterEvenement(elts[i],"click",fermerPage);
		if (page=="index"){ ajouterEvenement(elts[i],"mouseover",changerIllustration); }
	}
}

function afficherSousMenu(evt){
	
	annulerEvenement(evt);
	
	// sélection de la rubrique
	prochaineRubrique = recupererLien(evt).id;
	selectionnerLien(document.getElementById(prochaineRubrique));
	
	if (page=="index"){	
		if (pluginFlash){ flash.selectionGenre(prochaineRubrique); }
		else { changerImageRubrique(document.getElementById("menu_"+prochaineRubrique).getElementsByTagName("a")[0].id); }
	}
	
	// disparition et apparition des sousmenus
	if (rubrique!=""){
		deselectionnerLien(document.getElementById(rubrique));
		disparitionSousMenu();
	} else {
		if (page=="index" && document.getElementById("copyright").y < positionOuvert){
				deplacer(document.getElementById("copyright"),positionOuvert,dureeFermeture,apparitionSousMenu);
		} else {
			apparitionSousMenu();
		}
	}
}

function disparitionSousMenu(){
	disparaitre(document.getElementById("menu_"+rubrique),fonduSousMenu,0,apparitionSousMenu);
}

function apparitionSousMenu(){

	// disparition complète de l'ancienne rubrique
	if (rubrique!=""){
		document.getElementById("menu_"+rubrique).style.display="none";
	}
	
	// nouvelle rubrique
	if (prochaineRubrique!=rubrique){
		apparaitre(document.getElementById("menu_"+prochaineRubrique),fonduSousMenu);
		document.getElementById("menu_"+prochaineRubrique).style.display="block";
		rubrique = prochaineRubrique;
	} else {
		rubrique = "";
	}
	prochaineRubrique = "";
}


/* ------------------------------ FONCTIONS GÉNÉRALES --------------------------- */

function ajouterEvenement(objet,evenement,fonction){
	if (objet.addEventListener){ objet.addEventListener(evenement,fonction,false); }
	else { objet.attachEvent("on" + evenement,fonction); }
}

function supprimerEvenement(objet,evenement,fonction){
	if (objet.removeEventListener){ objet.removeEventListener(evenement,fonction,false); }
	else { objet.detachEvent("on" + evenement,fonction); }
}

function changerURL(){
	if (url!=undefined){ window.location = url; }
}

function recupererEvenement(evt){
	return evt || window.event;
}

function recupererCible(evt){
	var event = recupererEvenement(evt);
	return event.currentTarget || event.srcElement;
}

function annulerEvenement(evt){
	var event = recupererEvenement(evt);
	if (event.preventDefault) { event.preventDefault(); }
	event.returnValue = false;
}

function recupererLien(evt){
	var cible = recupererCible(evt)
	for (var i=0; i<10; i++){
		if (cible.href==undefined){
			cible = cible.parentNode;
		} else { break; }
	}
	return cible;
}

function extraireVariable(chaine,variable){
	var resultat = "";
	chaine = chaine.split("?")[1];
	
	if (chaine !=undefined){
		var tab = chaine.split("&");
		for (var i = 0; i < tab.length; i++) {
			if (tab[i].match(variable+"=")){
				resultat = tab[i].replace(variable+"=","")
				break;
			}
		}
	}
	return resultat;
}

/* ------------------------------ CRÉATION D'UN OBJET FLASH --------------------------- */

function creerFlash (id,adresse,largeur,hauteur){

		var objet = document.createElement("object");
		objet.setAttribute("classid","clsid:D27CDB6E-AE6D-11cf-96B8-444553540000");
		objet.setAttribute("id",id);
		objet.setAttribute("width",largeur);
		objet.setAttribute("height",hauteur);
		objet.setAttribute("codebase","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab");
		
		var param1 = document.createElement("param");
		param1.setAttribute("name","movie");
		param1.setAttribute("value",adresse);
		
		var param2 = document.createElement("param");
		param2.setAttribute("name","quality");
		param2.setAttribute("value","high");
		
		var param3 = document.createElement("param");
		param3.setAttribute("name","bgcolor");
		param3.setAttribute("value","#FFFFFF");
		
		var param4 = document.createElement("param");
		param4.setAttribute("name","allowScriptAccess");
		param4.setAttribute("value","always");
		
		var param5 = document.createElement("param");
		param5.setAttribute("name","scale");
		param5.setAttribute("value","noscale");
		
		var param6 = document.createElement("param");
		param6.setAttribute("name","wmode");
		param6.setAttribute("value","transparent");
		
		var embed = document.createElement("embed");
		embed.setAttribute("src",adresse);
		embed.setAttribute("quality","high");
		embed.setAttribute("bgcolor","#000000");
		embed.setAttribute("width",largeur);
		embed.setAttribute("height",hauteur);
		embed.setAttribute("name",id);
		embed.setAttribute("align","middle");
		embed.setAttribute("play","true");
		embed.setAttribute("loop","false");
		embed.setAttribute("scale","noscale");
		embed.setAttribute("wmode","transparent");
		embed.setAttribute("allowScriptAccess","always");
		embed.setAttribute("type","application/x-shockwave-flash");
		embed.setAttribute("pluginspage","http://www.macromedia.com/go/getflashplayer");
		
		// assemblage des éléments
		objet.appendChild(param1);
		objet.appendChild(param2);
		objet.appendChild(param3);
		objet.appendChild(param4);
		objet.appendChild(param5);
		objet.appendChild(param6);
		objet.appendChild(embed);
		
		return objet;
}

