var SERGEYCHE=SERGEYCHE||{tools:{}};SERGEYCHE.tools.add_js=function(url,bDefer)
{var scrptElement=document.createElement("script");scrptElement.setAttribute("type","text/javascript");scrptElement.setAttribute("language","JavaScript");scrptElement.setAttribute("src",url);if(bDefer)
{scrptElement.setAttribute("defer",true);}
document.getElementsByTagName("head")[0].appendChild(scrptElement);};SERGEYCHE.remoteloader={loaders:{},callbacks:{},detach:function(request_id)
{var loader=this.loaders[request_id];if(loader!==null)
{delete this.loaders[request_id];}
return loader;},cancel:function(request_id)
{var loader=this.detach(request_id);if(!loader)
{return;}
if(typeof loader.onCancel==="function")
{loader.onCancel(request_id);}},load:function(loader,request_id)
{if(typeof loader==='undefined'||typeof loader.url==='undefined'||typeof loader.onSuccess!=='function')
{throw('Loader object must have at least url property and onSuccess event handler');}
this.loaders[request_id]=loader;this.callbacks[request_id]=function(request_id)
{return function(data){var r=request_id;delete SERGEYCHE.remoteloader.callbacks[r];return SERGEYCHE.remoteloader.callback(data,r);};}(request_id);if(loader.timeout>0)
{setTimeout("SERGEYCHE.remoteloader.timeout('"+request_id+"')",loader.timeout);}
loader.request_id=request_id;SERGEYCHE.tools.add_js(loader.url);},callback:function(callback_data,request_id)
{var loader=this.detach(request_id);if(!loader)
{return;}
if(typeof loader.onSuccess==="function")
{loader.onSuccess(callback_data,request_id);}},timeout:function(request_id)
{var loader=this.detach(request_id);if(!loader)
{return;}
if(typeof loader.onFailure==="function")
{loader.onFailure(request_id);}}};