(function()
{
	Common.Object.create('static Typical.Preloader', {

		started : false,

		preload : function()
		{
			if(this.started)
				return;
			
			this.started = true;
			
			this.retrievePreloadableFiles();
		},
		
		retrievePreloadableFiles : function()
		{
			new Ajax.Request(
								Config.baseUrl + 'dynamicexternal/xml/typical/externalpreloadersite',
								{
									method 			: 'get',
									onSuccess 		: function(transport)
									{
										this.preloadableFiles = transport.responseXML;
										
										if(this.preloadableFiles != null)
											this.processPreloadableFiles();
										
									}.bind(this)
								}
						 );	
		},
		
		processPreloadableFiles : function()
		{
			var files = this.preloadableFiles.selectNodes('preloadableFiles/file');
			
			if(files.length == 0)
				return;	

			var loaderIndex = 0;
			
			var loader = function(file)
			{
				new Ajax.Request(
									Config.baseUrl + file.attributes.getNamedItem('url').value,
									{
										method 		: 'get',
										onComplete 	: function(transport)
										{
											loaderIndex++;
											
											if(loaderIndex != files.length)
												setTimeout(function()
												{
													loader(files[loaderIndex]);
												}.bind(this), 250);
											
										}.bind(this)
									}
								 );	
			}.bind(this);
			
			// Wait a sec, to let the requested content load.
			setTimeout(function()
			{
				loader(files[0]);
			}.bind(this), 1000);
		}
		
	});
})();
