Request.HTML.implement({

     processHTML: function(text){
         var match = text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
         text = (match) ? match[1] : text;
        
         var container = new Element('div');
        
         return $try(function(){
             var root = '<root>' + text + '</root>', doc;
             if (Browser.Engine.trident){
                 doc = new ActiveXObject('Microsoft.XMLDOM');
                 doc.async = false;
                 doc.loadXML(root);
             } else {
                 doc = new DOMParser().parseFromString(root, 'text/html');
             }
             root = doc.getElementsByTagName('root')[0];
             for (var i = 0, k = root.childNodes.length; i < k; i++){
                 var child = Element.clone(root.childNodes[i], true, true);
                 if (child) container.grab(child);
             }
             return container;
         }) || container.set('html', text);
     }

 });

