var DOMConstructor = new Function();
DOMConstructor.prototype = {
	dom : function(elementName)
	{
		element = document.createElement(elementName);
		if(arguments[1])
		{
			for(attr in arguments[1])
			{
				if(attr == 'class')
					var attrib = 'className';
				else
					var attrib = attr;
				if(attrib=='style')
				{
					Object.extend( element.style, arguments[1][attr]);
				}
				else if(attrib=='event')
				{
					var eventArray = arguments[1][attr];
					for (var i=0;i < eventArray.length ;i+=2 ) {
     				Event.observe(element, eventArray[i], eventArray[i+1]);
     			}
				}
				else
				{
					element[attrib] = arguments[1][attr];
				}
			}
		}
		if(arguments[2])
    	this._children(element, [arguments[2]]);
		return element;
	},
	_isStringOrNumber: function(param) {
 	  return(typeof param=='string' || typeof param=='number');
 	},
  _children: function(element, children) {
  	var childF = function(e) {
      if(typeof e=='object')
        element.appendChild(e)
      else
        if(this._isStringOrNumber(e))
          element.appendChild(this._text(e));
    }
    if(typeof children=='object') {
      children.flatten().each( childF.bind(this));
    } else
      if(this._isStringOrNumber(children))
         element.appendChild(this._text(children));
 	},
 	_text: function(text) {
 	     return document.createTextNode(text);
 	},
	domUpdate:function(element, childs)
	{
    $A(element.childNodes).each(function(node){element.removeChild(node)});
    $A(childs).each(function(node){element.appendChild(node)});
		return element;
	},
	domRemove:function(element)
	{
		element.parentNode.removeChild( element );
	}
}
