Extract objects out of an array 2

This needed to be tested so it could be used in production code.

by Matt Rummler

HTML

<body>
    <section id='firstSection'>
        <div>
            div in the first section
        </div>
    </section>
    <section id='secondSection'>
        <div>
            div in the second section
        </div>
    </section>
</body>

JavaScript

/*** SUPPORTING METHODS/UTILITIES ***/
Object.forEach=(function forEach()
{
  return function(obj,fn)
  {
    if(obj.length)
    {
      for (var i = 0, ol = obj.length, v = obj[0]; i < ol && fn(v, i) !== false; v = obj[++i]);
    }
	else
    {
      for (var p in obj) if (fn(obj[p], p) === false) break;
    }
  };
})(this);
Object.toType = (function toType(global)
{
  return function(obj) 
  {
    if (obj === global) 
    {
      return "global";
    }
    return ({}).toString.call(obj).match(/\s([a-z|A-Z]+)/)[1].toLowerCase();
  };
})(this);
/****/
/*** MAIN FUNCTION BEING TESTED ***/
function removeJSONobjectsArrays(data,TargetObject)
  {
//      alert('just inside removeJSONobjectsArrays');
    var localContext=this;
      TargetObject=TargetObject || {};
    if(Object.toType(data)==='array')
    {
//        alert('data was found to be an array');
      Object.forEach(data, function(value, key)
      {
        if(Object.toType(value)=='object' && Object.toType(value)!==null && Object.toType(value)!=='undefined')
        {
            TargetObject[key]=value;//,TargetObject);
              data=removeJSONobjectsArrays(value);
        }
        else if(Object.toType(value)==='array')
        {
  //            alert('data contains another array so recursing');
          data=removeJSONobjectsArrays(data);//shouldn't this be value & not data??
        }
      });
      if(Object.getOwnPropertyNames(TargetObject).length>1)
      {
        return TargetObject;
      }
      else
      {
        return data;
      }
    }
    else if(Object.toType(data)=='object')
    {
//        alert('data was found to be an object');
      Object.forEach(data, function(value2,key2)
      {
        if(Object.toType(value2)==='array')
        {
          data[key2]=removeJSONobjectsArrays(value2);
        }
      });
      return data;
    }
  }
/****/
/*** FUNCTIONS TO SHOW RESULTS OF MAIN FUNCTION ***/
function writeComplexObjectToTarget(data,contentType,OptionObj)
{
   ...