// current slide
var curr = 0;
// user inactivity time
var inact = 7000;
// inactivity time ticker
var tick;
// animation end
var finish = true;
// slide height
var slideHeight = 0;

// cache
var $slides = [];

// navigation
var $prev;
var $next;

$(document).ready(function(){
    
    $prev = $("#slide-prev");
    $next = $("#slide-next");
    
    // slide height
    $("#slide-height img")
        .load(function(){ resizeSlide(); })
        .each(function(){ if(this.complete) $(this).trigger('load'); });
    
    $(window).resize(function(){ resizeSlide(); });
    
    // cache slides
    $("#slide-list .slide").each(function(k,v){
        $slides[k] = $(v);
    });
    
    // hide prev arrow
    $prev.hide();
    
    // automatition
    startSlide();
    
    // stop slideshow if mouse is on slides
    $(".slide")
        .mouseenter(function(){ stopSlide(); })
        .mouseleave(function(){ startSlide(); });
    
    // next click event
    $next.click(function(){
        nextSlide();
        return false;
    });
        
    // prev click event
    $prev.click(function(){
        prevSlide();
        return false;
    });
    
});

/**
 * nextSlide
 * Show next slide
 * @return void
 */
function nextSlide() {
    if( finish ) {
        finish = false;
        var next = curr+1;
        if( next == $slides.length ) next = 0;
        $slides[curr].animate({left:'-100%'},"slow");
        $slides[next].css({left:'100%'}).animate({left:'0%'},"slow",function(){ finish = true; });
        curr = next;
        showHideNav();
    }
}

/**
 * prevSlide
 * Show previous slide
 * @return void
 */
function prevSlide() {
    if( finish ) {
        finish = false;
        var prev = curr-1;
        if( prev < 0 ) prev = ($slides.length - 1);
        $slides[curr].animate({left:'100%'},"slow");
        $slides[prev].css({left:'-100%'}).animate({left:'0%'},"slow",function(){ finish = true; });
        curr = prev;
        showHideNav();
    }
}

/**
 * showHideNav
 * Check and toggle slides navigation
 * @return void
 */
function showHideNav() {
    
    if( (curr+1) == $slides.length ) $next.fadeOut(); else $next.fadeIn();
    if( curr == 0 ) $prev.fadeOut(); else $prev.fadeIn();
}

/**
 * startSlide
 * Start slideshow
 * @return void
 */
function startSlide() {
    tick = setInterval( nextSlide, inact );
    $(document)
        .bind('mousemove',function(){ clearInterval( tick ); tick = setInterval( nextSlide, inact ); })
        .bind('keydown',function(){ clearInterval( tick ); tick = setInterval( nextSlide, inact ); });
}

/**
 * stopSlide
 * Stop slideshow
 * @return void
 */
function stopSlide() {
    clearInterval( tick );
    $(document)
        .unbind('mousemove')
        .unbind('keydown');
}

/**
 * resizeSlide
 * Resize Window handler
 * @return void
 */
function resizeSlide() {
    slideHeight = $("#slide-height").height();
    $("#slide-list").height( slideHeight );
    showHideNav();
}
