kivitendo/js/namespace.js @ 31fe31f4
224291dd | Thomas Heck | var namespace = (function() {
|
|
var namespace = function(nsString, callback) {
|
|||
var nsParts = nsString.split(namespace.namespaceDelimiter);
|
|||
var ns = namespace.root;
|
|||
var len = nsParts.length;
|
|||
for(var i=0; i<len; ++i)
|
|||
{
|
|||
if( !ns[nsParts[i]] )
|
|||
ns[nsParts[i]] = {__namespaceAutoCreated: true};
|
|||
ns = ns[nsParts[i]];
|
|||
}
|
|||
if( callback )
|
|||
{
|
|||
var nsExt = callback.call(ns, ns);
|
|||
if( nsExt )
|
|||
{
|
|||
if( !ns )
|
|||
ns = {};
|
|||
for(var key in nsExt)
|
|||
ns[key] = nsExt[key];
|
|||
}
|
|||
ns.__namespaceAutoCreated = false;
|
|||
}
|
|||
else if( namespace.loadNamespace && ns.__namespaceAutoCreated )
|
|||
{
|
|||
var url;
|
|||
var len = namespace.namespaceLocations.length;
|
|||
for(var i=0; i<len; ++i)
|
|||
{
|
|||
var entry = namespace.namespaceLocations[i];
|
|||
if( nsString.indexOf(entry.namespace) === 0 )
|
|||
{
|
|||
url = entry.location;
|
|||
break;
|
|||
}
|
|||
}
|
|||
url += "/"+ nsString +".js";
|
|||
jQuery.ajax({
|
|||
url: url,
|
|||
async: false,
|
|||
dataType: "text",
|
|||
success: function(res) {
|
|||
eval(res);
|
|||
/*
|
|||
var script = window.document.createElement("script");
|
|||
script.type = "text/javascript";
|
|||
script.text = res;
|
|||
window.document.body.appendChild(script);
|
|||
*/
|
|||
},
|
|||
error: function(xhr, textStatus, errorThrown) {
|
|||
alert(textStatus +": "+ errorThrown);
|
|||
},
|
|||
});
|
|||
}
|
|||
return ns;
|
|||
};
|
|||
return namespace;
|
|||
})();
|
|||
window.namespaceRoot = {};
|
|||
namespace.root = window.namespaceRoot;
|
|||
namespace.namespaceDelimiter = ".";
|
|||
namespace.namespaceLocations = [{namespace: "", location: "js"}];
|
|||
namespace.loadNamespace = true;
|