function WebObject()
{
	this.interfaces = [];
};

WebObject.prototype.addInterface = function(interfaze)
{
	for(var member in interfaze.prototype)
	{
		var value = null;
		
		try
		{
			value = interfaze.prototype[member];
		} catch (e)
		{
		}
		
		if(value && value == WebObject.ABSTRACT_METHOD)
		{
			if(!(member in this))
			{
				throw new Error("Class does not implement method " + member);
			}
		}
	}
	
	this.interfaces.push(interfaze);
};

WebObject.prototype.hasInterface = function(interfaze)
{
	for(var i = 0; i < this.interfaces.length; i++)
	{
		var implementedInterface = this.interfaces[i];
		if(implementedInterface == interfaze)
		{
			return true;
		}
	}
	
	return false;
};

WebObject.prototype.dispose = function()
{
};

WebObject.prototype.toString = function()
{
	return "WebObject [interfaces = " + this.interfaces + "]";
}

WebObject.ABSTRACT_METHOD = function()
{
	throw new Error("Attempted to call an abstract method");
};

