/*
	RequireUtils
	Requires Mootool 1.2 Core
	Requires lib.ok.utils.StringUtils
	Ok!nteractif
*/

var RequireUtils = 
{
	required		: [],
	toBeCached		: false,
	scriptsPath		: 'scripts/js/',
	
	importRequired	: function()
	{
		this.required.each(function(lib){
			this.require(lib)
		}.bind(this));
	},
	
	require			: function(lib, path) 
	{
		if(!path) path = this.scriptsPath;
		
		switch(typeof lib){
		case 'object':
			if( lib.constructor == Array ){
				for(var i=0; i< lib.length; i++){
					this.includeJS(lib[i], path);
				}
			}else{
				for(key in lib){
					this.require(lib[key], path + key + '/');
				}
			}
		break;
		case 'string':
			this.includeJS(lib, path);
		}		
	},
	
	includeJS		: function(lib, path)
	{
		lib = lib.replace(/\./g,'/');
		lib = lib.replace(/\::/g,'.');
		
		var src = path + lib + '.js';
		if(!this.toBeCached) src += '?' + new Date().getTime();
		document.writeln('<script type="text/javascript" src="' + src + '"><\/script>');
	},
	
	checkForAttribute : function(libName, attribute)
	{
		var js = this.getLibTag(libName);
		if(!js) return false;
		
		return this.getAttribute(libName, attribute) ? true : false;
	},
	
	getAttribute : function(libName, attribute)
	{
		var js = this.getLibTag(libName);
		if(!js) return false;
		
		if(js.src.match(/\?/)){
			if(js.src.match(attribute+'='))
				return StringUtils.getQueryVariable(attribute, js.src);
			else if(js.src.match(attribute)) return attribute;
		}
		return false;
	},
	
	getLibTag		: function(libName)
	{
		
		var js;
		var scriptLibs = $$('script');
		for(var i = 0; i < scriptLibs.length; i++){
			js = scriptLibs[i];
			if(js.src.match(libName)){
				return js;
			}
		}
		return false;
	}
};

// Required for StringUtils.getQueryVariable
RequireUtils.require('lib.ok.utils.StringUtils');