/** 
 * Saves the created class into the specified module. It also creates the namespace for you.
 * @author Ariel Flesler
 */

/**
 * Ways to specify the module:
 *	@example { module: 'my.best.module' }
 *	@desc A dot separated namespace.
 *
 *	@example { module: ['my', 'best', 'module'] }
 *	@desc An array of nested names.
 *
 *	@example { module: [window.my, 'best.module'] }
 *	@desc A dot separated namespace relative to an actual object/module.
 *
 *	@example { module: [window.my, 'best', 'module'] }
 *	@desc An array of names relative to an object/module.
 */
Class.extensions( 'module', function( data, names ){
	var scope = window;
	
	if( names.split )
		names = names.split('.');
	else if( typeof names[0] != 'string' ){
		scope = names.shift();
		if( names[0].split )
			names = names[0].split('.');
	}
	
	// the names including the namespace
	data.s.fullName = names.join('.');
	// only the actual class name
	data.s.className = names.pop();
	// the whole namespace w/o class name
	data.s.moduleName = names.join('.');
	
	while( names.length ){
		var name = names.shift();
		scope = scope[name] = scope[name] || {};
	}
	// the module object
	data.s.module = scope;
	
	data.a.push(function(){
		scope[data.s.className] = data.c;
	});
});