if( typeof ark == "undefined" ) {
    var ark = window.ark || {};
}

ark.namespace = function() {
    var a=arguments, o=null, i, j, d;
    for (i=0; i<a.length; i=i+1) {
        d=a[i].split(".");
        o=ark;

        // ark is implied, so it is ignored if it is included
        for (j=(d[0] == "ark") ? 1 : 0; j<d.length; j=j+1) {
            o[d[j]]=o[d[j]] || {};
            o=o[d[j]];
        }
    }

    return o;
};

ark.init = function() {
    this.namespace( "util", "widget");
}

if( typeof ark != "undefined" ) {
    ark.init();
}

function _ark_require_loaded() {
}

function _ark_require_state() {
}

var _ark_static_server;

function _ark_get_server() {
    // Look for ark.js
    var oHead = document.documentElement.getElementsByTagName("HEAD")[0];
    var n = oHead.childNodes.length;
    for(var i = 0; i < n; i++ ) {
        if( oHead.childNodes[i].tagName == 'SCRIPT' ) {
            var sURL = oHead.childNodes[i].getAttribute('src');
            var sFile = sURL.substring(sURL.lastIndexOf('/')+1);
            if(sFile.indexOf('?') != -1) {
                sFile = sFile.substring(0,sFile.indexOf('?'));
            }
            if( sFile == 'ark.js' ) {
                var prot = sURL.substring(0,sURL.indexOf('/'));
                sURL = sURL.substring(sURL.indexOf('//')+2);
                sURL = sURL.substring(0,sURL.indexOf('/'));
                return  prot + '//' + sURL +'/';
            }
        }
    }

}

function ark_require(sURL) {
    // TODO go through the list first to see if it was already added
    if( sURL.substring(4) != 'http' ) {
        // let's find static server
        if( typeof _ark_static_server == 'undefined' ) {
            _ark_static_server = _ark_get_server();
        }
        sURL = _ark_static_server + sURL;
    }
    var oHead = document.documentElement.getElementsByTagName("HEAD")[0];
    var oScript = document.createElement('SCRIPT');
    oScript.setAttribute('type','text/javascript');
    oScript.setAttribute('src',sURL);
    oScript.onload = _ark_require_loaded;
    oScript.onreadystatechange = _ark_require_state;
    oHead.appendChild(oScript);
}

