Chrisschristou, ask yourself a few questions :

• Why calculate `grandtotal` but not use it?
• Why is `grandtotal = parseFloat(totalofptotal + shippingtotal)` inside the loop?
• Should there be a `shippingtotal += ...` statement?
• Is the expression `shippingtotal = parseFloat(shipping * wholeqtty)` correct? Is shipping proportional to quantity? It may be, but typically it doesn't cost twice as much to ship two items to the same address. Most shipping companies charge by weight or "volumetric weight".
• `grandtotal = parsefloat(...)` and `shippingtotal = parsefloat(...)` - Why `parsefloat()` values that are already numbers? `parsefloat()` is only necessary to convert a string representation of a number to Number.

Edited by Airshow

i have change the focntion but still same i take some line out of loop,
but for the shipping i know but i don't know how to calculate by weight
cause i have to shipp by airmail and express.
how i can do ??
i have prudct weight

``````=< 250gr
> 250gr
>500gr
=>1000gr
``````

for diferece price by diferent shipping option.
for the moment here is the script i edited

``````<script type="text/javascript">
function MM_validateForm() { //v4.0
if (document.getElementById){
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
} if (errors) alert('The following error(s) occurred:\n'+errors);
document.MM_returnValue = (errors == '');
} }
</script>
``````