jQuery(document).ready(function() {
// SOF


function cl(obj) {
   console.log(obj);
}


var sickSlider = function(options) {
   this.options = options;
   
   this.totalSlides = $(this.options.sliderWrapper).find('li.c_slide').length;
   this.totalSlidesLength = (this.totalSlides) * this.options.sliderStep;
   
   $(this.options.sliderWrapper).css('width', this.totalSlidesLength); // Calculate the total slides
   $(this.options.triggerLeft).addClass('selected') // Inactive at loading time
   
   this.currentSlide = 0;
   this.activeTrigger = null;
   this.hovered = false;
}
   
sickSlider.prototype = {   
   free: function() {
      this.activate_triggers({
         'left': this.options.triggerLeft,
         'right': this.options.triggerRight
      });
      this.activate_autoslider();
   },
   
   activate_autoslider: function() {
      var _self = this;
      if (this.hangAutoslide) clearInterval(this.tempInterval);
      if (this.automatic) this.intervalSliderS = setInterval(function() { _self.auto_slide() }, this.automatic);
   },
   
   auto_slide: function() {
      this.activeTrigger = 'right';
      this.modify_state();
   },
   
   animate: function(whereTo) {
      var _self = this;
      $(this.options.sliderWrapper).animate({'marginLeft' :  '-' + this.currentSlide}, {queue:false, duration:1100, easing: this.options.sliderEasing});
      //cl(this.currentSlide); 
      //cl(this.activeTrigger);
   },
   
   modify_state: function(manualCall) {
      // Stop state if hovered
      if (this.hovered) return;
      
      // Stop automatic interval
      if (manualCall) {
         var _self = this;
         clearInterval(this.intervalSliderS);
         clearInterval(this.tempInterval);
         this.tempInterval = setInterval(function() { _self.activate_autoslider() }, this.hangAutoslide);
      }
      
      // Modifiy the actual sldier states
      if (this.activeTrigger == 'right') {
         if (this.currentSlide == (this.totalSlidesLength - this.options.sliderStep)) { // has reached the foremost right
            if (!manualCall) {
               this.currentSlide = 0;
               $(this.options.triggerLeft).addClass('selected');
            } else {
               this.currentSlide = this.totalSlidesLength - this.options.sliderStep;
               return;
            }
         } else {
            this.currentSlide = this.currentSlide + parseInt(this.options.sliderStep);
             $(this.options.triggerLeft).removeClass('selected');
         }
         (this.currentSlide == (this.totalSlidesLength - this.options.sliderStep)) ? $(this.options.triggerRight).addClass('selected') : $(this.options.triggerRight).removeClass('selected');
      } else if (this.activeTrigger == 'left') {
         if (this.currentSlide == 0) { // has reached the foremost left
            this.currentSlide = 0;
            return;
         } else {
            this.currentSlide = this.currentSlide - parseInt(this.options.sliderStep);
         }
         (this.currentSlide == 0) ? $(this.options.triggerLeft).addClass('selected') : $(this.options.triggerLeft).removeClass('selected');
      }
      
      this.animate();
   },
   
   activate_triggers: function(trigger) { // activates manual sliding execution - arrows
      var _self = this;
      
      $(trigger.left).click(function(evt) {
         evt.preventDefault();
         _self.hovered = false;
         _self.activeTrigger = 'left';
         _self.modify_state(true);
      });
      
      $(trigger.right).click(function(evt) {
         evt.preventDefault();
         _self.hovered = false;
         _self.activeTrigger = 'right';
         _self.modify_state(true);
      });
      
      // hang the slider a bit if the mouse is over
      if (this.hangOnHover) {
         $(trigger.left).hover(function(evt) {
            evt.preventDefault();
            _self.hovered = true;
         }, function(evt) {
            evt.preventDefault();
            _self.hovered = false;
         });
         
         $(trigger.right).hover(function(evt) {
            evt.preventDefault();
            _self.hovered = true;
         }, function(evt) {
            evt.preventDefault();
            _self.hovered = false;
         });
         
         $(this.options.sliderWrapper).find('li.c_slide').hover(function() {
            _self.hovered = true;
         }, function(evt) {
            evt.preventDefault();
            _self.hovered = false;
         });
      }
   }
}


var mySlider = new sickSlider({
   'sliderWrapper': '#head-slider',
   'sliderStep': '945',
   'sliderEasing': 'easeOutQuint',
   'triggerRight': '#slider_right',
   'triggerLeft': '#slider_left'
});

mySlider.automatic = 5000; // automatic sliding interval
mySlider.hangAutoslide = 10000; // hang for x seconds if user the has clicked an arrow
mySlider.hangOnHover = true; // hang the slider if hovered
mySlider.free();



// EOF 
})