/*
	Supersized - Fullscreen Slideshow jQuery Plugin
	Version 3.1.1
	www.buildinternet.com/project/supersized
	
	By Sam Dunn / One Mighty Roar (www.onemightyroar.com)
	Released under MIT License / GPL License
*/

(function (a) {
    a(document).ready(function () {
        a("body").append('<div id="supersized-loader"></div>').append('<div id="supersized"></div>')
    });
    a.supersized = function (o) {
        var c = {
            slideshow: 1,
            autoplay: 1,
            start_slide: 1,
            slide_interval: 5000,
            transition: 1,
            transition_speed: 750,
            new_window: 1,
            pause_hover: 0,
            keyboard_nav: 1,
            performance: 1,
            image_protect: 1,
            image_path: "img/",
            min_width: 0,
            min_height: 0,
            vertical_center: 1,
            horizontal_center: 1,
            fit_portrait: 0,
            fit_landscape: 0,
            navigation: 1,
            thumbnail_navigation: 0,
            slide_counter: 1,
            slide_captions: 1
        };
        var g = a("#supersized");
        var d = "#pauseplay";
        if (o) {
            var o = a.extend(c, o)
        } else {
            var o = a.extend(c)
        }
        var b = false;
        var j = false;
        var i = o.image_path;
        if (o.start_slide) {
            var h = o.start_slide - 1
        } else {
            var h = Math.floor(Math.random() * o.slides.length)
        }
        var n = o.new_window ? ' target="_blank"' : "";
        if (o.performance == 3) {
            g.addClass("speed")
        } else {
            if ((o.performance == 1) || (o.performance == 2)) {
                g.addClass("quality")
            }
        }
        if (o.slides.length > 1) {
            h - 1 < 0 ? loadPrev = o.slides.length - 1 : loadPrev = h - 1;
            var e = (o.slides[loadPrev].url) ? "href='" + o.slides[loadPrev].url + "'" : "";
            a("<img/>").attr("src", o.slides[loadPrev].image).appendTo(g).wrap("<a " + e + n + "></a>")
        }
        e = (o.slides[h].url) ? "href='" + o.slides[h].url + "'" : "";
        a("<img/>").attr("src", o.slides[h].image).appendTo(g).wrap('<a class="activeslide" ' + e + n + "></a>");
        if (o.slides.length > 1) {
            h == o.slides.length - 1 ? loadNext = 0 : loadNext = h + 1;
            e = (o.slides[loadNext].url) ? "href='" + o.slides[loadNext].url + "'" : "";
            a("<img/>").attr("src", o.slides[loadNext].image).appendTo(g).wrap("<a " + e + n + "></a>")
        }
        g.hide();
        a("#controls-wrapper").hide();
        a(window).load(function () {
            a("#supersized-loader").hide();
            g.fadeIn("fast");
            a("#controls-wrapper").show();
            if (o.thumbnail_navigation) {
                h - 1 < 0 ? prevThumb = o.slides.length - 1 : prevThumb = h - 1;
                a("#prevthumb").show().html(a("<img/>").attr("src", o.slides[prevThumb].image));
                h == o.slides.length - 1 ? nextThumb = 0 : nextThumb = h + 1;
                a("#nextthumb").show().html(a("<img/>").attr("src", o.slides[nextThumb].image))
            }
            m();
            if (o.slide_captions) {
                a("#slidecaption").html(o.slides[h].title)
            }
            if (!(o.navigation)) {
                a("#navigation").hide()
            }
            if (o.slideshow && o.slides.length > 1) {
                if (o.slide_counter) {
                    a("#slidecounter .slidenumber").html(h + 1);
                    a("#slidecounter .totalslides").html(o.slides.length)
                }
                slideshow_interval = setInterval(k, o.slide_interval);
                if (!(o.autoplay)) {
                    clearInterval(slideshow_interval);
                    j = true;
                    if (a(d).attr("src")) {
                        a(d).attr("src", i + "play_dull.png")
                    }
                }
                if (o.thumbnail_navigation) {
                    a("#nextthumb").click(function () {
                        if (b) {
                            return false
                        }
                        clearInterval(slideshow_interval);
                        k(g, o);
                        if (!(j)) {
                            slideshow_interval = setInterval(k, o.slide_interval)
                        }
                        return false
                    });
                    a("#prevthumb").click(function () {
                        if (b) {
                            return false
                        }
                        clearInterval(slideshow_interval);
                        f(g, o);
                        if (!(j)) {
                            slideshow_interval = setInterval(k, o.slide_interval)
                        }
                        return false
                    })
                }
                if (o.navigation) {
                    a("#navigation a").click(function () {
                        a(this).blur();
                        return false
                    });
                    a("#nextslide").click(function () {
                        if (b) {
                            return false
                        }
                        clearInterval(slideshow_interval);
                        k();
                        if (!(j)) {
                            slideshow_interval = setInterval(k, o.slide_interval)
                        }
                        return false
                    });
                    if (a("#nextslide").attr("src")) {
                        a("#nextslide").mousedown(function () {
                            a(this).attr("src", i + "forward.png")
                        });
                        a("#nextslide").mouseup(function () {
                            a(this).attr("src", i + "forward_dull.png")
                        });
                        a("#nextslide").mouseout(function () {
                            a(this).attr("src", i + "forward_dull.png")
                        })
                    }
                    a("#prevslide").click(function () {
                        if (b) {
                            return false
                        }
                        clearInterval(slideshow_interval);
                        f();
                        if (!(j)) {
                            slideshow_interval = setInterval(k, o.slide_interval)
                        }
                        return false
                    });
                    if (a("#prevslide").attr("src")) {
                        a("#prevslide").mousedown(function () {
                            a(this).attr("src", i + "back.png")
                        });
                        a("#prevslide").mouseup(function () {
                            a(this).attr("src", i + "back_dull.png")
                        });
                        a("#prevslide").mouseout(function () {
                            a(this).attr("src", i + "back_dull.png")
                        })
                    }
                    a(d).click(function () {
                        if (b) {
                            return false
                        }
                        if (j) {
                            if (a(d).attr("src")) {
                                a(d).attr("src", i + "pause_dull.png")
                            }
                            j = false;
                            slideshow_interval = setInterval(k, o.slide_interval)
                        } else {
                            if (a(d).attr("src")) {
                                a(d).attr("src", i + "play_dull.png")
                            }
                            clearInterval(slideshow_interval);
                            j = true
                        }
                        return false
                    })
                }
            }
        });
        if (o.keyboard_nav) {
            a(document.documentElement).keydown(function (p) {
                if ((p.keyCode == 37) || (p.keyCode == 40)) {
                    if (a("#prevslide").attr("src")) {
                        a("#prevslide").attr("src", i + "back.png")
                    }
                } else {
                    if ((p.keyCode == 39) || (p.keyCode == 38)) {
                        if (a("#nextslide").attr("src")) {
                            a("#nextslide").attr("src", i + "forward.png")
                        }
                    }
                }
            });
            a(document.documentElement).keyup(function (p) {
                clearInterval(slideshow_interval);
                if ((p.keyCode == 37) || (p.keyCode == 40)) {
                    if (a("#prevslide").attr("src")) {
                        a("#prevslide").attr("src", i + "back_dull.png")
                    }
                    if (b) {
                        return false
                    }
                    clearInterval(slideshow_interval);
                    f();
                    if (!(j)) {
                        slideshow_interval = setInterval(k, o.slide_interval)
                    }
                    return false
                } else {
                    if ((p.keyCode == 39) || (p.keyCode == 38)) {
                        if (a("#nextslide").attr("src")) {
                            a("#nextslide").attr("src", i + "forward_dull.png")
                        }
                        if (b) {
                            return false
                        }
                        clearInterval(slideshow_interval);
                        k();
                        if (!(j)) {
                            slideshow_interval = setInterval(k, o.slide_interval)
                        }
                        return false
                    } else {
                        if (p.keyCode == 32) {
                            if (b) {
                                return false
                            }
                            if (j) {
                                if (a(d).attr("src")) {
                                    a(d).attr("src", i + "pause_dull.png")
                                }
                                j = false;
                                slideshow_interval = setInterval(k, o.slide_interval)
                            } else {
                                if (a(d).attr("src")) {
                                    a(d).attr("src", i + "play_dull.png")
                                }
                                j = true
                            }
                            return false
                        }
                    }
                }
            })
        }
        if (o.slideshow && o.pause_hover) {
            a(g).hover(function () {
                if (b) {
                    return false
                }
                if (!(j) && o.navigation) {
                    if (a(d).attr("src")) {
                        a(d).attr("src", i + "pause.png")
                    }
                    clearInterval(slideshow_interval)
                }
            }, function () {
                if (!(j) && o.navigation) {
                    if (a(d).attr("src")) {
                        a(d).attr("src", i + "pause_dull.png")
                    }
                    slideshow_interval = setInterval(k, o.slide_interval)
                }
            })
        }
        a(window).resize(function () {
            m()
        });

        function m() {
            return g.each(function () {
                var p = a("img", g);
                a(p).each(function () {
                    var r = (a(this).height() / a(this).width()).toFixed(2);
                    var q = a(window).width();
                    var s = a(window).height();
                    var t;
                    if ((s > o.min_height) || (q > o.min_width)) {
                        if ((s / q) > r) {
                            if (o.fit_landscape && r <= 1) {
                                a(this).width(q);
                                a(this).height(q * r)
                            } else {
                                a(this).height(s);
                                a(this).width(s / r)
                            }
                        } else {
                            if (o.fit_portrait && r > 1) {
                                a(this).height(s);
                                a(this).width(s / r)
                            } else {
                                a(this).width(q);
                                a(this).height(q * r)
                            }
                        }
                    }
                    if (o.horizontal_center) {
                        a(this).css("left", (q - a(this).width()) / 2)
                    }
                    if (o.vertical_center) {
                        a(this).css("top", (s - a(this).height()) / 2)
                    }
                });
                if (o.image_protect) {
                    a("img", g).bind("contextmenu", function () {
                        return false
                    });
                    a("img", g).bind("mousedown", function () {
                        return false
                    })
                }
                return false
            })
        }
        function k() {
            if (b) {
                return false
            } else {
                b = true
            }
            var r = o.slides;
            var q = g.find(".activeslide");
            q.removeClass("activeslide");
            if (q.length == 0) {
                q = g.find("a:last")
            }
            var p = q.next().length ? q.next() : g.find("a:first");
            var s = p.prev().length ? p.prev() : g.find("a:last");
            a(".prevslide").removeClass("prevslide");
            s.addClass("prevslide");
            h + 1 == r.length ? h = 0 : h++;
            if (o.performance == 1) {
                g.removeClass("quality").addClass("speed")
            }
            loadSlide = false;
            h == r.length - 1 ? loadSlide = 0 : loadSlide = h + 1;
            e = (o.slides[loadSlide].url) ? "href='" + o.slides[loadSlide].url + "'" : "";
            a("<img/>").attr("src", o.slides[loadSlide].image).appendTo(g).wrap("<a " + e + n + "></a>");
            if (o.thumbnail_navigation == 1) {
                h - 1 < 0 ? prevThumb = r.length - 1 : prevThumb = h - 1;
                a("#prevthumb").html(a("<img/>").attr("src", o.slides[prevThumb].image));
                nextThumb = loadSlide;
                a("#nextthumb").html(a("<img/>").attr("src", o.slides[nextThumb].image))
            }
            q.prev().remove();
            if (o.slide_counter) {
                a("#slidecounter .slidenumber").html(h + 1)
            }
            if (o.slide_captions) {
                (o.slides[h].title) ? a("#slidecaption").html(o.slides[h].title) : a("#slidecaption").html("")
            }
            p.hide().addClass("activeslide");
            switch (o.transition) {
            case 0:
                p.show();
                b = false;
                break;
            case 1:
                p.fadeTo(o.transition_speed, 1, function () {
                    l()
                });
                break;
            case 2:
                p.animate({
                    top: -a(window).height()
                }, 0).show().animate({
                    top: 0
                }, o.transition_speed, function () {
                    l()
                });
                break;
            case 3:
                p.animate({
                    left: a(window).width()
                }, 0).show().animate({
                    left: 0
                }, o.transition_speed, function () {
                    l()
                });
                break;
            case 4:
                p.animate({
                    top: a(window).height()
                }, 0).show().animate({
                    top: 0
                }, o.transition_speed, function () {
                    l()
                });
                break;
            case 5:
                p.animate({
                    left: -a(window).width()
                }, 0).show().animate({
                    left: 0
                }, o.transition_speed, function () {
                    l()
                });
                break;
            case 6:
                p.animate({
                    left: a(window).width()
                }, 0).show().animate({
                    left: 0
                }, o.transition_speed, function () {
                    l()
                });
                q.animate({
                    left: -a(window).width()
                }, o.transition_speed);
                break;
            case 7:
                p.animate({
                    left: -a(window).width()
                }, 0).show().animate({
                    left: 0
                }, o.transition_speed, function () {
                    l()
                });
                q.animate({
                    left: a(window).width()
                }, o.transition_speed);
                break
            }
        }
        function f() {
            if (b) {
                return false
            } else {
                b = true
            }
            var r = o.slides;
            var q = g.find(".activeslide");
            q.removeClass("activeslide");
            if (q.length == 0) {
                q = a(g).find("a:first")
            }
            var p = q.prev().length ? q.prev() : a(g).find("a:last");
            var s = p.next().length ? p.next() : a(g).find("a:first");
            a(".prevslide").removeClass("prevslide");
            s.addClass("prevslide");
            h == 0 ? h = r.length - 1 : h--;
            if (o.performance == 1) {
                g.removeClass("quality").addClass("speed")
            }
            loadSlide = false;
            h - 1 < 0 ? loadSlide = r.length - 1 : loadSlide = h - 1;
            e = (o.slides[loadSlide].url) ? "href='" + o.slides[loadSlide].url + "'" : "";
            a("<img/>").attr("src", o.slides[loadSlide].image).prependTo(g).wrap("<a " + e + n + "></a>");
            if (o.thumbnail_navigation == 1) {
                prevThumb = loadSlide;
                a("#prevthumb").html(a("<img/>").attr("src", o.slides[prevThumb].image));
                h == r.length - 1 ? nextThumb = 0 : nextThumb = h + 1;
                a("#nextthumb").html(a("<img/>").attr("src", o.slides[nextThumb].image))
            }
            q.next().remove();
            if (o.slide_counter) {
                a("#slidecounter .slidenumber").html(h + 1)
            }
            if (o.slide_captions) {
                (o.slides[h].title) ? a("#slidecaption").html(o.slides[h].title) : a("#slidecaption").html("")
            }
            p.hide().addClass("activeslide");
            switch (o.transition) {
            case 0:
                p.show();
                b = false;
                break;
            case 1:
                p.fadeTo(o.transition_speed, 1, function () {
                    l()
                });
                break;
            case 2:
                p.animate({
                    top: a(window).height()
                }, 0).show().animate({
                    top: 0
                }, o.transition_speed, function () {
                    l()
                });
                break;
            case 3:
                p.animate({
                    left: -a(window).width()
                }, 0).show().animate({
                    left: 0
                }, o.transition_speed, function () {
                    l()
                });
                break;
            case 4:
                p.animate({
                    top: -a(window).height()
                }, 0).show().animate({
                    top: 0
                }, o.transition_speed, function () {
                    l()
                });
                break;
            case 5:
                p.animate({
                    left: a(window).width()
                }, 0).show().animate({
                    left: 0
                }, o.transition_speed, function () {
                    l()
                });
                break;
            case 6:
                p.animate({
                    left: -a(window).width()
                }, 0).show().animate({
                    left: 0
                }, o.transition_speed, function () {
                    l()
                });
                q.animate({
                    left: a(window).width()
                }, o.transition_speed);
                break;
            case 7:
                p.animate({
                    left: a(window).width()
                }, 0).show().animate({
                    left: 0
                }, o.transition_speed, function () {
                    l()
                });
                q.animate({
                    left: -a(window).width()
                }, o.transition_speed);
                break
            }
        }
        function l() {
            b = false;
            if (o.performance == 1) {
                g.removeClass("speed").addClass("quality")
            }
            m()
        }
    }
})(jQuery);
