/*!
 * @copyright 2010-Present Advanced Care Solutions, Inc.
 * @author Christopher Rahauiser <crahauiser@acs-web.com>
 */
(function($) {
  $.fn.panelSlider = function(options) {
    var opts = $.extend({}, $.fn.panelSlider.defaults, options);

    return this.each(function() {
      var self = $(this);
      var offRight = self.width();
      var offLeft = -1 * offRight;

      var panels = self.find(opts.panelSelector);
      panels
        .not(':eq(0)')
          .css('left', offRight);
      self.addClass(opts.containerClass);

      var panelSwitches = $(opts.panelSwitchSelector);

      var curr = 0,
          animating = false;

      function shiftPanels(panelPos) {
        if (curr == panelPos || animating) {
          return;  // already showing
        }
        animating = true;
        panels
          .eq(panelPos)
            .animate({ left: 0 }, opts.slideTime)
          .end()
          .eq(curr)
            .animate({ left: offLeft }, opts.slideTime, 'swing', function() {
              $(this).css('left', offRight);
              animating = false;
            });
        panelSwitches.eq(curr).removeClass(opts.currentPanelClass);
        curr = panelPos;
        panelSwitches.eq(panelPos).addClass(opts.currentPanelClass);
      }

      panelSwitches
        .each(function(idx) {
          $(this).click(function(event) {
            event.preventDefault();
            shiftPanels(idx);
          });
        })
        .eq(0)
          .addClass(opts.currentPanelClass);
    });
  };

  $.fn.panelSlider.defaults = {
    containerClass: 'panel-sliders',
    panelSelector: '.panel',
    panelSwitchSelector: '.panel-switch',
    currentPanelClass: 'current-panel',
    slideTime: 1200
  };
})(jQuery);
