﻿$(document).ready(function(){

/*************************************************/
	$('#info').hover(function(){
		$('.info').css({'opacity':0,'paddingLeft':'0px'}).animate({'opacity':1,'paddingLeft':'15px'},{duration:300,queue:false});
	},function(){
		$('.info').delay(5000).animate({'opacity':0,'paddingLeft':'30px'},{duration:300,queue:true});
	});
/*************************************************/
/*
	action sur le bouton de login
*/
	$('#login').live('click',function(e){
		e.preventDefault();
		masque(); // fenetre modale
	// affiche du form de login
		$('<div id="log"></div>').css({position:'absolute',top:'50%', left:'50%',opacity:0,'z-index':99999}).load('thony/form/login.html').appendTo('#masque').animate({opacity:1});
	});

	// deconnexion ...
	$('#logout').live('click',function(e){
		e.preventDefault();
		razZindex();
		$.ajax({
			url:'thony/php/logout.php',
			success: function(msg){
				$('#menu').load('thony/php/menu.php');
				document.location.href =  ".";
			}
		});
	});

/*
	action sur le bouton d'ajout de message
*/
	$('#ajout_msg').live('click', function(e){
		e.preventDefault();
		masque();
	// affichage du form de nouveau message
		couleurAleatoire = listCouleur[Math.floor(Math.random()*500/100)];
		img_chargement = '<img src="thony/img/load.gif" style="position: relative;left: 50%;margin-left: -18px;top: 45%;"/>'
		$('<div id="msg" class="'+couleurAleatoire+'">'+img_chargement+'</div>').css({position:'absolute',top:'50%', left:'50%',opacity:0,'z-index':99999}).load('thony/form/ajout_msg.php').appendTo('#masque').animate({opacity:1, 'margin-top':'-150px'});
	});

/*
	action sur le bouton d'ajout de photo
*/
	$('#ajout_img').live('click', function(e){
		e.preventDefault();
		masque();
		// affichage du form
		img_chargement = '<img src="thony/img/load.gif" style="position: relative;left: 50%;margin-left: -18px;top: 45%;"/>'
		$('<div id="photo" class="blanc">'+img_chargement+'</div>').css({position:'absolute',top:'50%', left:'50%',opacity:0,'z-index':99999}).load('thony/form/ajout_img.html').appendTo('#masque').animate({opacity:1, 'margin-top':'-150px'});
	});

/*
	action sur le bouton de contact
*/
	$('#email').live('click',function(e){
		e.preventDefault();
		masque();
		$('<div id="contact"></div>').css({position:'absolute',top:'50%', left:'50%',opacity:0,'z-index':99999})
		.load('thony/form/contact.html').appendTo('#masque').animate({opacity:1, 'margin-top':'-175px'});
	});

/*
	action sur les boutons du menu
*/
	// bouton 'configuration'
	$("#config").live('click',function(e) {
		e.preventDefault();
		$('#bouton_menu').animate({'margin-top':'-50px'},
			function(){
				$('#menu_princ').addClass('cache');
				$('#menu_conf').removeClass('cache');
				$('#bouton_menu').animate({'margin-top':'0px'});
			}
		);
	});
	
	// bouton 'retour'
	$(".retour_menu").live('click',function(e) {
		e.preventDefault();
		trierTout();
		$('ul > li > a').removeClass('select');
		$('#bouton_menu').animate({'margin-top':'-50px'},
			function(){
				$('#menu_princ').removeClass('cache');
				$('#menu_conf').addClass('cache');
				$('#bouton_menu').animate({'margin-top':'0px'});
			}
		);
	});
	
	// bouton d'organisation par type de message (normal, photo, informations)
	$('.menu_tri:not(.select)').live('click',function(e){
		e.preventDefault();
		trierTout();
		var choix = $(this);
		var menu = $(this).parents('ul');
		var type =  (choix.attr('id')).replace("aff_","");
		menu.find('a').removeClass('select');  // aucune option n'est selectionnée ...
		choix.addClass('select'); // ... demarcation de l'option
		trierPar(type);
	});
	
	////organisation par photo
	//$('#aff_photo:not(.select)').live('click',function(e){
	//	e.preventDefault();
	//	trierTout();
	//	$('ul > li > a').removeClass('select');  // aucune option n'est selectionnée ...
	//	$(this).addClass('select'); // ... demarcation de l'option
	//	trierPhoto();
	//	//$("#config").click();
	//});
	//
	////organisation par message
	//$('#aff_normal:not(.select)').live('click',function(e){
	//	e.preventDefault();
	//	trierTout();
	//	$('ul > li > a').removeClass('select');  // aucune option n'est selectionnée ...
	//	$(this).addClass('select'); // ... demarcation de l'option
	//	trierMsg();
	//	//$("#config").click();
	//});
	//
	////organisation par information
	//$('#aff_informations:not(.select)').live('click',function(e){
	//	e.preventDefault();
	//	trierTout();
	//	$('ul > li > a').removeClass('select');  // aucune option n'est selectionnée ...
	//	$(this).addClass('select'); // ... demarcation de l'option
	//	trierInfo();
	//	//$("#config").click();
	//});

	// reorganiser tout
	$('#aff_tout').live('click',function(e){
		e.preventDefault();
		trierTout();
		$("#config").click();
	});
	
	//supprimer un message
	$('.suppr_msg').live('click',function(){
		el = $(this);
		id = parseInt($(this).siblings('.id_msg').html()); //console.log(id);
		$.ajax({
			type: 'POST',
			url: 'thony/php/ajax/supprimer_msg.php',
			data: {'id' : id},
			success: function(msg){ //alert(msg);
				if(msg == 1){
					//console.log('msg '+id+' supprimé :'+msg);
					el.closest('.messages').fadeOut(200, function(){ $(this).remove(); });
				} else{ // affiche du form de login
					masque(); // fenetre modale
					$('<div id="log"></div>').css({position:'absolute',top:'50%', left:'50%',opacity:0,'z-index':99999})
					.load('thony/form/login.html',function(){$('#erreur_login').html("Action réservée aux utilisateurs connectés");}).appendTo('#masque').animate({opacity:1});

				}
			}
		});
	});

/*
	rendu du site (action diverses)
*/
	// info_bulle menu
	var titre;
	$('#bouton_menu').find('a').hover(
		function(e){
			titre = $(this).attr('title');
			e.preventDefault();
			$('<span id="info_menu">'+titre+'</span>').appendTo('body');
			$('#info_menu').css({left:($(this).offset().left)-($('#info_menu').width()/2)+20}).animate({opacity:'0.75', top:'60px'});
			$(this).attr('title', '');
			//alert($('#info_menu').width());
		},
		function(e){
			e.preventDefault();
			$('#info_menu').animate({opacity:0, top:'40px'}).remove();
			$(this).attr('title', titre);
		}
	);

	// affiche info des .lien (sauf pour ie parce que ...zut)
	if(!$.browser.msie){
		
		/* notes transparentes */
		$('.informations').hover(function(){$(this).css({opacity:'1'})},function(){$(this).css({opacity:'0.8'})});
		
		/* affichage de l'info des liens */
		$('.liens').hover(
			function(){
				$(this).stop().animate({'padding-right':'100px'});
				$(this).find('a').append($('<div/>',{'class':'info_liens'}).html($(this).find('a').attr('title')));
			},
			function(){
				$(this).stop().animate({'padding-right':'1px'});
				$(this).find('div.info_liens').remove();
			}
		);
		
		/* affichage de l'info des liens (en tenant compte de la position)
		$('.liens').hover(
			function(){
				if( ($(this).parent().width()) - ($(this).offset().left) < 155){
					$(this).stop().animate({'padding-left':'100px'});
				} else{
					$(this).stop().animate({'padding-right':'100px'});
				}
				
				$(this).find('a').append($('<div/>',{class:'info_liens'}).html($(this).find('a').attr('title')));
			},
			function(){
				$(this).stop().animate({'padding':'1px'});
				$(this).find('div.info_liens').remove();
			}
		);*/
	}
	
	/* ça, c'est pour moi... */
	$("a").live('click',function(e){
		//console.log($(this).html());
		pageTracker._trackEvent("action", "lien", $(this).html());
	});

	/* surprise */
	var touches = [], kc = "38,38,40,40,37,39,37,39,66,65"; //▲ ▲ ▼ ▼ ◄ ► ◄ ► B A
	$(document).keydown(function(e) {
		touches.push( e.keyCode );
		if ( touches.toString().indexOf( kc ) >= 0 ){
			$(document).unbind('keydown',arguments.callee);
			melanger();$(document).keydown(melanger);         
		}
	});
	
/*
	INITIALISATION DE LA PAGE
*/
	
	// affichage 'widget' meteo
	$('<div id ="meteo"><div id="details"></div></div>').appendTo('#widget_meteo');
	meteo("REXX0002");
	var $meteo = $('#meteo');
	var $img;
	$('#details').css({opacity:0});
	$('#meteo').hover(
		function(){
			$img = $(this).find('img');
			$meteo.stop().animate({width:'250px',height:'180px'},100);
			$img.stop().animate({width:'250px',height:'180px'},100,function(){$('#details').stop().animate({opacity:1});})
		},
		function(){
			$('#details').stop().animate({opacity:0},function(){$img.stop().animate({width:'100px',height:'72px'},100); $meteo.stop().animate({width:'100px',height:'72px'},100); });
		}
	);
		
	//rendre les messages draggables
	deplacer($('.messages'));
	
	// recuperation du plus grand z-index des message
	$('.messages').each(function(){
		var tmp = $(this).css('z-index'); //alert(tmp+" > "+zIndex+" => "+(parseInt(tmp)>parseInt(zIndex)));
		if(parseInt(tmp)>parseInt(zIndex)) zIndex = tmp;
	});
	
	// rafrachissement auto
	rafraichir_auto(); // toute les 2 heures
	//rafraichir_auto(30000); // toute les 5 minutes
	
});
//fin de $(document).ready(function(){});


