
if(typeof LITHIUM=='undefined'){var LITHIUM={};};

LITHIUM.Loader=function(){var functionCache=[];var loaded=false;return{"onLoad":function(func){functionCache.push(func);},getOnLoadFunctions:function(){return functionCache;},setLoaded:function(){loaded=true;},isLoaded:function(){return loaded;}}}();

if(typeof LITHIUM.Components=='undefined'){LITHIUM.Components={};};LITHIUM.Components.render=function(componentId,data,optionsParam){var runner=function(){var requestUrl=LITHIUM.Components.renderUrl(componentId);var options={method:"GET",dataType:"json"}
LITHIUM.jQuery.extend(options,optionsParam||{});LITHIUM.jQuery.extend(options,{url:requestUrl});options.data=LITHIUM.jQuery.extend(data,options.data);new LITHIUM.jQuery.ajax(options);}
if(LITHIUM.Loader.isLoaded()==true){runner();}else{LITHIUM.Loader.onLoad(runner);}}
LITHIUM.Components.renderUrl=function(componentId,parameters){var url=LITHIUM.Components.RENDER_URL;LITHIUM.jQuery.each({"component-id":componentId},function(key,value){url=url.replace(new RegExp("#{"+key+"}","g"),value)});if(typeof parameters!=="undefined"){url+="?"+LITHIUM.jQuery.param(parameters);}
return url;}
LITHIUM.Components.renderInPlace=function(componentId,parametersParam,optionsParam){if(LITHIUM.Loader.isLoaded()==false){var parameters=parametersParam||{};var options=optionsParam||{};var placeHolderId=new Date().getTime().toString();document.write("<div id='"+placeHolderId+"'></div>");options.success=function(data){LITHIUM.jQuery("#"+placeHolderId).replaceWith(data.content);}
LITHIUM.Components.render(componentId,parameters,options);}else{throw new Error("LITHIUM.Components.renderInPlace can only be used during page loading.")}}
LITHIUM.Components.renderTemplateInPlace=function(template,options){LITHIUM.Components.renderInPlace("common.widget.template-content",{value:template},options);}
LITHIUM.Components.renderTemplate=function(template,options){return LITHIUM.Components.render("common.widget.template-content",{value:template,asMarkup:true},LITHIUM.jQuery.extend(options,{dataType:"html"}));}
