Source: ai/common-api/class.js

var API3 = function(m)
{
/**
 * Provides a nicer syntax for defining classes,
 * with support for OO-style inheritance.
 */
m.Class = function(data)
{
	var ctor;
	if (data._init)
		ctor = data._init;
	else
		ctor = function() { };

	if (data._super)
	{
		ctor.prototype = { "__proto__": data._super.prototype };
	}

	for (var key in data)
	{
		ctor.prototype[key] = data[key];
	}

	return ctor;
};

/* Test inheritance:
var A = Class({foo:1, bar:10});
print((new A).foo+" "+(new A).bar+"\n");
var B = Class({foo:2, bar:20});
print((new A).foo+" "+(new A).bar+"\n");
print((new B).foo+" "+(new B).bar+"\n");
var C = Class({_super:A, foo:3});
print((new A).foo+" "+(new A).bar+"\n");
print((new B).foo+" "+(new B).bar+"\n");
print((new C).foo+" "+(new C).bar+"\n");
//*/

return m;

}(API3);