Hola:
 
Una falta gravísima: 
ant.parentNode.insertBefore(r,ant);  
No puedes insertar antes del nodo ant desde el padre de ant... podrías insertar antes de cualquier hijo de ant... 
ant.parentNode.insertBefore(r,ant.firstChild); 
Esa línea inserta el nodo "r" como primer "hijo" del nodo "ant" 
No me he fijado en el resto, pero creo que primero deberías revisar eso. 
Saludos 
