/**
 * @author jordi.touza
 * 
 * DOM PROTOTYPE
 */  

if (typeof(_funky.DOM) == "undefined") _funky.DOM = {};

/**
 * Create Element
 * @param {Object} type
 * @param {Object} attr
 * @param {Object} cont
 * @param {Object} html
 */
_funky.DOM.createElement = function  (type, attr, cont, html){
	
	var ne = document.createElement(type);

	if (!ne)	return 0;
		
	for (var a in attr) ne[a] = attr[a];
	
	var t = typeof(cont);
	
	if (t == "string" && !html)			ne.appendChild(document.createTextNode(cont));
	else if (t == "string" && html)		ne.innerHTML = cont;
	else if (t == "object")				ne.appendChild(cont);

	return ne;
};

/**
 * Get Element
 * @param {Object} element
 */

_funky.DOM.getElement = function (element){
	
	var t = typeof(element);
	
	if (t == "undefined")									return 0;
	else if (t == "string"){

		var re = document.getElementById(element);

		if (!re)											return 0;
		else if (typeof(re.appendChild) != "undefined" )	return re;
		else												return 0;
	}
	
	else if (typeof(element.appendChild) != "undefined")	return element;
	else													return 0;
};

/**
 * Remove element
 * @param {Object} element
 */
_funky.DOM.removeElement = function (element){
	
	var e = this.getElement(element);
	
	if (!e)									return 0;
	else if (e.parentNode.removeChild(e))	return true;
	else									return 0;
};

/**
 * Get Position
 * @param {Object} element
 */
_funky.DOM.getPosition = function (element){
	
	var e 		= this.getElement(element);
	var obj 	= e;
	var curleft = 0;
	
	if (obj.offsetParent){
		
		while (obj.offsetParent){
			
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)		curleft += obj.x;
	
	var obj 	= e;	
	var curtop 	= 0;
	
	if (obj.offsetParent){

		while (obj.offsetParent){
			
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	
	else if (obj.y) curtop += obj.y;

	return {x:curleft, y:curtop};
};