Due soli appunti (ma non ho testato nulla )

interval = setInterval("calc()",1);

Mi sembra pretestuoso concede un solo millisecondo al javascript per eseguire i calcoli e modificare la pagina... prova ad aumentarlo

if (document.acquista.totali.value <= valori[0])

Qui fai un confronto fra stringhe... trasforma gli elementi convolti usando parseFloat()

ciao