"use strict";

/*global jQuery: false */
jQuery.noConflict();

document.biz = document.biz || {};
document.biz.trevellyan = document.biz.trevellyan || {};

/*
 * cross fade a series of DIVs, leaving the last one visible
 * requires jQuery
 *  backId, frontId, sourceId, period, repeat) {
 */
document.biz.trevellyan.beginCrossFade = function (parameters) {
  var backDiv,
  frontDiv;

  // select a source div and copy into destination
  function rotateDivContent(sourceIndex) {
    var nextIndex = sourceIndex + 1;

    // copy HTML from front to back
    backDiv.html(frontDiv.html());
    backDiv.css("display", "");
    frontDiv.css("display", "none");

    // copy HTML from source to front
    var sourceDiv = jQuery("#" + parameters.sourceId[sourceIndex]);
    frontDiv.html(sourceDiv.html());
    backDiv.fadeOut(parameters.fadeTime);
    frontDiv.fadeIn(parameters.fadeTime);

    if (nextIndex !== parameters.sourceId.length) {
      crossFade(nextIndex);
    } else if (parameters.repeat) {
      crossFade(0);
    } else {
      backDiv = null;
      frontDiv = null;
    }
  }

  function crossFade(sourceIndex) {
    setTimeout(
      function () {
        rotateDivContent(sourceIndex);
      },
      parameters.period
      );
  }

  jQuery(function () {
    backDiv = jQuery("#" + parameters.backId);
    frontDiv = jQuery("#" + parameters.frontId);

    var sourceDiv = jQuery("#" + parameters.sourceId[0]);
    frontDiv.html(sourceDiv.html());
    backDiv.fadeOut(parameters.fadeTime);
    frontDiv.fadeIn(parameters.fadeTime);

    crossFade(1);
  });
};

