var etat = "init"; // état du player
var fader = false; // état du menu
var timeoutFade; // contiendra le settimeout qui permet de faire fader le menu
var tempsFadeMenus = 4; // temps avant que le menu fade (lorsque c'est le cas)
var blockRollover = false; // indique si le fade doit être bloqué
var oldPosition = {x:0, y:0}; // stock la dernière position de la souris
var newPosition = {x:0, y:0}; // stock la plus récentre position de la souris

if( ! window.console){
	window.console = {
		log : function(){
			
		}
	}
}


$().ready(function(){
	preload([]); // preload les images

	setTimeout(function(){ // attends quelques secondes et ferme le pied de page
		$("#toggle_piedpage").trigger("click");
	}, 3000);

	if(html5){
		$("*").click(function(e){ // dès que l'on click, ça active les menus (puisqu'il n'y a pas de rollover)
			if(!blockRollover){
				resetTimeoutMove();
			}
		})
	}

	$(document.body).mousemove(function(e){
		newPosition = {x:e.clientX, y:e.clientY};
		
		var tempsTotal = $("td.autres p.temps").html().split(" / ")[1];
		var minutes = 0;
		var secondes = 0;
		if(tempsTotal != "00:00"){
			tempsTotal = tempsTotal.split(":");
			tempsTotal = parseInt(tempsTotal[0]) * 60 + parseInt(tempsTotal[1]);
			var pos = $("td.barres").position();
			var left = e.clientX - 25;
			$(".bulle_temps").css("left", left);
			var ratio = Math.floor((e.clientX - pos.left) / $("td.barres").width() * 100) / 100;
			var secondesActuel = Math.floor(ratio * tempsTotal);
			
			minutes = Math.floor(secondesActuel / 60);
			secondes = secondesActuel % 60;
		}
		minutes = (minutes < 10)? "0" + minutes : minutes;
		secondes = (secondes < 10)? "0" + secondes : secondes;
		$(".bulle_temps").html(minutes+":"+secondes);
	});

	/*
	 * À une certaine fréquence, on calcul la distance parcouru par la souris et si elle est assez grande, on active les menus.
	 * Ça permet de laisser un petit jeu avant que tout apparait et certaines souris font un va-et-viens constant de +- 1px sans arrêt donc ça
	 * activerait le menu sans cesse.
	 */
	setInterval(function(){
		if(Math.sqrt(Math.pow(newPosition.x - oldPosition.x, 2) + Math.pow(newPosition.y - oldPosition.y, 2)) > 5){ // si la disance est assez grade
			if(!blockRollover){
				resetTimeoutMove();
			}
		}
		oldPosition = newPosition;
	}, 1000/50);

	$("div.diffusion .fleche").click(function(){ // lors d'un click sur la fleche qui permet de faire descendre la liste des diffusion
		if($("div.diffusion .liste").css("display") == "none"){ // si la liste est caché, on l'affiche'
			$(this).attr("src", "images/dropdown-inverser.png");
			$("div.diffusion .liste").slideDown();
		}else{ // si la liste est affiché, on la cache
			$(this).attr("src", "images/dropdown.png");
			$("div.diffusion .liste").slideUp();
		}
	})

	if($.browser.msie){
		$("#input_recherche").css("line-height", "35px");
	}
});

/**
 * Reset le timeout de X secondes avant de faire une tentative de faire fermer les menus
 */
function resetTimeoutMove(){
	clearTimeout(timeoutFade); // arrête le timeout précédant
	timeoutFade = setTimeout(function(){
		fadeAllOut();
	}, tempsFadeMenus * 1000);
	fadeAllIn();
}

function clearTimeoutMove(){
	clearTimeout(timeoutFade);
}

/**
 * FadeIn le menu
 */
function fadeAllIn(){
	if(fader && !video.inline_menu){
		fader = false;
		menu.resetImagesItemsMenu(true);
		if(video.etat == "stopped"){
			$("#menu").fadeIn();
			$(".navbar-container").slideDown();
		}else if(video.etat == "playing" || video.etat == "paused"){
			$("#menu").fadeIn();
			$("#controles").slideDown();
			$(".navbar-container").slideDown();
		}
	}
}

/**
 * FadeOut l'interface afin de retourner au vidéo en arrière plan
 */
