document.head.appendChild(script);

ora, non so se è questo ... ma hai provato con:

head.appendChild(script); ???

no perchè l'head che prendi è questo
var head = document.getElementsByTagName ("head")[0];

P.S. inoltre se ne appendi tanti di JS non so se l'ordine conta ... dovresti fare un replace dell' esistente, se creato, se devi switchare le funzioni