El "misterio" es bastante simple y no tiene que ver con el DOM.
 
El problema es este:  
Código:
 function saludar(mensaje) {
    alert(mensaje);
    saludar = 7;
}
saludar("hola");
saludar("hola");
  Si pruebas ese código verás que la primera llamada funciona y la segunda se queja de que 
saludar no es una función. ¿Por qué? Porque dentro hemos asignado otra cosa distinta a 
saludar. 
En tu código ocurre lo mismo: 
Código:
  function pq() {
    //...
    pq = document.getElementById("pq");
    //...
}
  Soluciones:
- No usar los mismos nombres para cosas distintas
  - Cuando quieras usar una variable local, declárala como variable local (var pq = ...)
  - Limpia tu código más, porque en este caso ni siquiera es necesaria esa variable. El elemento pq ya se lo estás pasando a la función al llamarla con pq(this):
 
Código:
 function pq(elemento) {
    //...
    if(navigator.appName != "Microsoft Internet Explorer"){
        elemento.style.color = '#FF3300';
    }
    //...
}
    - Limpia tu código más aún. No necesitas 4 funciones distintas cuando las cuatro hacen lo mismo. Parametriza lo que sea distinto y usa una única función.