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