
// dependency: logger.js

var dom =
{
	addEvent: function(element, eventType, func, noLog) 
	{
		if (element)
		{
			element["on" + eventType] = func;
		}
		else
		{
			if (!noLog)
			{
				logger.error("Evenement sur ?l?ment inexistant");
			}
		}
	},
	
	addElement: function(parent, tagName, noLog)
	{
		if (parent)
		{
			var newElement = document.createElement(tagName);
			parent.appendChild(newElement);
			return newElement;
		}
		else
		{
			if (!noLog)
			{
				logger.error("cannot add " + tagName + " to null object");
			}
			return false;
		}
		
	},
	
	addText: function(parent, text, noLog)
	{
		if (parent)
		{
			parent.appendChild(document.createTextNode(text));
		}
		else
		{
			if (!noLog)
			{
				logger.error("cannot add text to null object");
			}
		}
	},
	
	changeText: function(parent, text, noLog)
	{
		if (parent)
		{
			if (parent.hasChildNodes())
			{
				element.childNodes[0].data = text;
			}
			else
			{
				parent.appendChild(document.createTextNode(text));
			}
		}
		else
		{
			if (!noLog)
			{
				logger.error("parent is null", "dom.changeText" );
			}
		}
	},
	
	emptyElement: function(element)
	{
		while (element.hasChildNodes())
		{
			element.removeChild(element.firstChild);
		}
	},
	
	removeElement: function(element)
	{
		element.parentNode.removeChild(element);
	},
	
	get: function(id)
	{
		return document.getElementById(id);
	},
	
	getElement: function(parent, tagName, noLog)
	{
		if (parent)
		{
			var elements = parent.getElementsByTagName(tagName);
			if (elements.length == 0)
			{
				return false;
			}
			else
			{
				return elements[0];
			}
		}
		else
		{
			if (!noLog)
			{
				logger.error("cannot get " + tagName + " from null object");
			}
			return false;
		}
	},
	
	getText: function(element, noLog)
	{
		if (element)
		{
			if (element.hasChildNodes())
			{
				return element.childNodes[0].data;
			}
			else
			{
				if (!noLog)
				{
					logger.warn("Texte introuvable");
				}
				return "";
			}
		}
		else
		{
			if (!noLog)
			{
				logger.error("Element introuvable", "dom.getText" );
			}
			return "";
		}
	},
	
	getElementText: function(parent, tagName)
	{
		return this.getText(this.getElement(parent, tagName));
	}
	
}

