var $ = YAHOO.util.Dom.get;
YAHOO.namespace("com.webucator");

(function(){
	
	var Loader = function(){
		this.packages = ['button','animation','container','selector','element','json','menu','connection','tabview','calendar'];
		this.pageHandlers = [];
	};
	
	Loader.prototype = {
		/**
		* The class's construction function
		* @property constructor
		* @return void
		*/
		constructor: Loader,
		
		/**
		* I call all page handlers after the YUI loading is complete
		* @return void
		*/
		run: function(){
			window.webucator = new YAHOO.com.webucator.Base();
			for (var i=0; i<this.pageHandlers.length; i++){
				this.pageHandlers[i]();
			}
		},
		
		/**
		* I add a page handler that will be fired after YUI loading is complete
		* @param fn <Function> The user-defined function to call
		* @return void
		*/
		addPageHandler: function(fn){
			this.pageHandlers.push(fn);
		},
		
		getPackages: function(){
			return this.packages;
		},
		
		setPackages: function(p){
			this.packages = p;
		},
		
		addPackage: function(p){
			this.packages.push(p);
		}
		
	};
	
	YAHOO.com.webucator.Loader = Loader;
})();
window.loader = new YAHOO.com.webucator.Loader();

YAHOO.util.Event.addListener(window, 'load', function(){
	new YAHOO.util.YUILoader({
		require: window.loader.getPackages(),
		timeout:10000,
		loadOptional:true,
		combine: true,
		/*base: '/scripts/libs/yui/2.8.0r4/build/',
		filter: 'debug,*/
		onSuccess: function(){
			window.loader.run()
		},
		onFailure: function(){
			window.alert('Loading of dependent JavaScript files failed.')
		}
	}).insert();
});