/*---------------------- fonctions ----------------------*/
var zIndex = 0;
var largEcran = screen.availWidth, hautEcran =  screen.availHeight;
var listCouleur= ['jaune', 'vert', 'bleu', 'orange', 'rose'];
var interval;

/* fonction qui permet de déplacer un element */
function est_draggable(elements)  { // import de la librairie jquery ui obligatoire pour cette fonction
	//elements = n'imprte quel objet jQuery
	elements.draggable({
		containment:'parent',
		start:function(e,ui){ ui.helper.css('z-index',++zIndex); } // à la selection, augmenter zIndex (pour que l'element passe dessus les autres)
	});
}

/* fonction qui permet de déplacer un element et de mettre à jour sa position */
function deplacer(elements)  { // import de la librairie jquery ui obligatoire pour cette fonction
	//elements = n'imprte quel objet jQuery
	elements.draggable({
		containment:'parent',
		revert:function(e,ui){return $(this).hasClass('tri') ? true : false},
		start:function(e,ui){ ui.helper.css('z-index',++zIndex);}, // à la selection,augmenter zIndex
		stop:function(e,ui){  // lorsque l'element est deposé...
			if(!$(this).hasClass('tri')){
				$.get('thony/php/ajax/maj_position.php',{  // ... ses coordonnées sont mise à jours en les envoyant à la page php en AJAX GET
					x	: ((ui.position.left)/(largEcran))*100,
					y	: ((ui.position.top)/(hautEcran))*100,
					//x	: ui.position.left,
					//y	: ui.position.top,
					z	: zIndex,
					id	: parseInt(ui.helper.find('span.id_msg').html()) // recup de l'id (caché)
				});
			}
		}//,drag:function(e,ui){debug(ui.position.left,ui.position.top);}
	});
}

