/**
*
* appendDom - Extremely flexible tool for dynamic dom creation.
*   http://byron-adams.com/projects/jquery/appendDom
*
* Copyright (c) 2007 Byron Adams (byron.adams54@gmail.com)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* 11/03/09 - Bugs fixed by Patricio Palladino pato89 (at) gmail (dot)com
*
*/
jQuery.fn.appendDom = function(template)
{
	return this.each(function()
	{
		for (element in template)
		{
			var el = (typeof(template[element].tagName) === 'string') ?	document.createElement(template[element].tagName) :	document.createTextNode('');
			delete template[element].tagName;
			for (attrib in template[element])
			{
				if(attrib == 'className')
				{
					jQuery(el).addClass(template[element][attrib]);
					delete template[element].className;
				}
				switch ( typeof(template[element][attrib]) ) 
				{
					case 'string' :
						if ( typeof(el[attrib]) === 'string' )
						{
							el[attrib] = template[element][attrib];
						}
						else
						{
							el.setAttribute( attrib, template[element][attrib] );
						}
						break;
					case 'function':
						el[attrib] = template[element][attrib];
						break;
					case 'object' :
						if (attrib === 'childNodes') jQuery(el).appendDom( template[element][attrib] );
						break;
				}
			}
			this.appendChild(el);
		}
	});
};