﻿var currentPosition = 0;
var numberOfSlides;
var slideWidth = 935;
var intervalId;
var sliding = false;
$(document).ready(function () {
    //var currentPosition = 0;

    var slides = $('.slide');
    numberOfSlides = slides.length;

    if (typeof (SlideShowTimeInSeconds) == "undefined") {
        SlideShowTimeInSeconds = 10;
    }

    SetInterval();

    // Remove scrollbar in JS
    $('#slidesContainer').css('overflow', 'hidden');

    // Wrap all .slides with #slideInner div
    slides
    .wrapAll('<div id="slideInner"></div>')
    // Float left to display horizontally, readjust .slides width
	.css({
	    'float': 'left',
	    'width': slideWidth
	});

    // Set #slideInner width equal to total width of all slides
    $('#slideInner').css('width', slideWidth * numberOfSlides);

    // Insert controls in the DOM
    $('#slideshow')
    .prepend('<span class="control" id="leftControl">Clicking moves left</span>')
    .append('<span class="control" id="rightControl">Clicking moves right</span>');

    // Hide left arrow control on first load
    manageControls(currentPosition);

    // Create event listeners for .controls clicks
    $('.control')
    .bind('click', function () {

        SetInterval();

        // Determine new position
        currentPosition = ($(this).attr('id') == 'rightControl') ? currentPosition + 1 : currentPosition - 1;

        SlideTo(currentPosition);
    });


    $('#slideshow').hover(function () {
        ClearInterval();
    }, function () {
        SetInterval();
    })
});

function SlideTo(newPosition) {
    if (sliding) {
        return;
    }
        
    sliding = true;

    if (currentPosition >= numberOfSlides || currentPosition < 0)
        currentPosition = newPosition = 0;

    // Hide / show controls
    manageControls(newPosition);

    // Move slideInner using margin-left
    $('#slideInner').animate({
        'marginLeft': slideWidth * (-newPosition)
    }, function () {
        sliding = false;
    });

    
}

function ClearInterval() {
    if (typeof (intervalId) != "undefined")
        clearInterval(intervalId);
}

function SetInterval() {

    ClearInterval();

    intervalId = setInterval("SlideTo(++currentPosition);", SlideShowTimeInSeconds * 1000);
}

// manageControls: Hides and Shows controls depending on currentPosition
function manageControls(position) {
    // Hide left arrow if position is first slide
    if (position == 0) { $('#leftControl').hide() } else { $('#leftControl').show() }
    // Hide right arrow if position is last slide
    if (position == numberOfSlides - 1) { $('#rightControl').hide() } else { $('#rightControl').show() }
}
