(function($) { 
	
	$.fn.wtdbanner = function(options) {
		
		var opts = $.extend({}, $.fn.wtdbanner.defaults, options);
		
		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 subTitle = $(element).find('subtitle').text();
						var image = $(element).find('image-path').text();
						var linkText = $(element).find('link-text').text();
						var linkURL = $(element).find('link-url').text();
						var navTitle = $(element).find('nav-title').text();
						$obj.find('div.banner-content ul.banner-carousel').append(
							'<li><div><h2>' + title + '</h2><h3>' + subTitle + '</h3><ul><li><a href=\'' + linkURL + '\' title=\'' + linkText + '\'tabindex=\'-1\'>' + linkText + '</a></li></ul></div><img src=\'' + image + '\' alt=\'' + title + '\'/></li>'
						);
						$obj.find('div.banner-nav ul').append(
							'<li><a href=\'' + linkURL + '\' title=\'' + navTitle + '\'>' + navTitle + '</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');
				}

				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() * 4;
			$obj.find('div.banner-content ul.banner-carousel').css('width', $overflowWidth + 'px');
			
			$obj.find('div.banner-nav ul li a').bind('mouseenter focus', function() {
				
				if(opts.auto == true){
					clearInterval(bannerInterval);	
				}
				if($('div.spotlight').length){
					$obj.find('div.banner-nav ul li').removeClass('spotlight-active');
					$(this).parent().addClass('spotlight-active');
				}
				else{
					$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 / 4) * index;

				moveCarousel($obj, opts, bannerPos);

			})

			$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-content').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 index = $obj.find('div.banner-nav ul li').index($('div.banner-nav ul li.active'));
			if(index > 2){
				index = -1;
			}
			index = index + 1;
			var bannerPos = ($overflowWidth / 4) * index;

			$obj.find('div.banner-nav ul li').removeClass('active');

			var activeItem = index;
			$obj.find('div.banner-nav ul li').eq(activeItem).addClass('active');

			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');
			}
		}
	};
	
	// Banner Defaults
	$.fn.wtdbanner.defaults = {
		xmldriven: false,
		xmlpath: 'common/xml/wtdbanner.xml',
		speed: 700,
		slide: true,
		timer: 5000,
		auto: true,
		easing: 'easeOutQuint'
	};
	
	
})(jQuery);
