// DOM element generators for jQuery by Franck Marcia
// Inspired by DOM element creator by Michael Geary

(function(b) {

	var tags = ['A', 'DIV', 'FORM', 'IMG', 'INPUT', 'LABEL', 'LI', 'OL', 'UL',
				'OPTGROUP', 'OPTION', 'PRE', 'SELECT', 'SPAN', 'TEXTAREA'];

	function tagGen(t, n) {
		var	d = document, e = d.createElement(t);

		function apStyle(v) {
			for (var s in v)
				$.attr(e.style, s, v[s]);
		}

		function apAttr(v, k) {
			$.attr(e, k, v);
		}

		function append(o, c) {
			if (c == Array)
				for (var i=0, l=o.length; i<l; ++i)
					o[i] === null || o[i] === undefined || append(o[i], o[i].constructor);
			else if (c == Object)
				for (var a in o)
					o[a] === null || o[a] === undefined || (a == 'style' ? apStyle : apAttr)(o[a], a);
			else
				e.appendChild(o.nodeType ? o : d.createTextNode(o.toString()));
		}

		for (var i=0, l=n.length; i<l; ++i)
			n[i] === null || n[i] === undefined || append(n[i], n[i].constructor);

		return e;
	}

	function tagsGen(t) {
		b[t] = function() { return tagGen(t, arguments); };
	}

	for (var i=tags.length-1; i>-1; --i)
		tagsGen(tags[i]);

	b['NBSP'] = '\u00a0';

})($);
