(function (){//v0.1 
    // add debug/debug.js to see debug info //
	if(!window.tangane){
        var _package={};
        _package.Package=function(info){};
        var _root=new _package.Package();
        _root.package = _package;

        _package.Package.prototype.error=function(msg){
            throw 'tangane - ERROR! '+msg;
        };
        _package.Package.prototype.get=function(params){
            var self=this;
            if(params.descendants.length>0){
                params.name = params.descendants.shift();
                params.ancesters.push(params.name);
                var child = self.child(params.name);
                if(!child){
                    child = self.add(params);
                };
                return child.get(params);
            }else{
                return self;
            };
        };
        _package.Package.prototype.child=function(name){
            var self=this;
            return self[name];
        };        
        _package.Package.prototype.add=function(params){
            var self=this;
            var newPackage = params.descendants.length>0 ? new _package.Package() : params.newPackage;
            if(!newPackage){
                self.error('missing package '+params.ancesters.join('.')+' while retrieving '+params.ancesters.join('.')+'.'+params.descendants.join('.')); 
                return null;
                //newPackage = new _package.Package();
            };
            self[params.name]=newPackage;
            return self[params.name];
        };

		_package.get=function(requestedPackage,caller){
            return _root.get({ancesters:[],descendants:requestedPackage.split('.'),caller:caller});
        };
		_package.create=function(packageName,info){
            return _root.get({ancesters:[],descendants:packageName.split('.'),newPackage:new _package.Package(info)});
        };
        
        _root.getElement=function(id){return window.document.getElementById(id);};
        _root.trim=function(string){return string?string.replace(/^\s+/,'').replace(/\s+$/,''):string;};
        window.tangane=_root;
	};
})();
/* - code snippet - 
(function (){var _root=tangane;var _package = _root.package.create('utils.pop',{file:'pop.js',authors:['bj'],files:{},needed:[]});
    //// add code here //// 
})();
*/