/* ajout d'un masque pour rendre la fenetre modale */
function masque(){
		stop(); // la page ne peut plus se rafraichir
		$('<div id="masque"></div>').css({
			width:'100%', //width:$(document).width(),
			height:'100%', //height:$(document).height(),
			opacity:0
		}).appendTo('body').animate({opacity:1});

		//$('<div class="transparent"></div>').appendTo('#masque').click(function(){$('div#masque, #masque > div').remove(); rafraichir_auto();}); // supprimer le popup en cliquant sur le masque
		$('<div class="transparent"></div>').appendTo('#masque');
}

/* recuperation inforamtion meteo */
function meteo(ici){
	// aujourd'
	hui = new Date();
	//ici = "REXX0002";  // REXX0002 = Gillot  /  REXX0003 = Saint Pierre

	// "requete" YQL
	var requete = "select * from weather.forecast where location in ('"+ici+"') and u='c' " ; //console.log(requete);
	var url = 'http://query.yahooapis.com/v1/public/yql?q='+ encodeURIComponent(requete) +'&rnd='+ hui.getFullYear() + hui.getMonth() + hui.getDay() + hui.getHours() +'&format=json&callback=?'; //console.log(url);

	$.ajax({
		type: 'GET',
		url: url,
		dataType: 'json',
		success: function(data) { //console.log(data);
			if (data.query) {
				var meteo = data.query.results.channel;
				var ville = meteo.location.city;
				var temperature = meteo.item.condition.temp;
				var hygro = meteo.atmosphere.humidity;
				var vent = meteo.wind.speed +' '+ meteo.units.speed;
				var h_aurore = meteo.astronomy.sunrise, h_nuit = meteo.astronomy.sunset;

				// jour ou nuit ?
				dateMeteo = meteo.item.pubDate; // date de publication du bulletin
				n = dateMeteo.indexOf(":"); // pour retrouver l'heure ...
				heureMeteo = new Date(hui.toDateString() +' '+ dateMeteo.substr(n-2,8)); // recupe de l'heure (avec am ou pm)
				lever = new Date(hui.toDateString() +' '+h_aurore);
				coucher = new Date(hui.toDateString() +' '+h_nuit);

				journuit = (heureMeteo>lever && heureMeteo<coucher) ? 'd' : 'n';
				img_meteo = meteo.item.condition.code + journuit +'.png';

				//var imgMeteo = '<img class="temps" height=72 width=100 src="http://l.yimg.com/a/i/us/nws/weather/gr/'+ meteo.item.condition.code + journuit +'.png" /> ';
				var imgMeteo = '<img class="temps" height="72" width="100" src="" /> ';
				$('#meteo').append(imgMeteo);

				var detailMeteo ='<div class="lieu">'+ ville +' à '+heureMeteo.getHours()+':'+formatNb(heureMeteo.getMinutes())+'</div>';
				detailMeteo += '<div class="temperature">'+ temperature +'&deg;C</div>';
				detailMeteo += '<div class="hygro">Hygrometrie: '+ hygro +'%</div>';
				detailMeteo += '<div class="vent">Vent: '+ vent +'</div>';
				detailMeteo += '<div class="soleil">Lever: '+lever.getHours()+':'+formatNb(lever.getMinutes())+' | Coucher: '+coucher.getHours()+':'+formatNb(coucher.getMinutes())+'</div>';
				//detailMeteo += '<div><a href="'+ meteo.item.link +'">Détails</a></div>';
				$('#details').append(detailMeteo);

				$('#meteo > img.temps').attr('src', 'http://l.yimg.com/a/i/us/nws/weather/gr/'+ img_meteo).load(function() {
					$(this).animate({'opacity':1});
					//$('#details').animate({'opacity':1});
					$('#meteo').animate({'opacity':1});
				});
			}
		},
		error: function(data) {
			console.log("pourvu qu'il n'y ai pas d'erreur ^^");
		}
	});
}

