function getURL () {
    try {
    var docElm  = document.documentElement;
    var head    = docElm.firstChild;
    var path    = head.lastChild.src;
    var idx     = path.lastIndexOf('/');
    return path.substring(0,idx+1);
    } catch (e) {return ''}
};

function js_import (module) {
    var docElm     = document.documentElement
    var head       = docElm.firstChild;
    var scriptElm  = document.createElement('script');
    scriptElm.type = 'text/javascript';
    scriptElm.src  =  module + '.js';
    head.appendChild(scriptElm);
    return scriptElm;
};

function css_import (name) {
    var docElm   = document.documentElement
    var head     = docElm.firstChild;
    var linkElm  = document.createElement('link');
    linkElm.type = 'text/css';
    linkElm.rel  = 'stylesheet';
    linkElm.href = name + '.css';
    head.appendChild(linkElm);
};

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}