jQuery(document).ready( function()
{
	
	/* History Plugin
	********************************************************************************/

	$.historyInit(pageload, "jquery_history.html");

	function pageload(hash) {
		
		// PageLoad function
		// This function is called when:
		// 1. after calling $.historyInit();
		// 2. after calling $.historyLoad();
		// 3. after pushing "Go Back" button of a browser
			
		if(hash) {
			// restore ajax loaded state
			if($.browser.msie) {
				// jquery's $.load() function does't work when hash include special characters like.
				hash = encodeURIComponent(hash);
			}
			
			var switchClass = '';
			jQuery( "#nav_categories ul li a" ).removeClass('selected');

			if(hash == '' || hash == '/') {
				hash = "category-sunglasses"; 
			}

			if(hash == "category-sunglasses") { 
				switchClass = "sunglasses";
				switchResults(switchClass);
				switchDetails(switchClass);
				switchCategory(switchClass);
				switchBanner(switchClass);
				
			} else if(hash == "category-goggles") { 
				switchClass = "goggles";
				switchResults(switchClass);
				switchDetails(switchClass);
				switchCategory(switchClass);
				switchBanner(switchClass);
				
			} else if(hash == "category-watches") { 
				switchClass = "watches";
				switchResults(switchClass);
				switchDetails(switchClass);
				switchCategory(switchClass);
				switchBanner(switchClass);
				
			} else if(hash == "category-backpacks") {
				switchClass = "backpacks";
				switchResults(switchClass);
				switchDetails(switchClass);
				switchCategory(switchClass);
				switchBanner(switchClass);
				
			} else if(hash == "category-accessories") {
					switchClass = "accessories";
					switchResults(switchClass);
					switchDetails(switchClass);
					switchCategory(switchClass);
					switchBanner(switchClass);
				
			} else if(hash == "category-sunglasses-all") {		
				switchSubTabs('all');
				//// Show all sunglasses on load
				jQuery(".section").show();
				
			} else if(hash == "category-sunglasses-sport") {
				switchClass = "sunglasses";
				switchResults(switchClass);
				switchDetails(switchClass);
				switchCategory(switchClass);
				switchBanner(switchClass);
				switchSubTabs('sport');
				
			} else if(hash == "category-sunglasses-active") {
				switchClass = "sunglasses";
				switchResults(switchClass);
				switchDetails(switchClass);
				switchCategory(switchClass);
				switchBanner(switchClass);
				switchSubTabs('active');
				
			} else if(hash == "category-sunglasses-lifestyle") {
				switchClass = "sunglasses";
				switchResults(switchClass);
				switchDetails(switchClass);
				switchCategory(switchClass);
				switchBanner(switchClass);
				switchSubTabs('lifestyle');
				
			} else if(hash == "category-sunglasses-women") {
				switchClass = "sunglasses";
				switchResults(switchClass);
				switchDetails(switchClass);
				switchCategory(switchClass);
				switchBanner(switchClass);
				switchSubTabs('women');
				
			} else if(hash == "category-sunglasses-asian") {
				switchClass = "sunglasses";
				switchResults(switchClass);
				switchDetails(switchClass);
				switchCategory(switchClass);
				switchBanner(switchClass);
				switchSubTabs('asian');
			
			} else if(hash == "category-sunglasses-mlb") {
				switchClass = "sunglasses";
				switchResults(switchClass);
				switchDetails(switchClass);
				switchCategory(switchClass);
				switchBanner(switchClass);
				switchSubTabs('mlb');
				
				} else if(hash == "category-end-of-season-specials") {
				switchClass = "sunglasses";
				switchResults(switchClass);
				switchDetails(switchClass);
				switchCategory(switchClass);
				switchBanner(switchClass);
				switchSubTabs('season_specials');
				
			} else {
				//// Show all sunglasses on load
				jQuery(".section").show();
			}
				
		} else { 
			// NO HASH OR HISTORY - so load sunglasses, all //
			
			jQuery( "#nav_categories ul li a" ).removeClass('selected');
			jQuery( "#nav_categories ul li a.sunglasses" ).addClass('selected');
			
			jQuery( "ul.subnav li a" ).removeClass('selected');
			jQuery( "ul.subnav li a.all" ).addClass('selected');
			
			
			jQuery(".section").show();
		
			switchClass = "sunglasses";
			switchResults(switchClass);
			switchDetails(switchClass);
			switchCategory(switchClass);
			switchBanner(switchClass);
		}
	} // end pageload history function

	
	jQuery( "#nav_categories ul li a" ).click( function( ev )
	{
		if( !jQuery( ev.target ).hasClass( 'selected' ))
		{
			strTargetClass = jQuery( ev.target ).attr('class');
			switchResults( strTargetClass );
			switchDetails( strTargetClass )
			switchCategory( strTargetClass );
			switchBanner( strTargetClass );
		}
		ev.stopPropagation();
		//return false;
	});


	jQuery( "ul.subnav li a" ).click( function( ev )
	{
		if( !jQuery( ev.target ).hasClass( 'selected' ))
		{
			strTargetClass = jQuery( ev.target ).attr('class');
			//switchSubTabs( ev.target );
			switchSubTabs( strTargetClass );
		}
		ev.stopPropagation();
		//return false;
	});
	
	jQuery("ul.subnav li a.all").click(function() {
		jQuery(".section").show();
	});

}); // end document ready //


