(function ($) {
    
    $.fn.v1Slider = function (opts) {
        
        // scope reference
        var $this = this;
        var $slideText = $this.find(".slideText");
        
        // run before transition
        var before = function (currSlide) {
            $slideText.hide();
        }
        
        // run after transition
        var after = function (currSlide) {
            $slideText.fadeIn(600);
        }
        
        // slider default controls
        var $controls = this.next(".sliderControls");
        var $nextBtn = $controls.find("a[rel=next]");
        var $prevBtn = $controls.find("a[rel=prev]");
        if (opts && opts.pauseBtn) var $pause = $(opts.pauseBtn);// passed in
        else var $pause = $controls.find("a[rel=pause]");// default
        
        // play/pause button functionality
        $pause.bind("click", function (ev) {
            ev.preventDefault();
            $pause = $(this);
            btnText = $pause.text();
            if (!$pause.hasClass("paused")) {
                $this.cycle("pause");
                setText = "Play";
                $pause.addClass("paused");
            } else {
                $this.cycle("resume");
                setText = "Pause";
                $pause.removeClass("paused");
            }
            if (btnText.replace(/ /g, "").length) {
                $pause.text(setText);
            }
        });
        
        // set up defaults
        var settings = $.extend({
            fx : "fade",
            timeout : 8000,
            speed : 2000,
            before : before,
            after : after,
            next : $nextBtn,
            prev : $prevBtn
        }, opts);
        
        // init cycle
        this.cycle(settings);
    }
        
})(jQuery);
