How do I stop parseFloat() from stripping zeroes to right of decimal

this should work:

return parseFloat(x).toFixed(2);

you can test it by running this in firebug:

var x = '0.00';
alert(parseFloat(x).toFixed(2));

parseFloat() turns a string into a floating point number. This is a binary value, not a decimal representation, so the concept of the number of zeros to the right of the decimal point doesn't even apply; it all depends on how it is formatted back into a string. Regarding toFixed, I'd suggest converting the floating point number to a Number:

new Number(parseFloat(x)).toFixed(2);