function viewCreate(node) {
		var nodeName = node.name;

		if (nodeName === "text") {
			// Create a text node using the text content from the default key.
			return document.createTextNode(node.data.data);
		} else {
			// Create a DOM element.
			var element = document.createElement(nodeName); // Set data.

			var nodeData = node.data;

			for (var key in nodeData) {
				var value = nodeData[key];

				if (key[0] === "o" && key[1] === "n") {
					// Set an event listener.
					element[key.toLowerCase()] = value;
				} else {
					switch (key) {
						case "attributes":
							{
								// Set attributes.
								for (var valueKey in value) {
									element.setAttribute(valueKey, value[valueKey]);
								}

								break;
							}

						case "style":
							{
								// Set style properties.
								var elementStyle = element.style;

								for (var _valueKey in value) {
									elementStyle[_valueKey] = value[_valueKey];
								}

								break;
							}

						case "focus":
							{
								// Set focus if needed. Blur isn't set because it's the
								// default.
								if (value) {
									element.focus();
								}

								break;
							}

						case "class":
							{
								// Set a className property.
								element.className = value;
								break;
							}

						case "for":
							{
								// Set an htmlFor property.
								element.htmlFor = value;
								break;
							}

						case "children":
							{
								// Recursively append children.
								var elementMoonChildren = element.MoonChildren = [];

								for (var i = 0; i < value.length; i++) {
									var elementChild = viewCreate(value[i]);
									elementMoonChildren.push(elementChild);
									element.appendChild(elementChild);
								}

								break;
							}

						default:
							{
								// Set a DOM property.
								element[key] = value;
							}
					}
				}
			}

			return element;
		}
	}
Creates an element from a node.

@param {object} node
@returns {object} element