/*
 * @author bgy
 */

$(document).ready(function(){

	// Class js si le js est actif pour le css
	$('html').addClass('js');
	
	// Scroll to anchor, c'est plus sympa ;)
	
	/* COMMENTE PAR JEROME - 20/07/2010 - catching jQuery error !!
	$("a[href*='#']").click(function(event){
		event.preventDefault();
		var fullUrl = this.href;
		var parts = fullUrl.split('#');
		var trgt = parts[1];
		var targetOffset = $('#'+trgt).offset();
		var targetTop = targetOffset.top-10;
		$('html, body').animate({scrollTop:targetTop}, 500);
		// Pour l'historique de navigation
		$(location).attr('href', $(location).attr('href').split('#')[0] + '#'+trgt);
	});
	*/
	
	// Liens des collectivités
	$('#sidebar h3.collectivite').click(
		function()
		{
			if ($(this).hasClass('active'))
			{
				$(this).removeClass('active').nextAll('ul.collectivite').hide();
			} else {
				$(this).addClass('active').nextAll('ul.collectivite').fadeIn();
			}
		}
	);
	
	
	// Planning des collectes
    //$('#town-selector-planning').addClass('btnSelect');
	$('#town-selector-select').change(function() {
			$(location).attr('href', $(this).val()); 
		}
	);
	
	// Agenda, aller automatiquement à l'agenda de la commune selectionner
	$('#town-selector select').change(
			function()
			{
				$(this).parents('form').submit();
			}
	);
	
	$('#marches-public-select').change(
			function()
			{
				if($(this).val() != '') $(location).attr('href', $(this).val());
			}
	);
	/*
	$('#marches-public-select option').click(
			function()
			{
				$(location).attr('href', $(this).val());
			}
	);
	 */
	
	// Navigateur du bloc agenda (gauche)
	
	var Agenda = function()
	{
		this.agendaElem = $('#sidebar div.agenda ul#agenda-preview');
		this.currentEvent = this.agendaElem.find('li.active').index();
		this.totalEvents = --this.agendaElem.find('li').length;
		
		this.next = function()
		{
			var nextEvent;
			var currentEvent = this.agendaElem.find('li.active').index();
			
			if (currentEvent == this.totalEvents) nextEvent = 0;
			else nextEvent = 1 + currentEvent; 
						
			$(this.agendaElem.find('li.active')).removeClass('active');
			
			nextEvent = this.agendaElem.find('li').get(nextEvent);
			$(nextEvent).addClass('active');
						
			return this;
		};
		
		this.previous = function()
		{
			var previousEvent;
			var currentEvent = this.agendaElem.find('li.active').index();
			
			if (currentEvent == 0) previousEvent = this.totalEvents;
			else previousEvent = -1 + currentEvent; 
			
			$(this.agendaElem.find('li.active')).removeClass('active');
			
			previousEvent = this.agendaElem.find('li').get(previousEvent);
			$(previousEvent).addClass('active');
			return this;
		};
	};
	
	var agenda = new Agenda();
	
	var $agenda = $('#sidebar div.agenda');
	var $controller = $('<ul />').addClass('controller');
	var $previousControl = $('<li />').addClass('previous').html('Précédent');
	var $nextControl = $('<li />').addClass('next').html('Suivant');
	
	$nextControl.click(
			function()
			{
				agenda.next();
			}
	);
	
	$previousControl.click(
			function()
			{
				agenda.previous();
			}
	);
	
	$controller.append( $previousControl )
			   .append(	$nextControl );
	
	$agenda.append($controller);
	$agenda.find('li:eq(0)').addClass('active');
	
	
	// Placeholder pour la recherche
	var $searchInputKeyword = $('#search-input-keyword');
	var placeholder = 'Recherche par mot clé';
	$searchInputKeyword.val(placeholder);
	
	$searchInputKeyword.focus(
		function()
		{
			if (placeholder == $searchInputKeyword.val())
			{
				$searchInputKeyword.val('');
			}
		}
	);
	
	$searchInputKeyword.blur(
		function()
		{
			if ('' == $searchInputKeyword.val())
			{
				$searchInputKeyword.val(placeholder);
			}
		}
	);
	
	// Petits trêfles animés
	$trefleElem = $('<div />');
	$trefleElem.attr('id', 'trefles');
	
	$('#header').append($trefleElem);
	
	$('#trefles').live('ready', 
		function()
		{
			swfobject.embedSWF("http://www.sittomat.fr/assets/templates/sittomat/swf/eolienne.swf", "trefles", "300", "120", "9.0.0");
		}
	);
	var flashvars = {};
	var params = {'wmode' : 'transparent'};
	var attributes = {};
	
	// Si JS est activé et que flash est présent, on ne supprime pas le background css
	var callback = function(e)
	{
		if (e.success) $('#header h1').css('backgroundImage', 'none');
	};
	
	swfobject.embedSWF("http://www.sittomat.fr/assets/templates/sittomat/swf/trefles.swf", "trefles", "300", "120", "9.0.0", "", flashvars, params, attributes, callback);
	
	// Homepage tabs
	var options = {
	};
	
	$("#guide").tabs(options);

	var tabs = ['tri', 'compostage', 'decheterie', 'valorisation', 'sittomat']; 
	
	$(tabs).each(function(k, v)
		{
			$('#guide-' + v).children().attr('id', 'guide-' + v + '-p'); 
		}
	);

	// Anim flash des tabs
	params = {};

	swfobject.embedSWF("http://www.sittomat.fr/assets/templates/sittomat/swf/tri.swf", "guide-tri-p", "690", "300", "9.0.0", "", flashvars, params, attributes);

	swfobject.embedSWF("http://www.sittomat.fr/assets/templates/sittomat/swf/compostage.swf", "guide-compostage-p", "690", "300", "9.0.0", "", flashvars, params, attributes);
	swfobject.embedSWF("http://www.sittomat.fr/assets/templates/sittomat/swf/decheterie.swf", "guide-decheterie-p", "690", "300", "9.0.0", "", flashvars, params, attributes);
	swfobject.embedSWF("http://www.sittomat.fr/assets/templates/sittomat/swf/valorisation.swf", "guide-valorisation-p", "690", "300", "9.0.0", "", flashvars, params, attributes);
	swfobject.embedSWF("http://www.sittomat.fr/assets/templates/sittomat/swf/sittomatetvous.swf", "guide-sittomat-p", "690", "300", "9.0.0", "", flashvars, params, attributes);
	
	
	// Eric plugin Sittomat TV
	/*
	 * div: div will contain video's player link: video's link img:
	 * image preview for video autoPlay: variable for auto start
	 * video
	 */
	 
	function createPlayer(div, link, img, autoPlay, dim) {
		var flashvars = {
			'file' : link,
			'repeat' : 'none',
			'abouttext' : 'hors-norme.com',
			'aboutlink' : 'hors-norme.com',
			'image' : img,
			'autostart' : autoPlay
		};

		var params = {
			'allowfullscreen' : "true",
			'allowscriptaccess' : "always",
			'bgcolor' : '346377',
			'frontcolor' : 'ffffff'
		};

		var attributes = {
			'id' : "player" + div,
			'name' : "player" + div
		};

		swfobject.embedSWF("swf/player.swf", div, dim.w, dim.h,
				"9.0.115", false, flashvars, params, attributes);
	}

	var dim = {
		w : 223,
		h : 158
	};
	var liVideo = $("li[id^='playvideo']");
	var nbVideo = liVideo.parent("#content").length;

	if (nbVideo == 1) {
		dim.w = 600;
		dim.h = 342;

		var link = liVideo.find("a").attr("href");
		var imgPreview = liVideo.find("a").find("img").attr("src");
		var idDiv = liVideo.attr("id");

		createPlayer(idDiv, link, imgPreview, 'true', dim);
		
		/*$(liVideo).parent("#content").find("a").find("img").not(
				".lastImg").css("width", 600).css("height", 342);*/
	}

	/*liVideo.click(function() {
		var link = $(this).find("a").attr("href");
		var imgPreview = $(this).find("a").find("img").attr("src");
		var idDiv = $(this).attr("id");

		createPlayer(idDiv, link, imgPreview, 'true', dim);
		
		return false;
	});*/
	
	
	// Quiz class
	
	var Quizz = function(jQElem)
	{
		this.quizzElem = jQElem;
		this.correctAnswers = {
			1:1,
			2:2,
			3:2,
			4:3,
			5:2,
			6:2,
			7:3,
			8:3,
			9:3,
			10:3
		};
		
		this.wrongAnswers = {};
		this.answered = false;

		this.getQuizz = function()
		{
			return this.quizzElem;
		};
		
		this.getResults = function()
		{
			return this.getQuizz().find('#quizz-form').find('input[name^=question][type=radio]:checked');
		};

		this.getCorrectAnswer = function()
		{
			var results = this.getResults();

			var total = results.length;

			for (var i = 0; i < total; ++i)
			{
				var question = $(results[i]);
				var questionId = question.attr('id').split('-')[1];
				if (question.val() == this.correctAnswers[questionId])
				{
					this.setCorrect(question);
				} else {
					this.addWrongAnswer(questionId, question.val());
					this.setWrong(question);
				}
			}
		};

		this.addWrongAnswer = function(questionId, answerId)
		{
			this.wrongAnswers[questionId] = answerId;
		};

		this.checkResult = function()
		{
			
		};

		this.setAnswered = function(bool)
		{
			this.answered = bool;
		};

		this.setCorrect = function(jElem)
		{
			jElem.parents('.result').addClass('correct');
		};

		this.setWrong = function(jElem)
		{
			jElem.parents('.result').addClass('wrong');
		};
		

		this.isComplete = function()
		{
			var results = this.getQuizz().find('#quizz-form').find('input[name^=question][type=radio]:checked');

			var questions = 0;
			for (var props in this.correctAnswers) ++questions;
			
			if (results.length != questions) return false;

			return true; 
		};

		this.setResultMsg = function(el)
		{
			this.quizzElem.find('#quizz-result').html(el);
		};
	};
	
	$quizzForm = $('#quizz');
	
	q = new Quizz($quizzForm);

	$quizzForm.find('#validate').click(
		function(e) 
		{
			if ( ! q.answered )
			{	
				var targetOffset = $('#quizz-result').offset();
				var targetTop = targetOffset.top-10;
				
				if ( ! q.isComplete() )
				{
					q.setResultMsg('Vous devez répondre à toutes les questions.');
					$('html, body').animate({scrollTop:targetTop}, 500);
					
				} else {
					q.getCorrectAnswer();			
					//q.setAnswered(true);

					$('html, body').animate({scrollTop:targetTop}, 500);

					q.getQuizz().find('.good-answer').fadeIn();

					var corrects = 0;
					for (var props in q.correctAnswers) ++corrects;
					for (var props in q.wrongAnswers) --corrects;


					$result = $('<p />').html('Mon résultat : ').attr('id', 'resultat');
					$('#quizz-result').html($result);
					
					if (corrects < 5)
					{
						var niveau = 'Vous avez des lacunes. Afin d’améliorer votre niveau et de mieux maitriser le tri sélectif, n’hésitez pas à parcourir le site du SITTOMAT !';							
					}
					else if (corrects < 8 && corrects > 4)
					{
						var niveau = 'Pas mal, encore quelques efforts pour devenir un super trieur !';
					}
					else if (corrects > 7)
					{
						var niveau = ' Vous êtes un super trieur, félicitations !';		
					}

					$('#quizz-result').append(
							$('<p />').html(niveau).attr('id', 'niveau')
						);
					
					return false;
				}
			} else {
				q.setResultMsg('Vous ne pouvez jouer qu\'une fois !');
			}

			$.post(
					'/quizz-ajax.html', {}
			);				
			return false;
		}
	);	
});


