public static function spellCurrency($amount, $language, $currency, $requireDecimal = true, $spellDecimal = false)
	{
		if (!is_numeric($amount))
		{
			throw new InvalidArgumentException('Invalid number specified.');
		}
		
		if (!is_string($currency))
		{
			throw new InvalidArgumentException('Invalid currency code specified.');
		}
		
		$currency = strtoupper(trim($currency));
		
		if (!in_array($currency, self::$currencies))
		{
			throw new InvalidArgumentException('That currency is not implemented yet.');
		}
		
		$amount = number_format($amount, 2, '.', ''); // ensure decimal is always 2 digits
		$parts = explode('.', $amount);
		$speller = self::get($language);
		$wholeAmount = intval($parts[0]);
		$decimalAmount = intval($parts[1]);
		
		$text = trim($speller->parseInt($wholeAmount, false, $currency))
			. ' '
			. $speller->getCurrencyName('whole', $wholeAmount, $currency);
		
		if ($requireDecimal || ($decimalAmount > 0))
		{
			$text .= $speller->decimalSeparator
				. ($spellDecimal
					? trim($speller->parseInt($decimalAmount, true, $currency))
					: $decimalAmount)
				. ' '
				. $speller->getCurrencyName('decimal', $decimalAmount, $currency);
		}
		
		return $text;
	}