CopixClass=new Class({options:{ajaxSessionId:'',module:'default',urlHandler:'default',urlBase:'',resourceUrlBase:''},initialize:function(options){$extend(this.options,options);if(this.options.ajaxSessionId){XHR.prototype.options.headers['X-Copix-AJAX-Session-Id']=this.options.ajaxSessionId;}
$extend(this,this.urlHandlers[this.options.urlHandler]||this.urlHandlers['default']);this.loadingImage=this.getResourceURL('img/tools/load.gif');var copix=this;Element.Events.linksloaded={add:function(func){if(copix.linksToLoad===null||copix.linksToLoad.length==0){func.call(this);}}};},linksToLoad:null,addLink:function(params){var id=params.id;if($(id)||(this.linksToLoad!==null&&this.linksToLoad.contains(id))){return;}
var kind=params.kind;var url=params.url;delete params.kind;delete params.url;if(kind=='javascript'){if(this.linksToLoad===null){window.removeEvents('linksloaded');this.linksToLoad=[];}
this.linksToLoad.include(id);params.onload=this.onLinkLoaded.bind(this,id);}
new Asset[kind](url,params);},onLinkLoaded:function(id){this.linksToLoad.remove(id);if(this.linksToLoad.length==0){this.linksToLoad=null;try{window.fireEvent('linksloaded');}finally{window.removeEvents('linksloaded');}}},urlHandlers:{"prepend":{getActionURL:function(action,data){var parts=action.split('|');var url=this.options.urlBase+'index.php/'+$pick(parts[0],this.options.module)+'/'+$pick(parts[1],'default')+'/'+parts[2];if(data){url+=(url.contains('?')?'&':'?')+Object.toQueryString(data);}
return url;},getResourceURL:function(path){var result=path.match(/^(?:([^|]+)\|)?(.*?)$/i);return this.options.resourceUrlBase+(result[1]||'www')+'/'+result[2];}},"default":{getActionURL:function(action,data){var parts=action.split('|');var url=this.options.urlBase+'index.php';var params=$extend(data||{},{'module':$pick(parts[0],this.options.module),'desc':$pick(parts[1],'default'),'action':parts[2]});return url+(url.contains('?')?'&':'?')+Object.toQueryString(params);},getResourceURL:function(path){var result=path.match(/^(?:([^|]+)\|)?(.*?)$/i);var url=this.options.resourceUrlBase;var params={'module':(result[1]||'www'),'path':result[2]};return url+(url.contains('?')?'&':'?')+Object.toQueryString(params);}}},sessionKeepalive:function(pingInterval){if(!this.sessionPinger&&pingInterval>0){var ajax=new Ajax(this.getActionURL('generictools|ajax|sessionPing'),{method:'get'});this.sessionPinger=ajax.request.periodical(1000*pingInterval,ajax);}else if(this.sessionPinger&&pingInterval==0){$clear(this.sessionPinger);delete this.sessionPinger;}},eventQueue:[],queueEvent:function(element,event,eventArgs){if(!element){throw"Invalid element: "+element;}
var args=[event];if(eventArgs){args.concat(eventArgs);}
this.eventQueue.push({element:element,args:args});},fireQueuedEvents:function(){while(this.eventQueue.length>0){var queuedEvent=this.eventQueue.shift();try{queuedEvent.element.fireEvent.apply(queuedEvent.element,queuedEvent.args);}catch(e){try{console.error("Error with queued event '"+queuedEvent.args[0]+"' for "+queuedEvent.element+": "+e);}catch(e2){};}}},setLoadingHTML:function(e){e.setStyle('display','');e.setHTML('<img src="'+this.loadingImage+'"/>');}});if(MooTools.version=="1.11"&&window.ie){Asset.javascript=function(source,properties){properties=$merge({'onload':Class.empty},properties);var script=new Element('script',{'src':source}).addEvent('load',properties.onload);script.onreadystatechange=function(){if(script.readyState=='complete'||script.readyState=='loaded'){script.onreadystatechange=null;script.fireEvent('load');}};delete properties.onload;return script.setProperties(properties).inject(document.head);};}
Element.extend({moveContentTo:function(element){if($type(element)=="string")element=$(element)
var inner=this.childNodes;for(i in inner){if($type(inner[i])=="element")
inner[i].injectInside(element)}}})
