(function($) { 
	
	$.fn.wtdbanner = function(options) {
		
		var opts = $.extend({}, $.fn.wtdbanner.defaults, options);
		
		var prevItem;

		if(this.length){
			return this.each(function(){
				setBanner($(this), opts);				  
			});
		}
		
		function setBanner($obj, opts){
			if(opts.xmldriven == true){
				$obj.html('<div class=\'banner-content\'><ul class=\'banner-carousel\'></ul></div><div class=\'banner-nav\'><ul></ul></div>');

				$.ajax({
					type: 'GET',
					url: opts.xmlpath,
					dataType: 'xml',
					success: function(data) {
						xmlParser(data, $obj, true);
					}
				});
			}
			else{
				var data = '';
				xmlParser(data, $obj, false)
			}

			function xmlParser(xml, $obj, noXML){
				if(noXML == true){
					$(xml).find('banner-item').each(function(index, element){
						var title = $(element).find('title').text();
						var content = $(element).find('content').text();
						$obj.find('div.banner-content ul.banner-carousel').append(
							'<li>' + content + '</li>'
						);
						$obj.find('div.banner-nav ul').append(
							'<li><a href="#" title="' + title + '"></a></li>'
						);
					});
				}

				$obj.find('div.banner-nav ul li:last-child').addClass('last');
				if($('div.spotlight').length){
					console.log('hi');
					$obj.find('div.banner-nav ul li').addClass('spotlight-background');
					$obj.find('div.banner-nav ul li:first-child').addClass('spotlight-active');
				}
				else{
					$obj.find('div.banner-nav ul li:first-child').addClass('active');
				}
				if(jQuery.browser.msie && jQuery.browser.version == '6.0'){
				}
				else{
					sIFR.replace(albert, {
					  selector: 'div.banner-content h2',
					  css: '.sIFR-root {  color:#FFFFFF; font-size:36px;  line-height:40px;}',
					  wmode: 'transparent',
					  ratios: [8, 1.31, 12, 1.27, 16, 1.21, 17, 1.2, 23, 1.19, 24, 1.16, 25, 1.18, 27, 1.17, 32, 1.16, 33, 1.17, 41, 1.16, 58, 1.15, 64, 1.14, 65, 1.15, 95, 1.14, 96, 1.13, 100, 1.14, 101, 1.13, 102, 1.14, 104, 1.13, 109, 1.14, 113, 1.13, 114, 1.14, 1.13]
					 });
				}

				var bannerInterval;

				if(opts.auto == true){
					bannerInterval = setInterval(function(){ autoCarousel($obj, opts);}, opts.timer);
				}

				setNavigation($obj, opts, bannerInterval);
			}			
		}

		function setNavigation($obj, opts, bannerInterval){
			$overflowWidth = $obj.find('div.banner-content').width() * $('ul.banner-carousel li').length;
			$obj.find('div.banner-content ul.banner-carousel').css('width', $overflowWidth + 'px');

			//$('div.home-page-background').animate({'opacity':0},0);
			//$('div.home-page-background').eq(0).animate({'opacity':1},0);
			
			$obj.find('div.banner-nav ul li a').bind('click', function() {
				
				if(opts.auto == true){
					clearInterval(bannerInterval);	
				}
				$obj.find('div.banner-nav ul li').removeClass('active');
				$(this).parent().addClass('active');

				var index = $obj.find('div.banner-nav ul li').index($(this).parent());	
				var bannerPos = ($overflowWidth / $('ul.banner-carousel li').length) * index;
				
				//$('div.home-page-background').eq(prevItem).animate({'opacity':0},500);
				//$('div.home-page-background').eq(index).animate({'opacity':1},500);
				prevItem = index;
				moveCarousel($obj, opts, bannerPos);
				return false;
			});

			/*$obj.find('div.banner-nav ul li a').bind('mouseleave blur', function() {
				if(opts.auto == true){
					bannerInterval = setInterval(function(){ autoCarousel($obj, opts);}, opts.timer);
				}
			});*/

			$obj.find('div.banner-nav').mouseenter(function() {
				if(opts.auto == true){
					clearInterval(bannerInterval);
				}
			}).mouseleave(function(){
				if(opts.auto == true){
					bannerInterval = setInterval(function(){ autoCarousel($obj, opts);}, opts.timer);
				}
			});
		}

		function moveCarousel($obj, opts, bannerPos){
			if(opts.slide == true){
				$obj.find('div.banner-content ul.banner-carousel').stop().animate({
					left: '-' + bannerPos + 'px'
				}, opts.speed, opts.easing);
			}
			else{
				$obj.find('div.banner-content ul.banner-carousel').css('left', '-' + bannerPos + 'px');
			}
		}

		function autoCarousel($obj, opts){
		    var lis = $obj.find('div.banner-nav ul li');
			var index = lis.index($('div.banner-nav ul li.active'));
			// JN: WHY ON EARTH WOULD YOU HARD-CODE THIS??
			//if(index > (3)){
			//	index = -1;
			//} 
			index = (index + 1) % lis.length;
			
			var bannerPos = ($overflowWidth / $('ul.banner-carousel li').length) * index;

			lis.removeClass('active');
			
			lis.eq(index).addClass('active');
			
			//$('div.home-page-background').eq(prevItem).animate({'opacity':0},500);
			//$('div.home-page-background').eq(index).animate({'opacity':1},500);

			if(opts.slide == true){
				$obj.find('div.banner-content ul.banner-carousel').stop().animate({
					left: '-' + bannerPos + 'px'
				}, opts.speed, opts.easing);
			}
			else{
				$obj.find('div.banner-content ul.banner-carousel').css('left', '-' + bannerPos + 'px');
			}
			prevItem = index;
		}
	};
	
	// Banner Defaults
	$.fn.wtdbanner.defaults = {
		xmldriven: true,
		xmlpath: '?feed=thames_slideshow',
		speed: 700,
		slide: true,
		timer: 6000,
		auto: true,
		easing: 'easeOutQuint'
	};
	
	
})(jQuery);
