﻿function Slider(slideType) {
    // slideType = 0 => backgroundSlides
    // slideType = 1 => foregroundSlides
    this.data = {
        slideContainer: null,
        slideType: null,
        slides: null,
        slideBackIn: 1,
        slideWidth: null,
        leftSlideIndex: null, 
        rightSlideIndex: null,
        numberOfSlidesAnimating: null
    };
    this.initialize = function(slideType, startingSlide, slideBackIn) {
        
        // Set the slide container
        this.data.slideType = slideType ? slideType : 0;
        this.sliderSet = this.data.slideType === 0 ? "Foreground" : "Background";
        this.data.slideContainer = jQuery("#sliding" + this.sliderSet + " ul");

        // Set slides to be the set of listitems
        this.data.slides = jQuery("#sliding" + this.sliderSet + " li");

        // Set slide width
        this.data.slideWidth = this.data.slides.width();

        // Set slide list width
        this.data.slideContainer.css("width", this.data.slideWidth * slidingVideoPlayer.controller.data.numberOfSlides);


        // Set left and right indexes and classes
        if (this.data.slideType === 0) {
            this.data.leftSlideIndex = (slidingVideoPlayer.controller.data.currentIndex - slidingVideoPlayer.controller.data.backgroundSlideShift + slidingVideoPlayer.controller.data.numberOfSlides - 1) % slidingVideoPlayer.controller.data.numberOfSlides;
        } else {
            this.data.leftSlideIndex = (slidingVideoPlayer.controller.data.currentIndex - slidingVideoPlayer.controller.data.backgroundSlideShift + slidingVideoPlayer.controller.data.numberOfSlides - 1) % slidingVideoPlayer.controller.data.numberOfSlides;
        }
        this.data.rightSlideIndex = (this.data.leftSlideIndex + slidingVideoPlayer.controller.data.numberOfSlides - 1) % slidingVideoPlayer.controller.data.numberOfSlides;

        this.data.slides.filter(":eq(" + this.data.leftSlideIndex + ")").addClass("farMostLeftSlide");
        this.data.slides.filter(":eq(" + this.data.rightSlideIndex + ")").addClass("farMostRightSlide");

        // Position foreground slides and give each slide a unique id
        var bindContext = this;
        this.data.slides.each(function(i) {
            if (bindContext.data.slideType === 0) {
                jQuery(this).attr("id", "foregroundSlide_" + i);
            }
        });


        this.positionSlides(slidingVideoPlayer.controller.data.startingSlide - 1)

        //ATTEMPTS AT A LATE LOAD SLIDE IN ANIMATION
        if (this.data.slideBackIn && this.data.slideType === 1) {
            this.data.slideContainer.css({ "left": 2000 + "px" });


            jQuery("#ForegroundButtons").css({ "display": "none" });
            slidingVideoPlayer.controller.data.numberOfSlidesAnimating = 1;
            slidingVideoPlayer.controller.unBindEventHandlers();
            slidingVideoPlayer.controller.data.slideWidth = this.data.slideWidth;
            window.setTimeout('slidingVideoPlayer.controller.AnimateBackground()', 2000);

        }
        else {
            jQuery("#ForegroundButtons").css({ "display": "block" });
        }
        if (this.data.slideType === 1) {
        	jQuery("#slidingForeground").css({ "height": "100%" });
//        	jQuery("#slidingVideoPlayer").css({ "height": "300px" });
            jQuery("#ForegroundSlideContainer").css({ "height": "225px" });
        }
        else {
            jQuery("#slidingBackground").css({ "height": "100%" });
        }
    };
    this.positionSlides = function(slideIndex) {
    for (var i = slideIndex; i < slidingVideoPlayer.controller.data.numberOfSlides + slideIndex; i++) {
            var positionIndex = ((i) % slidingVideoPlayer.controller.data.numberOfSlides);
            if (this.data.slideType === 0) {
                this.data.slides.filter(":eq(" + positionIndex + ")").css({ "left": ((i - slideIndex) * this.data.slideWidth) + "px", "position": "absolute" });
            }
            else {
                this.data.slides.filter(":eq(" + positionIndex + ")").css({ "left": (((i - slideIndex + slidingVideoPlayer.controller.data.backgroundSlideShift) * this.data.slideWidth)) + "px", "position": "absolute" });
            }
        }
        // Position last three (need 7 total) slides on left stage area, based on how many slides the background should shift over
       
       // Need to account for the foreground shift in the card.
        var foregroundShift = 0;
        if (this.data.slideType === 0) {
            foregroundShift = 1
        }

        for (var i = 1; i < slidingVideoPlayer.controller.data.backgroundSlideShift + 3; i++) {
            var indexPositioning = ((slidingVideoPlayer.controller.data.numberOfSlides - i + slideIndex) % slidingVideoPlayer.controller.data.numberOfSlides);
            this.data.slides.filter(":eq(" + indexPositioning + ")")
				    .css("left", -((-slidingVideoPlayer.controller.data.backgroundSlideShift + i + foregroundShift) * this.data.slideWidth));
        }
    };
    this.fastMove = function(direction, numberOfSlidesToMove) {
        // Update left and right indexes

        var indexShiftDirection = direction;

        var foregroundShift = 0;
        // Set left and right indexes and classes
        if (this.data.slideType === 0) {
            foregroundShift = 1
        }

        this.data.leftSlideIndex = (slidingVideoPlayer.controller.data.currentIndex - slidingVideoPlayer.controller.data.backgroundSlideShift - 2) % slidingVideoPlayer.controller.data.numberOfSlides;
        if (this.data.leftSlideIndex < 0) {
            this.data.leftSlideIndex = slidingVideoPlayer.controller.data.numberOfSlides + this.data.leftSlideIndex;
        }

        this.data.rightSlideIndex = (this.data.leftSlideIndex - 1) % slidingVideoPlayer.controller.data.numberOfSlides;
        if (this.data.rightSlideIndex < 0) {
            this.data.rightSlideIndex = slidingVideoPlayer.controller.data.numberOfSlides + this.data.rightSlideIndex;
        }
        // If slides are animating from the right to the left
        if (direction > 0) {
            //Now move the Left Most slide into last position beyond right Edge
            var farLeftDelta = (this.data.slideWidth * direction) + parseInt(this.data.slideContainer.css("left"));
            var positionsRight = (slidingVideoPlayer.controller.data.numberOfSlides - 1 - foregroundShift - slidingVideoPlayer.controller.data.backgroundSlideShift);
            var farRightPosition = (positionsRight * farLeftDelta);
            this.data.slides.filter(":eq(" + this.data.leftSlideIndex + ")")
				.css("left", farRightPosition)
				.end()
        }
        else {
            // Moving Left To Right 
            var farLeftDelta = (this.data.slideWidth * -direction) + parseInt(this.data.slideContainer.css("left"));
            var farLeftPosition = ((-3 - foregroundShift) * farLeftDelta);
            // Make it the left most slide - out of view
            this.data.slides.filter(":eq(" + this.data.rightSlideIndex + ")")
				.css("left", farLeftPosition)
				.end()
        }
        // Animate foreground slides
        var deltaPosition = (this.data.slideWidth *numberOfSlidesToMove * -direction) + parseInt(this.data.slideContainer.css("left"));
        this.data.slides.animate({ "left": "+=" + deltaPosition + "px" }, (slidingVideoPlayer.controller.data.slideSpeed * Math.abs(numberOfSlidesToMove)), function() {
            slidingVideoPlayer.controller.fastMoveCallback(direction, 1);
        }

		);
    };
    this.move = function(direction, numberOfSlidesToMove) {
        // Update left and right indexes

        var indexShiftDirection = direction;

        var foregroundShift = 0;
        // Set left and right indexes and classes
        if (this.data.slideType === 0) {
            foregroundShift = 1
        }

        this.data.leftSlideIndex = (slidingVideoPlayer.controller.data.currentIndex - slidingVideoPlayer.controller.data.backgroundSlideShift - 2) % slidingVideoPlayer.controller.data.numberOfSlides;
        if (this.data.leftSlideIndex < 0) {
            this.data.leftSlideIndex = slidingVideoPlayer.controller.data.numberOfSlides + this.data.leftSlideIndex;
        }

        this.data.rightSlideIndex = (this.data.leftSlideIndex - 1) % slidingVideoPlayer.controller.data.numberOfSlides;
        if (this.data.rightSlideIndex < 0) {
            this.data.rightSlideIndex = slidingVideoPlayer.controller.data.numberOfSlides + this.data.rightSlideIndex;
        }
        // If slides are animating from the right to the left
        if (direction > 0) {
            //Now move the Left Most slide into last position beyond right Edge
            var farLeftDelta = (this.data.slideWidth * direction) + parseInt(this.data.slideContainer.css("left"));
            var positionsRight = (slidingVideoPlayer.controller.data.numberOfSlides - 1 - foregroundShift - slidingVideoPlayer.controller.data.backgroundSlideShift);
            var farRightPosition = (positionsRight * farLeftDelta);
            this.data.slides.filter(":eq(" + this.data.leftSlideIndex + ")")
				.css("left", farRightPosition)
				.end()
        }
        else {
            // Moving Left To Right 
            var farLeftDelta = (this.data.slideWidth * -direction) + parseInt(this.data.slideContainer.css("left"));
            var farLeftPosition = ((-3 - foregroundShift) * farLeftDelta);
            // Make it the left most slide - out of view
            this.data.slides.filter(":eq(" + this.data.rightSlideIndex + ")")
				.css("left", farLeftPosition)
				.end()
        }
        // Animate foreground slides
        var deltaPosition = (this.data.slideWidth * -direction) + parseInt(this.data.slideContainer.css("left"));
        this.data.slides.animate({ "left": "+=" + deltaPosition + "px" }, slidingVideoPlayer.controller.data.slideSpeed, function() {
            slidingVideoPlayer.controller.animateCallback(direction, numberOfSlidesToMove);
        }


		);
    };
}

