Gixaw=window.Gixaw=function(){return{namespace:function(){for(var i=0;i<arguments.length;i++){var parts=arguments[i].split('.');if(parts.length>0){var part=parts.shift();var object=window[part]=window[part]||{};while(part=parts.shift()){object[part]=object[part]||{};object=object[part];}}}},empty:function(){},format:function(template,data){template=template||'';data=data||{};return template.replace(/\$\{(\w+)\}/g,function(whole,match){return data[match]||'';});}};}();Gixaw.Router=function(){var _isRootMounted=true;var _defaultMountName='site';var _rootUrl='/';var _defaultUrlFormat='/index.php?request=${name}&${params}';var _mounts={};var _modules={};var _assets={};return{setRootMounted:function(isRootMounted){_isRootMounted=(typeof(isRootMounted)=='undefined'||isRootMounted);},isRootMounted:function(){return _isRootMounted;},setRootUrl:function(rootUrl){_rootUrl=rootUrl;},getRootUrl:function(){return _rootUrl;},addMount:function(name,defaultModuleName,urlFormat){_mounts[name]={defaultModuleName:defaultModuleName,urlFormat:urlFormat};},addModule:function(name,mountName,urlPrefix){_modules[name]={mountName:mountName,urlPrefix:urlPrefix};},setDefaultMountName:function(name){_defaultMountName=name;},getDefaultMountName:function(){return _defaultMountName;},setDefaultUrlFormat:function(urlFormat){_defaultUrlFormat=urlFormat;},getDefaultUrlFormat:function(){return _defaultUrlFormat;},getDefaultModuleNameForMount:function(mountName){if(_mounts[mountName]&&_mounts[mountName]['defaultModuleName']){return _mounts[mountName]['defaultModuleName'];}
return mountName;},getUrlFormatForMount:function(mountName){var urlFormat=Gixaw.Router.getDefaultUrlFormat();if(_mounts[mountName]&&_mounts[mountName]['urlFormat']){var urlFormat=_mounts[mountName]['urlFormat'];}
if(mountName!=Gixaw.Router.getDefaultMountName()){urlFormat=mountName.replace(/[\/]*$/,'').replace(/^[\/]*/,'')+'/'
+urlFormat.replace(/[\/]*$/,'').replace(/^[\/]*/,'');}
return urlFormat;},getMountNameForModule:function(moduleName){if(!Gixaw.Router.isRootMounted()&&_modules[moduleName]&&_modules[moduleName]['mountName']){return _modules[moduleName]['mountName'];}
return Gixaw.Router.getDefaultMountName();},getUrlPrefixForModule:function(moduleName){if(_modules[moduleName]&&_modules[moduleName]['urlPrefix']){return _modules[moduleName]['urlPrefix'];}
return Gixaw.Router.isDefaultModuleInMount(moduleName)?'/':moduleName.replace(/[\/]*$/,'').replace(/^[\/]*/,'')+'/';},isDefaultModuleInMount:function(moduleName){return(moduleName==Gixaw.Router.getDefaultModuleNameForMount(Gixaw.Router.getMountNameForModule(moduleName)));},registerAsset:function(name,url){_assets[name]=url;},getAssetUrl:function(name){if(!_assets[name]){return Gixaw.Router.generate('assets/'+name.replace(/^[\/]*/,''));}
return _assets[name];},match:function(resource,separator){if(typeof(separator)=='undefined'){separator='/';}
var parts=resource.split(separator);var moduleName='';var part;while(part=parts.shift()){moduleName=moduleName+((moduleName.length==0)?part:'/'+part);if(_modules[moduleName]){return{moduleName:moduleName,resource:parts.join(separator)};}}
return{moduleName:Gixaw.Router.getDefaultMountName(),resource:resource};},generate:function(name,params){var match=Gixaw.Router.match(name);var moduleName=match.moduleName;var actionName=match.resource;if(typeof(params)=='undefined'){params={};}
var qs=[];for(var key in params){qs.push(key+'='+params[key]);}
var urlFormat=Gixaw.Router.getUrlFormatForMount(Gixaw.Router.getMountNameForModule(moduleName));var actionName=(Gixaw.Router.getUrlPrefixForModule(moduleName).replace(/[\/]*$/,'')
+'/'+actionName).replace(/^[\/]*/,'');var url=Gixaw.format(urlFormat,{name:actionName.replace(/[\/]*$/,'').replace(/^[\/]*/,''),params:qs.join('&')});return Gixaw.Router.getRootUrl().replace(/[\/]*$/,'')+'/'+url.replace(/[\/\&\?]*$/,'').replace(/^[\/\&\?]*/,'');}};}();Gixaw.Config=function(){var _items={};return{has:function(name){return(typeof(_items[name])!='undefined');},set:function(name,value){_items[name]=value;},get:function(name,defaultValue){if(!Gixaw.Config.has(name)){return defaultValue;}
return _items[name];},remove:function(name){delete _items[name];}};}();Gixaw.Language=function(){var _strings={};return{loadModule:function(moduleName,strings){_strings[moduleName]=strings;},getString:function(name,defaultValue){var parts=name.split('.');var moduleName=parts.shift();var sectionName=parts.shift();var stringName=parts.join('.');if(_strings[moduleName]&&_strings[moduleName][sectionName]&&_strings[moduleName][sectionName][stringName]){return _strings[moduleName][sectionName][stringName];}
if(defaultValue){return defaultValue;}
return name;},getFormattedString:function(name,params){var value=Gixaw.Language.getString(name)
params=params||{};for(var i in params){params[i]=Gixaw.Language.getString(params[i]);}
return value.replace(/\%([\w\-\_]+)\%/g,function(whole,match){return params[match]||'';});}};}();Gixaw.Util=function(){return{htmlSpecialChars:function(text){var div=document.createElement('div');var textNode=document.createTextNode(text);div.appendChild(textNode);return div.innerHTML;}};}();