;(function ($) {
	'use strict';

	/**
	* evenements.js 0.1
	*
	*
	* @version  0.1
	*/
	
	var plugin = {};

	var defaults = {
		slidePause: 7000
	}
	
	$.fn.hqSlideshow = function(options){
		//console.log("Slideshow");
		var language = $("html").attr("lang");

		if(this.length == 0) return this;

		// support mutltiple elements
		if(this.length > 1){
			this.each(function(){$(this).hqEvenements(options)});
			return this;
		}

		// create a namespace to be used throughout the plugin
		var slideshow = {};
		// set a reference to our slider element
		var el = this;
		plugin.el = this;
		
		var animation,
		restartAnimation,
		elm,
		slideID,
		activeSlideID,
		activeSlider,
		diffResolutions,
		stopOnStart,
		n,
		r;
		
		
		var init = function() {
			slideshow.settings = $.extend({}, defaults, options);
			
			
			slideID = 1,
			activeSlideID = slideID,
			activeSlider = el.find("[data-slide='" + slideID + "']"),
			diffResolutions = (typeof el.data('responsive') !== 'undefined' ? el.data('responsive') : false),
			stopOnStart = (typeof el.data('stoponstart') !== 'undefined' ? el.data('stoponstart') : false);
			
			/*if($('#green_splitter').length!=0){
				$('#green_splitter').css('height',$('.fiche-6 .slides .slide.active .answer').height()+60);
				$('.fiche-6 .slides .slide').each(function(){
						 $(this).find('.question').css('height',$(this).find('.answer').height()+60);
				})
	
				$(window).resize(function(){
					$('#green_splitter,.fiche-6 .question').css('height',$('.fiche-6 .slides .slide.active .answer').height()+60);
				})
			}*/


			$('.slides .slide:not(:first)', el).fadeOut(0).css({
				visibility: "inherit"
			});

			var t = {
				fr: ["Lancement du défilement", "Arrêt du défilement"],
				en: ["Start the slideshow", "Stop the slideshow"]
			};
			n = language == "fr" ? t.fr[0] : t.en[0];
			r = language == "fr" ? t.fr[1] : t.en[1];
			
			$('.pause').attr('title',r)
		
			setup();
        

		}
		
		var setup = function() {
			if(diffResolutions){
				var windowObj = $(window),
				windowW = windowObj.width(),
				rightData;
				
				if (windowW >= 1000){
					rightData = "desktop";
				}else if(windowW > 620 || windowObj < 1000){
					rightData = "tablet";
				}else if(windowW <= 620){
					rightData = "phone";
				}
				$(".slides .slide", el).each(function(){
					$(this).css('background-image', 'url(' + $(this).data(rightData) + ')');
				});
			}
			animateSlide();
			
			if(stopOnStart){
				pauseOnStart();
				var t = setTimeout(function() {
					pauseOnStart();
					clearTimeout(t);
				}, 5000);
			
				//$(".pause", el).trigger("click");
			}
		}
		
		var pauseOnStart = function() {
			var c = el;
			
			c.each(function(i) {
				$(this).on('click', 'button.pause', function(e) {
					$(e.delegateTarget).find('i').text($(this).val());
				});
			
				var event = jQuery.Event('click');
				event.target = $(this).find('button.pause')[0];
				
				$(this).trigger(event);
			});
		}
		
		var animateSlide = function(slideID){
            stopAnimateSlide();
            var delay = 10000;
            animation = self.setInterval(function(){switchSlide(slideID)}, delay);
        }

        var stopAnimateSlide = function(){
            window.clearInterval(restartAnimation);
            window.clearInterval(animation);
        }

        var restartAnimateSlide = function(){
            stopAnimateSlide();
            var delay = 4000;
            restartAnimation = self.setInterval(function(){animateSlide()}, delay);
        }


        var switchSlide = function (slideID){
            if (slideID != activeSlideID){
                if(slideID === undefined){
                    //Find what is the next slide to play
                    activeSlideID = el.find('button.active').data('id');
                    if(activeSlideID < el.find('button.slide').length){
                        activeSlideID = activeSlideID + 1;
                    }else{
                        activeSlideID = 1;
                    }
                }else{
                    //Force the slide id
                    activeSlideID = slideID;
                }
                //Toggle active state for both slide and button
                el.find('button').removeClass('active');
                el.find('.btn' + activeSlideID).addClass('active');
                activeSlider.fadeOut(300).removeClass('active');
                //activeSlider = $('#slide_v_' + activeSlideID);
                activeSlider = el.find("[data-slide='" + activeSlideID + "']");
                activeSlider.delay(325).fadeIn(300).addClass('active');
            }
			
			
            animateSlide();
        }

       var unPause = function(){
            $('.play', el).removeClass('play').addClass('pause');
        }

        el.on('click', 'button.slide', function(){

            elm = $(this);
            slideID = elm.data('id');
            unPause();
            // Stop animation
            stopAnimateSlide();
            // Change the slide
            switchSlide(slideID);
            // Restart the animation
            //restartAnimateSlide(activeSlideID);
            animateSlide();

        });

        //Pause animation
        el.on('click', '.pause', function(){
            elm = $(this);
            elm.removeClass('pause').addClass('play');
            elm.attr('title',n)
            stopAnimateSlide();
        });

        //Continue playing animation
        el.on('click', '.play',function(){
            unPause();
            // Change the button
            elm = $(this);
            elm.attr('title',r)
            //Start the animation
            //We don't use restart function because we want the animation to restart as soon as possible.
            animateSlide();

        });

        el.on('click', '.next, .prev', function(){

            stopAnimateSlide();
            var newSlide;  
            if($(this).hasClass("prev")){
                newSlide = activeSlider.prev(".slide").length  ? activeSlider.prev(".slide") : el.find(".slides .slide").eq(-1);
            }else{
                newSlide = activeSlider.next(".slide").length  ? activeSlider.next(".slide") : el.find(".slides .slide").eq(0);
            }
            switchSlide(newSlide.data("slide"));
        });
  
		//special case for when slide starts paused
        /*if(stopOnStart){
            $(".pause", el).trigger("click");
        }*/
		
		/*------------------------*/
				
		init();

		// returns the current jQuery object
		return this;
	}

})(jQuery);
