/**
*  pigSlide v1.0
*  simple jQuery slideshow
*  by Richard Pigott - www.cakehole.org.uk
*  use options like this: pigSlideOptions = { startSlide:10, slideWait:5000, slideSpeed:1000, captionSpeed:500, useCaptions:true };
*/


    //=-- globals --=//
    //var pauseCycle   = false;

    var pigSlideOptions = {};
    var slideWait    = 5000;
    var slideSpeed   = 1000;
    var captionSpeed = 500;
    var useCaptions  = true;


    // recursively adds a fade
    function startFade( slide ) {

        // pause execution on mouseover
        //while( pauseCycle == true ) {}

        if ( slide < slideShowImages.length-1 ) {
            var nextSlide = slide + 1;
        } else {
            var nextSlide = 0;
        }

        if ( useCaptions ) {
            slideShowImages[slide].captionText.hide( 'slide', { direction:'down' }, captionSpeed );
            slideShowImages[slide].captionBox.hide( 'slide', { direction:'down' }, captionSpeed, function() {

                slideShowImages[slide].image.css('opacity','1').fadeOut( slideSpeed );

                slideShowImages[nextSlide].image.css('opacity','1').fadeIn( slideSpeed, function() {

                    slideShowImages[slide].image.hide()
                    slideShowImages[nextSlide].captionBox.show( 'slide', { direction:'down' }, captionSpeed );
                    slideShowImages[nextSlide].captionText.show( 'slide', { direction:'down' }, captionSpeed, function() {
                        setTimeout( function() { startFade( nextSlide ) }, slideWait );
                    } );
                } );
            } );

        } else {
            slideShowImages[slide].image.fadeOut( slideSpeed ).hide();
            slideShowImages[nextSlide].image.fadeIn( slideSpeed, function() {
                setTimeout( function() { startFade( nextSlide ) }, slideWait );
            } );
        }

    }

    // sets up and runs the pig slide
    function pigSlide( containerDiv, imageSlides, pigSlideOptions ) {

        var startSlide = Math.floor( Math.random() * slideShowImages.length );
        // set options if passed
        if ( pigSlideOptions != {} ) {
            if ( pigSlideOptions.startSlide   != undefined ) { startSlide   = pigSlideOptions.startSlide; }
            if ( pigSlideOptions.slideWait    != undefined ) { slideWait    = pigSlideOptions.slideWait; }
            if ( pigSlideOptions.slideSpeed   != undefined ) { slideSpeed   = pigSlideOptions.slideSpeed; }
            if ( pigSlideOptions.captionSpeed != undefined ) { captionSpeed = pigSlideOptions.captionSpeed; }
            if ( pigSlideOptions.useCaptions  != undefined ) { useCaptions  = pigSlideOptions.useCaptions; }
        }

        // $( '#'+containerDiv ).mouseover( function() { pauseCycle = true; } );
        // $( '#'+containerDiv ).mouseout( function() { pauseCycle = false; } );

        // set up each image
        $.each( imageSlides, function( index, imageSlide ) {

            // create image element with or without link
            if ( imageSlide.link != undefined ) {
                var newImage = $( '<a href="'+imageSlide.link+'"><img src='+imageSlide.image+' style="position:absolute; border:0;"></a>' ).hide();
            } else {
                var newImage = $( '<img src='+imageSlide.image+' style="position:absolute;">' ).hide();
            }

            // add image to imageSlide object
            imageSlide.image = newImage;

            // add image and caption to dom
            if ( useCaptions ) {
                var newCaptionBox  = $( '<div class="slideShowCaption"></div>' ).hide();
                var newCaptionText = $( '<div class="slideShowCaptionText"><div class="slideShowCaptionTitle">'+imageSlide.title+'</div>'
                                       //+'<div class="slideShowCaptionDescription">'+imageSlide.description+'</div>'
                                       +'</div>').hide();
                imageSlide.captionBox  = newCaptionBox;
                imageSlide.captionText = newCaptionText;
                $( '#'+containerDiv ).append( newImage ).append( newCaptionBox ).append( newCaptionText );
            } else {
                $( '#'+containerDiv ).append( newImage );
            }

        } );

        // show starting image and start fade cycle
        slideShowImages[startSlide].image.show();
        if ( useCaptions ) {
            slideShowImages[startSlide].captionBox.show();
            slideShowImages[startSlide].captionText.show();
            setTimeout( function() { startFade( startSlide ) }, slideWait );
        } else {
            setTimeout( function() { startFade( startSlide ) }, slideWait );
        }
    }
