HTMLElement.prototype.__defineSetter__("innerHTML", function(str) {
   var r = this.ownerDocument.createRange();
   r.selectNodeContents(this);
   r.deleteContents();
   var df = r.createContextualFragment(str);
   this.appendChild(df);
   return str;
});

HTMLElement.prototype.__defineGetter__("innerHTML", function() {
   return getInnerHTML(this);
});

HTMLElement.prototype.__defineSetter__("outerHTML", function(str) {
   var r = this.ownerDocument.createRange();
   r.setStartBefore(this);
   var df = r.createContextualFragment(str);
   this.parentNode.replaceChild(df, this);
   return str;
});

HTMLElement.prototype.__defineGetter__("outerHTML", function() {
   return getOuterHTML(this)
});

