if(typeof(He) == 'undefined')
// First bootstrap is manual
// Next ones will be made thru He.boostrap
{
	He = {};
}

He.IsObject = function(a)
{
	return a !== null && typeof(a) == 'object';
};

He.IsFunction = function(a)
{
	return typeof(a) == "function";
};

He.IsString = function(a)
{
	return typeof(a) == "string";
};

He.IsNumber = function(a)
{
	return typeof(a) == "number";
};

He.IsUndefined = function(a)
{
	return typeof(a) == "undefined";
};

He.IsArray = function(a)
{
	return He.IsObject(a) && a instanceof Array;
};

He.Bootstrap = function(_place)
// _place : [in:string] a dot separated list of nodes "He.Components.Etc."
// returns : the (valid) last object of the list
// Usage : He.Bootstrap("He.Components").NewComponent = { /* Define New Component Here */ };
{
	if(!He.IsString(_place))
	{
		return null;
	}

// 	He.Log('Bootstrapping : ',_place);

	if(_place.substr(0,3) != 'He.')
	{
		_place = 'He.' + _place; // Allways Start @ He
	}

	var ret = window;

	_place = _place.split('.');

	for(var i = 0; i < _place.length; ++i)
	{
		var o = _place[i];

		if(!He.IsObject(ret[o]))
		{
			ret[o] = new Object;
		}

		ret = ret[o];
	}

	return ret;
};
