
/*
	"Hemi" JavaScript Framework
	Engine for Web Applications 3.1
	Composite file "hemi.comp.js" release: 3.1.1
	Copyright 2002 - 2010. All Rights Reserved.
	Author: Stephen W. Cote
	Email: sw.cote@gmail.com
	Project: http://www.whitefrost.com/Hemi/
	BSD License: http://www.whitefrost.com/Hemi.license.txt
*/
(function(){H.include("hemi.object");H.include("hemi.util.logger");H.namespace("app.module",H,{service:null,serviceImpl:
function(){var t=this;H.prepareObject("module_service","3.1.1",0,t);H.util.logger.addLogger(t,"Module Service","Application Module Service","620");H.object.addObjectAccessor(t,"module");t.NewModule=function(n,x,p,d,b){var m=this.LoadModule(n,p,d,b),v;if(!m)return null;var v=new m.impl();if(x&&D.TF(x.getObjectType)&&x.getObjectType().match(/xhtml_component/)){v.Container=x.getContainer();v.Component=x;}if(D.TF(v.Initialize))v.Initialize();return v;};t.UnloadModuleImplementations=function(v){var o=t.getModuleByName(v),i=0,m;if(!o)return 0;for(var i=0;i<o.Impls.length;i++){if(!o.Impls[i])continue;m=H.registry.service.getObject(o.Impls[i]);if(m)m.destroy();}o.Impls=[];return 1;};t.UnloadModule=function(v){var o=t.getModuleByName(v),b=0,i=0,m;if(!o)return b;t.UnloadModuleImplementations(v);return t.removeModule(o);};t.LoadModule=function(n,p,d,b){var m=this.getModuleByName(n),o,s="",r,x;if(m)return m;if(b)x=p;else{o=H.include(n,(p?p:"Modules/"),1);if(!o||!o.raw){H.logError("Failed to load module:"+n);return 0;}x=o.raw;}if(d&&D.TF(d.DecorateModuleContent))s=d.DecorateModuleContent(n,p,x);r="(function(){"+(d&&d.DecorateModuleHeader?d.DecorateModuleHeader(n,p,x):"")+"\nH.app.module.service.Register(\""+n+"\",{impl:func"+"tion(){"+(s?s:"")+x+"this.Component=null;"+"this.Container=null;"+"var Module=null;"+"this.name=\""+n+"\";"+"this.object_prepare=function(){Module=this;H.app.module.service.AddImpl(\""+n+"\",this.i);};"+"this.object_destroy=function(){if(D.TF(this.Unload)){this.Unload();}};"+"H.prepareObject(\"module\",\"3.1.1\",1,this,1);"+"this.r=4;"+"},"+"Impls:[],"+"name:\""+n+"\""+"});}());";r=r.replace(/^\s+/,"").replace(/\s+$/,"");try{eval(r);}catch(e){H.logError("Error loading module '"+n+"'\n\n"+(e.message?e.message:e.description));return 0;}m=this.getModuleByName(n);if(!m){H.logError("Module could not be retrieved");return 0;}return m;};t.Register=function(n,c){this.addNewModule(c,n);};t.AddImpl=function(n,i){var o=t.getModuleByName(n);if(o)o.Impls[o.Impls.length]=i;};H.registry.service.addObject(t);t.r=4;}},1);}());
/* End Hemi Framework 3.1 */
