/*
 *    loopedSlider 0.5.4 - jQuery plugin
 *   written by Nathan Searles   
 *   http://nathansearles.com/loopedslider/
 *
 *   Copyright (c) 2009 Nathan Searles (http://nathansearles.com/)
 *   Dual licensed under the MIT (MIT-LICENSE.txt)
 *   and GPL (GPL-LICENSE.txt) licenses.
 *
 *   Built for jQuery library
 *   http://jquery.com
 *
 */

/*
 *   markup example for $("#loopedSlider").loopedSlider();
 *
 *   <div id="loopedSlider">   
 *      <div class="container">
 *         <div class="slides">
 *            <div><img src="01.jpg" alt="" /></div>
 *            <div><img src="02.jpg" alt="" /></div>
 *            <div><img src="03.jpg" alt="" /></div>
 *            <div><img src="04.jpg" alt="" /></div>
 *         </div>
 *      </div>
 *      <a href="#" class="previous">previous</a>
 *      <a href="#" class="next">next</a>
 *      <ul class="pagination">
 *         <li><a href="#">1</a></li>
 *         <li><a href="#">2</a></li>
 *         <li><a href="#">3</a></li>
 *         <li><a href="#">4</a></li>
 *      </ul>   
 *   </div>
 *
*/

(function($) {
   $.fn.loopedSlider = function(options) {
      
   var defaults = {         
      container: '.container',
      slides: '.slides',
      pagination: '.pagination',
      containerClick: true, // Click container for next slide
      autoStart: 0, // Set to positive number for auto start and interval time
      restart: 0, // Set to positive number for restart and restart time
      slidespeed: 500, // Speed of slide animation
      fadespeed: 200, // Speed of fade animation
      autoHeight: false // Set to positive number for auto height and animation speed
   };
      
   this.each(function() {
      
      var obj = $(this);
      var o = $.extend(defaults, options);
      var pagination = $(o.pagination+' li a',obj);
      var m = 0;
      var t = 1;
      var s = $(o.slides,obj).children().size();
      var w = $(o.slides,obj).children().outerWidth();
      var p = 0;
      var u = false;
      var n = 0;
      var interval=0;
      var restart=0;
      
      $(o.slides,obj).css({width:(s*w)});
      
      $(o.slides,obj).children().each(function(){
         $(this).css({position:'absolute',left:p,display:'block'});
         p=p+w;
      });
      
      $(pagination,obj).each(function(){
         n=n+1;
         $(this).attr('rel',n);
         $(pagination.eq(0),obj).parent().addClass('active');
      });
      
      $(o.slides,obj).children(':eq('+(s-1)+')').css({position:'absolute',left:-w});
      
      if (s>3) {
         $(o.slides,obj).children(':eq('+(s-1)+')').css({position:'absolute',left:-w});
      }
      
      if(o.autoHeight){autoHeight(t);}
      
      $('.next',obj).click(function(){
         if(u===false) {
            animate('next',true);
            if(o.autoStart){
               if (o.restart) {autoStart();}
               else {clearInterval(sliderIntervalID);}
            }
         } return false;
      });
      
      $('.previous',obj).click(function(){
         if(u===false) {   
            animate('prev',true);
            if(o.autoStart){
               if (o.restart) {autoStart();}
               else {clearInterval(sliderIntervalID);}
            }
         } return false;
      });
      
      if (o.containerClick) {
         $(o.container ,obj).click(function(){
            if(u===false) {
               animate('next',true);
               if(o.autoStart){
                  if (o.restart) {autoStart();}
                  else {clearInterval(sliderIntervalID);}
               }
            } return false;
         });
      }
      
      $(pagination,obj).click(function(){
         if ($(this).parent().hasClass('active')) {return false;}
         else {
            t = $(this).attr('rel');
            $(pagination,obj).parent().siblings().removeClass('active');
            $(this).parent().addClass('active');
            animate('fade',t);
            if(o.autoStart){
               if (o.restart) {autoStart();}
               else {clearInterval(sliderIntervalID);}
            }
         } return false;
      });
   
      if (o.autoStart) {
         sliderIntervalID = setInterval(function(){
            if(u===false) {animate('next',true);}
         }, o.autoStart);
         function autoStart() {
            if (o.restart) {
            clearInterval(sliderIntervalID);
            clearInterval(interval);
            clearTimeout(restart);
               restart = setTimeout(function() {
                  interval = setInterval(   function(){
                     animate('next',true);
                  },o.autoStart);
               },o.restart);
            } else {
               sliderIntervalID = setInterval(function(){
                  if(u===false) {animate('next',true);}
               },o.autoStart);
            }
         };
      }
      
      function current(t) {
         if(t===s+1){t=1;}
         if(t===0){t=s;}
         $(pagination,obj).parent().siblings().removeClass('active');
         $(pagination+'[rel="' + (t) + '"]',obj).parent().addClass('active');
      };
      
      function autoHeight(t) {
         if(t===s+1){t=1;}
         if(t===0){t=s;}   
         var getHeight = $(o.slides,obj).children(':eq('+(t-1)+')',obj).outerHeight();
         $(o.container,obj).animate({height: getHeight},o.autoHeight);               
      };      
      
      function animate(dir,clicked){   
         u = true;   
         switch(dir){
            case 'next':
               t = t+1;
               m = (-(t*w-w));
               current(t);
               if(o.autoHeight){autoHeight(t);}
               if(s<3){
                  if (t===3){$(o.slides,obj).children(':eq(0)').css({left:(s*w)});}
                  if (t===2){$(o.slides,obj).children(':eq('+(s-1)+')').css({position:'absolute',left:(w)});}
               }
               $(o.slides,obj).animate({left: m}, o.slidespeed,function(){
                  if (t===s+1) {
                     t = 1;
                     $(o.slides,obj).css({left:0},function(){$(o.slides,obj).animate({left:m})});                     
                     $(o.slides,obj).children(':eq(0)').css({left: 0});
                     $(o.slides,obj).children(':eq('+(s-1)+')').css({ position:'absolute',left:-w});            
                  }
                  if (t===s) $(o.slides,obj).children(':eq(0)').css({left:(s*w)});
                  if (t===s-1) $(o.slides,obj).children(':eq('+(s-1)+')').css({left:s*w-w});
                  u = false;
               });               
               break; 
            case 'prev':
               t = t-1;
               m = (-(t*w-w));
               current(t);
               if(o.autoHeight){autoHeight(t);}
               if (s<3){
                  if(t===0){$(o.slides,obj).children(':eq('+(s-1)+')').css({position:'absolute',left:(-w)});}
                  if(t===1){$(o.slides,obj).children(':eq(0)').css({position:'absolute',left:0});}
               }
               $(o.slides,obj).animate({left: m}, o.slidespeed,function(){
                  if (t===0) {
                     t = s;
                     $(o.slides,obj).children(':eq('+(s-1)+')').css({position:'absolute',left:(s*w-w)});
                     $(o.slides,obj).css({left: -(s*w-w)});
                     $(o.slides,obj).children(':eq(0)').css({left:(s*w)});
                  }
                  if (t===2 ) $(o.slides,obj).children(':eq(0)').css({position:'absolute',left:0});
                  if (t===1) $(o.slides,obj).children(':eq('+ (s-1) +')').css({position:'absolute',left:-w});
                  u = false;
               });
               break;
            case 'fade':
               t = [t]*1;
               m = (-(t*w-w));
               current(t);
               if(o.autoHeight){autoHeight(t);}
               $(o.slides,obj).children().fadeOut(o.fadespeed, function(){
                  $(o.slides,obj).css({left: m});
                  $(o.slides,obj).children(':eq('+(s-1)+')').css({left:s*w-w});
                  $(o.slides,obj).children(':eq(0)').css({left:0});
                  if(t===s){$(o.slides,obj).children(':eq(0)').css({left:(s*w)});}
                  if(t===1){$(o.slides,obj).children(':eq('+(s-1)+')').css({ position:'absolute',left:-w});}
                  $(o.slides,obj).children().fadeIn(o.fadespeed);
                  u = false;
               });
               break; 
            default:
               break;
            }               
         };
      });
   };
})(jQuery);
$(function(){
   $("#slider").loopedSlider({
      autoStart: 0,
      restart: 0
   });
});
$(function(){
   $("#quotes").loopedSlider({
      autoStart: 15000,
      restart: 15000
   });
});