
	/*
	JS
	--------------------------------------------------------------------------------------------
	@site			sho.com (beta)
	@file			SHO.js
	@author			dpaul
	@desc			Sets up a modular js library and SHO namespace.
	@note			Added mapping for /user-picks.do
	@modfied		05.05.09
	@depend			prototype, swfobject
	
	/* =:SHO
	--------------------------------------------------------------------------------------------*/
	if(typeof SHO =="undefined"){ var SHO = new Object(); }
	SHO.Helpers = [];
	SHO.library = function()
	{ 
		var jsBase = "/site/beta/js/com/sho";
		var KEY_IN = '/site/';
		var KEY_OUT = '.do';
		var TOKEN = '_';
		
		var library = 
		{
			global: [
				'Debugger',
				'Dialogs',
				'Utils',
				'NavUIHelp',
				'Cosmetics',
				'Backgrounds',
				'Overlay',
				'SimpleVideo',
				'MoviesModule',
				'HDModule',
				'Membership',
				'PasswordHelp'
			],
			
			components: [
				'Accordion',
				'Glider'
			],
			
			home: [
				'AnnouncementsUIHelp',
				'HomeUIHelp'
			],
			
			series: [
				'SeriesUIHelp'
			],
			movies: [
				'MoviesUIHelp'
			],
			
			top_rated: [
				'TopRatedUIHelp'
			],
				
			user_picks: [
				'UserPicksUIHelp'
			],
			
			ecards: [
				'DropDownMenu',
				'Validation',
				'EcardsUIHelp'
			],
			
			schedules_grid: [
					'ChannelData',
					'ChannelInfo',
					'ProductInfo',
					'DropDownMenu',
					'Calendar',
					'DateMenu',
					'GridSlider',
				'GridUIHelp'
			],
			
			schedules_channel: [
					'ChannelData',
					'DropDownMenu',
					'Calendar',
					'DateMenu',
				'ChannelUIHelp'
			],
			
			schedules_ondemand: [
					'OnDemandModel',
					'OnDemandView',
					'OnDemandController',
				'OnDemandUIHelp'
			],
			
			schedules_product: [
				'PhotoGallery',
				'ProductPageUIHelp'
			],
			
			search: [
				'SearchUIHelp'
			]
			
			// leave off last comma!
		};
		
		
		/* =:Startup
		--------------------------------------------------------------------------------------------*/
		function init()
		{
			if( document.location.search.toString().indexOf('noscript') > -1 ) return;
			document.write( "\n" );
			loadModule ( library.global, 'global' );
			loadModule ( library.components, 'components' );
			parseLocation()
		}
		
		function parseLocation()
		{
			var urlStr = document.location.pathname;
			var str1 = urlStr.substr( urlStr.indexOf( KEY_IN ) + KEY_IN.length );
			var str2 = str1.substr( 0, str1.indexOf( KEY_OUT )).replace(/-/, '_');
			var path = str2.split('/');
			
			// check for flattened homepage
			if( document.location.pathname.indexOf('/index.html') !== -1 ){
				loadModule ( library.home, 'home' );
			}
			// check for flattened schedule grid
			if( document.location.pathname.indexOf('/grid.html') !== -1 ){
				loadModule ( library.schedules_grid, 'schedules' );
			}
			
			// check for search.sho.com
			if( document.location.host.indexOf('search.sho.com') !== -1 ||
				document.location.pathname.indexOf('/search/results.html') !== - 1 ||
				document.location.pathname.indexOf('/search/results-local.html') !== - 1 ){				
				loadModule ( library.search, 'search' );
			}
											   
			else importModules ( path );
			
		}
		
		function importModules ( path )
		{
			var m = "";
			for( var i=0; i<path.length; i++ ){
				m += path[i];
				if( typeof library[ m ] == "object" &&  library[ m ] !== null ){ 
					loadModule( library[ m ], path[0] );
				}
				m+=TOKEN;
			}
		}
		
		function loadModule( mod, package )
		{ 
			package = ( package == false ) ? '' : '/' + package;
			for( var i=0; i<mod.length; i++) 
			{
				document.write( '<script language="javascript" src="'+ jsBase + package + '/'+
							   			mod [i] + '.js"></script>'+"\n" );	
			}
		}
		
		
		/* Reveal public methods 
		-------------------------*/
		return {
		deploy:init
		}
		
	}();

	SHO.library.deploy(); 
	