var vanilla =
{
    Version	: '0.1', 
    
    namespace : function(name)
    {
	if ( !name )
	{
	    return window;
	}

	var current = window;
	var names = name.split('.');
	for ( var i = 0 ; i < names.length ; i++ )
	{
	    var name = names[i];
	    current[name] = current[name] || {};
	    current = current[name];
	}
	
	return current;
    },

    extend : function(obj, properties, notOverride)
    {
	if ( !obj || !properties )
	{
	    return;
	}
	
	for ( property in properties )
	{
	    if ( !notOverride || !obj[property] )
	    {
		obj[property] = properties[property];
	    }
	}
    },

    debug : function(s)
    {
	var d = document.getElementById("vanilla-debug");
	if ( !d )
	{
	    d = document.createElement("DIV");

	    d.style.font	= "menu";
	    d.style.clear	= "both";
	    d.id 		= "vanilla-debug";

	    document.body.appendChild(d);
	}

	d.innerHTML += (s + "<br>");
    },

    exists : function(name)
    {
	if ( !name )
	{
	    return false;
	}

	var current = window;
	var names = name.split('.');
	for ( var i = 0 ; i < names.length ; i++ )
	{
	    current = current[ names[i] ];
	    if ( !current )
	    {
		    return false;
	    }
	}
	
	return true;
    },

    require : function(e)
    {
	if ( !vanilla.exists(e) )
	{
	    throw "The package is required : " + e;
	}
    },

    emptyFunction : function(){}
};
