/**
 * LazyLoad - jQuery plugin
 */
lazyModules = {
			  "dummy":""
//hook lazyModules {,ACTION}// --- HOOK BEGIN ---
,
"user-editor" : {
            		"files": {
            	   		"scripts":	["/totoya/cache/core/clib/admin/user-editor/js/user-editor.js"]
            	   		,"css":		["/totoya/cache/core/clib/admin/user-editor/css/user-editor.css"]
               		}
               		,"dependencies": []
            	          		 
               }
         // --- HOOK END ---// --- HOOK BEGIN ---
,
"sysinfo" : {
            		"files": {
            	   		"scripts":	["/totoya/cache/core/clib/admin/sysinfo/js/sysinfo.js"]
            	   		,"css":		["/totoya/cache/core/clib/admin/sysinfo/css/sysinfo.css"]
               		}
               		,"dependencies": []
            	          		 
               }
         // --- HOOK END ---// --- HOOK BEGIN ---
,
			"cSystemPanel" : {
          		"files": {
          	   		"scripts":	["/totoya/cache/core/clib/admin/panel-system/js/csystempanel.class.js"]
          	   		,"css":		["/totoya/cache/core/clib/admin/framework/css/panel.css"]
             		}
             		,"dependencies": []          	          		 
             }
         // --- HOOK END ---// --- HOOK BEGIN ---
,
			"jqueryColorbox" : {
				"files": {
					"scripts":	["/totoya/cache/core/clib/lib/jquery/jquery.colorbox.debug.js"]
					,"css":		["/totoya/cache/core/clib/lib/jquery/colorbox/colorbox.css"]
				}
				,"dependencies": []          	          		 
			}
		// --- HOOK END ---// --- HOOK BEGIN ---
,
            "jqueryHistory" : {
          		"files": {
          	   		"scripts":	[
          	   			"/totoya/cache/core/clib/lib/jquery/jquery.history.js"
          	   		]
          	   		,"css":		[]
             		}
             		,"dependencies": []
             }
         // --- HOOK END ---// --- HOOK BEGIN ---
,
			"cWebsitePanel" : {
          		"files": {
          	   		"scripts":	["/totoya/cache/core/clib/admin/panel-website/js/cwebsitepanel.class.js"]
          	   		,"css":		["/totoya/cache/core/clib/admin/framework/css/panel.css"]
             		}
             		,"dependencies": []          	          		 
             }
         // --- HOOK END ---// --- HOOK BEGIN ---
,
			"cAdmin" : {
          		"files": {
          	   		"scripts":	["/totoya/cache/core/clib/admin/framework/js/cadmin.class.js"]
          	   		,"css":		[]
             		}
             		,"dependencies": []          	          		 
             }
			,"cFramework" : {
          		"files": {
          	   		"scripts":	["/totoya/cache/core/clib/admin/framework/js/cframework.class.js"]
          	   		,"css":		[]
             		}
             		,"dependencies": []          	          		 
             }
			,"cMainToolbar" : {
          		"files": {
          	   		"scripts":	["/totoya/cache/core/clib/admin/framework/js/cmaintoolbar.class.js"]
          	   		,"css":		[]
             		}
             		,"dependencies": []          	          		 
             }
			,"standard" : {
          		"files": {
          	   		"scripts":	["/totoya/cache/core/clib/admin/framework/skin/default/js/standard.js"]
          	   		,"css":		[]
             		}
             		,"dependencies": []
             }
            ,"cTemplate" : {
          		"files": {
          	   		"scripts":	["/totoya/cache/core/clib/admin/framework/skin/default/js/ctemplate.js"]
          	   		,"css":		[]
             		}
             		,"dependencies": []
             }
         // --- HOOK END ---// --- HOOK BEGIN ---
,
				"session-store" : {
            		"files": {
            	   		"scripts":	[
            	   			"/totoya/cache/core/clib/core/ajax/js/csessionstore.class.js"
            	   			]
            	   		,"css":		[]
               		}
               		,"dependencies": []
				}
         // --- HOOK END ---// --- HOOK BEGIN ---
,
			"jqueryDatePicker" : {
				"files": {
					"scripts":	["/totoya/cache/core/clib/lib/jquery/datepicker/date.js", "/totoya/cache/core/clib/lib/jquery/datepicker/date_de.js", "/totoya/cache/core/clib/lib/jquery/jquery.datepicker-2.1.2.js"]
					,"css":		["/totoya/cache/core/clib/lib/jquery/datepicker/datepicker.css"]
				}
				,"dependencies": []          	          		 
			}
		// --- HOOK END ---// --- HOOK BEGIN ---
,
			"jqueryCookie" : {
				"files": {
					"scripts":	["/totoya/cache/core/clib/lib/jquery/jquery.cookie.js"]
					,"css":		[]
				}
				,"dependencies": []          	          		 
			}
		// --- HOOK END ---// --- HOOK BEGIN ---
,
        	"jqueryJson" : {
          		"files": {
          	   		"scripts":	["/totoya/cache/core/clib/lib/jquery/jquery.json-2.2.min.js"]
          	   		,"css":		[]
           		}
           		,"dependencies": []          	          		 
			}
         // --- HOOK END ---// --- HOOK BEGIN ---
,
              "cForm" : {
          		"files": {
          	   		"scripts":	["/totoya/cache/core/clib/lib/jquery/jquery.cform.js"]
          	   		,"css":		["/totoya/cache/core/clib/lib/jquery/cform/jquery.cform.css"]
             		}
             		,"dependencies": []
             }
         // --- HOOK END ---// --- HOOK BEGIN ---
,
              "codeMirror" : {
          		"files": {
          	   		"scripts":	[
          	   			"/totoya/cache/core/clib/lib/codemirror/js/codemirror.js"
          	   			,"/totoya/cache/core/clib/lib/jquery/jquery.codemirror.js"
          	   		]
          	   		,"css":		["/totoya/cache/core/clib/lib/jquery/codemirror/jquery.codemirror.css"]
             		}
             		,"dependencies": []
             }
         // --- HOOK END ---// --- HOOK BEGIN ---
,
              "ui" : {
          		"files": {
          	   		"scripts":	["/totoya/cache/core/clib/lib/jquery/jquery.ui.js"]
          	   		,"css":		["/totoya/cache/core/clib/lib/jquery/ui/jquery.ui.css"]
             		}
             		,"dependencies": []
             }
         // --- HOOK END ---// --- HOOK BEGIN ---
,
			"jqueryColorpicker" : {
				"files": {
					"scripts":	["/totoya/cache/core/clib/lib/jquery/jquery.colorpicker.js"]
					,"css":		["/totoya/cache/core/clib/lib/jquery/colorpicker/colorpicker.css"]
				}
				,"dependencies": []          	          		 
			}
		// --- HOOK END ---// --- HOOK BEGIN ---
,
			"jqueryComplete" : {
				"files": {
					"scripts":	["/totoya/cache/core/clib/lib/jquery/jquery.fcbkcomplete.js"]
					,"css":		["/totoya/cache/core/clib/lib/jquery/fcbkcomplete/style.css"]
				}
				,"dependencies": []          	          		 
			}
		// --- HOOK END ---// --- HOOK BEGIN ---
,
              "cList" : {
          		"files": {
          	   		"scripts":	["/totoya/cache/core/clib/lib/jquery/jquery.clist.js"]
          	   		,"css":		["/totoya/cache/core/clib/lib/jquery/clist/jquery.clist.css"]
             		}
             		,"dependencies": []
             }
         // --- HOOK END ---// --- HOOK BEGIN ---
,
              "cDialog" : {
          		"files": {
          	   		"scripts":	["/totoya/cache/core/clib/lib/jquery/jquery.cdialog.js"]
          	   		,"css":		["/totoya/cache/core/clib/lib/jquery/cdialog/jquery.cdialog.css"]
             		}
             		,"dependencies": []
             }
         // --- HOOK END ---
};

