	function trim(Value)
	{
		if (typeof Value == 'undefined') {
			return "";
		}

		return Value.replace(/^\s+|\s+$/g, "");
	}

	function ToInteger(Value)
	{ 	
		var exp = /^\s*[-\+]?\d+\s*$/;
		if (Value.match(exp) == null) { 
			return null;
		}
		var num = parseInt(Value, 10);
		if(num) {
			return (isNaN(num) ? null : num);
		} 
	}

	/*******************************************/
	// Converts a number from 1 to 9 into text.
	/*******************************************/

	function GetDigit(Digit)
	{
		var output = ""
		switch (ToInteger(Digit))
		{
			case 1: output = "One"; break;
			case 2: output = "Two"; break;
			case 3: output = "Three"; break;
			case 4: output = "Four"; break;
			case 5: output = "Five"; break;
			case 6: output = "Six"; break;
			case 7: output = "Seven"; break;
			case 8: output = "Eight"; break;
			case 9: output = "Nine"; break;
			default: output = ""; break;
		}
		return output;
	}

	/*********************************************/
	// Converts a number from 10 to 99 into text.
	/*********************************************/

	function GetTens(TensText)
	{
		var Result;
		Result = ""						// Null out the temporary function value.
		
		var tempstr = TensText.toString();
		var temp = ToInteger(tempstr.substr(0, 1));

		if (temp == 1)  // If value between 10-19...
		{
			switch (ToInteger(tempstr))
			{
				case 10: Result = "Ten"; break;
				case 11: Result = "Eleven"; break;
				case 12: Result = "Twelve"; break;
				case 13: Result = "Thirteen"; break;
				case 14: Result = "Fourteen"; break;
				case 15: Result = "Fifteen"; break;
				case 16: Result = "Sixteen"; break;
				case 17: Result = "Seventeen"; break;
				case 18: Result = "Eighteen"; break;
				case 19: Result = "Nineteen"; break;
				default: break;
			}
		}
		else                                 // If value between 20-99...
		{
			switch (temp)
			{
				case 2: Result = "Twenty "; break;
				case 3: Result = "Thirty "; break;
				case 4: Result = "Forty "; break;
				case 5: Result = "Fifty "; break;
				case 6: Result = "Sixty "; break;
				case 7: Result = "Seventy "; break;
				case 8: Result = "Eighty "; break;
				case 9: Result = "Ninety "; break;
				default: break;
			}
			Result = Result + GetDigit(tempstr.substr(1,1));  // Retrieve ones place.
		}

		return Result;
	}

	/*******************************************/
	// Converts a number from 100-999 into text
	/*******************************************/

	function GetHundreds(MyNumber)
	{
		var Result = ""
		MyNumber = MyNumber.toString();

		if (ToInteger(MyNumber) == 0) {
			return "";
		}
	  
		//MyNumber = Right("000" & MyNumber, 3)
		MyNumber = "000" + MyNumber;
		MyNumber = MyNumber.substr(MyNumber.length - 3, 3);

		// Convert the hundreds place.
		if (MyNumber.substr(0, 1) != "0") {
			Result = GetDigit(MyNumber.substr(0, 1)) + " Hundred ";
		}

		//alert(MyNumber.substr(1, 1));
		// Convert the tens and ones place.
		if (MyNumber.substr(1, 1) != "0") {
			Result = Result + GetTens(MyNumber.substr(1));
		}
		else {
			Result = Result + GetDigit(MyNumber.substr(2));
		}
	  
		return Result;
	}

	/****************/
	// Main Function 
	/****************/

	function SpellNumber(MyNumber)
	{	
		var Dollars, Cents, Temp;
		var DecimalPlace, Count, Place;
		var temp;

		//ReDim Place(9) As String
		Place = [];
		Place[1] = ""
		Place[2] = " Thousand "
		Place[3] = " Million "
		Place[4] = " Billion "
		Place[5] = " Trillion "
		
		Dollars = ""
	
		// String representation of amount.
		MyNumber = trim(MyNumber.toString());

		// Position of decimal place 0 if none.
		DecimalPlace = MyNumber.indexOf(".");

		// Convert cents and set MyNumber to dollar amount.
		if (DecimalPlace > 0) {
			temp = MyNumber.substr(DecimalPlace + 1) + "00";
			Cents = GetTens(temp.substr(0,2));
			MyNumber = trim(MyNumber.substr(0, DecimalPlace));
		}
	
		Count = 1
		while (MyNumber.length > 0)
		{
			Temp = GetHundreds(MyNumber.substr(MyNumber.length - 3, 3));
			if (Temp != "") {
				Dollars = Temp + Place[Count] + Dollars
			}

			if (MyNumber.length > 3) {
				MyNumber = MyNumber.substr(0, MyNumber.length - 3);
			}
			else {
				MyNumber = ""
			}
			Count = Count + 1
		} 
		
		switch (Dollars)
		{
			case "":
				Dollars = "No Pounds";
				break;
			case "One":
				Dollars = "One Pound";
				break;
			default:
				Dollars = Dollars + " Pounds";
		}

		switch (Cents)
		{
		  case "":
			  Cents = " and No Pence";
			  break;
		  case "One":
			  Cents = " and One Penny";
			  break;
			default:
			  Cents = " and " + Cents + " Pence";
		}

		return trim(Dollars + Cents);
	}

//	alert(SpellNumber(1.01));

function ConvertSpellNumber(id_full_amt,id_decimal,id_td)
{
	full_amt = document.getElementById(id_full_amt).value;
	if(full_amt == null || isNaN(full_amt))
	{
		full_amt = 0;
	}
	decimal_pt = document.getElementById(id_decimal).value	;
	if(decimal_pt == null || isNaN(decimal_pt))
	{
		decimal_pt = 0;
	}
	
	final_amt = full_amt+"."+decimal_pt;

	//alert(final_amt);
	
	final_amt_display = (SpellNumber(final_amt));
	
	td_val = document.getElementById(id_td);
	
	//alert(final_amt_display);
	//alert(td_val);
	
	td_val.innerText = final_amt_display;
	
	//alert(td_val.innerHtml);
}
