(function($){

/* !--- Details --- */
/* --------------------------------------------------------------------------------------------------------------

Global Javascript

[01] Pre-Document Load
[02] Document Load
[03] Misc Functions

 ---------------------------------------------------------------------------------------------------------------- */


var homepagePromo = false;


/* !--- [01] Pre-Document Load ---                                                                                */
/* -------------------------------------------------------------------------------------------------------------- */

// Add class to html element for styling hook
$('html').addClass('js-active');

// Emulate target="_blank" by using rel="external" attribute for anchors
$('a[rel="external"]').bind( 'click', newWindow );


/* !--- [02] Document Load ---                                                                                    */
/* -------------------------------------------------------------------------------------------------------------- */
jQuery(function(){
		
	$('#logo').css('cursor', 'pointer').click(function(){ window.location = '/' });
	
	shopMenuInit();
	
	shopPromoInit();
		
});


/* !--- [03] Misc Functions ---                                                                                   */
/* -------------------------------------------------------------------------------------------------------------- */
function newWindow(e){
	e.preventDefault();
	
	var url = $(this).attr('href');
	
	e.data = e.data || {};
	
	var name = e.data.windowName || '';
	
	var features = e.data.windowFeatures || '';
	
	var replace = e.data.windowReplace || true;
	
	window.open( url, name, features, replace );
}

function shopMenuInit(){
	var menu = $('#shop-nav-menu');
	var browse = $('#shop-nav-browse');
	
	menu.hide();
	
	// Add a class of 'loaded' for IE styling
	browse.toggle(
		function(){
			menu.show(150, function(){
				menu.addClass('loaded');
			});
		},
		function(){
			menu.removeClass('loaded').hide(150);
		}
	);
}

function shopPromoInit(){
	
	if( !homepagePromo ) return;
	
	$.ajax({
		url: 'ajax/shop-promos.html',
		
		dataType: 'html',
		
		type: 'GET',
		
		success: function(data, textStatus){
			loadSlideShow(data);
		}
	});
	
	function loadSlideShow(data){
				
		var shopPromos = $('#shop-promos');
		
		shopPromos.append(data);
		
		var promos = $('.promo', shopPromos);
		
		// if we have more than one promotion
		if( promos.length > 1 ){
			
			var totalWidth = 0;
			
			$.each(promos, function(){
				$(this).css('float', 'left');
				totalWidth += $(this).outerWidth();
			});
			
			$(promos[0]).addClass('current');
						
			// wrap the inner with the required structure
			shopPromos.wrapInner('<div id="shop-promos-wrapper"><div id="shop-promos-inner-wrapper"></div></div>');
			
			var shopPromosWrapper = $('#shop-promos-wrapper');
		
			var shopPromosInnerWrapper = $('#shop-promos-inner-wrapper');
			
			// set some required styling to handle overflows and positioning	
			shopPromosWrapper.css({ overflow: 'hidden', position: 'relative' });
		
			shopPromosInnerWrapper.css({ overflow: 'hidden', position: 'relative' });
			
			// finally set the width of the containing wrapper to hold all promos
			shopPromosInnerWrapper.width(totalWidth);
			
			// move the heading outside of the container to avoid any issues
			$('h2.hide', shopPromos).insertBefore(shopPromosWrapper);
			
			// set our animation interval handler			
			setInterval(function(){
								
				var next = promos.filter('.current').next();
				
				// animation
				shopPromosInnerWrapper.animate({
					left: (next.position().left * -1)
				},
				
				// animation duration
				1000,
				 
				// animation callback - move the previous promo to the end of the queue and reset position
				function(){
					promos.removeClass('current');
					next.addClass('current');
					$('.promo:first', $(this)).appendTo( $(this) );
					$(this).css('left', 0);					
				});
				
			},
			 
			// animation interval duration
			6000);
			
		}	
			
	}

}


/* ------------------------------------------------------------------------------------------------------------ */
})(jQuery);