
/**
 * Div with a background image transition plugin
 */
(function($)
{
	$.fn.divTransition = function(options)
	{
		options = $.extend({}, $.fn.divTransition.defaults, options);
		return this.each(function()
		{
			options.target = $(this);
			options.target.append('<div class="transition-options" />');

			// add little buttons underneath for the number of items passed
			dots = '';
			for(i = 0; i < options.imgUrls.length; i++) {
				dots += '<li>'+i+'</li>';
				jQuery.preLoadImages(options.imgUrls[i]);
			}
			$('.transition-options', options.target).append('<ul class="transition-dots">' + dots + '</ul>');
			options.current = 0;
			$('.transition-dots li:first', options.target).addClass('selected');
			$('.transition-dots li', options.target).click(function() {
				if ($(this).hasClass('selected')) {
					return false;
				}
				lastDiv = $('div.images:last', options.target);
				options.current = $(this).text();
				$.fn.divTransition.ShowDiv(lastDiv, options.imgUrls[options.current], options);
			});

			// next and previous buttons
			$('.transition-options', options.target).append('<span class="transition-previous">previous</span>');
			$('.transition-options', options.target).append('<span class="transition-next">next</span>');
			$('.transition-next', options.target).click(function() {
				if (options.current < options.imgUrls.length - 1) {
					options.current = parseInt(options.current) + 1;
				} else {
					options.current = 0;
				}
				lastDiv = $('div.images:last', options.target);
				$.fn.divTransition.ShowDiv(lastDiv, options.imgUrls[options.current], options);
			});
			$('.transition-previous', options.target).click(function() {
				if (options.current > 0) {
					options.current = parseInt(options.current) - 1;
				} else {
					options.current = options.imgUrls.length - 1
				}
				lastDiv = $('div.images:last', options.target);
				$.fn.divTransition.ShowDiv(lastDiv, options.imgUrls[options.current], options);
			});
			$('#banner-link').attr('href', options.imgLinks[options.current]);
			$('div.images', options.target).css('background-image', 'url('+options.imgUrls[0]+')');

			// set a timer to move to the next item.
			options.interval = setInterval(function() { $('.transition-next', options.target).click(); }, options.moveTimer  * 1000);

		});
	};

	// Defaults
	$.fn.divTransition.defaults = {
		fadeSpeed: 250, // in miliseconds
		moveTimer: 10, 	// in seconds
		imgUrls: [] 	// array of image urls
	};

	// Show a new div over an old one
	$.fn.divTransition.ShowDiv = function(previousDiv, targetImgSrc, options)
	{
		previousDiv.after('<div class="images" />');
		newDiv = previousDiv.next();
		$('#banner-link').attr('href', options.imgLinks[options.current]);
		newDiv.hide().css('background-image', 'url('+targetImgSrc+')').fadeIn(options.fadeSpeed, function() {
			previousDiv.remove();
		});
		$('.transition-dots li', options.target).removeClass('selected');
		$('.transition-dots li:nth-child('+ (parseInt(options.current) + 1) +')', options.target).addClass('selected');
		$.fn.divTransition.resetInterval(options);
	};

	// Reset the auto transition interval
	$.fn.divTransition.resetInterval = function(options)
	{
		clearInterval(options.interval);
		options.interval = setInterval(function() { $('.transition-next', options.target).click(); }, options.moveTimer  * 1000);
	};

})(jQuery);

/**
 * Preloader: http://engineeredweb.com/blog/09/12/preloading-images-jquery-and-javascript
 */

(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery)


