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