/* fonction qui permet le rafrachissement auto de la page */
function rafraichir_auto(temps){
	if (typeof temps == "undefined"){
		temps = 7200000; // toutes les 2 heures
	}
	//var temps = 7200000;
	//interval = setInterval(function(){document.location.href =  ".";},temps);
	interval = setInterval(function(){rafraichir_message();},temps);
}
/*fonction qui arrete le rafraichisement auto de la page */
function stop(){
	clearInterval(interval); // supression de l'intervalle ...
}

/* fonction qui permet de n'afficher que les type de message choisi en les alignant sur  la page (remplace les 3 fonctions qui suivent)*/
function trierPar(type){
	$('.messages:not(.'+type+')').hide();
	var i=0, j=50;
	//$('.messages:not(.liens, .informations, .normal)').each(function(){$(this).animate({top:j,left:i}).show();i=i+180;if(i+180>screen.availWidth){i=0; j=j+180;}});
	$('.'+type+'').each(function(){
		$(this).attr('pos',$(this).css('top').replace('px','')+'x'+$(this).css('left').replace('px','')).animate({top:j,left:i}).show().addClass('tri');
		i=i+180;
		if(i+180>screen.availWidth){i=0; j=j+180;}
	});
}

///* fonction qui permet de n'afficher que les photo en les alignant sur  la page*/
//function trierPhoto(){
//	$('.messages:not(.photo)').hide();
//	var i=0, j=50;
//	//$('.messages:not(.liens, .informations, .normal)').each(function(){$(this).animate({top:j,left:i}).show();i=i+180;if(i+180>screen.availWidth){i=0; j=j+180;}});
//	$('.photo').each(function(){
//		$(this).attr('pos',$(this).css('top').replace('px','')+'x'+$(this).css('left').replace('px','')).animate({top:j,left:i}).show().addClass('tri');
//		i=i+180;
//		if(i+180>screen.availWidth){i=0; j=j+180;}
//	});
//}
//
///* fonction qui permet de n'afficher que les message en les alignant sur  la page*/
//function trierMsg(){
//	$('.messages:not(.normal)').hide();
//	var i=0, j=50;
//	$('.normal').each(function(){
//		$(this).attr('pos',$(this).css('top').replace('px','')+'x'+$(this).css('left').replace('px','')).animate({top:j,left:i}).show().addClass('tri');
//		i=i+180;
//		if(i+180>screen.availWidth){i=0; j=j+180;}
//	});
//}
//
///* fonction qui permet de n'afficher que les informations en les alignant sur  la page*/
//function trierInfo(){
//	$('.messages:not(.informations)').hide();
//	var i=0, j=50;
//	$('.informations').each(function(){
//		$(this).attr('pos',$(this).css('top').replace('px','')+'x'+$(this).css('left').replace('px','')).animate({top:j,left:i}).show().addClass('tri');
//		i=i+180;
//		if(i+180>screen.availWidth){i=0; j=j+180;}
//	});
//}

