$(document).ready(function () {

    // This code is executed after the DOM has been completely loaded 

    var totWidth = 0;
    var positions = new Array();

    $('#slides .slide').each(function (i) {

        // Traverse through all the slides and store their accumulative widths in totWidth 

        positions[i] = totWidth;
        totWidth += $(this).width();

        // The positions array contains each slide's commulutative offset from the left part of the container 

        if (!$(this).width()) {
            alert("Please, fill in width & height for all your images!");
            return false;
        }

    });

    $('#slides').width(totWidth);

    // Change the cotnainer div's width to the exact width of all the slides combined 

    $('#menu ul li a').click(function (e, keepScroll) {

        // On a thumbnail click 
        $('li.menuItem').removeClass('act').addClass('inact');
        $(this).parent().addClass('act');

        var pos = $(this).parent().prevAll('.menuItem').length;

        $('#slides').stop().animate({ marginLeft: -positions[pos] + 'px' }, 450);
        // Start the sliding animation 


        e.preventDefault();
        // Prevent the default action of the link 


        // Stopping the auto-advance if an icon has been clicked:
        if (!keepScroll) clearInterval(itvl);
    });

    $('#menu ul li.menuItem:first').addClass('act').siblings().addClass('inact');
    // On page load, mark the first thumbnail as active 


    //	Enabling auto-advance.

    var current = 1;
    function autoAdvance() {
        if (current == -1) return false;

        var x = $('#menu ul li a').eq(current % $('#menu ul li a').length);
        x.trigger('click', [true]); // [true] will be passed as the keepScroll parameter of the click function on line 28

        current++;
    }

    // The number of seconds that the slider will auto-advance in:

    var changeEvery = 10;

    var itvl = setInterval(function () { autoAdvance() }, changeEvery * 1000);
});
