/*\

Library function for creating widget using a dom creating function

\*/

"use strict";

var Widget = require("$:/core/modules/widgets/widget.js").widget;

function createDomWidget(domCreatorFunction) {

	var MyWidget = function(parseTreeNode, options) {
		this.initialise(parseTreeNode, options);
	};

	/*
	Inherit from the base widget class
	*/
	MyWidget.prototype = new Widget();

	/*
	Render this widget into the DOM
	*/
	MyWidget.prototype.render = function(parent, nextSibling) {
		this.parentDomNode = parent;
		var domNode = domCreatorFunction(this.document);
		parent.insertBefore(domNode, nextSibling);
		this.domNodes.push(domNode);
	};

	/*
	A widget with optimized performance will selectively refresh, but here we refresh always
	*/
	MyWidget.prototype.refresh = function(changedTiddlers) {
		// Regenerate and rerender the widget and replace the existing DOM node
		this.refreshSelf();
		return true;
	};

	return MyWidget;
}
module.exports = createDomWidget;
