/// Starts the slider timer
/// If no interval given it defaults to 5000ms
function startSlider(interval)
{
  interval = (parseInt(interval) > 0 ? interval : 5000);
  window.slideTimer = setInterval( "slideSwitch()", interval );
}

/// Stops the slider timer
function stopSlider()
{
    clearInterval(window.slideTimer);
}

/// Automated Slide Switcher
/// Continuously goes to .next() slide
function slideSwitch() {
    var active = jQuery('#works-preview div div.active');
    var activeText = jQuery('#works-list li.active');

    if ( active.length == 0 ) 
    {
    	active = jQuery('#works-preview div div:last');
    	activeText = jQuery('#works-list li:last');
    }

    var next =  active.next().length ? active.next()
        : jQuery('#works-preview div div:first');
    
    var nextText =  activeText.next().length ? activeText.next()
        : jQuery('#works-list li:first');

    active.addClass('last-active');
    activeText.addClass('last-active');

    next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 500, function() {
            active.removeClass('active last-active');
	    
	    nextText.addClass('active');
            activeText.removeClass('active last-active');
        });

}

/// Goes to specified slide, transationing form the currently active one
function slideChange(nextText) {
    stopSlider();
    var active = jQuery('#works-preview div div.active');
    var activeText = jQuery('#works-list li.active');

    if ( active.length == 0 ) 
    {
    	active = jQuery('#works-preview div div:last');
    	activeText = jQuery('#works-list li:last');
    }

    var next = jQuery('#works-preview div div#image' + nextText.id.substring(4));

    active.addClass('last-active');
    activeText.addClass('last-active');

    next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 250, function() {
            active.removeClass('active last-active');
    	    
            nextText.className = 'active';
            activeText.removeClass('active last-active');
        });
}


$(function(){
  startSlider();
});

$(function() {
  $('#works-list li').each(function() {
    $(this).hover(function() { slideChange(this); },
                  function() { startSlider(); })
  })
  
  $('#works-preview div div a.image_holder').each(function() {
    $(this).hover(function() { stopSlider();  },
                  function() { startSlider(); })
  })
});
