Gracias por tu ayuda, venkman. Al final pude resolverlo mediante tu ayuda y la de caricatos, del que estuve leyendo varios posts como referencias.
 
Pese a todo, finalmente no lo hice mediante getElementById. 
El código me ha quedado así:    
Código javascript
:
Ver originalfunction checkFormChecks () {
    ob_1 = document.getElementById("date1");
    ob_2 = document.getElementById("date2");
 
    arrEnv = "[";
 
    for (x = 0; x < document.forms[0].elements["cb[]"].length; x ++)
    {
        arrAux = document.forms[0].elements["cb[" + x + "]"].value.split('-');
 
        val = arrAux[0];
        hab = arrAux[1];
 
        if (!document.forms[0].elements["cb[" + x + "]"].checked)
            val = 0
 
        if (x == (document.forms[0].elements["cb[]"].length - 1))
            arrEnv = arrEnv + "{\"val\":" + val + ",\"hab\":" + hab + "}"
        else
            arrEnv = arrEnv + "{\"val\":" + val + ",\"hab\":" + hab + "},"
    }
 
    arrEnv = arrEnv + "]";
 
    ajax = objetoAjax ();
 
    ajax.open ("GET", "php/query3.php?arrEnv=" + arrEnv + "&date1=" + ob_1.value + "&date2=" + ob_2.value, true);
 
    ajax.onreadystatechange = function() {
        if (ajax.readyState == 1) {
            document.getElementById('step3').style.opacity = 1.0;
            document.getElementById("formFinal").innerHTML = "<img src='img/ajax-loader.gif' title='Cargando...' alt='Cargando...'/>";
        }
        else if (ajax.readyState == 4) {
            if (ajax.status == 200)
                document.getElementById("formFinal").innerHTML = ajax.responseText;
            else if(ajax.status == 404)
                resultado.innerHTML = "Objeto no encontrado";
            else
                resultado.innerHTML = "Error: " + ajax.status;
        }
    }
    ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    ajax.send(null);
}
  
¡Gracias por la ayuda!