var Header = new Map();

///settings
Header.fadeTime = 2000;
Header.fadeQuickTime = 500; //manually activated fade must move a lot quicker.
Header.pauseTime = 5000; //after 9 seconds, 2 is enough to view an image.
Header.imagePaths = new Array();
Header.fadeTarget = null;
Header.timer = null;
Header.counter = 0;

///functionality

Header.setup = function () {
   var jHeaders = $('.header_image');
   var jNav = $('.photoselect a');

   // set up jObjects
   Header.fadeTarget = jHeaders.eq(1);
   Header.srcTarget1 = jHeaders.eq(0);
   Header.srcTarget2 = jHeaders.eq(1);

   jNav.each(function (i) {
      $(this).click(function () {
         Header.activate(i);
         return false;
      });
   })

   //enter fade loop.
   setTimeout(Header.fadeOut, Header.pauseTime);
}

Header.index = 1;
Header.getNextIndex = function () {
   Header.index = ++Header.index % this.imagePaths.length;
   Header.counter++;

   return Header.index;
}

Header.fadeIn = function () {
   Header.fadeTarget.fadeIn(Header.fadeTime, function () {
      Header.srcTarget1.attr('src', Header.imagePaths[Header.getNextIndex()] );
      Header.timer = setTimeout(Header.fadeOut, Header.pauseTime);
   });
}
Header.fadeOut = function () {
   Header.fadeTarget.fadeOut(Header.fadeTime, function () {
      Header.srcTarget2.attr('src', Header.imagePaths[Header.getNextIndex()] );
      Header.timer = setTimeout(Header.fadeIn, Header.pauseTime);
   });
}
Header.activate = function (intIndex) {
   clearTimeout(Header.timer);
   Header.index = intIndex;
   //select which image is shown.
   if (Header.counter % 2 == 1) {
      //bottom is visble. set top src; fade in the top one
      Header.srcTarget2.attr('src', Header.imagePaths[Header.index] );
      Header.srcTarget2.fadeIn(Header.fadeQuickTime);
   }
   else {
      //top is visble. set bottom src and fadeout top.
      Header.srcTarget1.attr('src', Header.imagePaths[Header.index] );
      Header.srcTarget2.fadeOut(Header.fadeQuickTime);
   }
   Header.counter++;
}

/////////////////////////////////////

$(document).ready(Header.setup);

