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

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


HTMLElement.prototype.innerHTML getter = function () {
   return getInnerHTML(this);
}

HTMLElement.prototype.outerHTML getter = function () {
   return getOuterHTML(this)
}

