// insertAdjacentHTML(), insertAdjacentText() and insertAdjacentElement()
// for Netscape 6/Mozilla by Thor Larholm thor@jscript.dk

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;
    } // end of switch
  }

  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);
  }

} // end if
  
// loadXML() for Mozilla by Erik Arvidsson
// http://webfx.eae.net/dhtml/xmlextras/xmlextras.html

if (typeof XMLDocument != "undefined" && !XMLDocument.prototype.loadXML) {
 
  XMLDocument.prototype.loadXML = function(txtStr) {
  //Document.prototype.loadXML = function (s) {

    // parse the string to a new doc
    var doc = (new DOMParser()).parseFromString(txtStr, "text/xml");

    // remove all initial children
    while (this.hasChildNodes())
      this.removeChild(this.lastChild);

    // insert and import nodes
    for (var i = 0; i < doc.childNodes.length; i++) {
      this.appendChild(this.importNode(doc.childNodes[i], true));
    }
  }

} // end if
