Ok, corregiré esta parte.
 
Al entrar en la función por primera vez ni G_pFilterI ni G_pFilter tienen datos, pero están definidas como array (con lo que su length es 0 y no pasarán por el primer bucle) 
Al pasar por el segundo bucle se llenan con datos, y tras una segunda llamada pasarán por el primer bucle... 
He comprobado lo siguiente: 
Antes de llamar a la función putFilter(q), si en chrome inspecciono: 
"G_pFilter.length" me da como resultado 0, y "G_pFilter" me da como resultado "array[0]" 
Una vez dentro de la función, "G_pFilter" me da como resultado "undefinied" 
Pasa lo mismo con la otra variable. 
La única vez que llamo a la función putFilter(q) es esta:    
Código Javascript
:
Ver original- <select name="filter" id="filter" onchange="putFilter(this.options[this.selectedIndex].value)"> 
- <!--valores--> 
- </select> 
A ver si podemos sacar algo en claro porque no me lo explico... 
EDIT: 
He quitado los "var" que decías, he reiniciado de caché, he borrado los datos viejos de navegación y mágicamente ya funciona... 
En fin, cosas de la vida e internet xD 
Gracias por ayudar!