  
  if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){
  	HTMLElement.prototype.insertAdjacentElement = function (where,parsedNode) {
  		switch (where){
  		case 'beforeBegin':
  			this.parentNode.insertBefore(parsedNode,this)
  			break;
  		case 'afterBegin':
  			this.insertBefore(parsedNode,this.firstChild);
  			break;
  		case 'beforeEnd':
  			this.appendChild(parsedNode);
  			break;
  		case 'afterEnd':
  			if (this.nextSibling) 
          this.parentNode.insertBefore(parsedNode,this.nextSibling);
  			else 
  				this.parentNode.appendChild(parsedNode);
  			break;
  		}
  	}
  
  	HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr) {
  		var r = this.ownerDocument.createRange();
  		r.setStartBefore(this);
  		var parsedHTML = r.createContextualFragment(htmlStr);
  		this.insertAdjacentElement(where,parsedHTML)
  	}
  
  
  	HTMLElement.prototype.insertAdjacentText = function(where,txtStr) {
  		var parsedText = document.createTextNode(txtStr)
  		this.insertAdjacentElement(where,parsedText)
  	}
  }
  
  function outerHTMLReplace(Element, Str) {
    
    Element.insertAdjacentHTML("afterEnd", Str);
  	Element.parentNode.removeChild(Element);
  	
  }

