﻿/* jQuery Slider with Image Perspective - © Isotop AB 2008 */

var Slider = {
    
    _activeId:null,
    _maxId:null,
    _initialising:true,
    _ids:Array(),
    _texts:Array(),
    _inAnimation:false,
    _timeSpan:null,
    _timer:null,
    _interacted:false,
    _autoRotationDisabled:false,
    
    init:function() {
        Slider._maxId = $('.jQsP-image').size();
        
        $("#jQsP-prev").click(function()
        {
            clearTimeout(Slider._timer);
            Slider._interacted = true;
            
            Slider.showPreviousSlide();
        });
        
        $("#jQsP-next").click(function()
        {
            clearTimeout(Slider._timer);
            Slider._interacted = true;
            
            Slider.showNextSlide();            
        });
        
        if(Slider._initialising == true && Slider._autoRotationDisabled == false)
        {
			// Om det inte är initierat så skall vi köra igång timern (timern stängs av vid interaktion av användare).
			Slider._initialising = false;            
            Slider._timer = setTimeout("Slider.showNextSlide()", Slider._timeSpan);    
        }
    },
        
    showNextSlide:function() {
    
        var aktivPanel = $(".jQsP-image:first");
        var nextPanel = $(aktivPanel).next();
        var aktivText = $(".jQsP-text:first");
        var nextText = aktivText.next();
                
        // Kontrollerar så att diven inte är animerad
        if(Slider._inAnimation == true)
		{ return; }
		
		// Animation power - vroom vroom
        Slider._inAnimation = true;
        
        aktivText.fadeOut(1000, function() {
            nextText.hide();
            
            nextText.fadeIn(500);
                        
            $("#jQsP-texts").append(aktivText);
        });
        
        // Starta utfadningen av den aktiva panelen
        aktivPanel.fadeOut(1000, function() {
            
            Slider._inAnimation = false;
            
            aktivPanel.removeClass("jQsP-1");
            
            // Om det finns mer än 5 stycken skall den få en class som inte syns            
            if(Slider._maxId > 4)
                aktivPanel.addClass("jQsP-none");
            else 
                aktivPanel.addClass("jQsP-" + Slider._maxId); // Sätter till det sista möjliga ID:t (2-4)                
                        
            // Göm nästa för att få en snajdig övergång
            nextPanel.hide();
            
            // Animation
            nextPanel.addClass("jQsP-1");
            nextPanel.removeClass("jQsP-2"); 
            nextPanel.fadeIn(700);
            
            // Om det finns mer än 2 panels ska vi byta classer på dem.
            if(Slider._maxId > 2)
            {
                var tempPanel = nextPanel;
                
                for(var i = 3; i <= Slider._maxId; i++)
                {
                    if(i <= 5)
                    {
                        tempPanel = tempPanel.next();
                        tempPanel.hide();
                        
                        tempPanel.addClass("jQsP-" + (i - 1));
                        tempPanel.removeClass("jQsP-" + i);   
                        tempPanel.removeClass("jQsP-none");                 
                        
                        tempPanel.fadeIn();
                    }
                    else
                    {
                        tempPanel = tempPanel.next();
                        tempPanel.hide();
                        
                        tempPanel.removeClass("jQsP-" + i);   
                        tempPanel.addClass("jQsP-none");                 
                    }
                 }
            }              
            
            if(Slider._maxId <= 4)
                aktivPanel.fadeIn(505);
            
            // Lägg till den aktiva sist i diven
            $("#jQsP-images").append(aktivPanel);  
            
            
                                                                 
            if(Slider._interacted == false)
                Slider._timer = setTimeout("Slider.showNextSlide()", Slider._timeSpan);                
        });
    },
    
    showPreviousSlide:function() {
        
        var aktivPanel = $(".jQsP-image:first");
        var nextPanel = $(".jQsP-image:last");
        var aktivText = $(".jQsP-text:first");
        var nextText = $(".jQsP-text:last");
        
        if(Slider._maxId > 2)
        {
            var panelBefore = $(aktivPanel).next();
            var textBefore = aktivText.next();
        }
        else
        {
            var panelBefore = null;
            var textBefore = null;
        }
        
        // Kontrollerar så att diven inte är animerad
        if(Slider._inAnimation == true)
		{ return; }
		
		// Animation power - vroom vroom
        Slider._inAnimation = true;
        
        aktivText.fadeOut(1000, function() {
            
            if(textBefore != null)
            {
                textBefore.before(aktivText);
                textBefore.hide();
            }
            else
                $("#jQsP-texts").append(aktivText);
                
            nextText.fadeIn(500);
            aktivText.before(nextText);
            
        });
        
        // Starta utfadningen av den aktiva panelen
        aktivPanel.fadeOut(1000, function() {
            
            Slider._inAnimation = false;
            
            aktivPanel.removeClass("jQsP-1");
            aktivPanel.addClass("jQsP-2");
                        
            if(panelBefore != null)            
                panelBefore.before(aktivPanel);
            else 
                $("#jQsP-images").append(aktivPanel);               
                                    
            // Animation
            nextPanel.addClass("jQsP-1");
            nextPanel.removeClass("jQsP-" + Slider._maxId); 
            nextPanel.removeClass("jQsP-none");
            aktivPanel.fadeIn(400);
            nextPanel.fadeIn(600);
            aktivPanel.before(nextPanel);
            
            if(panelBefore != null)
            {
                panelBefore.removeClass("jQsP-2");
                panelBefore.removeClass("jQsP-none");
                panelBefore.addClass("jQsP-3");
            }
            
            // Om det finns mer än 2 panels ska vi byta classer på dem.
            if(Slider._maxId > 2)
            {
                panelBefore.fadeIn();
                
                var tempPanel = panelBefore;
                for(var i = 3; i <= Slider._maxId; i++)
                {
                    if(i < 4)
                    {
                        tempPanel = tempPanel.next();
                        tempPanel.hide();
                        
                        tempPanel.removeClass("jQsP-" + i);
                        tempPanel.addClass("jQsP-" + (i + 1));
                        
                        tempPanel.fadeIn();
                    }
                    else
                    {
                        tempPanel = tempPanel.next();
                        tempPanel.hide();
                        
                        tempPanel.removeClass("jQsP-" + i);
                        tempPanel.addClass("jQsP-none");
                    }
                }
            }                
        });         
    }
}

//var $j = jQuery.noConflict();
$(document).ready(function () {
     setTimeout("Slider.init()", 300);    
});