/**
 * Slider
 *
 * @author     Tomáš Naibrt / naibrt.cz
 */

var slideAnimateTime = 1500;
var slideNextTime = 2000;
var slideFirstEmelent = 1;
var slideActualElemnet;
var slideIsPause = false;
var slideNumbersArray = new Array();

/**
 * Inicializuje Slider
 *
 * @param integer animateTime Rychlost animace prehodu na dalsi obrazek (ms).
 * @param integer nextTime Cas straveny nad jednim obrazkem nez se zacne prechazet k dalsimu (ms).
 * @param integer firstElement Kterym obrazkem se zacina (od jednicky).
 */
function slideInit(animateTime, nextTime, firstElement)
{
    slideAnimateTime = animateTime;
    slideNextTime = nextTime;
    slideFirstEmelent = firstElement;
}

/**
 * Spusti Slider
 */
function slideRun()
{
    slideBindControls();
    slideHideAll();
    slideActualElemnet = slideFirstEmelent-1;
    slidePlay();
}

function slideHideAll()
{
    $('.slide_element').css({'opacity': '0'});
    $('.slide_element').hide();
}

function slideHideElement(number)
{
    $('.slide_element:eq('+(number-1)+')').animate(
        {'opacity': '0'},
        slideAnimateTime,
        'linear',
        function(){
            $(this).hide();
        });
}

function slideShowElement(number)
{
    $('.slide_element:eq('+(number-1)+')').show();
    $('.slide_element:eq('+(number-1)+')').animate(
        {'opacity': '1'},
        slideAnimateTime,
        'linear',
        function(){
            slideActualElemnet = number;
        });
}

function slideNext()
{
    if(slideIsPause == false)
    {
        slideHideElement(slideActualElemnet);
        slideShowElement(slideGetNextElement());
        slideRemoveAllActiveClass();
        slideSetActiveClass(slideGetNextElement());
        setTimeout(slideNext, slideNextTime + slideAnimateTime);
    }
}

function slideGetNextElement()
{
    var tmp = slideActualElemnet + 1;
    if(tmp > $('.slide_element').length)
    {
        return 1
    }
    else
    {
        return tmp;
    }
}

function slidePause()
{
    slideIsPause = true;
    $('#slide_control_play').show();
    $('#slide_control_pause').hide();
}

function slidePlay()
{
    slideIsPause = false;
    $('#slide_control_play').hide();
    $('#slide_control_pause').show();
    slideNext();
}

function slideBindControls()
{
    $('#slide_control_play').click(function(){
        slidePlay();
    });

    $('#slide_control_pause').click(function(){
        slidePause();
    });
    $('#slide_control_pause').hide();

    var i = 1;
    $('.slide_control_numbers > li > a').each(function(){
        slideNumbersArray[this.id] = i;
        $('#'+this.id).click(function(){
            slidePause();
            
            slideHideElement(slideActualElemnet);
            slideHideElement(slideGetNextElement());
            slideShowElement(slideNumbersArray[this.id]);

            slideRemoveAllActiveClass();
            slideSetActiveClass(slideNumbersArray[this.id]);
        });
        i ++;
    });
}

function slideRemoveAllActiveClass()
{
    $('.slide_control_numbers > li > a').removeClass('slide_active');
}

function slideSetActiveClass(number)
{
    $('.slide_control_numbers > li > a:eq('+(number-1)+')').addClass('slide_active');
}