/* fonction qui permet de reveni à l'état initail (=sans tri) */
function trierTout(){
	$('.tri').each(function(){
		var left = $(this).attr('pos').split('x')[1]
		var top = $(this).attr('pos').split('x')[0]
		$(this).animate({
			top:top,
			left:left
		}, function(){
			$(this).removeAttr('pos').removeClass('tri');
			
		});
	});
	$('.messages').show();
}
/************************ TEST ************************/

/* remttre le z-index au minimum ( 0 < z-index <= nb de msg )*/
function razZindex(){
	var nbMessages  = $('.messages').length;
	$('.messages').each(function(ui){
		$this = $(this);
		zi = (nbMessages--);
		//$this.css({'z-index':(nbMessages--)})
		// update en base
		$.get('thony/php/ajax/maj_position.php',{
				x	: (parseInt($this.css('left').replace('px',''))/(largEcran))*100,
				y	: (parseInt($this.css('top').replace('px',''))/(hautEcran))*100,
				z	: zi,
				id : parseInt($this.find('span.id_msg').html()) // id (caché)
			});

	});
}

/* fonction qui mélange (aléatoirement) les messages */
function melanger(){
	var bornes = {'haut':(screen.availHeight-200), 'gauche':(screen.availWidth-200)};
	// $('.messages').each(function(ui){
	$('.normal, .photo, .informations').each(function(ui){ // tout sauf les ".lien"
		$this = $(this);
		haut = Math.floor(Math.random()*(bornes.haut-200))+50;
		gauche = Math.floor(Math.random()*bornes.gauche);
		$.get('thony/php/ajax/maj_position.php',{
			x	: gauche/(largEcran)*100,
			y	: haut/(hautEcran)*100,
			z	:  parseInt($this.css('z-index')),
			id : parseInt($this.find('span.id_msg').html()) // id (caché)
		});
		$this.animate({'top':haut, 'left':gauche});
	});
}

