Cuando se ejecuta la funcion del
setTimeout, la variable
id ya no existe. Para comprobarlo cambialo por algo asi:
Código HTML:
setTimeout("alert("+id+")",5000);
Una posible solucion seria enviar una cadena a la funcion
hide en lugar de enviarle una variable, colocando apostrofes.
Código HTML:
setTimeout("hide('"+id+"')",5000);