// Developed by Hartanto Thio
// Slider Plugin

( function($) {    

  // Hide and show controls based on position
  var ManageControls = function( Options, Position, TotalSlides ) {
    // Hide left arrow if position is first slide
    ( Position == 0 ) ? $('#' + Options.sliderControlLeftId).hide() : $('#' + Options.sliderControlLeftId).show();

    // Hide left arrow if position is first slide
    ( Position == (TotalSlides-1) ) ? $('#' + Options.sliderControlRightId).hide() : $('#' + Options.sliderControlRightId).show();
  } // ManageControls()

  
  //////////////////////////////
  ///// jQuery Functions
  //////////////////////////////
  $.fn.Slider = function( options ) {
    // Default settings
    var defaults = {
      containerId: 'slider-container',
      slidesClass: 'slider-slide', 
      sliderControlsClass: 'slider-control', 
      sliderControlLeftId: 'slider-control-left', 
      sliderControlRightId: 'slider-control-right',
      slideWidth: 0
    };

    // Merge defaults and options
    var options = $.extend(defaults, options);
    
    var container = this.children('#' + options.containerId);
    var slides = this.children().children('.' + options.slidesClass);
    var sliderControls = this.children('.' + options.sliderControlsClass);
    var sliderControlLeft = this.children('#' + options.sliderControlLeftId);
    var sliderControlRight = this.children('#' + options.sliderControlRightId);
    
    var position = 0;
    var totalSlides = slides.size();
    if( options.slideWidth == 0 ) {
      options.slideWidth = container.width();
    }
    
    // Remove horizontal and vertical scrolls
    container.css('overflow', 'hidden');
    
    // Wrap all slides in a div
    slides
      .wrapAll('<div id="slider-slides"></div>')
      .css({
        'float' : 'left',
        'width' : options.slideWidth
      });
      
    $('#slider-slides').css('width', options.slideWidth * totalSlides);
    ManageControls(options, position, totalSlides);

    sliderControls.click(function() {
      position = ( (this.id) == options.sliderControlRightId ) ? position + 1 : position - 1;

      ManageControls(options, position, totalSlides);
      
      $('#slider-slides').animate({
        'marginLeft' : options.slideWidth * (-position)
      });
    });
    
    return this;
  } // Slider()
  
}) (jQuery)

