parseInt() assumes the base of your number according to the first characters in the string. If it begins with 0x it assumes base 16 (hexadecimal). Otherwise, if it begins with 0 it assumes base 8 (octal). Otherwise it assumes base 10.
You can specify the base as a second argument:
alert(parseInt(hfrom[0], 10)); // 8
From MDN (linked above):
If radix is undefined or 0, JavaScript assumes the following:
If the input string begins with "0x" or "0X", radix is 16
  (hexadecimal). If the input string begins with "0", radix is eight
  (octal). This feature is non-standard, and some implementations
  deliberately do not support it (instead using the radix 10).  For this
  reason always specify a radix when using parseInt. If the input string
  begins with any other value, the radix is 10 (decimal).