﻿
var ssTimer = -1;

if(ssShowPause==null)
    var ssShowPlay = true;

if(ssShowPlay==null)
    var ssShowPause = true;

if (ssFadeCaptions)
    var ssFadeCaptions = true;

if(ssCallbacks == null)
    var ssCallbacks = { beforeSlideSwitch: null, afterSlideSwitch: null, beforeCaptionSwitch: null, afterCaptionSwitch: null }

if (ssShowNbrs == null)
    var ssShowNbrs = true;

if (ssShowNext == null)
    var ssShowNext = false;

if (ssShowPrev == null)
    var ssShowPrev = false;

if (ssStartupState == null)
    var ssStartupState = "RunSlideShow";

var ssCurPage = 1;

function slideSwitch(intPageNbr) {
    highlightNumber(intPageNbr);
    doTransition("ss", ssCallbacks.beforeSlideSwitch, ssCallbacks.afterSlideSwitch, intPageNbr, $(".ss"));
    doTransition("ssc", ssCallbacks.beforeCaptionSwitch, ssCallbacks.afterCaptionSwitch, intPageNbr);
};

function highlightNumber(intPageNbr) {

    if (ssShowNbrs) {
        var cur = $(".ssns span.active");
        if (cur.length == 0) cur = $(".ssns span:last");
        
        var nxt = (intPageNbr != null ? $(".ssns span:nth-child(" + intPageNbr + ")") :  !isCurLast() ? (intPageNbr == null ? 
                    (cur.next().length ? cur.next() : $(".ssns span:first")) : $(".ssns span:nth-child(" + intPageNbr + ")")) : $(".ssns span:first"));
                                
        cur.removeClass("active");
        nxt.addClass("active");
        ssCurPage = nxt.text();
    }
};

function doTransition(selector, before, after, pageNbr, cont) {
    var cur = getCur(selector);
    var nxt = getNext(cur, selector, pageNbr);
    if (before != null) before(cur, nxt);
    transitionSlides(cur, nxt, cont);
    if (after != null) after(cur, nxt);
};

function isCurLast() {
    var cur = getCur("ss")[0];
    var last = $(".ss div:last")[0];
    if (cur == last) {
        return true;
    }
    return false;
};

function transitionSlides(cur, nxt, cont) {
    cur.addClass('last-active');
    cur.animate({ opacity: 0.0 }, 1000, function() { });
    nxt.css({ opacity: 0.0 })
                .addClass('active')
                .animate({ opacity: 1.0 }, 1000, function() {
                    cur.fadeIn();
                    cur.removeClass('active last-active');
                });
    if(cont!=null) cont.animate({height: nxt.height()});
};

function getCur(strCssSelector) {
    var cur = $('.' + strCssSelector + ' DIV.active');
    if (cur.length == 0) cur = $('.' + strCssSelector + ' DIV:last');
    return cur;
};

function getNext(cur, strCssSelector, intPageNbr) {
    return intPageNbr == null ?
                (cur.next().length ? cur.next() : $('.' + strCssSelector + ' DIV:first'))
                : $('.' + strCssSelector + " DIV:nth-child(" + intPageNbr + ")");
};

function getCurIndex() {
    var cur = getCur("ss")[0];
    var all = $(".ss div");
    for (var intCnt = 0; intCnt < all.length; intCnt++) {
        if (all[intCnt] == cur)
            return intCnt;
    };
    return 1;
};

function getSlideCount() {
    return $(".ss div").length - 1;
};

$(document).ready(function() {
    loadImgPages();
    ssStartupState == "RunSlideShow" ? startSlideShow() : pauseSlideShow();
});

function loadImgPages(e) {
    
    var intCnt = 0;
    var aTo = $(".ssns");
        
    if (ssShowNbrs) {
        $(".ss")
        .children()
        .each(function() {
            intCnt++;
            $("<span>" + intCnt + "</span>")
                .appendTo(aTo)
                .click(function() {
                    pauseSlideShow();
                    var slide = $(this).text();
                    if (ssCurPage != slide) {
                        slideSwitch(slide);
                    }
                });
            });
        $(".ssns span:first-child").addClass("active");
    }
    
    if (ssShowPrev) $("<span class='ssnPrev'></span>")
                        .appendTo(aTo)
                        .click(prevSlide);
   
    
    if (ssShowNext) $("<span class='ssnNext'></span>")
                        .appendTo(aTo)
                        .click(nextSlide);
    
    if (ssShowPlay) $("<span class='ssnPlay'></span>")
                        .appendTo(aTo)
                        .click(startSlideShow);
    
    if (ssShowPause) $("<span class='ssnPause'></span>")
                        .appendTo(aTo)
                        .click(pauseSlideShow);

    fadeAllButFirst(".ss");

    fadeAllButFirst(".ssc");

    highlightNumber(1);

};

$(window).load(function() {
    $(".ss").animate({ height: $(".ss div.active img").height() });
});

function fadeAllButFirst(strSelector) {
    intCnt = 0;
    $(strSelector)
        .children()
        .each(function() {
            if (intCnt > 0)
                $(this).css({ opacity: 0.0 });
            intCnt++;
        });
};

function startSlideShow() {
    ssTimer = setInterval("slideSwitch()", ssDelay);
};

function pauseSlideShow() {
    clearTimeout(ssTimer);
};

function nextSlide() {
    pauseSlideShow();
    slideSwitch();
};

function prevSlide() {
    pauseSlideShow();
    var cur = getCurIndex() - 1;
    if (cur < 0) cur = getSlideCount();
    slideSwitch(cur + 1);
};