﻿
/*
* smartpoint jQuery Slider v1.0
* 
* Copyright 2011, smartpoint IT consulting
*
*/


(function ($) {

    var SMPSlider = function (element) {

        var vars = {
            currentPage: 0,
            totalPages: 0,
            running: false,
            paused: false,
            stopped: false
        };

        var settings = {
            pauseTime: 5000,
            manualAdvance: false,
            speedAutorun: 1000,
            speedSwitch: 500,
        };

        var slider = $(element);
        var childItems = slider.children(".bannerNav").children(".nav");
        vars.totalPages = childItems.length;
        slider.data('vars', vars);

        slider.children(".bannerContainer").children(".banner-page").hide();
        slider.children(".bannerContainer").children(".banner-page").first().show();
        childItems.first().addClass("active");
        slider.children(".bannerContainer").children(".banner-page").first().addClass("active");

        //Start automatic rotation
        var timer = 0;
        if (!settings.manualAdvance && childItems.length > 1) {
            timer = setInterval(function () { autoRun(slider, childItems); }, settings.pauseTime);
        }

        //pause on hover
        slider.hover(function () {
            vars.paused = true;
            clearInterval(timer);
            timer = '';
        }, function () {
            //restart on leave
            vars.paused = false;
            if (timer == '' && !settings.manualAdvance) {
                timer = setInterval(function () { autoRun(slider, childItems); }, settings.pauseTime);
            }
        });

        // add mouseover events
        slider.children(".bannerNav").children(".nav").each(function () {
            $(this).mouseover(function () {
                if (vars.running) return false;
                showPage($(this),settings.speedSwitch);
            });
        });

        // automatic rotation
        var autoRun = function (slider, childItems) {
            var vars = slider.data('vars');
            if ((vars.currentPage + 1) >= vars.totalPages) vars.currentPage = -1;
            showPage($(childItems[vars.currentPage + 1]),settings.speedAutorun);
            vars.currentPage = vars.currentPage + 1;
        };

        // switch page
        var showPage = function (item,speed) {
            var link = $(item).attr("title");
            if ($(".bannerContainer .banner-page.active").hasClass(link) == false) {
                $(".bannerNav .nav").removeClass("active");
                $(item).addClass("active");
                $("#home .bannerContainer .banner-page").stop(true, false);

                $("#home .bannerContainer .banner-page[title!='" + link + "']").filter(":visible").fadeOut(speed, "linear", function () {
                    $(".bannerContainer .banner-page").css("opacity", "100");
                    $(".bannerContainer .banner-page").removeClass("active");
                    $(".bannerContainer .banner-page." + link).fadeIn(speed, "linear", function () {
                        $(".bannerContainer .banner-page." + link).addClass("active");
                    });
                });
            }
        };

    };


    $.fn.smpSlider = function () {

        return this.each(function (key, value) {
            var element = $(this);

            // Return early if this element already has a plugin instance
            if (element.data('smpSlider')) return element.data('smpSlider');
            // Pass options to plugin constructor
            var smpSlider = new SMPSlider(this);
            // Store plugin object in this element's data
            element.data('smpSlider', smpSlider);
        });

    };
})(jQuery);