(function($) {
	var bLoading = false;			
    $.fn.lazyLoad = function(aModules, fCallback, mParams) {
		// if a lazy load is in progress -> wait until finish!
		if(bLoading) {
			window.setTimeout(function(){$.lazyLoad(aModules, fCallback, mParams)},30);
			return;
		}
		bLoading = true;
    	// init all local storages
    	var oTarget = this;
    	var aScripts = new Array();
    	var aCss = new Array();
    	// collect all files to load
    	// TODO: dependencies are not handeled jet!
    	for(var i in aModules) {
    		var sModule = aModules[i];
    		if(typeof lazyModules[sModule] != 'object' || lazyModules[sModule] == null) {
			  log("module '" + sModule+ "' is not properly configured!");
			  continue;
			}
			if(lazyModules[sModule].loaded == true) {
    			continue;
    		}
    		// set loaded to true to avoid duplicate loading
    		// TODO: exemine, if bad timing could result in unloaded modules because setting to loaded to early
    		lazyModules[sModule].loaded = true;
    		for(var j in lazyModules[sModule].files.scripts) {
    			aScripts.push(lazyModules[sModule].files.scripts[j]);
    		}
    		for(var j in lazyModules[sModule].files.css) {
    			aCss.push(lazyModules[sModule].files.css[j]);
    		}
    	}
    	// examine how many files are to be loaded
    	var iLoadCount = aScripts.length + aCss.length;
    	var iLoadedCount = -1;
    	//define a function for loaded scripts
    	var fCheckLoaded = function() {
    		iLoadedCount ++;
    		if(iLoadedCount == iLoadCount) {
				// tell everybody that we are ready with lazy loading			
				bLoading = false;
    			//execute callback
    			//timeout for Safari2 compatibility
    			window.setTimeout(function(){fCallback.call(oTarget, mParams);},10);
    		}
    	};
    	// load all scripts
    	for(var i in aScripts) {
        	$.getScript(aScripts[i], function() {
        		fCheckLoaded();
        	});
    	}
    	// load all css
    	for(var i in aCss) {
        	$.get(aCss[i], function(sCss) {
        		$("head").append("<style type='text/css'>"+sCss+"</style>");
        		fCheckLoaded();
        	});
    	}
    	fCheckLoaded();
    };
    // make it global accessible
    $.lazyLoad = $.fn.lazyLoad;
})(jQuery);
