﻿var HPSlider = {
  slidersCount: 0,
  currentIndex: 0,
  intervalId: null,

  push: function (sliderImgUri, buttonImgUri, textCoordinates) {

    $('HPslider').getElement('script').dispose();

    // NAVIGATION::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    var sliderNav = $('HPslider-nav');
    if (sliderNav == null) { sliderNav = new Element('div#HPslider-nav'); $('HPslider').grab(sliderNav); }
    var btn = new Element('a', {
      id: HPSlider.getSliderSwitcherId(HPSlider.slidersCount),
      href: '#',
      html: HPSlider.slidersCount + 1,
      events: {
        click: function () {
          if (HPSlider.intervalId != null) {
            window.clearInterval(HPSlider.intervalId);
            HPSlider.autoSlide();
          }
          HPSlider.morph(this.idx);
          return false;
        }
      }
    });
    btn.idx = HPSlider.slidersCount;
    btn.activate = function () { this.addClass('active'); }
    btn.deactivate = function () { this.removeClass('active'); }
    if (HPSlider.slidersCount == 0) { btn.activate(); }
    sliderNav.grab(btn);

    // SLIDER::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    var elm = new Element('div.slider', { 'id': HPSlider.getSliderId(HPSlider.slidersCount) });
    if (HPSlider.slidersCount > 0) {
      elm.setOpacity(0);
      elm.setStyle('z-index', 1);
    }
    var img = new Element('img', { 'src': sliderImgUri });
    elm.grab(img);


    var elmTexts = $('HPslider').getElements('p');
    if (elmTexts != null && elmTexts.length > HPSlider.slidersCount) {
      var cElement = elmTexts[HPSlider.slidersCount];
      if (cElement != null) {
        cElement.setStyle('left', textCoordinates[0]);
        cElement.setStyle('top', textCoordinates[1]);
        cElement.setStyle('width', textCoordinates[2]);

        var link = cElement.getElement('a');
        link.set('html', '');
        link.grab(new Element('img', { 'src': buttonImgUri }));

        window.addEvent('domready', function () { elm.grab(cElement); });
      }
    }
    sliderNav.grab(elm, 'before');

    HPSlider.slidersCount++;
  },

  morph: function (index) {

    var myMorph1 = new Fx.Morph(HPSlider.getSliderId(HPSlider.currentIndex), { wait: false });
    var myMorph2 = new Fx.Morph(HPSlider.getSliderId(index), { wait: false });
    myMorph1.start({ 'opacity': 0, 'z-index': 1 });
    myMorph2.start({ 'opacity': 1, 'z-index': 10000 });

    var switcher1 = $(HPSlider.getSliderSwitcherId(HPSlider.currentIndex));
    var switcher2 = $(HPSlider.getSliderSwitcherId(index));
    switcher1.deactivate();
    switcher2.activate();

    HPSlider.currentIndex = index;
  },

  getSliderSwitcherId: function (index) {
    return 'HPslider_switcher_' + index;
  },

  getSliderId: function (index) {
    return 'HPslider_' + index;
  },

  autoSlide: function () {

    if (HPSlider.slidersCount <= 1) {
      return;
    }

    HPSlider.intervalId = window.setInterval(function () {
      var cIndex = HPSlider.currentIndex + 1;
      if (cIndex >= HPSlider.slidersCount) {
        cIndex = 0;
      }
      HPSlider.morph(cIndex);
    }, 7000);
  }
}

window.addEvent('domready', function () { HPSlider.autoSlide(); });
