Element.addMethods({

toHTML: function(element) {
  if (typeof element=='string') element = $(element);  // IE needsthat check with XML
  return Try.these(
    function() {
      var xmlSerializer = new XMLSerializer();
      return  element.nodeType == 4 ? element.nodeValue :
xmlSerializer.serializeToString(element);
    },
    function() {
      return element.xml || element.outerHTML || $
(element).clone().wrap().up().innerHTML;
    }
  ) || '';

},

getStyles: function(element) {
  element = $(element);
  return $A(element.style).inject({}, function(styles, styleName) {
    styles[styleName.camelize()] = element.getStyle( styleName );
    return styles;
  } );

},

clone: function(element) {
	var clone = new Element(element.tagName);

	if (element.attributes)
	{
		if (Prototype.Browser.IE)
		{
			$A(element.attributes).each(function(attr) {
				if (attr.specified && attr.nodeName != 'style')
				{
					clone.writeAttribute(attr.nodeName, attr.nodeValue);
				}
			});		
		}
		else
		{
			$A(element.attributes).each(function(attribute) {
				if (attribute.name != 'style') clone.writeAttribute(attribute.name, attribute.value); 
			});
		}
	}

	clone.setStyle( element.getStyles() );
	if (element.innerHTML)
	{
		clone.update(element.innerHTML);
	}
	return clone;

}
 
});

function insertIntoHead ( url, type ){
        var attrs = new Hash();
        var element;
        switch (type){
            case 'javascript':
                attrs = {
                            type    : 'text/javascript',
                            src     : url
                    };
                   element = new Element('script', attrs);

            break;
            case 'css':
                attrs = {
                            type    : 'text/css',
                            rel     : 'stylesheet',
                            href    : url
                        };
                element = new Element('link', attrs);
                break;
            default : return false;
        }
        $$('head')[0].insert(element);
}
