ModuleObjects = new Array;

function Module(site_name, package_name, module_name, implementation_name, query_params)
{
	this.objectId = (site_name ? site_name : '')+'_'+package_name+'_'+module_name+'_'+implementation_name;	

	this.siteName = site_name;
	this.packageName = package_name;
	this.moduleName = module_name;
	this.implementationName = implementation_name;
	
	this.queryParams = query_params;
	
	this.content = null;
	this.onLoadedHandler = function(){};
	
	this.init = function()
	{
		ModuleObjects[this.objectId] = this;
	}
	
	this.loadContent = function(force_refresh)
	{
		if(!this.content || force_refresh)
		{
			params = Object.extend(this.queryParams.toQueryParams(), {object_id:this.objectId,
													site_name:this.siteName,
													package_name:this.packageName,
													module_name:this.moduleName,
													implementation_name:this.implementationName});
						
			AjaxScriptAsync('ModuleGetContent', params);
		}
	}
	
	this.setContent = function(content)
	{
		this.content = content;
		
		this.onLoadedHandler();
	}
	
	
	this.init();
} 