/*============================================================================*\
	Inspired by DOM element creator for jQuery and Prototype by Michael Geary
	http://mg.to/topics/programming/javascript/jquery
\*============================================================================*/

$._createNode = function(tag, args) {
	var u = ['BR', 'HR', 'IMG', 'INPUT'];
	var e = ['<' + tag];
	var attrs = args[0] || {};
	for (var attr in attrs)
		e.push(' ', attr, '="', attrs[attr], '"');
	if (u[tag]) {
		e.push('/>');
		return e.join('');
	}
	e.push('>');
	for (var i = 1; i < args.length; ++i) {
		var arg = args[i];
		if (arg == null) continue;
		if (arg.constructor != Array) e.push(arg);
		else for (var j = 0; j < arg.length; j++)
			e.push(arg[j]);
	}
	e.push('</', tag, '>');
	return e.join('');
};

$.defineTag = function(tag) {
	$[tag] = function() {return $._createNode(tag, arguments);}
};

(function() {
	var tags = ['A', 'B', 'BR', 'BUTTON', 'DIV', 'FIELDSET', 'FORM',
		'H1', 'H2', 'H3', 'HR', 'I', 'IMG', 'INPUT', 'LABEL', 'LEGEND',
		'LI', 'OL', 'OPTGROUP', 'OPTION', 'P', 'PRE', 'SELECT', 'SPAN',
		'STRONG', 'TABLE', 'TBODY', 'TD', 'TEXTAREA', 'TFOOT', 'TH',
		'THEAD', 'TR', 'TT', 'UL'];
	for (var i = 0; i < tags.length; ++i) {
		$.defineTag(tags[i]);
	}
})();

$.NBSP = '\u00a0';
