function autoCurrencyFormat(fld, e)
{

  var milSep = '.';
  var decSep = ',';
  var sep = 0;
  var key = '';
  var i = j = 0;
  var len = len2 = 0;
  var strCheck = '0123456789';
  var aux = aux2 = '';
  var whichCode = null;
  if (window.event)
    whichCode = window.event.keyCode;
  else if (e)
    whichCode = e.which;
 
  if (whichCode == 13) return true;  // Enter
  key = String.fromCharCode(whichCode);  // Get key value from key code
  if (strCheck.indexOf(key) == -1) return false;  // Not a valid key

  len = fld.value.length;
  for(i = 0; i < len; i++)
    if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
  aux = '';
  for(; i < len; i++)
    if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
  aux += key;
  len = aux.length;
  if (len == 0) fld.value = '';
  if (len == 1) fld.value = '0'+ decSep + '0' + aux;
  if (len == 2) fld.value = '0'+ decSep + aux;
  if (len > 2)
  {
    aux2 = '';
    for (j = 0, i = len - 3; i >= 0; i--)
    {
      if (j == 3)
      {
        aux2 += milSep;
        j = 0;
      }
      aux2 += aux.charAt(i);
      j++;
    }
    fld.value = '';
    len2 = aux2.length;
    for (i = len2 - 1; i >= 0; i--)
      fld.value += aux2.charAt(i);
    fld.value += decSep + aux.substr(len - 2, len);
  }
  return false;
}

function reformatField(fld, e)
{
  var milSep = '.';
  var decSep = ',';
  var sep = 0;
  var i = j = 0;
  var len = len2 = 0;
  var strCheck = '0123456789';
  var aux = aux2 = '';
  var len = fld.value.length;
  var whichCode = null;
  if (window.event)
    whichCode = window.event.keyCode;
  else if (e)
  {
    len = len-1;  // "Bacalhau". Neste caso o fld.value vem com o valor antes da edição
    whichCode = e.which;
  }
  if ((whichCode == 8) ||  // backspace
      (whichCode == 0))   //delete
  {
    for(i = 0; i < len; i++)
      if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
    aux = '';
    for(; i < len; i++)
      if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
    len = aux.length;
    if (len == 0) fld.value = '';
    if (len == 1) fld.value = '0'+ decSep + '0' + aux;
    if (len == 2) fld.value = '0'+ decSep + aux;
    if (len > 2)
    {
      aux2 = '';
      for (j = 0, i = len - 3; i >= 0; i--)
      {
        if (j == 3)
        {
          aux2 += milSep;
          j = 0;
        }
        aux2 += aux.charAt(i);
        j++;
      }
      fld.value = '';
      len2 = aux2.length;
      for (i = len2 - 1; i >= 0; i--)
        fld.value += aux2.charAt(i);
      fld.value += decSep + aux.substr(len - 2, len);
    }
  }
  return true;
}

function formatNumToCurrency(num) 
{
  num = num.toString().replace(/\$|\./g,'');
  num = num.toString().replace(/,/,'.');
  if(isNaN(num))
  num = "0"; 
  num  = Math.abs(num);
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10)
    cents = "0" + cents;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
    num = num.substring(0,num.length-(4*i+3))+'.'+
    num.substring(num.length-(4*i+3));
  return (num + ',' + cents);
}