/* rafraichi le contenu du mur */
function rafraichir_contenu(){
	$.post('thony/php/contenu.php',{haut:hautEcran, larg: largEcran} ,function(r){
		$('#mur').html(r);
		deplacer($('.messages'));
	});
}


/* rafraichi le contenu et fait apparaitre le dernier message (si il y' en a un)*/
function rafraichir_message(){

	$.get('thony/php/contenu.php', function(r){

		var nbTotMsgBdd= ($(r).length/2);  // nb de message enregistré en BDD
		var nbTotMsgAff = $(".messages").length; // nb de message sur le mur
		var diff = (nbTotMsgBdd-nbTotMsgAff); // diffrence de msg entre ceux en bdd et ceux affichés

		if(diff > 0){ // si il y a + de msg en bdd que sur le mur ...
			$.post('thony/php/contenu.php',{haut:hautEcran, larg: largEcran} ,function(r){
				for(nb = 0; nb<diff*2 ; nb=nb+2){
					$("#mur").append($(r)[nb]); // apparition du/des msg(s)
				}
				deplacer($('.messages')); // rendre les message draggables
			});
		}
	});
}

/**TEST**/
/* recuperaton du nombre total de message en base */
//$.get('thony/php/contenu.php', function(r){ /* console.log($(r).length/2) */ });
/*recuperation du dernier message en base*/
//$.get('thony/php/contenu.php', function(r){ /* console.log($(r)[0]) */ });
/*  afficher le dernier message */
//$.get('thony/php/contenu.php', function(r){ $("#mur").append($(r)[0]); });


/*------------------------ divers ------------------------*/

/* formate un nombre en affichant 0 devant un nombre < 10 */
function formatNb(nb){
	return parseInt(nb) < 10 ? "0"+''+nb : nb;
}

/* formate une date javascript en jj/mm/aaa */
function formatDate(date){
	var jour = date.getDate() < 10 ? "0" + (date.getDate()) : date.getDate(), mois = (date.getMonth()+1) < 10 ? "0" + (date.getMonth()+1) : (date.getMonth()+1), annee= date.getFullYear();
	return (jour +"/"+ mois +"/"+ annee);
}

/* fonction qui verifie la validité d'une adresse mail*/
function checkMail(email){
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(email) ? true : false;
}

function debug(x,y){
	$('#debug').html(' posX: '+x+ ' posY: '+y+' <br/> X%: '+(((x)/(1440))*100)+' Y%: '+(((y)/(870))*100)+' ');
}