function fadeAllOut(){
	if(video.etat == "playing" && !video.inline_menu && !menu.navigation_menu){
		fader = true;
		$(".navbar-container").slideUp();
		$("#menu").fadeOut(500);
		$("#sousmenu").fadeOut();
		$("#controles").slideUp();
		$("#precedant_sousmenu").fadeOut();
		$("#suivant_sousmenu").fadeOut();
		$("#filtres").fadeOut();
		$("#recherche").fadeOut();
		menu.cacherNavigationSousMenu();
	}
}

function specialFont(selecteur){
	if(!html5 && !$.browser.msie){
		sIFR.replace(ultramagnetic, {
		  selector: selecteur,
		  opacity: 1,
		  css: '.sIFR-root { color: #FFFFFF; text-align:center; cursor:pointer; text-transform:uppercase;}',
		  transparent: true,
		  filters: {
			  Glow: {
				quality: 1,
				blurX: 15,
				blurY: 15,
				color: '#000000',
				strength: 4
			  }
			},
			onRelease: function(e){
				$(e.getFlashElement()).parent().trigger("click");
			}
		});
	}
}
/**
 * Preload les images afin qu'il n'y ait pas de délais à l'affichage
 *
 * @param array images Liste des images à preloader (chemins relatifs) au format string dans un array
 */
function preload(images){
	var imgs = [];
	for(var i = 0; i < images.length; i++){
		imgs.push(new Image());
		imgs[imgs.length - 1].src=images[i];
	}
}

/**
 * Transforme la chaine de texte passé en paramètre pour qu'elle soit valide dans un url
 *
 * @param string str Chaîne à transformer
 * @return string Chaîne transformer et valide pour les urls
 */
function titre_to_url(str){
	var accents = "éèêëÉÈÊËàâÀÂùûüÙÛÜîïÎÏôÔ";
	var remplacements = "eeeeeeeeaaaauuuuuuiiiioo";
	for(var i = 0; i < accents.length; i++){
		str = str.replace(new RegExp(accents.charAt(i), "g"), remplacements.charAt(i));
	}
	console.log(str.toLowerCase().replace(/ /g, "-").replace(/\./g, ""));
	return str.toLowerCase().replace(/ /g, "-").replace(/\./g, "");
}

function googleVisitUrl(url){
	//console.log("GOOGLE : "+url);
	_gaq.push(['_trackPageview', url]);
}

function mktime(){ // http://phpjs.org/functions/mktime:474
    // Get UNIX timestamp for a date
    var d = new Date(), r = arguments, i = 0,
        e = ['Hours', 'Minutes', 'Seconds', 'Month', 'Date', 'FullYear'];

    for (i = 0; i < e.length; i++) {
        if (typeof r[i] === 'undefined') {
            r[i] = d['get' + e[i]]();
            r[i] += (i === 3); // +1 to fix JS months.
        } else {
            r[i] = parseInt(r[i], 10);
            if (isNaN(r[i])) {
                return false;
            }
        }
    }

    // Map years 0-69 to 2000-2069 and years 70-100 to 1970-2000.
    r[5] += (r[5] >= 0 ? (r[5] <= 69 ? 2e3 : (r[5] <= 100 ? 1900 : 0)) : 0);

    // Set year, month (-1 to fix JS months), and date.
    // !This must come before the call to setHours!
    d.setFullYear(r[5], r[3] - 1, r[4]);

    // Set hours, minutes, and seconds.
    d.setHours(r[0], r[1], r[2]);

    // Divide milliseconds by 1000 to return seconds and drop decimal.
    // Add 1 second if negative or it'll be off from PHP by 1 second.
    return (d.getTime() / 1e3 >> 0) - (d.getTime() < 0);
}
function getdate(timestamp) { // http://phpjs.org/functions/getdate
    // Get date/time information
    var _w = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    var _m = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
    var d=(
        (typeof(timestamp) == 'undefined') ? new Date() : // Not provided
        (typeof(timestamp) == 'object') ? new Date(timestamp) : // Javascript Date()
        new Date(timestamp*1000) // UNIX timestamp (auto-convert to int)
    );
    var w = d.getDay();
    var m = d.getMonth();
    var y = d.getFullYear();
    var r = {};

    r.seconds = d.getSeconds();
    r.minutes = d.getMinutes();
    r.hours = d.getHours();
    r.mday = d.getDate();
    r.wday = w;
    r.mon = m + 1;
    r.year = y;
    r.yday = Math.floor((d - (new Date(y, 0, 1))) / 86400000);
    r.weekday = _w[w];
    r.month = _m[m];
    r['0'] = parseInt(d.getTime() / 1000, 10);

    return r;
}
