﻿/*

Supersized - Fullscreen Slideshow jQuery Plugin
Version : 3.2.5
Theme 	: Shutter 1.1
	
Site	: www.buildinternet.com/project/supersized
Author	: Sam Dunn
Company : One Mighty Roar (www.onemightyroar.com)
License : MIT License / GPL License

*/

(function ($) {

    theme = {


        /* Initial Placement
        ----------------------------*/
        _init: function () {

            // Center Slide Links
            if (api.options.slide_links) $(vars.slide_list).css('margin-left', -$(vars.slide_list).width() / 2);

            // Start progressbar if autoplay enabled
            if (api.options.autoplay) {
                if (api.options.progress_bar) theme.progressBar();
            } else {
                if ($(vars.play_button).attr('src')) $(vars.play_button).attr("src", vars.image_path + "play.png"); // If pause play button is image, swap src
                if (api.options.progress_bar) $(vars.progress_bar).stop().animate({ left: -$(window).width() }, 0); //  Place progress bar
            }


            /* Thumbnail Tray
            ----------------------------*/
            // Hide tray off screen
            $(vars.thumb_tray).animate({ bottom: -$(vars.thumb_tray).height() }, 0);

            // Thumbnail Tray Toggle
            $(vars.tray_button).toggle(function () {
                $(vars.thumb_tray).stop().animate({ bottom: 0, avoidTransforms: true }, 300);
                if ($(vars.tray_arrow).attr('src')) $(vars.tray_arrow).attr("src", vars.image_path + "button-tray-down.png");
                return false;
            }, function () {
                $(vars.thumb_tray).stop().animate({ bottom: -$(vars.thumb_tray).height(), avoidTransforms: true }, 300);
                if ($(vars.tray_arrow).attr('src')) $(vars.tray_arrow).attr("src", vars.image_path + "button-tray-up.png");
                return false;
            });

            // Make thumb tray proper size
            $(vars.thumb_list).width($('> li', vars.thumb_list).length * $('> li', vars.thumb_list).outerWidth(true)); //Adjust to true width of thumb markers

            // Display total slides
            if ($(vars.slide_total).length) {
                $(vars.slide_total).html(api.options.slides.length);
            }


            /* Thumbnail Tray Navigation
            ----------------------------*/
            if (api.options.thumb_links) {
                //Hide thumb arrows if not needed
                if ($(vars.thumb_list).width() <= $(vars.thumb_tray).width()) {
                    $(vars.thumb_back + ',' + vars.thumb_forward).fadeOut(0);
                }

                // Thumb Intervals
                vars.thumb_interval = Math.floor($(vars.thumb_tray).width() / $('> li', vars.thumb_list).outerWidth(true)) * $('> li', vars.thumb_list).outerWidth(true);
                vars.thumb_page = 0;

                // Cycle thumbs forward
                $(vars.thumb_forward).click(function () {
                    if (vars.thumb_page - vars.thumb_interval <= -$(vars.thumb_list).width()) {
                        vars.thumb_page = 0;
                        $(vars.thumb_list).stop().animate({ 'left': vars.thumb_page }, { duration: 500, easing: 'easeOutExpo' });
                    } else {
                        vars.thumb_page = vars.thumb_page - vars.thumb_interval;
                        $(vars.thumb_list).stop().animate({ 'left': vars.thumb_page }, { duration: 500, easing: 'easeOutExpo' });
                    }
                });

                // Cycle thumbs backwards
                $(vars.thumb_back).click(function () {
                    if (vars.thumb_page + vars.thumb_interval > 0) {
                        vars.thumb_page = Math.floor($(vars.thumb_list).width() / vars.thumb_interval) * -vars.thumb_interval;
                        if ($(vars.thumb_list).width() <= -vars.thumb_page) vars.thumb_page = vars.thumb_page + vars.thumb_interval;
                        $(vars.thumb_list).stop().animate({ 'left': vars.thumb_page }, { duration: 500, easing: 'easeOutExpo' });
                    } else {
                        vars.thumb_page = vars.thumb_page + vars.thumb_interval;
                        $(vars.thumb_list).stop().animate({ 'left': vars.thumb_page }, { duration: 500, easing: 'easeOutExpo' });
                    }
                });

            }


            /* Navigation Items
            ----------------------------*/
            $(vars.next_slide).click(function () {
                api.nextSlide();
            });

            $(vars.prev_slide).click(function () {
                api.prevSlide();
            });

            // Full Opacity on Hover
            if (jQuery.support.opacity) {
                $(vars.prev_slide + ',' + vars.next_slide).mouseover(function () {
                    $(this).stop().animate({ opacity: 1 }, 100);
                }).mouseout(function () {
                    $(this).stop().animate({ opacity: 0.6 }, 100);
                });
            }

            if (api.options.thumbnail_navigation) {
                // Next thumbnail clicked
                $(vars.next_thumb).click(function () {
                    api.nextSlide();
                });
                // Previous thumbnail clicked
                $(vars.prev_thumb).click(function () {
                    api.prevSlide();
                });
            }

            $(vars.play_button).click(function () {
                api.playToggle();
            });


            /* Thumbnail Mouse Scrub
            ----------------------------*/
            if (api.options.mouse_scrub) {
                $(vars.thumb_tray).mousemove(function (e) {
                    var containerWidth = $(vars.thumb_tray).width(),
						listWidth = $(vars.thumb_list).width();
                    if (listWidth > containerWidth) {
                        var mousePos = 1,
							diff = e.pageX - mousePos;
                        if (diff > 10 || diff < -10) {
                            mousePos = e.pageX;
                            newX = (containerWidth - listWidth) * (e.pageX / containerWidth);
                            diff = parseInt(Math.abs(parseInt($(vars.thumb_list).css('left')) - newX)).toFixed(0);
                            $(vars.thumb_list).stop().animate({ 'left': newX }, { duration: diff * 3, easing: 'easeOutExpo' });
                        }
                    }
                });
            }


            /* Window Resize
            ----------------------------*/
            $(window).resize(function () {

                // Delay progress bar on resize
                if (api.options.progress_bar && !vars.in_animation) {
                    if (vars.slideshow_interval) clearInterval(vars.slideshow_interval);
                    if (api.options.slides.length - 1 > 0) clearInterval(vars.slideshow_interval);

                    $(vars.progress_bar).stop().animate({ left: -$(window).width() }, 0);

                    if (!vars.progressDelay && api.options.slideshow) {
                        // Delay slideshow from resuming so Chrome can refocus images
                        vars.progressDelay = setTimeout(function () {
                            if (!vars.is_paused) {
                                theme.progressBar();
                                vars.slideshow_interval = setInterval(api.nextSlide, api.options.slide_interval);
                            }
                            vars.progressDelay = false;
                        }, 1000);
                    }
                }

                // Thumb Links
                if (api.options.thumb_links && vars.thumb_tray.length) {
                    // Update Thumb Interval & Page
                    vars.thumb_page = 0;
                    vars.thumb_interval = Math.floor($(vars.thumb_tray).width() / $('> li', vars.thumb_list).outerWidth(true)) * $('> li', vars.thumb_list).outerWidth(true);

                    // Adjust thumbnail markers
                    if ($(vars.thumb_list).width() > $(vars.thumb_tray).width()) {
                        $(vars.thumb_back + ',' + vars.thumb_forward).fadeIn('fast');
                        $(vars.thumb_list).stop().animate({ 'left': 0 }, 200);
                    } else {
                        $(vars.thumb_back + ',' + vars.thumb_forward).fadeOut('fast');
                    }

                }
            });


        },


        /* Go To Slide
        ----------------------------*/
        goTo: function () {
            if (api.options.progress_bar && !vars.is_paused) {
                $(vars.progress_bar).stop().animate({ left: -$(window).width() }, 0);
                theme.progressBar();
            }
        },

        /* Play & Pause Toggle
        ----------------------------*/
        playToggle: function (state) {

            if (state == 'play') {
                // If image, swap to pause
                if ($(vars.play_button).attr('src')) $(vars.play_button).attr("src", vars.image_path + "pause.png");
                if (api.options.progress_bar && !vars.is_paused) theme.progressBar();
            } else if (state == 'pause') {
                // If image, swap to play
                if ($(vars.play_button).attr('src')) $(vars.play_button).attr("src", vars.image_path + "play.png");
                if (api.options.progress_bar && vars.is_paused) $(vars.progress_bar).stop().animate({ left: -$(window).width() }, 0);
            }

        },


        /* Before Slide Transition
        ----------------------------*/
        beforeAnimation: function (direction) {
            if (api.options.progress_bar && !vars.is_paused) $(vars.progress_bar).stop().animate({ left: -$(window).width() }, 0);


            // Update slide number
            if (vars.slide_current.length) {
                $(vars.slide_current).html(vars.current_slide + 1);
            }

            // Update slide caption

            if (api.getField('id')) {
                var mediaID = api.getField('id');
                var memberBasketUrl = $("#MemberBasketAddMedia").attr("href");

                var regexS = "[\\?&]mediaID=([^&#]*)";
                var regex = new RegExp(regexS);
                var results = regex.exec(memberBasketUrl);

                memberBasketUrl = memberBasketUrl.replace(results[1], mediaID);

                $("#MemberBasketAddMedia").attr("href", memberBasketUrl);
            }


            // Highlight current thumbnail and adjust row position
            if (api.options.thumb_links) {

                $('.current-thumb').removeClass('current-thumb');
                $('li', vars.thumb_list).eq(vars.current_slide).addClass('current-thumb');

                // If thumb out of view
                if ($(vars.thumb_list).width() > $(vars.thumb_tray).width()) {
                    // If next slide direction
                    if (direction == 'next') {
                        if (vars.current_slide == 0) {
                            vars.thumb_page = 0;
                            $(vars.thumb_list).stop().animate({ 'left': vars.thumb_page }, { duration: 500, easing: 'easeOutExpo' });
                        } else if ($('.current-thumb').offset().left - $(vars.thumb_tray).offset().left >= vars.thumb_interval) {
                            vars.thumb_page = vars.thumb_page - vars.thumb_interval;
                            $(vars.thumb_list).stop().animate({ 'left': vars.thumb_page }, { duration: 500, easing: 'easeOutExpo' });
                        }
                        // If previous slide direction
                    } else if (direction == 'prev') {
                        if (vars.current_slide == api.options.slides.length - 1) {
                            vars.thumb_page = Math.floor($(vars.thumb_list).width() / vars.thumb_interval) * -vars.thumb_interval;
                            if ($(vars.thumb_list).width() <= -vars.thumb_page) vars.thumb_page = vars.thumb_page + vars.thumb_interval;
                            $(vars.thumb_list).stop().animate({ 'left': vars.thumb_page }, { duration: 500, easing: 'easeOutExpo' });
                        } else if ($('.current-thumb').offset().left - $(vars.thumb_tray).offset().left < 0) {
                            if (vars.thumb_page + vars.thumb_interval > 0) return false;
                            vars.thumb_page = vars.thumb_page + vars.thumb_interval;
                            $(vars.thumb_list).stop().animate({ 'left': vars.thumb_page }, { duration: 500, easing: 'easeOutExpo' });
                        }
                    }
                }


            }

        },


        /* After Slide Transition
        ----------------------------*/
        afterAnimation: function () {
            if (api.options.progress_bar && !vars.is_paused) theme.progressBar(); //  Start progress bar

            /* Update Fields
            ----------------------------*/

        },


        /* Progress Bar
        ----------------------------*/
        progressBar: function () {
            $(vars.progress_bar).stop().animate({ left: -$(window).width() }, 0).animate({ left: 0 }, api.options.slide_interval);
        }


    };


    /* Theme Specific Variables
    ----------------------------*/
    $.supersized.themeVars = {

        // Internal Variables
        progress_delay: false, 			// Delay after resize before resuming slideshow
        thumb_page: false, 			// Thumbnail page
        thumb_interval: false, 			// Thumbnail interval
        image_path: 'img/', 			// Default image path

        // General Elements							
        play_button: '#pauseplay', 	// Play/Pause button
        next_slide: '#nextslide', 	// Next slide button
        prev_slide: '#prevslide', 	// Prev slide button
        next_thumb: '#nextthumb', 	// Next slide thumb button
        prev_thumb: '#prevthumb', 	// Prev slide thumb button

        slide_caption: '#slidecaption', // Slide caption
        slide_current: '.slidenumber', 	// Current slide number
        slide_total: '.totalslides', 	// Total Slides
        slide_list: '#slide-list', 	// Slide jump list							

        thumb_tray: '#thumb-tray', 	// Thumbnail tray
        thumb_list: '#thumb-list', 	// Thumbnail list
        thumb_forward: '#thumb-forward', // Cycles forward through thumbnail list
        thumb_back: '#thumb-back', 	// Cycles backwards through thumbnail list
        tray_arrow: '#tray-arrow', 	// Thumbnail tray button arrow
        tray_button: '#tray-button', 	// Thumbnail tray button

        progress_bar: '#progress-bar'		// Progress bar

    };

    /* Theme Specific Options
    ----------------------------*/
    $.supersized.themeOptions = {

        progress_bar: 0, 	// Timer for each slide											
        mouse_scrub: 0		// Thumbnails move with mouse

    };


})(jQuery);

