
var fi=fi||{};fi.common=fi.common||{};fi.common.ComponentLoader=new function(){var registeredClasses=[];var instancesByType=[];var instances=[];var api={};var registeredElements=[];api.initComponents=function($context){$context=$context||$("body");$(".fi-component",$context).each(function(index,element){api.initComponents($(element));if(registeredElements.indexOf(this)!==-1){return-1;}
registeredElements.push(this);var component=null;var element=$(element);var type=$(this).data('class');var id=null;if(registeredClasses[type]!=undefined){component=new registeredClasses[type]($(this));if($(element).data("id")){id=$(element).data("id");}else{id="fi-component"+Math.floor(Math.random()*100000)+""+index;}
component.id=id;instances[id]=component;if(typeof(instancesByType[type])==="undefined"){instancesByType[type]=[component];}else{instancesByType[type].push(component);}
component.init();}});};api.register=function(name,functionReference){registeredClasses[name]=functionReference;};api.findInstanceById=function(id){return instances[id];}
api.findInstancesByType=function(type){var result=instancesByType[type];if(result==null)
result=[];return result;}
return api;};
