oos = new function() {
	;
}

//initialisation librairies js toutou
toutou.require(
	"toutou.event.manager", 
	"toutou.html.dom", 
	"toutou.effect.morph", 
	"toutou.js.closure",
	"toutou.utils.cookies",
	"toutou.frame.defaultFrame",
	"toutou.html.event.boundarymove"
);

toutou.event.manager.extend(oos);
toutou.config.extraRootUrls.oos = 'common_js';

// own oospores wrapper for TouTouJS
toutou.config.requireWrapper = 'js/jslib/oos_wrapper.php';	
toutou.require = function(/*String+*/) {
	var modulesToLoadWithWrapper = new Array();
	
	for (var argumentCounter=0; argumentCounter<arguments.length; argumentCounter++) 
	{
		var newModuleName = arguments[argumentCounter];
		
		toutou.debugLogger.log("VERBOSE","Require " + newModuleName);
		if(!newModuleName) { continue; }

		// check if module is already loaded
		if (this.loadedModules[newModuleName]) 
		{
			continue;
		}

		// create intermediate objects if necessary
		var p = newModuleName.split('.');
		var parentModule = window;
		for (var i=0; i<p.length; i++) 
		{
			var subModuleName = p[i];
			if (!parentModule[subModuleName]) 
			{
				parentModule[subModuleName] = {};
			}
			parentModule = parentModule[subModuleName];
		}

		// set rootUrl
		var p = newModuleName.split(".");
		var rootUrl = this.config.extraRootUrls[p[0]];
		if (!rootUrl) { rootUrl = this.config.rootUrl; }

		// load module
		if (this.config.requireWrapper) 
		{
			modulesToLoadWithWrapper.push(newModuleName);
		}
		else 
		{
			// convert periods to slashes
			var url = rootUrl + "/" + newModuleName.replace(/\./g, '/') + '.js';
			this.loader.loadUri(url);

			// update loaded modules
			this.loadedModules[newModuleName] = true;
		}
		this.loadedModules[newModuleName] = true;
	}

	// load modules with wrapper
	if (this.config.requireWrapper && modulesToLoadWithWrapper.length > 0) 
	{
		// use external wrapper
		var url = this.config.requireWrapper;
		url+= "?Modules=" + modulesToLoadWithWrapper.join(":");
		
		var keys = new Array();
		for (var key in this.loadedModules) { keys.push(key); };
		url+= "&LoadedModules=" + keys.join(":");
		this.loader.loadUri(url);
	}
};

toutou.require(
	"oos.ajax",
	"oos.form",
	"oos.frame",
	"oos.menu",
	"oos.multiupload",
	"oos.style"
);