FADER = {
  activeChild:null,
  childs:null,
  init:function() {
    FADER.EVENTS.addEvent(window,'load',FADER.onLoad);
  },
  onLoad:function(e) {
    Xparent = document.getElementById('FADER');
    if (Xparent) {
      FADER.childs = FADER.getElementsBy.className('container',Xparent);
      for (i in FADER.childs) {
        FADER.childs[i].index = i;
      }
      FADER.activeChild = FADER.childs[FADER.childs.length - 1];
      FADER.activeChild.className = 'FADER_WIDTH FADER_HEIGHT container_visible';
  
      FADER.TIMER.init();
    }
  }
};

FADER.getElementsBy = {
  className:function(searchClass,node,tag) {
    var classElements = new Array();
    if (node == null)
      node = document;
  	if (tag == null)
      tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (i = 0,j = 0;i < elsLen;i++) {
      if (pattern.test(els[i].className)) {
        classElements[j] = els[i];
        j++;
      }
    }
    return classElements;
  }
};

FADER.TIMER = {
  slideInterval:3000,
  fadeInterval:100,
  fadeSteps:10,
  fadedSteps:0,
  init:function() {
    if (FADER_SETTINGS) {
      FADER.TIMER.slideInterval = FADER_SETTINGS.changeImageSpeed;
      FADER.TIMER.fadeInterval = FADER_SETTINGS.fadeImagesSpeed;
      FADER.TIMER.fadeSteps = FADER_SETTINGS.fadeImagesSteps;
    }
    setTimeout('FADER.TIMER.slide()',FADER.TIMER.slideInterval);
  },
  slide:function() {
    setTimeout('FADER.TIMER.slide()',FADER.TIMER.slideInterval);
    FADER.TIMER.fadedSteps = 0;
    FADER.TIMER.fade(1);
    document.getElementById('linkMe').href = FADER_SETTINGS['link' + FADER.activeChild.index];
  },
  fade:function(step) {
    nextElem = parseInt(FADER.activeChild.index) == FADER.childs.length - 1 ? 0 : parseInt(FADER.activeChild.index) + 1;
    nextElem = FADER.childs[nextElem];
    if (step < FADER.TIMER.fadeSteps + 1) {
      FADER.TIMER.fadedSteps++;
      FADER.TIMER.setOpacity(FADER.activeChild,10 - (10 / FADER.TIMER.fadeSteps) * FADER.TIMER.fadedSteps);
      FADER.TIMER.setOpacity(nextElem,10 / FADER.TIMER.fadeSteps * FADER.TIMER.fadedSteps);
      setTimeout('FADER.TIMER.fade(' + (step + 1) + ')',FADER.TIMER.fadeInterval);
    }
    else {
      FADER.TIMER.setOpacity(FADER.activeChild,0);
      FADER.TIMER.setOpacity(nextElem,10);
      FADER.activeChild = nextElem;
    }
  },
  setOpacity:function(obj,value) {
  	obj.style.opacity = value / 10;
	  obj.style.filter = 'alpha(opacity=' + (value * 10) + ')';
  }
};

FADER.EVENTS = {
  addEvent:function(elem,event,callBack) {
    if (elem.addEventListener) {
      elem.addEventListener(event,callBack,false); 
    }
    else {
      elem.attachEvent("on" + event,callBack); 
    }
  },
  removeEvent:function(elem,event,callBack) {
    if (elem.removeEventListener) {
      elem.removeEventListener(event,callBack,false); 
    }
    else {
      elem.detachEvent("on" + event,callBack); 
    }
  }
};

FADER.init();
