/*
    Supersized - Fullscreen Slideshow jQuery Plugin
    Version 3.1.3
    www.buildinternet.com/project/supersized
    
    By Sam Dunn / One Mighty Roar (www.onemightyroar.com)
    Released under MIT License / GPL License
    
    Altered and Adapted by: Ohio University - School of Visual Communications
                            for use in the 2011 Soul of Athens Project
*/

(function($) {

    //Add in Supersized elements
    $(document).ready(function() {
        $('body').prepend('<div id="supersized-loader"></div>').prepend('<div id="supersized"></div>');

        //PAGER STUFF
	$('#grid_view').pager('div.pager');
	
	// drop down icons
        var gridIcon = $("div#load_grid img");
        var listIcon = $("div#load_list img");
		

        //PAGER STUFF
        $('#grid_view').pager('div.pager');

        //autoload grid
        $("div#load_here").load("grid.html", function() { gridIcon.addClass("current"); });

        // on grid icon click
        gridIcon.click(

        function() {
            
			if (gridIcon.attr("css") !== 'current') {
                
				$("div#load_here").load("grid.html", function() { 
					listIcon.removeClass("current");
					gridIcon.addClass("current"); 
					
			});
				
            }
        }); // end grid icon CLICK

        // on list icon click
        listIcon.click(

        function() {
            if (listIcon.attr("css") !== 'current') {
                
				$("div#load_here").load("list.html", function() {
					gridIcon.removeClass("current"); // remove grid class current
					listIcon.addClass("current"); // add list class current						
				});
            }
        }); // end list icon CLICK


        //move the image in pixel
        var move = -15;

        //zoom percentage, 1.2 =135%
        var zoom = 1.2;

        //On mouse over those thumbnail
        $('.item').hover(function() {

            //Set the width and height according to the zoom percentage
            width = $('.item').width() * zoom;
            height = $('.item').height() * zoom;

            //Move and zoom the image
            $(this).find('img').stop(false, true).animate({
                'width': width,
                'height': height,
                'top': move,
                'left': move
            }, {
                duration: 200
            });

            //Display the caption
            $(this).find('div.caption').stop(false, true).fadeIn(200);
        }, function() {
            //Reset the image
            $(this).find('img').stop(false, true).animate({
                'width': $('.item').width(),
                'height': $('.item').height(),
                'top': '0',
                'left': '0'
            }, {
                duration: 100
            });

            //Hide the caption
            $(this).find('div.caption').stop(false, true).fadeOut(200);
        });


        // jQuery Supersized Script -- create "Slides" array for slider
        jQuery(function($) {

            $.supersized({
                slides: [
                    {
                    image: 'img/homepage/1-love.jpg',
                    title: 'LOVE IN',
                    title2: 'LOST PLACES',
                    story_link: 'love-in-lost-places-1.html',
                    byline_name_1: 'ANDREA MORALES',
                    byline_role_1: 'Created by',
                    desc: 'Jameska McKee deals with romance, a dance and coming of age in small-town Ohio.'},
                {
                    image: 'img/homepage/2-driven.jpg',
                    title2: 'DRIVEN',
                    story_link: 'driven.html',
                    byline_name_1: 'DANIEL REESE',
                    byline_role_1: 'Created by',
                    desc: 'Clocking in when others clock out'},
                {
                    image: 'img/homepage/16-honor-brother.jpg',
                    title: 'HONOR THY',
                    title2: 'BROTHER',
                    story_link: 'honor-thy-brother.html',
                    byline_name_1: 'JIM MCAULEY',
                    byline_role_1: 'Created by',
                    byline_name_2: 'MADDIE MEYER',
                    byline_role_2: 'Created by',
                    desc: 'Aging veterans pay tribute to the fallen'},
                {
                    image: 'img/homepage/3-not-here.jpg',
                    title: 'NOT HERE',
                    title2: 'OR THERE',
                    story_link: 'not-here-or-there-1.html',
                    byline_name_1: 'DARCY HOLDORF',
                    byline_role_1: 'Created by',
                    desc: 'Chinese students at Ohio University just try to be themselves.'},
                {
                    image: 'img/homepage/5-refuge.jpg',
                    title2: 'THE REFUGE',
                    story_link: 'the-refuge.html',
                    byline_name_1: 'MEG ROUSSOS',
                    byline_role_1: 'Created by',
                    desc: 'A family&#146;s vision to provide a place for rest and shelter'},
                {
                    image: 'img/homepage/6-wildLife.jpg',
                    title2: 'THE WILD LIFE',
                    story_link: 'the-wild-life-1.html',
                    byline_name_1: 'SUSANNAH KAY',
                    byline_role_1: 'Photography and Audio by',
                    byline_name_2: 'LAURA MCDERMOTT',
                    byline_role_2: 'Additional Photography by',
                    byline_name_3: 'RISA SEIDMAN',
                    byline_role_3: 'Written by',
                    desc: 'A retired small animal veterinarian dreams of something bigger.'},
                {
                    image: 'img/homepage/7-adrift.jpg',
                    title2: 'ADRIFT',
                    story_link: 'adrift-1.html',
                    byline_name_1: 'BRAD VEST',
                    byline_role_1: 'Created by',
                    desc: 'A story about drugs, family and absence along a bend in the river'},
                {
                    image: 'img/homepage/8-hold-close.jpg',
                    title: 'THE THINGS THAT',
                    title2: 'WE HOLD CLOSE',
                    story_link: 'the-things-that-we-hold-close.html',
                    byline_name_1: 'CONOR LAMB',
                    byline_role_1: 'Audio and Video by',
                    byline_name_2: 'PATRICK ODEN and SAM OWENS',
                    byline_role_2: 'Photography by',
                    byline_name_4: 'RISA SEIDMAN',
                    byline_role_4: 'Written by',
                    desc: 'People express themselves through their mental and physical environments.'},
                {
                    image: 'img/homepage/9-garden.jpg',
                    title: 'I ALSO',
                    title2: 'LOVE TO GARDEN',
                    story_link: 'i-also-love-to-garden-1.html',
                    byline_name_1: 'ANITA VIZIREANU',
                    byline_role_1: 'Created by',
                    desc: 'Noah Trembly struggles for independence'},
                {
                    image: 'img/homepage/10-all-black.jpg',
                    title2: 'ALL BLACK',
                    story_link: 'all-black.html',
                    byline_name_1: 'ALEXANDRA MIHALE',
                    byline_role_1: 'Created by',
                    desc: 'Eleven guys challenge most people&#146;s definition of young black men.'},
                {
                    image: 'img/homepage/11-consent.jpg',
                    title: 'BRITTANY&#146;S',
                    title2: 'CONSENT',
                    story_link: 'brittanys-consent.html',
                    byline_name_1: 'OCTAVIO JONES',
                    byline_role_1: 'Created by',
                    desc: 'A single teenage mother struggles with her child&#146;s father in prison.'},
                {
                    image: 'img/homepage/12-world-owned.jpg',
                    title: 'THE WORLD',
                    title2: 'I AM OWNED TO',
                    story_link: 'the-world-i-am-owned-to.html',
                    byline_name_1: 'EMINE ZIYATDINOVA',
                    byline_role_1: 'Photography by',
                    byline_name_2: 'EMINE ZIYATDINOVA and PAOLO BALBOA',
                    byline_role_2: 'Audio by',
                    byline_name_3: 'PAOLO BALBOA',
                    byline_role_3: 'Written by',
                    desc: 'Celeste Taylor forges familial bonds in the Society for Creative Anachronism'},
                {
                    image: 'img/homepage/13-twist-faith.jpg',
                    title: 'TWIST OF',
                    title2: 'FAITH',
                    story_link: 'twist-of-faith.html',
                    byline_name_1: 'CAYCE CLIFFORD',
                    byline_role_1: 'Created by',
                    desc: 'After their home was destroyed by a tornado, the Hanning family finds their path to faith.'},
                {
                    image: 'img/homepage/14-faded-union.jpg',
                    title2: 'FADED UNION',
                    story_link: 'faded-union-1.html',
                    byline_name_1: 'ZACH NELSON',
                    byline_role_1: 'Created by',
                    desc: 'One Ohio family faces the decline of American labor unions.'},
                {
                    image: 'img/homepage/15-almost-out.jpg',
                    title2: 'ALMOST OUT',
                    story_link: 'almost-out-1.html',
                    byline_name_1: 'VICTOR J. BLUE',
                    byline_role_1: 'Created by',
                    desc: 'Inmates at SEPTA Correctional prepare for life outside the walls.'},
                {
                    image: 'img/homepage/ipad_ad.jpg',
                    title: 'PRINT DESIGN',
                    title2: 'MEETS THE <span class="itunes">i</span>PAD',
                    story_link: 'http://itunes.apple.com/us/app/soul-athens-our-dreams-are/id440636190?mt=8&ls=1',
                    desc: 'The tablet edition combines photos, videos, interactive graphics and written word to deliver extended versions of selected stories. <a href="http://itunes.apple.com/us/app/soul-athens-our-dreams-are/id440636190?mt=8&ls=1" target="_blank">Download the app</a>, and view on the go&mdash;take our dreams with you.'}] // end slides array
            });
        });

    }); // end on document ready load


    var checkSpanline1 = function() {
        // Doo something
        var titleLine1 = $("span.line1");
        var titleLine2 = $("span.line2");


        if (titleLine1.html() === "") {
            //alert('23423');
            titleLine1.css({
                'display': 'none'
            }); // remove span.line1 for spacing issue
            titleLine2.css({
                'margin-top': '76px'
            }); // add margin to span.line2 for spacing issue
        }
        else {

            titleLine1.css({
                'display': 'inline-block'
            });
            titleLine2.css({
                'margin-top': '5px'
            }); // add margin to span.line2 for spacing issue
        }
    };


    //Resize image on ready or resize
    $.supersized = function(options) {

        //Default settings
        var settings = {

            //Functionality
            slideshow: 1,
            //Slideshow on/off
            autoplay: 1,
            //Slideshow starts playing automatically
            start_slide: 0,
            //Start slide (0 is random)
            random: 0,
            //Randomize slide order (Ignores start slide)
            slide_interval: 8000,
            //Length between transitions
            transition: 6,
            //0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left
            transition_speed: 750,
            //Speed of transition
            new_window: 1,
            //Image links open in new window/tab
            pause_hover: 0,
            //Pause slideshow on hover
            keyboard_nav: 1,
            //Keyboard navigation on/off
            performance: 1,
            //0-Normal, 1-Hybrid speed/quality, 2-Optimizes image quality, 3-Optimizes transition speed // (Only works for Firefox/IE, not Webkit)
            image_protect: 1,
            //Disables image dragging and right click with Javascript
            image_path: 'img/',
            //Default image path
            //Size & Position
            min_width: 0,
            //Min width allowed (in pixels)
            min_height: 0,
            //Min height allowed (in pixels)
            vertical_center: 1,
            //Vertically center background
            horizontal_center: 1,
            //Horizontally center background
            fit_portrait: 0,
            //Portrait images will not exceed browser height
            fit_landscape: 0,
            //Landscape images will not exceed browser width  
            //Components
            navigation: 1,
            //Slideshow controls on/off
            thumbnail_navigation: 0,
            //Thumbnail navigation
            slide_counter: 1,
            //Display slide numbers
            slide_captions: 1 //Slide caption (Pull from "title" in slides array)
        };

        //Default elements
        var element = $('#supersized'); //Supersized container
        var pauseplay = '#pauseplay'; //Pause/Play
		
        //Combine options with default settings
        if (options) {
            options = $.extend(settings, options); //Pull from both defaults and supplied options
        } else {
            options = $.extend(settings); //Only pull from default settings        
        }

        //General slideshow variables
        var inAnimation = false; //Prevents animations from stacking
        var isPaused = false; //Tracks paused on/off
        var image_path = options.image_path; //Default image path for navigation control buttons


        // on gobal drop-down active --- pause slideshow, grey out.
        var checkPanelactive = function() {
            // Doo something
            if ($(".slide a.btn-slide").hasClass("active")) {
                // retract panel
                $("#panel").slideToggle("slow");

                // remove class from a.btn-slide button
                $(".slide a.btn-slide").removeClass("active");

                // remove grey-out background
                $("#greyout-background").fadeOut("slow");
                $("#greyout-background").removeClass("greyout-background-display");

                // restart slideshow, update slideshow interval, change pause-play button                 
                if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause-1.png"); //If image, swap to pause
                //Resume slideshow
                isPaused = false;
                slideshow_interval = setInterval(nextslide, options.slide_interval);

                return false;

            }
            else {}

        }

        // panel slide && grey out function
        $(".slide a").click(function(e) {

            $("#panel").slideToggle("slow");
            $(this).toggleClass("active");

            // user clicks .slide a ("Project") && greyout is displayed - close grey out
            if ($("#greyout-background").hasClass("greyout-background-display")) {

                // fade out and remove class
                $("#greyout-background").fadeOut("slow");
                $("#greyout-background").removeClass("greyout-background-display");

                // restart slideshow, update slideshow interval, change pause-play button                 
                if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause-1.png"); //If image, swap to pause
                //Resume slideshow
                isPaused = false;
                slideshow_interval = setInterval(nextslide, options.slide_interval);

                return false;


            }
            else {

                $("#greyout-background").addClass("greyout-background-display");
                $("#greyout-background").css({
                    "opacity": "0.5"
                }).fadeIn("slow");

                // pause slideshow, update slideshow interval, change pause-play button
                if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "play.png"); //If image, swap to play
                //Stop slideshow
                clearInterval(slideshow_interval);
                isPaused = true;

                return false;


            }

            return false;
        });

        // user clicks escape - close grey out
        $(document).keypress(function(e) {
            if (e.keyCode == 27) {
                $("#greyout-background").fadeOut("slow");
                // retract panel?
                checkPanelactive();
            }
        });

        // user clicks background - close grey out
        $("#greyout-background").click(function() {
            $("#greyout-background").fadeOut("slow");
            checkPanelactive();

        });






        //Determine starting slide (random or defined)
        if (options.start_slide) {
            var currentSlide = options.start_slide - 1; //Default to defined start slide
        } else {
            var currentSlide = Math.floor(Math.random() * options.slides.length); //Generate random slide number
        }

        //If links should open in new window
        var linkTarget = "_self";

        // options.new_window ? ' target="_self"' : '';
        //Set slideshow quality (Supported only in FF and IE, no Webkit)
        if (options.performance == 3) {
            element.addClass('speed'); //Faster transitions
        } else if ((options.performance == 1) || (options.performance == 2)) {
            element.addClass('quality'); //Higher image quality
        }






        /***Load initial set of images***/

        if (options.slides.length > 1) {
            //Set previous image
            currentSlide - 1 < 0 ? loadPrev = options.slides.length - 1 : loadPrev = currentSlide - 1; 
			//If slide is 1, load last slide as previous
            //var imageLink = (options.slides[loadPrev].url) ? "href='" + options.slides[loadPrev].url + "'" : "";
            var imageLink = (options.slides[loadPrev].story_link) ? "href='" + options.slides[loadPrev].story_link + "'" : "";


            // var storyTitle = (options.slides[loadPrev].storytitle);
            // alert(storyTitle);    
            $("<img/>").attr("src", options.slides[loadPrev].image).appendTo(element).wrap('<a ' + imageLink + linkTarget + '></a>');

        }

        //Set current image
        imageLink = (options.slides[currentSlide].story_link) ? "href='" + options.slides[currentSlide].story_link + "'" : "";
        $("<img/>").attr("src", options.slides[currentSlide].image).appendTo(element).wrap('<a class="activeslide" ' + imageLink + linkTarget + '></a>');

        if (options.slides.length > 1) {
            //Set next image
            currentSlide == options.slides.length - 1 ? loadNext = 0 : loadNext = currentSlide + 1; //If slide is last, load first slide as next
            imageLink = (options.slides[loadNext].story_link) ? "href='" + options.slides[loadNext].story_link + "'" : "";
            $("<img/>").attr("src", options.slides[loadNext].image).appendTo(element).wrap('<a ' + imageLink + linkTarget + '></a>');
        } /***End load initial images***/

        element.hide(); //Hide image to be faded in
        $('#controls-wrapper').hide(); //Hide controls to be displayed
        //Account for loading in IE
        $(document).ready(function() {
            resizenow();
        });

        $(window).load(function() {

            $('#supersized-loader').hide(); //Hide loading animation
            element.fadeIn('fast'); //Fade in background
            $('#controls-wrapper').show(); //Display controls
            //Display thumbnails
            if (options.thumbnail_navigation) {

                //Load previous thumbnail
                currentSlide - 1 < 0 ? prevThumb = options.slides.length - 1 : prevThumb = currentSlide - 1;
                $('#prevthumb').show().html($("<img/>").attr("src", options.slides[prevThumb].image));

                //Load next thumbnail
                currentSlide == options.slides.length - 1 ? nextThumb = 0 : nextThumb = currentSlide + 1;
                $('#nextthumb').show().html($("<img/>").attr("src", options.slides[nextThumb].image));

            }

            resizenow(); //Resize background image
            // load inital caption
            // if (options.slide_captions) $('#slidecaption').html(options.slides[currentSlide].title);        //Pull caption from array
            // load inital slide information
            // Soul Title, Credits, Desc, Story Link
            // TITLE
            // title : 'Athens', title2 : 'Limo Driver'
            (options.slides[currentSlide].title) ? $('.line1').html(options.slides[currentSlide].title) : $('.line1').html('');
            (options.slides[currentSlide].title2) ? $('.line2').html(options.slides[currentSlide].title2) : $('.line2').html('');

            // CREDITS
            // byline_name : 'MATT SPOLAR', byline_role : 'Designer',
            (options.slides[currentSlide].byline_name_1) ? $('.byline_name_1').html(options.slides[currentSlide].byline_name_1) : $('.byline_name_1').html('');
            (options.slides[currentSlide].byline_role_1) ? $('.byline_role_1').html(options.slides[currentSlide].byline_role_1) : $('.byline_role_1').html('');
            //2
            (options.slides[currentSlide].byline_name_2) ? $('.byline_name_2').html(options.slides[currentSlide].byline_name_2) : $('.byline_name_2').html('');
            (options.slides[currentSlide].byline_role_2) ? $('.byline_role_2').html(options.slides[currentSlide].byline_role_2) : $('.byline_role_2').html('');
            //3
            (options.slides[currentSlide].byline_name_3) ? $('.byline_name_3').html(options.slides[currentSlide].byline_name_3) : $('.byline_name_3').html('');
            (options.slides[currentSlide].byline_role_3) ? $('.byline_role_3').html(options.slides[currentSlide].byline_role_3) : $('.byline_role_3').html('');

            //4
            (options.slides[currentSlide].byline_name_4) ? $('.byline_name_4').html(options.slides[currentSlide].byline_name_4) : $('.byline_name_4').html('');
            (options.slides[currentSlide].byline_role_4) ? $('.byline_role_4').html(options.slides[currentSlide].byline_role_4) : $('.byline_role_4').html('');


            // DESCRIPTION
            // desc : 'John Smith works numerous jobs in order to sustain his families lifestyle.' },
            (options.slides[currentSlide].desc) ? $('.description').html(options.slides[currentSlide].desc) : $('.description').html('');

            // STORY LINK
            // story_link : 'http://www.google.com'
            // declare and assign variable for story link
            var story_link = (options.slides[currentSlide].story_link);

            // update href of a.story_link
            $("a.story_link").attr('href', story_link);

            checkSpanline1(); // check if span line one is empty and make css.display: none
            if (!(options.navigation)) $('#play-pause-nav').hide(); //Display navigation

            //Start slideshow if enabled
            if (options.slideshow && options.slides.length > 1) {

                if (options.slide_counter) { //Initiate slide counter if active
                    $('#slidecounter .slidenumber').html(currentSlide + 1); //Pull initial slide number from options        
                    $('#slidecounter .totalslides').html(options.slides.length); //Pull total from length of array
                }

                slideshow_interval = setInterval(nextslide, options.slide_interval); //Initiate slide interval
                //Prevent slideshow if autoplay disabled
                if (!(options.autoplay)) {

                    clearInterval(slideshow_interval); //Stop slideshow
                    isPaused = true; //Mark as paused
                    if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "play.png"); //If pause play button is image, swap src
                }


                //Thumbnail Navigation
                if (options.thumbnail_navigation) {

                    //Next thumbnail clicked
                    $('#nextthumb').click(function() {

                        if (inAnimation) return false; //Abort if currently animating
                        clearInterval(slideshow_interval); //Stop slideshow
                        nextslide(element, options); //Go to next slide
                        if (!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval); //If not paused, resume slideshow
                        return false;

                    });

                    //Previous thumbnail clicked
                    $('#prevthumb').click(function() {

                        if (inAnimation) return false; //Abort if currently animating
                        clearInterval(slideshow_interval); //Stop slideshow
                        prevslide(element, options); //Go to previous slide
                        if (!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval); //If not paused, resume slideshow
                        return false;

                    });

                }

                //Navigation controls
                if (options.navigation) {

                    $('#play-pause-nav a').click(function() {
                        $(this).blur();
                        return false;
                    });

                    //Next button clicked
                    $('#nextslide').click(function() {

                        if (inAnimation) return false; //Abort if currently animating
                        clearInterval(slideshow_interval); //Stop slideshow
                        nextslide(); //Go to next slide
                        if (!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval); //If not paused, resume slideshow
                        return false;

                    });

                    //If next slide button is image
                    if ($('#nextslide').attr('src')) {

                        $('#nextslide').mousedown(function() {
                            $(this).attr("src", image_path + "fwd.png");
                        });
                        $('#nextslide').mouseup(function() {
                            $(this).attr("src", image_path + "fwd.png");
                        });
                        $('#nextslide').mouseout(function() {
                            $(this).attr("src", image_path + "fwd.png");
                        });

                    }

                    //Previous button clicked
                    $('#prevslide').click(function() {

                        if (inAnimation) return false; //Abort if currently animating
                        clearInterval(slideshow_interval); //Stop slideshow
                        prevslide(); //Go to previous slide
                        if (!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval); //If not paused, resume slideshow
                        return false;

                    });

                    //If previous slide button is image
                    if ($('#prevslide').attr('src')) {

                        $('#prevslide').mousedown(function() {
                            $(this).attr("src", image_path + "bck.png");
                        });
                        $('#prevslide').mouseup(function() {
                            $(this).attr("src", image_path + "bck.png");
                        });
                        $('#prevslide').mouseout(function() {
                            $(this).attr("src", image_path + "bck.png");
                        });

                    }

                    //Pause/play element clicked
                    $(pauseplay).click(function() {

                        if (inAnimation) return false; //Abort if currently animating
                        if (isPaused) {

                            if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause-1.png"); //If image, swap to pause
                            //Resume slideshow
                            isPaused = false;
                            slideshow_interval = setInterval(nextslide, options.slide_interval);

                        } else {

                            if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "play.png"); //If image, swap to play
                            //Stop slideshow
                            clearInterval(slideshow_interval);
                            isPaused = true;

                        }

                        return false;

                    });

                } //End navigation controls
            } //End slideshow options
        }); //End window load
        //Keyboard Navigation
        if (options.keyboard_nav) {

            $(document.documentElement).keydown(function(event) {

                if ((event.keyCode == 37) || (event.keyCode == 40)) { //Left Arrow or Down Arrow
                    if ($('#prevslide').attr('src')) $('#prevslide').attr("src", image_path + "bck.png"); //If image, change back button to active
                } else if ((event.keyCode == 39) || (event.keyCode == 38)) { //Right Arrow or Up Arrow
                    if ($('#nextslide').attr('src')) $('#nextslide').attr("src", image_path + "fwd.png"); //If image, change next button to active
                }

            });

            $(document.documentElement).keyup(function(event) {

                clearInterval(slideshow_interval); //Stop slideshow, prevent buildup
                if ((event.keyCode == 37) || (event.keyCode == 40)) { //Left Arrow or Down Arrow
                    if ($('#prevslide').attr('src')) $('#prevslide').attr("src", image_path + "bck.png"); //If image, change back button to normal
                    if (inAnimation) return false; //Abort if currently animating
                    clearInterval(slideshow_interval); //Stop slideshow
                    prevslide(); //Go to previous slide
                    if (!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval); //If not paused, resume slideshow
                    return false;

                } else if ((event.keyCode == 39) || (event.keyCode == 38)) { //Right Arrow or Up Arrow
                    if ($('#nextslide').attr('src')) $('#nextslide').attr("src", image_path + "fwd.png"); //If image, change next button to normal
                    if (inAnimation) return false; //Abort if currently animating
                    clearInterval(slideshow_interval); //Stop slideshow
                    nextslide(); //Go to next slide
                    if (!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval); //If not paused, resume slideshow
                    return false;

                } else if (event.keyCode == 32) { //Spacebar
                    if (inAnimation) return false; //Abort if currently animating
                    if (isPaused) {
                        if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause-1.png"); //If image, swap to pause
                        isPaused = false; //Resume slideshow
                        slideshow_interval = setInterval(nextslide, options.slide_interval);
                    } else {
                        if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "play.png"); //If image, swap to play
                        isPaused = true; //Mark as paused
                    }

                    return false;
                }

            });
        }


        //Pause when hover on image
        if (options.slideshow && options.pause_hover) {
            $(element).hover(function() {

                if (inAnimation) return false; //Abort if currently animating
                if (!(isPaused) && options.navigation) {
                    if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause-1.png"); //If image, swap to pause
                    clearInterval(slideshow_interval);
                }

            }, function() {

                if (!(isPaused) && options.navigation) {
                    if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause-1.png"); //If image, swap to active
                    slideshow_interval = setInterval(nextslide, options.slide_interval);
                }

            });
        }


        //Adjust image when browser is resized
        $(window).resize(function() {
            resizenow();
        });


        //Adjust image size


        function resizenow() {
            return element.each(function() {

                var t = $('img', element);

                //Resize each image seperately
                $(t).each(function() {

                    var ratio = ($(this).height() / $(this).width()).toFixed(2); //Define image ratio
                    thisSlide = $(this);

                    //Gather browser size
                    var browserwidth = $(window).width();
                    var browserheight = $(window).height();
                    var offset;

                    /**Resize image to proper ratio**/

                    if ((browserheight <= options.min_height) && (browserwidth <= options.min_width)) { //If window smaller than minimum width and height
                        if ((browserheight / browserwidth) > ratio) {
                            options.fit_landscape && ratio <= 1 ? resizeWidth(true) : resizeHeight(true); //If landscapes are set to fit
                        } else {
                            options.fit_portrait && ratio > 1 ? resizeHeight(true) : resizeWidth(true); //If portraits are set to fit
                        }

                    } else if (browserwidth <= options.min_width) { //If window only smaller than minimum width
                        if ((browserheight / browserwidth) > ratio) {
                            options.fit_landscape && ratio <= 1 ? resizeWidth(true) : resizeHeight(); //If landscapes are set to fit
                        } else {
                            options.fit_portrait && ratio > 1 ? resizeHeight() : resizeWidth(true); //If portraits are set to fit
                        }

                    } else if (browserheight <= options.min_height) { //If window only smaller than minimum height
                        if ((browserheight / browserwidth) > ratio) {
                            options.fit_landscape && ratio <= 1 ? resizeWidth() : resizeHeight(true); //If landscapes are set to fit
                        } else {
                            options.fit_portrait && ratio > 1 ? resizeHeight(true) : resizeWidth(); //If portraits are set to fit
                        }

                    } else { //If larger than minimums
                        if ((browserheight / browserwidth) > ratio) {
                            options.fit_landscape && ratio <= 1 ? resizeWidth() : resizeHeight(); //If landscapes are set to fit
                        } else {
                            options.fit_portrait && ratio > 1 ? resizeHeight() : resizeWidth(); //If portraits are set to fit
                        }

                    }

                    /**End Image Resize**/


                    /**Resize Functions**/

                    function resizeWidth(minimum) {
                        if (minimum) { //If minimum height needs to be considered
                            if (thisSlide.width() < browserwidth || thisSlide.width() < options.min_width) {
                                if (thisSlide.width() * ratio >= options.min_height) {
                                    thisSlide.width(options.min_width);
                                    thisSlide.height(thisSlide.width() * ratio);
                                } else {
                                    resizeHeight();
                                }
                            }
                        } else {
                            if (options.min_height >= browserheight && !options.fit_landscape) { //If minimum height needs to be considered
                                if (browserwidth * ratio >= options.min_height || (browserwidth * ratio >= options.min_height && ratio <= 1)) { //If resizing would push below minimum height or image is a landscape
                                    thisSlide.width(browserwidth);
                                    thisSlide.height(browserwidth * ratio);
                                } else if (ratio > 1) { //Else the image is portrait
                                    thisSlide.height(options.min_height);
                                    thisSlide.width(thisSlide.height() / ratio);
                                } else if (thisSlide.width() < browserwidth) {
                                    thisSlide.width(browserwidth);
                                    thisSlide.height(thisSlide.width() * ratio);
                                }
                            } else { //Otherwise, resize as normal
                                thisSlide.width(browserwidth);
                                thisSlide.height(browserwidth * ratio);
                            }
                        }
                    };

                    function resizeHeight(minimum) {
                        if (minimum) { //If minimum height needs to be considered
                            if (thisSlide.height() < browserheight) {
                                if (thisSlide.height() / ratio >= options.min_width) {
                                    thisSlide.height(options.min_height);
                                    thisSlide.width(thisSlide.height() / ratio);
                                } else {
                                    resizeWidth(true);
                                }
                            }
                        } else { //Otherwise, resized as normal
                            if (options.min_width >= browserwidth) { //If minimum width needs to be considered
                                if (browserheight / ratio >= options.min_width || ratio > 1) { //If resizing would push below minimum width or image is a portrait
                                    thisSlide.height(browserheight);
                                    thisSlide.width(browserheight / ratio);
                                } else if (ratio <= 1) { //Else the image is landscape
                                    thisSlide.width(options.min_width);
                                    thisSlide.height(thisSlide.width() * ratio);
                                }
                            } else { //Otherwise, resize as normal
                                thisSlide.height(browserheight);
                                thisSlide.width(browserheight / ratio);
                            }
                        }
                    };

                    /**End Resize Functions**/


                    //Horizontally Center
                    if (options.horizontal_center) {
                        $(this).css('left', (browserwidth - $(this).width()) / 2);
                    }

                    //Vertically Center
                    if (options.vertical_center) {
                        $(this).css('top', (browserheight - $(this).height()) / 2);
                    }

                });

                //Basic image drag and right click protection
                if (options.image_protect) {

                    $('img', element).bind("contextmenu", function() {
                        return false;
                    });
                    $('img', element).bind("mousedown", function() {
                        return false;
                    });

                }

                return false;

            });
        };


        //Next slide


        function nextslide() {

            if (inAnimation) return false; //Abort if currently animating
            else inAnimation = true; //Otherwise set animation marker
            var slides = options.slides; //Pull in slides array
            var currentslide = element.find('.activeslide'); //Find active slide
            currentslide.removeClass('activeslide'); //Remove active class
            if (currentslide.length == 0) currentslide = element.find('a:last'); //If end of set, note this is last slide
            var nextslide = currentslide.next().length ? currentslide.next() : element.find('a:first');
            var prevslide = nextslide.prev().length ? nextslide.prev() : element.find('a:last');

            //Update previous slide
            $('.prevslide').removeClass('prevslide');
            prevslide.addClass('prevslide');

            //Get the slide number of new slide
            currentSlide + 1 == slides.length ? currentSlide = 0 : currentSlide++;

            //If hybrid mode is on drop quality for transition
            if (options.performance == 1) element.removeClass('quality').addClass('speed');

            /**** Image Loading ****/

            //Load next image
            loadSlide = false;

            currentSlide == slides.length - 1 ? loadSlide = 0 : loadSlide = currentSlide + 1; //Determine next slide
            imageLink = (options.slides[loadSlide].story_link) ? "href='" + options.slides[loadSlide].story_link + "'" : ""; //If link exists, build it
            $("<img/>").attr("src", options.slides[loadSlide].image).appendTo(element).wrap("<a " + imageLink + linkTarget + "></a>"); //Append new image
            //Update thumbnails (if enabled)
            if (options.thumbnail_navigation == 1) {

                //Load previous thumbnail
                currentSlide - 1 < 0 ? prevThumb = slides.length - 1 : prevThumb = currentSlide - 1;
                $('#prevthumb').html($("<img/>").attr("src", options.slides[prevThumb].image));

                //Load next thumbnail
                nextThumb = loadSlide;
                $('#nextthumb').html($("<img/>").attr("src", options.slides[nextThumb].image));

            }

            currentslide.prev().remove(); //Remove Old Image
            /**** End Image Loading ****/


            //Update slide number
            if (options.slide_counter) {
                $('#slidecounter .slidenumber').html(currentSlide + 1);
            }

            //Update captions
            if (options.slide_captions) {
                // original caption update
                // (options.slides[currentSlide].title) ? $('#slidecaption').html(options.slides[currentSlide].title) : $('#slidecaption').html('');
                // Soul Title, Credits, Desc, Story Link
                // TITLE
                // title : 'Athens', title2 : 'Limo Driver'
                (options.slides[currentSlide].title) ? $('.line1').html(options.slides[currentSlide].title) : $('.line1').html('');
                (options.slides[currentSlide].title2) ? $('.line2').html(options.slides[currentSlide].title2) : $('.line2').html('');

                // CREDITS
                // byline_name : 'MATT SPOLAR', byline_role : 'Designer',
                (options.slides[currentSlide].byline_name_1) ? $('.byline_name_1').html(options.slides[currentSlide].byline_name_1) : $('.byline_name_1').html('');
                (options.slides[currentSlide].byline_role_1) ? $('.byline_role_1').html(options.slides[currentSlide].byline_role_1) : $('.byline_role_1').html('');
                //2
                (options.slides[currentSlide].byline_name_2) ? $('.byline_name_2').html(options.slides[currentSlide].byline_name_2) : $('.byline_name_2').html('');
                (options.slides[currentSlide].byline_role_2) ? $('.byline_role_2').html(options.slides[currentSlide].byline_role_2) : $('.byline_role_2').html('');
                //3
                (options.slides[currentSlide].byline_name_3) ? $('.byline_name_3').html(options.slides[currentSlide].byline_name_3) : $('.byline_name_3').html('');
                (options.slides[currentSlide].byline_role_3) ? $('.byline_role_3').html(options.slides[currentSlide].byline_role_3) : $('.byline_role_3').html('');

                //4
                (options.slides[currentSlide].byline_name_4) ? $('.byline_name_4').html(options.slides[currentSlide].byline_name_4) : $('.byline_name_4').html('');
                (options.slides[currentSlide].byline_role_4) ? $('.byline_role_4').html(options.slides[currentSlide].byline_role_4) : $('.byline_role_4').html('');


                // DESCRIPTION
                // desc : 'John Smith works numerous jobs in order to sustain his families lifestyle.' },
                (options.slides[currentSlide].desc) ? $('.description').html(options.slides[currentSlide].desc) : $('.description').html('');

                // STORY LINK
                // story_link : 'http://www.google.com'
                // declare and assign variable for story link
                var story_link = (options.slides[currentSlide].story_link);

                // update href of a.story_link
                $("a.story_link").attr('href', story_link);

                checkSpanline1(); // check if span line one is empty and make css.display: none
            }

            nextslide.hide().addClass('activeslide'); //Update active slide
            switch (options.transition) {

            case 0:
                //No transition
                nextslide.show();
                inAnimation = false;
                break;
            case 1:
                //Fade
                nextslide.fadeTo(options.transition_speed, 1, function() {
                    afterAnimation();
                });
                break;
            case 2:
                //Slide Top
                nextslide.animate({
                    top: -$(window).height()
                }, 0).show().animate({
                    top: 0
                }, options.transition_speed, function() {
                    afterAnimation();
                });
                break;
            case 3:
                //Slide Right
                nextslide.animate({
                    left: $(window).width()
                }, 0).show().animate({
                    left: 0
                }, options.transition_speed, function() {
                    afterAnimation();
                });
                break;
            case 4:
                //Slide Bottom
                nextslide.animate({
                    top: $(window).height()
                }, 0).show().animate({
                    top: 0
                }, options.transition_speed, function() {
                    afterAnimation();
                });
                break;
            case 5:
                //Slide Left
                nextslide.animate({
                    left: -$(window).width()
                }, 0).show().animate({
                    left: 0
                }, options.transition_speed, function() {
                    afterAnimation();
                });
                break;
            case 6:
                //Carousel Right
                nextslide.animate({
                    left: $(window).width()
                }, 0).show().animate({
                    left: 0
                }, options.transition_speed, function() {
                    afterAnimation();
                });
                currentslide.animate({
                    left: -$(window).width()
                }, options.transition_speed);
                break;
            case 7:
                //Carousel Left
                nextslide.animate({
                    left: -$(window).width()
                }, 0).show().animate({
                    left: 0
                }, options.transition_speed, function() {
                    afterAnimation();
                });
                currentslide.animate({
                    left: $(window).width()
                }, options.transition_speed);
                break;
            };

        }


        //Previous Slide


        function prevslide() {

            if (inAnimation) return false; //Abort if currently animating
            else inAnimation = true; //Otherwise set animation marker
            var slides = options.slides; //Pull in slides array
            var currentslide = element.find('.activeslide'); //Find active slide
            currentslide.removeClass('activeslide'); //Remove active class
            if (currentslide.length == 0) currentslide = $(element).find('a:first'); //If end of set, note this is first slide
            var nextslide = currentslide.prev().length ? currentslide.prev() : $(element).find('a:last');
            var prevslide = nextslide.next().length ? nextslide.next() : $(element).find('a:first');

            //Update previous slide
            $('.prevslide').removeClass('prevslide');
            prevslide.addClass('prevslide');

            //Get current slide number
            currentSlide == 0 ? currentSlide = slides.length - 1 : currentSlide--;

            //If hybrid mode is on drop quality for transition
            if (options.performance == 1) element.removeClass('quality').addClass('speed');

            /**** Image Loading ****/

            //Load next image
            loadSlide = false;
            currentSlide - 1 < 0 ? loadSlide = slides.length - 1 : loadSlide = currentSlide - 1; //Determine next slide
            imageLink = (options.slides[loadSlide].story_link) ? "href='" + options.slides[loadSlide].story_link + "'" : ""; //If link exists, build it
            $("<img/>").attr("src", options.slides[loadSlide].image).prependTo(element).wrap("<a " + imageLink + linkTarget + "></a>"); //Append new image
            //Update thumbnails (if enabled)
            if (options.thumbnail_navigation == 1) {

                //Load previous thumbnail
                prevThumb = loadSlide;
                $('#prevthumb').html($("<img/>").attr("src", options.slides[prevThumb].image));

                //Load next thumbnail
                currentSlide == slides.length - 1 ? nextThumb = 0 : nextThumb = currentSlide + 1;
                $('#nextthumb').html($("<img/>").attr("src", options.slides[nextThumb].image));
            }

            currentslide.next().remove(); //Remove Old Image
            /**** End Image Loading ****/


            //Update slide counter
            if (options.slide_counter) {
                $('#slidecounter .slidenumber').html(currentSlide + 1);
            }

            //Update captions
            if (options.slide_captions) {

                //(options.slides[currentSlide].title) ? $('#slidecaption').html(options.slides[currentSlide].title) : $('#slidecaption').html('');
                // Soul Title, Credits, Desc, Story Link
                // TITLE
                // title : 'Athens', title2 : 'Limo Driver'
                (options.slides[currentSlide].title) ? $('.line1').html(options.slides[currentSlide].title) : $('.line1').html('');
                (options.slides[currentSlide].title2) ? $('.line2').html(options.slides[currentSlide].title2) : $('.line2').html('');

                // CREDITS
                // byline_name : 'MATT SPOLAR', byline_role : 'Designer',
                (options.slides[currentSlide].byline_name_1) ? $('.byline_name_1').html(options.slides[currentSlide].byline_name_1) : $('.byline_name_1').html('');
                (options.slides[currentSlide].byline_role_1) ? $('.byline_role_1').html(options.slides[currentSlide].byline_role_1) : $('.byline_role_1').html('');
                //2
                (options.slides[currentSlide].byline_name_2) ? $('.byline_name_2').html(options.slides[currentSlide].byline_name_2) : $('.byline_name_2').html('');
                (options.slides[currentSlide].byline_role_2) ? $('.byline_role_2').html(options.slides[currentSlide].byline_role_2) : $('.byline_role_2').html('');
                //3
                (options.slides[currentSlide].byline_name_3) ? $('.byline_name_3').html(options.slides[currentSlide].byline_name_3) : $('.byline_name_3').html('');
                (options.slides[currentSlide].byline_role_3) ? $('.byline_role_3').html(options.slides[currentSlide].byline_role_3) : $('.byline_role_3').html('');

                //4
                (options.slides[currentSlide].byline_name_4) ? $('.byline_name_4').html(options.slides[currentSlide].byline_name_4) : $('.byline_name_4').html('');
                (options.slides[currentSlide].byline_role_4) ? $('.byline_role_4').html(options.slides[currentSlide].byline_role_4) : $('.byline_role_4').html('');


                // DESCRIPTION
                // desc : 'John Smith works numerous jobs in order to sustain his families lifestyle.' },
                (options.slides[currentSlide].desc) ? $('.description').html(options.slides[currentSlide].desc) : $('.description').html('');

                // STORY LINK
                // story_link : 'http://www.google.com'
                // declare and assign variable for story link
                var story_link = (options.slides[currentSlide].story_link);

                // update href of a.story_link
                $("a.story_link").attr('href', story_link);

                checkSpanline1(); // check if span line one is empty and make css.display: none
            }

            nextslide.hide().addClass('activeslide'); //Update active slide
            switch (options.transition) {

            case 0:
                //No transition
                nextslide.show();
                inAnimation = false;
                break;
            case 1:
                //Fade
                nextslide.fadeTo(options.transition_speed, 1, function() {
                    afterAnimation();
                });
                break;
            case 2:
                //Slide Top (reverse)
                nextslide.animate({
                    top: $(window).height()
                }, 0).show().animate({
                    top: 0
                }, options.transition_speed, function() {
                    afterAnimation();
                });
                break;
            case 3:
                //Slide Right (reverse)
                nextslide.animate({
                    left: -$(window).width()
                }, 0).show().animate({
                    left: 0
                }, options.transition_speed, function() {
                    afterAnimation();
                });
                break;
            case 4:
                //Slide Bottom (reverse)
                nextslide.animate({
                    top: -$(window).height()
                }, 0).show().animate({
                    top: 0
                }, options.transition_speed, function() {
                    afterAnimation();
                });
                break;
            case 5:
                //Slide Left (reverse)
                nextslide.animate({
                    left: $(window).width()
                }, 0).show().animate({
                    left: 0
                }, options.transition_speed, function() {
                    afterAnimation();
                });
                break;
            case 6:
                //Carousel Right (reverse)
                nextslide.animate({
                    left: -$(window).width()
                }, 0).show().animate({
                    left: 0
                }, options.transition_speed, function() {
                    afterAnimation();
                });
                currentslide.animate({
                    left: $(window).width()
                }, options.transition_speed);
                break;
            case 7:
                //Carousel Left (reverse)
                nextslide.animate({
                    left: $(window).width()
                }, 0).show().animate({
                    left: 0
                }, options.transition_speed, function() {
                    afterAnimation();
                });
                currentslide.animate({
                    left: -$(window).width()
                }, options.transition_speed);
                break;
            };

        }

        //After slide animation


        function afterAnimation() {

            inAnimation = false;

            //If hybrid mode is on swap back to higher image quality
            if (options.performance == 1) {
                element.removeClass('speed').addClass('quality');
            }

            resizenow();

        }

    };

})(jQuery);
