[% IF not class %][% class = 'Class' %][% END -%]
[% IF not parent %][% parent = 'Object' %][% END -%]
[% IF not params %][% params = [ 'r1', 'r2' ] %][% END -%]
[% IF not licence %][% licence = 'gpl' %][% END -%]
[% IF not functions %][% functions = ['example'] %][% END -%]
[% INCLUDE js/jdoc/class.js %]
/*
[%- INCLUDE licence.txt -%]
*/

[% class %].prototype             = new [% parent %]();
[% class %].prototype.constructor = [% class %];
[% class %].superclass            = [% parent %].prototype;
[% INCLUDE js/jdoc/func.js description => 'object creator' -%]
function [% class %]( [% FOREACH param = params %][% param %], [% END %] ) {
    if ( arguments.length > 0 ) this.init( '[% class %]', [% FOREACH param = params %][% param %], [% END %] );
}

/**
 *  @param  class_name: The name of the class instantiating this object.
[% INCLUDE js/jdoc/params.js -%]
 *
 *  The [% class %] object initialiser
 */
[% class %].prototype.init = function( class_name, [% FOREACH param = params %][% param %], [% END %] ) {

    // init the parent class
    [% class %].superclass.init.call( this, class_name );

    this.bodyid = bodyid;
}
[% FOREACH method = functions %]
[% INCLUDE js/method.js %]
[% END -%]