1 (function () {//execute in anonymous namespace/closure:
  2 
  3 /** @memberOf mmir.require */
  4 var mmirf_config = {
  5 	
  6 	/** @memberOf mmir.require.config */		
  7 	baseUrl: './mmirf'
  8 		
  9 	//TODO this should be defined/"defineable" somewhere else (outside the framework-scope) 
 10 	, config: {
 11 		
 12 		/** @memberOf mmir.require.config.moduleConfig */
 13 	    'inputManager': {
 14 	        scxmlDoc: 'config/statedef/inputDescriptionSCXML.xml'
 15 	        // simple | mode 
 16 	        , mode: 'extended'
 17 	        //EXAMPLE: set module-specific log-level to 'info'
 18 //		    , logLevel: 'info'
 19 	    }
 20 	    
 21 	    , 'dialogManager': {
 22 	        scxmlDoc: 'config/statedef/dialogDescriptionSCXML.xml'
 23 	        // simple | mode 
 24 	        , mode: 'extended'
 25 	        //EXAMPLE: set module-specific log-level to 'verbose'
 26 //		    , logLevel: 'verbose'
 27 	    }
 28 
 29         //EXAMPLE: set module-specific log-level to 'warn' 
 30 	    //         log-levels: 'verbose' | 'debug' | 'info' | 'warn' | 'error' | 'critical' | 'disabled'
 31 	    //         or number:     0           1        2        3         4           5           6
 32 //	    , 'view': { logLevel: 'warn' }
 33 	    
 34 	}
 35 
 36 	, paths : {
 37 		/** @memberOf mmir.require.config.paths */
 38 	    // core
 39 		  'core': 'core'
 40  	    , 'main': 'main'
 41  	    
 42 	    // lib
 43  	    , 'jquery': 'vendor/libs/jquery-2.1.3'
 44  	    , 'scion': 'vendor/libs/scion-amd'
 45 	    
 46 	    // globals and AMDs
 47  	    , 'constants': 'tools/constants'
 48  	    , 'commonUtils': 'tools/commonUtils'
 49 	    , 'stringExtension': 'tools/extensions/StringExtensions'		
 50 	    , 'dictionary': 'tools/dictionary'
 51 	    , 'paramsParseFunc': 'tools/paramsParseFunc'
 52 		, 'env': 'tools/envDetect'
 53 		, 'envInit': 'tools/envInit'
 54 	    
 55 	    // dialog/input manager
 56 	    , 'inputManager': 'manager/dialog/inputManager'
 57 	    , 'dialogManager': 'manager/dialog/dialogManager'
 58 	    , 'engineConfig': 'manager/dialog/engineConfig'
 59 	    
 60 	    , 'scionEngine': 'manager/dialog/scion/scionEngine'
 61 	    , 'scionUtil': 'manager/dialog/scion/scionUtil'
 62 	    
 63 	    // controllers/models
 64 	    , 'controllerManager': 'manager/controllerManager'
 65 	    , 'controller': 'mvc/controllers/controller'
 66 	    , 'helper': 'mvc/controllers/helper'
 67 	    , 'modelManager': 'manager/modelManager'
 68 	    
 69 	    // #####################################################################
 70 	    // ########### PRESENTATION LAYER (TODO: make changeable) ##############
 71 	    // #####################################################################
 72 	    
 73 	    , 'presentationManager':  'manager/presentationManager'
 74 	    
 75 	    //default view-engine (this ID is used in core.viewEngine)
 76 	    , 'jqmViewEngine': 'env/view/jqmViewEngine'
 77 	    
 78 	    //dependencies for the jqmViewEngine (NOTE these may not be loaded, if jqmViewEngine is not loaded)
 79 		, 'jqm' : 			'vendor/libs/jquery.mobile-1.4.3'
 80 		, 'jqmSimpleModal':	'vendor/libs/jquery.simplemodal-1.4.4'
 81 		
 82 		, 'waitDialog':		'tools/stdlne-wait-dlg'
 83 
 84 	    // @chsc03 required by parseUtils and all its dependencies declared in presentationManager
 85 	    , 'antlr3' : 'vendor/libs/antlr3-all'
 86 	    
 87 	    , 'configurationManager': 'manager/settings/configurationManager'
 88 	    	
 89 	    // @chsc03 required by contentElement, renderUtils, declared in presentationManager [@russa not really...]
 90 	    , 'languageManager': 'manager/settings/languageManager'
 91 	    	
 92 	    , 'mediaManager': 'manager/mediaManager'
 93 		, 'notificationManager': 'manager/notificationManager'
 94 	    
 95 
 96 		, 'viewConstants': 'mvc/views/viewConstants'
 97 	    // @chsc03 depends on parseUtils, renderUtils, yield, required in presentationManager
 98 	    , 'layout': 'mvc/views/layout'
 99 	    // @chsc03 depends on parseUtils, renderUtils, contentElement, required in presentationManager
100 	    , 'view': 'mvc/views/view'
101 	    // @chsc03 depends on parseUtils, renderUtils, contentElement, required in presentationManager
102 	    , 'partial': 'mvc/views/partial'				
103 	    , 'contentElement': 'mvc/views/contentElement'
104 	    , 'yield': 'mvc/views/yield'
105 	    
106     	// @chsc03 renderUtils required by presentationManager and depends on parserModule
107 	    , 'renderUtils': 'mvc/parser/templateRenderUtils'
108 	    , 'parserModule': 'mvc/parser/parserModule'
109 
110 		, 'storageUtils': 'mvc/parser/storageUtils'
111 	    
112 	    // @chsc03 parseUtils depends on the following paths
113 	    , 'parseUtils': 'mvc/parser/templateParseUtils'				
114 	    , 'ES3Lexer': 'gen/parser/ES3Lexer'
115 	    , 'ES3Parser': 'gen/parser/ES3Parser'
116 	    , 'scriptLexer': 'gen/parser/MmirScriptLexer'
117 	    , 'scriptParser': 'gen/parser/MmirScriptParser'
118 	    , 'contentLexer': 'gen/parser/MmirScriptContentLexer'
119 	    , 'contentParser': 'gen/parser/MmirScriptContentParser'				
120 	    , 'templateLexer': 'gen/parser/MmirTemplateLexer'
121 	    , 'templateParser': 'gen/parser/MmirTemplateParser'
122 	    
123 	    // @chsc03 templateProcessor depends on parsingResult
124 	    , 'templateProcessor': 'mvc/parser/templateProcessor'
125 	    , 'parsingResult': 'mvc/parser/parsingResult'
126 	    	
127     	//grammar related
128 		, 'grammarConverter': 'semantic/grammarConverter'
129 		, 'semanticInterpreter': 'semantic/semanticInterpreter'
130 		, 'asyncGrammar': 'semantic/asyncGrammar'
131 		, 'jscc':  'vendor/libs/jscc-amd'
132 		, 'jison': 'vendor/libs/jison'
133 		, 'pegjs': 'vendor/libs/peg-0.8.0'
134 		, 'asyncGen': 'env/grammar/asyncGenerator'
135 		, 'jsccGen': 'env/grammar/jsccGenerator'
136 		, 'jsccAsyncGen': 'env/grammar/jsccAsyncGenerator'
137 		, 'jisonGen': 'env/grammar/jisonGenerator'
138 		, 'jisonAsyncGen': 'env/grammar/jisonAsyncGenerator'
139 		, 'pegjsGen': 'env/grammar/pegjsGenerator'
140 		, 'pegjsAsyncGen': 'env/grammar/pegjsAsyncGenerator'
141 
142 		//MD5 checksum computation: for checking pre-compiled resources, e.g.
143 		//    grammars (JSON->JS), and templates (eHTML->JS)
144 		, 'md5' : 'vendor/libs/md5'
145 		, 'checksumUtils' : 'tools/checksumUtils'
146 
147 		//utility function for loading LINK tags (i.e. CSS files) into the current document
148 		, 'loadCss' : 'tools/loadCss'
149 
150 	    , 'commonUtilsCompatibility' : 'tools/extensions/CommonUtilsCompatibility'
151 	    , 'languageManagerCompatibility' : 'tools/extensions/LanguageManagerCompatibility'
152 	    
153 	},//END: paths : {...
154 
155 	shim : {
156 		
157 		/** @memberOf mmir.require.config.shim */
158 	    'antlr3':         {exports : 'org'}
159 		
160 		, 'md5':            {exports : 'CryptoJS'}
161 		
162 		, 'pegjs':       	{exports: 'PEG'}
163 		
164 		, 'ES3Lexer':       {deps: ['antlr3'], exports: 'ES3Lexer'}
165 		, 'ES3Parser':      {deps: ['antlr3'], exports: 'ES3Parser'}
166     	, 'scriptLexer':    {deps: ['antlr3'], exports: 'MmirScriptLexer'}
167     	, 'scriptParser':   {deps: ['antlr3'], exports: 'MmirScriptParser'}
168     	, 'contentLexer':   {deps: ['antlr3'], exports: 'MmirScriptContentLexer'}
169     	, 'contentParser':  {deps: ['antlr3'], exports: 'MmirScriptContentParser'}
170     	, 'templateLexer':  {deps: ['antlr3'], exports: 'MmirTemplateLexer'}
171     	, 'templateParser': {deps: ['antlr3'], exports: 'MmirTemplateParser'}
172     	
173     	//dependencies for jqmViewEngine (may not be loaded if jqmViewEngine is not loaded)
174     	, 'jqm': ['jquery']
175     	, 'jqmSimpleModal': ['jqm']
176 	}
177 	
178 };//END: require.config({...
179 
180 
181 var reqInstance = requirejs.config(mmirf_config);
182 
183 reqInstance(['core'], function(core){
184 	
185 	//attach the local-require instance:
186 	core.require = reqInstance;
187 	
188 	//get the "entry-point", i.e. module-name/-id that will be loaded (default: "main") 
189 	var startModule = core.startModule;
190 	
191 	//setup the logger implementation:
192 	// one of ['logger' | 'loggerDisabled']
193 	var logConfig = {paths:{'logger': 'tools/logger'}};
194 	if(core.debug === false){
195 		//this will load a "disabled" logger implementation with no-op functions etc.
196 		logConfig.paths.logger += 'Disabled';
197 	}
198 	//if the "functional" logger is set, configure it:
199 	else{
200 		
201 		//retrieve/set the default log-level:
202 		if(typeof core.logLevel !== 'undefined'){
203 			logConfig.config = {'logger': {logLevel: core.logLevel}};
204 		}
205 		
206 		//set up the stacktrace for log messages (or not)
207 		var isEnableTrace = true;
208 		if(typeof core.logTrace !== 'undefined'){
209 			isEnableTrace = core.logTrace;
210 		}
211 		
212 		//normalize config object
213 		if(!logConfig.config){
214 			logConfig.config = {};
215 		}
216 		if(!logConfig.config['logger']){
217 			logConfig.config['logger'] = {};
218 		}
219 		
220 		if(isEnableTrace === true || (isEnableTrace && isEnableTrace.trace === true)){
221 			//add module ID for stacktrace library
222 			logConfig.paths['stacktrace'] = 'vendor/libs/stacktrace-v0.6.4';
223 			logConfig.config['logger'].trace = isEnableTrace;
224 		}
225 		else {
226 			//define dummy module for stacktrace library (will not be used!)
227 			define('stacktrace', function(){ return function(){}; });
228 			logConfig.config['logger'].trace = false;
229 		}
230 
231 	}
232 	//"append" the logger-config
233 	core.config(logConfig);
234 	
235 	
236 	//apply all configs / modifications that were made on the core-module
237 	core.applyConfig(mmirf_config);
238 	
239 	
240 	//finally: trigger framework loading
241 	core.require(['logger',startModule]);
242 });
243 
244 }());//END: (function(){...
245