jQuery.fn.setBg = function(bgImg,opacity){
    this.removeAttr('style');
    this.css({
        'background-image':'url('+bgImg+')'
    });
    return this;
}

jQuery.fn.slide = function(options){
    
    var defaults = {
        delay:10000,
        fadeTime:500,
        overlap:false
    };
    
    var o = $.extend(defaults,options);
    
    var index = 0;
    
    var $front = $('#frontSlide');
    var $back = $('#backSlide');
    var $link = $('#posterLink');
    var $prev = $('#showPrev').attr('href','#');
    var $next = $('#showNext').attr('href','#');
    var $pager = $('#slidePager');
    var $bullets = $pager.find('a');
    
    var count = $bullets.length;
    
    function startAutoSlide(){
        interval = window.setInterval(next,o.delay);
    }
    
    function killAutoSlide(){
        window.clearInterval(interval);
        interval = false;
    }
    
    var interval =false;
    
    startAutoSlide();
    var slidingLocked = false;
    
    function next(){
        var i;
        if (index+1==count) 
            i = 0;
        else 
            i = index+1;
        $bullets.eq(i).trigger('click');
        return false;
    }
    function prev(){
        var i;
        if (index==0)
            i = count-1;
        else
            i = index-1;
        $bullets.eq(i).trigger('click');
        return false;
    }
    
    $bullets.click(function(e){
        
        if (slidingLocked) return false;
        
        $bullet = $(this);
        var i = $bullets.index(this);
        
        if (index==i) return false; // do nothing
        
        killAutoSlide();
        
        index = i;
        
        var bgImg = this.getAttribute('rel');
        var href = this.href;
        
        if (o.overlap){
            $back.hide();
            slidingLocked = true;
            $front.fadeOut(o.fadeTime,function(){
                $front.setBg(bgImg).hide();
                $bullets.removeClass('active');
                $bullet.addClass('active');
                $front.fadeIn(o.fadeTime,function(){
                    $link.attr('href',href);
                    startAutoSlide();
                    slidingLocked = false;
                });
            });       
        }
        else {
            $front.setBg(bgImg);
            $front.hide();
            $bullets.removeClass('active');
            $bullet.addClass('active');
            $front.fadeIn(o.fadeTime,function(){
                $link.attr('href',href);
                $back.setBg(bgImg);
                $front.hide();
                startAutoSlide();
            });            
        }

        return false;
    });
    
    $prev.click(prev);
    $next.click(next);
}
