﻿function Fader() {
  this.config = {};
}

Fader.prototype.itemClassName = 'faderitem';
Fader.prototype.automaticFade = true;
Fader.prototype.automaticFadeInterval = 10000;
Fader.prototype.fadeSpeed = 2000;
Fader.prototype.stopOnMouseHover = true;
/*Fader.prototype.showNav = true;
Fader.prototype.prevClassName = 'prevbtn';
Fader.prototype.nextClassName = 'nextbtn';*/
Fader.prototype.intervals;
Fader.prototype.indexes;

Fader.prototype.makeFaders = function(element, faderclassname) {
  this.intervals = new Array();
  this.indexes = new Array();
  var faders = pn1.getElementsByClassName(element, faderclassname);
  
  for (var a = 0; a < faders.length; a++) {
    var fader = faders[a];
    this.indexes[this.indexes.length] = 0;
    this.intervals[this.intervals.length] = '';
    
    this.makeFader(fader,a);
  }
}

Fader.prototype.makeFader = function(fader,i) {
  var items = pn1.getElementsByClassName(fader,this.itemClassName);
  var zindex = items.length;

  for (var a = 0; a < items.length; a++) {
    items[a].style.zIndex = zindex;
    if (a != 0) {
      items[a].style.display = 'none';
    }
    zindex--;
  }
  
  if (this.stopOnMouseHover && this.automaticFade) {
    $(fader).mouseenter(function() {
      var ind = arguments[0];
      
      if (this.intervals[ind] != undefined) {
        clearInterval(this.intervals[ind]);
      }
    }.bind(this,i));
    
    $(fader).mouseleave(function() {
      var is = arguments[0];
      var ind = arguments[1];
      
      this.updateInterval(is,ind,this.fadeSpeed);
    }.bind(this,items,i));
  }
  
  this.updateInterval(items,i,this.fadeSpeed);
}

Fader.prototype.updateInterval = function(items,i,fadespeed) {
  this.intervals[i] = setInterval(function() {
    var indxs = arguments[0];
    var currentitem = items[indxs[i]];
    var nextitem;
    
    if (indxs[i]+1 == items.length) {
      nextitem = items[0];
      indxs[i] = 0;
    } else {
      nextitem = items[indxs[i]+1];
      indxs[i]++;
    }

    nextitem.style.left = '10px';
    $(currentitem).stop(true,true).fadeOut(fadespeed,function() {
      currentitem.style.left = '160px';
    });
    $(nextitem).stop(true,true).fadeIn(fadespeed);
  }.bind(this,this.indexes),this.automaticFadeInterval);
}
