/**
 * @fileOverview Namespace base de la librería js Dome.
 */
if (typeof dome == "undefined") {
   /**
    * @name dome
    * @namespace  Namespace base de la librería js Dome.
    * @private 0.1
    */
   //noinspection JSUndeclaredVariable
   dome = {};

   /**
    * @memberOf dome
    * @constant
    * @type int
    * @ignore
    */
   dome.version = 1;

   /**
    * @memberOf dome
    * @constant
    * @type {String}
    * @private
    */
   dome.jsPath = "resources";

   /**
    * Devuelve el namespace especificado. Si el namespace no existe entonces se crea. Los nombres de
    * los namespaces no pueden contener ninguna palabra reservada (Aunque en algunos navegadores puede que funcione
    * no es compatible con todos).
    * <p />
    * Cuando se crea un namespace, éste se genera siempre bajo el namespace base dome. De este modo las dos siguientes
    * instrucciones crearían el mismo namespace <tt>dome.util</tt>.
    * <pre>
    *    dome.namespace("dome.util");
    *    dome.namespace("util");
    * </pre>
    *
    *
    * @param namespace  {String} Nombre del namespace.
    *
    * @return {Object}  Referencia al namespace especificado.
    *
    * @throws "Invalid argument" si el <code>namespace</code> indicado es <code>null</code>.
    */
   dome.namespace = function (namespace) {
      if (namespace == null) { throw "Invalid argument"; }

      var name = namespace.split(".");
      var actual = dome;

      var i = (name[0] == "dome" ? 1 : 0);
      while (i < name.length) {
         if (typeof actual[name[i]] == "undefined") {
            actual[name[i]] = {};
         }
         actual = actual[name[i]];
         i++;
      }

      return actual;
   };

   dome.include = function (path) {
      var oScript = document.createElement("script");
      oScript.type = "text/javascript";
      oScript.src = path.replace("dome.", dome.jsPath + "/").replace(/[.]/g,"/") + ".js";
      document.getElementsByTagName("head")[0].appendChild(oScript);
   };

} else {
   alert ("Namespace DOME is already defined.");
}
