DevFire: Problem XML Dokument per Rekursion nach ID durchsuchen

Hintergrund möchte eine XML Datei (Oberflächenbeschreibung für Firefox) nach mehreren
ID's untersuchen und die damit verbunden Elemente verstecken (Hidden setzen).

Das mit dem Hidden setzen funktioniert einwandfrei nur das rekursive Browsen der XML Datei bereitet Probleme (Abbruchbedingung kein Element im Zweig mehr da). Der XML Tree wird durchwandert bis in die tiefste Verästelung aber es wird nicht mehr zurückgesprungen. (Hört sich komplizierter an als es ist ich beschreibs mal).

XML Datei gekürzte Darstellung:

<window>
    <script/>
    <script/>

<hbox>
   <grid>
     <columns>
       <column />
       <column />  <---- Hier bleibts stehen er geht nicht zu columns zurück
     </columns>
     <rows>
       <vrow >
         <vbox>
         </vbox>
              </row>
     </rows>
   </grid>
    </hbox>
...
</window>

Jetzt die Javascript Funktionen (Einsprungpunkt ist INS.ElementsDisabled(True)):

var INS =
{
  ElementsDisabled:function(bValue)
  {
    var root = document.documentElement;

if(root.hasChildNodes())
    {
      INS.ElementsDisabled_Recursiv(bValue, root);
    }
    alert("Test: Root");
  },

ElementsDisabled_Recursiv:function(bValue, child_current)
  {
    var IDXul = "IN_S_";

var childs_next = child_current.childNodes;
    var childs_next_count = childs_next.length;

for (var i = 0; i <= childs_next_count; i++)
    {
      var child_next = childs_next[i];
      var child_next_id = child_next.getAttribute("id");

// Start Testing
      var child_next_name = child_next.nodeName.toUpperCase();
      var child_next_value = child_next.nodeValue;
      alert("Number of Child Nodes : " + childs_next_count + "\n\nCHILD_ID " + i + " : " + child_next_name + "\nValue : " + child_next_value + "\nID : " + child_next_id);
      // End Testing

// Search ID for matching String if found Show or Hide Element
      if(child_next_id.indexOf(IDXul + "securebrowsing") != -1)
      {
        INS.ElementDisabled(child_next_id, bValue);
      }

if(child_next_id.indexOf(IDXul + "anonymisationproxy") != -1)
      {
        INS.ElementDisabled(child_next_id, bValue);
      }

// If there Child Nodes open same function recursive
      if(child_next.hasChildNodes())
      {
        var RetVal = INS.ElementsDisabled_Recursiv(bValue, child_next);
        alert("Test : " + RetVal);
      }
    }
    return 0;
  },
}

  1. Lösung selbst gefunden Indexgrenzen falsch gesetzt.