/* FUNCTIONS */

function switchBanner( strClass )
{
	jQuery( "#banner a" ).each( function(i)
	{
		if( jQuery( this ).hasClass( strClass ))
		{
			jQuery( this ).fadeIn();
			jQuery( this ).addClass( 'selected' );
		}
		else
		{
			jQuery( this ).fadeOut();
			jQuery( this ).removeClass( 'selected' );
		}
	});
}

function switchResults( strId )
{
	jQuery( "#collections>div" ).each( function(i)
	{
		if( this.id == strId )
		{
			jQuery( "#" + this.id ).show();
			jQuery( "#" + this.id ).addClass( 'selected' );
		}
		else if( this.id != "preconfigured" )
		{
			jQuery( "#" + this.id ).hide();
			jQuery( "#" + this.id ).removeClass( 'selected' );
		}
	});
}

function switchCategory( strId )
{
	jQuery( "#nav_categories ul li a" ).each( function(i)
	{
		if( jQuery( this ).hasClass( strId ))
		{
			jQuery( this ).addClass( 'selected' );
			slideHighlight( jQuery( this ));
		}
		else
		{
			jQuery( this ).removeClass( 'selected' );
		}
	});
}

function switchDetails( strId )
{
	jQuery( "#details>div" ).each( function(i)
	{
		if( jQuery( this ).hasClass( strId ))
		{
			jQuery( this ).fadeIn();
		}
		else
		{
			jQuery( this ).fadeOut();
		}
	});
}

function switchSubTabs( objTarget )
{
	jQuery('ul.subnav li a').removeClass('selected');
	jQuery('ul.subnav li a.' + objTarget).addClass('selected');
	
	jQuery( "#nav_categories ul li a.sunglasses" ).addClass('selected');
	
	switchSubNavContent(objTarget);
}

function switchSubNavContent( strTargetClass )
{
	jQuery( ".section" ).each( function(i)
	{
		if( this.id == strTargetClass || strTargetClass == "all" )
		{
			jQuery( "#" + this.id ).show();
		}
		else
		{
			jQuery( "#" + this.id ).hide();
		}
	});
}

function slideHighlight( objNavItem )
{
	// bg image for our highlight is 101px
	var intSlideTo = ((objNavItem.offset().left-jQuery("#nav_categories ul").offset().left)+10)+Math.ceil(objNavItem.width()/2)-Math.floor(101/2);

	jQuery( "#nav_categories" ).animate({backgroundPosition: '(' + intSlideTo + 'px 100%)'}, "slow");
}