/**
  * extend prototype Element Object
  */
Element.addMethods({
  parent:function(element, selector)
  {
    if (element.parentNode)
    {
      if ($(element.parentNode).nodeName.match(/\bbody\b/i))
      {
        return element.parentNode;
      }
      if ($(element.parentNode).match(selector))
      {
        return element.parentNode;
      }
      else
      {
        return $(element.parentNode).parent(selector);
      }
    }
    else
    {
      return element;
    }
  },
  append:function(element, content, returnContent)
  {
    if (2 > arguments.length)
    {
      return element;
    }
    if (3 > arguments.length || Object.isString(content))
    {
      returnContent = false;
    }
    if(Object.isString(content))
    {
      element.appendChild(document.createTextNode(content));
      return element;
    }
    else
    {
      element.appendChild(content);
      if(1 == content.nodeType)
      {
        return returnContent?content:element;
      }
      else
      {
        return element;
      }
    }
  },

  idMatch:function(element, regexp_id)
  {
    var findMarkerMatch=
      element
        .readAttribute('id')
        .match(regexp_id);
    return findMarkerMatch;
  }
});