var slidingVideoPlayer = {
    controller: {
        backgroundSlider: null,
        foregroundSlider: null,
        data: {
            currentIndex: 0,
            slideSpeed: 1000,
            toggleSpeed: 1000,
            numberOfSlides: null,
            omniSlides: null,
            bindImage: false,
            shareVisibleSlides: null,
            numberOfSlidesAnimating: null,
            backgroundSlideShift: 2,
            startingSlide: 1,
            slideBackIn: 1,
            slideWidth: 0,
            OnTimeoutEndFunctionsArray: new Array(),
            OnAnimateSlideFunctionsArray: new Array()
        },
        initialize: function(options) {

            if (konveyor_randomizeSlidesOnInit) {
                this.RandomizeSlides();
            }


            // Extend the default values above with parameters from initialization
            this.data = jQuery.extend({}, this.data, options);

            this.bindEventHandlers();
            // Set the number of slides
            this.data.numberOfSlides = jQuery("#slidingBackground li").length;

            this.data.omniSlides = jQuery("#OmnitureValues li");
            this.data.shareVisibleSlides = jQuery("#ShareValues li");
            // Initialize sliders
            this.foregroundSlider = new Slider();
            this.foregroundSlider.initialize(0, this.data.startingSlide, this.data.slideBackIn);
            this.backgroundSlider = new Slider();
            this.backgroundSlider.initialize(1, this.data.startingSlide, this.data.slideBackIn);

            slidingVideoPlayer.controller.data.currentIndex = (slidingVideoPlayer.controller.data.startingSlide - 1) % slidingVideoPlayer.controller.data.numberOfSlides;
        },
        RandomizeSlides: function() {
            var foregroundSlides = jQuery("#slidingForeground ul li").clone();
            var backgroundSlides = jQuery("#slidingBackground ul li").clone();
            var omniValue = jQuery("#OmnitureValues ul li").clone();
            var shareValue = jQuery("#ShareValues ul li").clone();
            
            var numberOfSlides = foregroundSlides.length;
            var randomIndexArray = new Array();
            for (var i = 0; i < numberOfSlides; i++) {
                randomIndexArray.push(i);
            }
            var j = Math.floor(Math.random() * numberOfSlides);
            for (var k = 0; k < numberOfSlides; k++) {
                if (j != k) {
                    var temp = randomIndexArray[j];
                    randomIndexArray[j] = randomIndexArray[k];
                    randomIndexArray[k] = temp;
                    j = Math.floor(Math.random() * numberOfSlides);
                }
            }
            var z = 0;
            jQuery.each(jQuery("#slidingForeground ul li"), function(elem, value) {
                jQuery(this).html("");
                jQuery(this).html(jQuery(foregroundSlides[randomIndexArray[z]]).html());
                z++;
            });
            z = 0;
            jQuery.each(jQuery("#slidingBackground ul li"), function(elem, value) {
                jQuery(this).html("");
                jQuery(this).html(jQuery(backgroundSlides[randomIndexArray[z]]).html());
                z++;
            });
            
            //randomize tracking and sharevalue list according to index array to ensure consistency
            z = 0;
            jQuery.each(jQuery("#OmnitureValues ul li"), function(elem, value) {
                jQuery(this).html("");
                jQuery(this).html(jQuery(omniValue[randomIndexArray[z]]).html());
                z++;
            });
            z = 0;
            jQuery.each(jQuery("#ShareValues ul li"), function(elem, value) {
                jQuery(this).html("");
                jQuery(this).html(jQuery(shareValue[randomIndexArray[z]]).html());
                z++;
            });
        },
        bindEventHandlers: function() {
            // Bind next button
            jQuery("#slidingVideoNextButton").bind("click", function(event) {
                slidingVideoPlayer.controller.animateSlides(1);
                event.preventDefault();
            });
            // Bind back button
            jQuery("#slidingVideoBackButton").bind("click", function(event) {
                slidingVideoPlayer.controller.animateSlides(-1);
                event.preventDefault();
            });

            if (this.data.bindImage == "True") {
                // Bind background slide images
                jQuery("#slidingBackground span.conveyorClickBinder").bind("click", function() {
                    var clickIndex = jQuery("#slidingBackground span.conveyorClickBinder").index(this);
                    var numberOfSlidesToMove = null;

                    // Logic to determine how many slides to move based on current slide and clicked slide
                    if (clickIndex < (Math.ceil(slidingVideoPlayer.controller.data.numberOfSlides / 2) + slidingVideoPlayer.controller.data.currentIndex) % slidingVideoPlayer.controller.data.numberOfSlides) {
                        if (slidingVideoPlayer.controller.data.currentIndex < Math.ceil(slidingVideoPlayer.controller.data.numberOfSlides / 2)) {
                            numberOfSlidesToMove = clickIndex - slidingVideoPlayer.controller.data.currentIndex;
                        } else {
                            numberOfSlidesToMove = clickIndex + (slidingVideoPlayer.controller.data.numberOfSlides - slidingVideoPlayer.controller.data.currentIndex);
                        }
                    } else {
                        if (slidingVideoPlayer.controller.data.currentIndex < Math.floor(slidingVideoPlayer.controller.data.numberOfSlides / 2)) {
                            numberOfSlidesToMove = clickIndex - slidingVideoPlayer.controller.data.currentIndex - slidingVideoPlayer.controller.data.numberOfSlides;
                        } else {
                            numberOfSlidesToMove = clickIndex - slidingVideoPlayer.controller.data.currentIndex;
                        }
                    }
                    slidingVideoPlayer.controller.animateSlides(numberOfSlidesToMove);
                });
            }
            else {
                // Bind background slide images
                jQuery("#slidingBackground  span").bind("click", function() {
                    var clickIndex = jQuery("#slidingBackground span").index(this);
                    var numberOfSlidesToMove = null;

                    // Logic to determine how many slides to move based on current slide and clicked slide
                    if (clickIndex < (Math.ceil(slidingVideoPlayer.controller.data.numberOfSlides / 2) + slidingVideoPlayer.controller.data.currentIndex) % slidingVideoPlayer.controller.data.numberOfSlides) {
                        if (slidingVideoPlayer.controller.data.currentIndex < Math.ceil(slidingVideoPlayer.controller.data.numberOfSlides / 2)) {
                            numberOfSlidesToMove = clickIndex - slidingVideoPlayer.controller.data.currentIndex;
                        } else {
                            numberOfSlidesToMove = clickIndex + (slidingVideoPlayer.controller.data.numberOfSlides - slidingVideoPlayer.controller.data.currentIndex);
                        }
                    } else {
                        if (slidingVideoPlayer.controller.data.currentIndex < Math.floor(slidingVideoPlayer.controller.data.numberOfSlides / 2)) {
                            numberOfSlidesToMove = clickIndex - slidingVideoPlayer.controller.data.currentIndex - slidingVideoPlayer.controller.data.numberOfSlides;
                        } else {
                            numberOfSlidesToMove = clickIndex - slidingVideoPlayer.controller.data.currentIndex;
                        }
                    }
                    slidingVideoPlayer.controller.animateSlides(numberOfSlidesToMove);
                });
            }
        },
        unBindEventHandlers: function() {
            jQuery("#slidingVideoNextButton").unbind("click");
            jQuery("#slidingVideoBackButton").unbind("click");
            if (this.data.bindImage == "True") {
                jQuery("#slidingBackground span.conveyorClickBinder").unbind("click");
            }
            else {
                jQuery("#slidingBackground span").unbind("click");
            }
        },
        animateSlides: function(numberOfSlidesToMove) {
            if (!numberOfSlidesToMove) { return; }

            this.raiseOnAnimateSlideFunctions();
            // Sets the direction to either pos 1 or neg 1, ie right or left animation
            // and sets the number of animating slides
            var direction = numberOfSlidesToMove / Math.abs(numberOfSlidesToMove);
            numberOfSlidesToMove = Math.abs(numberOfSlidesToMove);
            this.data.numberOfSlidesAnimating = this.data.numberOfSlides * 2;

            // Move background slides
            this.unBindEventHandlers();
            // Move foreground slides
            this.foregroundSlider.move(direction, numberOfSlidesToMove);

            this.backgroundSlider.move(direction, numberOfSlidesToMove);


            // Update current index
            slidingVideoPlayer.controller.data.currentIndex = (slidingVideoPlayer.controller.data.currentIndex + direction) % slidingVideoPlayer.controller.data.numberOfSlides;
            if (slidingVideoPlayer.controller.data.currentIndex < 0) {
                slidingVideoPlayer.controller.data.currentIndex = slidingVideoPlayer.controller.data.numberOfSlides - 1;
            }

        },
        animateCallback: function(direction, numberOfSlidesToMove) {
            this.data.numberOfSlidesAnimating--;
            if (this.data.numberOfSlidesAnimating === 0) {
                if (numberOfSlidesToMove > 1) {
                    numberOfSlidesToMove--;
                    this.animateSlides(direction * numberOfSlidesToMove);
                } else {
                    this.bindEventHandlers();
                    this.raiseSubscriberConveyorChange();
                }
            }
        },
        moveTo: function(slideToMoveToIndex) {
            if (!slideToMoveToIndex) { return; }
            //Select the Direction to Move based on CurrentIndex - Total Slides
            // only do something if we aren't on currentIndex already
            if (slideToMoveToIndex != slidingVideoPlayer.controller.data.currentIndex) {

                // Logic to determine how many slides to move based on current slide and clicked slide
                var clickIndex = slideToMoveToIndex;
                var numberOfSlidesToMove = null;

                // we are always moving to the left

                // Logic to determine how many slides to move based on current slide and clicked slide
                if (clickIndex < (Math.ceil(slidingVideoPlayer.controller.data.numberOfSlides / 2) + slidingVideoPlayer.controller.data.currentIndex) % slidingVideoPlayer.controller.data.numberOfSlides) {
                    if (slidingVideoPlayer.controller.data.currentIndex < Math.ceil(slidingVideoPlayer.controller.data.numberOfSlides / 2)) {
                        numberOfSlidesToMove = clickIndex - slidingVideoPlayer.controller.data.currentIndex;
                    } else {
                        numberOfSlidesToMove = clickIndex + (slidingVideoPlayer.controller.data.numberOfSlides - slidingVideoPlayer.controller.data.currentIndex);
                    }
                } else {
                    if (slidingVideoPlayer.controller.data.currentIndex < Math.floor(slidingVideoPlayer.controller.data.numberOfSlides / 2)) {
                        numberOfSlidesToMove = clickIndex - slidingVideoPlayer.controller.data.currentIndex - slidingVideoPlayer.controller.data.numberOfSlides;
                    } else {
                        numberOfSlidesToMove = clickIndex - slidingVideoPlayer.controller.data.currentIndex;
                    }
                }
                // call the standard animate method.
                slidingVideoPlayer.controller.animateSlides(numberOfSlidesToMove);
            }
        },
        setPosition: function(slideIndex) {

            slideIndex = Math.abs(slideIndex) % this.data.numberOfSlides;
            // Move background slides
            this.unBindEventHandlers();
            // Move foreground slides
            this.foregroundSlider.positionSlides(slideIndex);

            this.backgroundSlider.positionSlides(slideIndex);


            // Update current index
            slidingVideoPlayer.controller.data.currentIndex = (slideIndex);

            this.bindEventHandlers();

            this.raiseSubscriberConveyorChange();
        },
        AnimateBackground: function() {
            var backgroundSlideContainer = jQuery("#slidingBackground ul");
            // Set slide width
            var deltaPosition = parseInt((this.data.slideWidth * slidingVideoPlayer.controller.data.numberOfSlides * -1));
            backgroundSlideContainer.animate({ "left": "+=" + -2000 + "px" }, slidingVideoPlayer.controller.data.slideSpeed * 3, function() {
                slidingVideoPlayer.controller.backgroundMoveCallback(1, 1);
            }
        );
        },
        fastMoveTo: function(slideToMoveToIndex) {

            // Prevent other movement
            this.unBindEventHandlers();

            //Select the Direction to Move based on CurrentIndex - Total Slides
            // only do something if we aren't on currentIndex already
            if (slideToMoveToIndex != slidingVideoPlayer.controller.data.currentIndex) {

                // Logic to determine how many slides to move based on current slide and clicked slide
                var clickIndex = slideToMoveToIndex;
                var numberOfSlidesToMove = null;

                // Logic to determine how many slides to move based on current slide and clicked slide
                if (clickIndex < slidingVideoPlayer.controller.data.currentIndex < Math.ceil(slidingVideoPlayer.controller.data.numberOfSlides / 2)) {
                    numberOfSlidesToMove = clickIndex - slidingVideoPlayer.controller.data.currentIndex;
                } else {
                    numberOfSlidesToMove = clickIndex + (slidingVideoPlayer.controller.data.numberOfSlides - slidingVideoPlayer.controller.data.currentIndex);
                }
            } else {
                if (slidingVideoPlayer.controller.data.currentIndex < Math.floor(slidingVideoPlayer.controller.data.numberOfSlides / 2)) {
                    numberOfSlidesToMove = clickIndex - slidingVideoPlayer.controller.data.currentIndex - slidingVideoPlayer.controller.data.numberOfSlides;
                } else {
                    numberOfSlidesToMove = clickIndex - slidingVideoPlayer.controller.data.currentIndex;
                }
            }
            // Collect animation Data
            // Direction of Movement.
            var direction = numberOfSlidesToMove / Math.abs(numberOfSlidesToMove);

            // number of slides to move in that direction
            numberOfSlidesToMove = Math.abs(numberOfSlidesToMove);
            this.data.numberOfSlidesAnimating = this.data.numberOfSlides * 2;

            this.foregroundSlider.fastMove(direction, numberOfSlidesToMove);

            this.backgroundSlider.fastMove(direction, numberOfSlidesToMove);

            this.data.currentIndex = slideToMoveToIndex;


        },
        backgroundMoveCallback: function(direction, numberOfSlidesToMove) {
            jQuery("#ForegroundButtons").css({ "display": "block" });
            this.bindEventHandlers();
            this.raiseSubscriberConveyorChange();

        },
        raiseSubscriberConveyorChange: function() {
            var moreInfoHTML = slidingVideoPlayer.controller.data.omniSlides.filter(":eq(" + slidingVideoPlayer.controller.data.currentIndex + ")").html();

            //omniModTracking(this, "Konveyor", "", "Scroll: " + moreInfoHTML, 0, "Scroll" + moreInfoHTML, "");

            if (typeof (this.data.OnTimeoutEndFunctionsArray) != undefined) {
                if (this.data.OnTimeoutEndFunctionsArray != null) {
                    if (this.data.OnTimeoutEndFunctionsArray.length > 0) {
                        for (var i = 0; i < this.data.OnTimeoutEndFunctionsArray.length; i++) {
                            this.data.OnTimeoutEndFunctionsArray[i]();
                        }
                    }
                }
            }


        },
        raiseOnAnimateSlideFunctions: function() {
            if (typeof (this.data.OnAnimateSlideFunctionsArray) != undefined) {
                if (this.data.OnAnimateSlideFunctionsArray != null) {
                    if (this.data.OnAnimateSlideFunctionsArray.length > 0) {
                        for (var i = 0; i < this.data.OnAnimateSlideFunctionsArray.length; i++) {
                            this.data.OnAnimateSlideFunctionsArray[i]();
                        }
                    }
                }
            }
        }
    }
};
