
	function check_keypress (e)
	{
		var keycode = ( window.Event ) ? e.which : event.keyCode;

		var zero_key = 48;
		var nine_key = 57;
		var decimal_key = 46;

		var C_key = 67;
		var E_key = 69;
		var M_key = 77;
		var P_key = 80;

		var plus_key = 43;
		var minus_key = 45;
		var multiply_key = 42;
		var divide_key = 47;
		var percent_key = 37;
		var cr_key = 13;
		var equals_key = 61;

		// CONVERT CHAR KEYS TO UPPER CASE
		if ( keycode >= 97 && keycode <= 122 )
			keycode -= 32;

		if ( keycode >= zero_key && keycode <= nine_key )
			{
			var Num = keycode - zero_key;
			NumPressed ( Num );
			return ( false );
			}
		else if ( keycode == decimal_key )
			{
			Decimal ();
			return ( false );
			}
		else if ( keycode == equals_key || keycode == cr_key )
			{
			Operation ( "=" );
			return ( false );
			}
		else if ( keycode == plus_key )
			{
			Operation ( "+" );
			return ( false );
			}
		else if ( keycode == minus_key )
			{
			Operation ( "-" );
			return ( false );
			}
		else if ( keycode == multiply_key )
			{
			Operation ( "*" );
			return ( false );
			}
		else if ( keycode == divide_key )
			{
			Operation ( "/" );
			return ( false );
			}
		else if ( keycode == percent_key )
			{
			Percent ();
			return ( false );
			}
		else if ( keycode == C_key )
			{
			Clear ();
			return ( false );
			}
		else if ( keycode == E_key )
			{
			ClearEntry ();
			return ( false );
			}
		else if ( keycode == M_key || keycode == P_key )
			{
			Neg ();
			return ( false );
			}

		return ( true );
	}


	var bName = navigator.appName.substring ( 0, 3 );
	document.onkeypress = check_keypress;
	if ( bName == "Net" )
		document.captureEvents ( Event.KEYPRESS );

	// Module-level variables
	var Accum = 0;				// Previous number (operand) awaiting operation
	var FlagNewNum = false;		// Flag to indicate a new number (operand) is being entered
	var PendingOp = "";			// Pending operation waiting for completion of second operand

	function NumPressed ( Num )
	{
		var calc = document.Keypad;

		if (FlagNewNum)
			{
			calc.ReadOut.value  = Num;
			FlagNewNum = false;
			}
		else
			{
			if ( calc.ReadOut.value == "0" )
				calc.ReadOut.value = Num;
			else
				calc.ReadOut.value += Num;
			}
	}


	function Operation ( Op )
	{
		var calc = document.Keypad;

		//alert( 'op' );
		if ( FlagNewNum && PendingOp != "=" );
		// User is hitting op keys repeatedly, so don't do anything
		else
			{
			//alert( PendingOp );
			FlagNewNum = true;

			if ( '+' == PendingOp )
				Accum += parseFloat ( calc.ReadOut.value );
			else if ( '-' == PendingOp )
				Accum -= parseFloat ( calc.ReadOut.value );
			else if ( '/' == PendingOp )
				Accum /= parseFloat ( calc.ReadOut.value );
			else if ( '*' == PendingOp )
				Accum *= parseFloat ( calc.ReadOut.value );
			else
				Accum = parseFloat ( calc.ReadOut.value );

			calc.ReadOut.value = Accum;
			PendingOp = Op;
			}
	}


	function Decimal ()
	{
		var calc = document.Keypad;

		if (FlagNewNum)
			{
			calc.ReadOut.value = "0.";
			FlagNewNum = false;
			}
		else
			{
			if ( calc.ReadOut.value.indexOf ( "." ) == -1 )
				calc.ReadOut.value += ".";
			}
	}

	function ClearEntry ()
	{
		var calc = document.Keypad;

		calc.ReadOut.value = "0";
		FlagNewNum = true;
	}

	function Clear ()
	{
		// Clear accumulator and pending operation, clear display
		Accum = 0;
		PendingOp = "";
		ClearEntry ();
	}

	function Neg ()
	{
		var calc = document.Keypad;
		calc.ReadOut.value = parseFloat ( calc.ReadOut.value ) * -1;
	}

	function Inv ()
	{
		var calc = document.Keypad;
		calc.ReadOut.value = parseFloat (1 / ( calc.ReadOut.value )) ;
		Operation('=');
	}

	function Pi ()
	{
		var calc = document.Keypad;
		calc.ReadOut.value = parseFloat (3.1415926535897932 );
		Operation('=');
		FlagNewNum = false;
	}

	function Percent ()
	{
		var calc = document.Keypad;
		calc.ReadOut.value = ( parseFloat ( calc.ReadOut.value ) / 100) * parseFloat ( Accum );
	}

	function Back ()
	{
		var calc = document.Keypad;
		calc.ReadOut.value =  ( calc.ReadOut.value.substr(0, calc.ReadOut.value.length -1) ) ;
		if (calc.ReadOut.value.length = 0){
			Clear();
			}
	}

	function Rand ()
	{
		var calc = document.Keypad;
		calc.ReadOut.value =  Math.random();
		FlagNewNum = true;
	}

	function Int ()
	{
		var calc = document.Keypad;

		if ( calc.ReadOut.value.indexOf ( "." ) > 0 )
			{
			calc.ReadOut.value = calc.ReadOut.value.substring(0, calc.ReadOut.value.indexOf ( "." ));
			}
	}

function CreateCalculator(){
    document.write('<form name="Keypad">');
    document.write('<table border="0" margin="5px" cellspacing="0" align="center">');
    document.write('<tr>');
    document.write('<td align="center">');
    document.write('<tr>');
    document.write('<td colspan="3" align="middle">');
    document.write('<input name="ReadOut" type="Text" size="15" value="0" width=100% onFocus="self.focus()" style="font-size:14px;"></td>');
    document.write('<td width="2" rowspan="7">&nbsp;</td>');
    document.write('<td><input class="but1"  type="button" value="Rnd" OnClick="Rand()"></td>');
    document.write('<td><input class="but1" type="button" value="Int" OnClick="Int()"></td>');
    document.write('</tr>');
    document.write('<tr>');
    document.write('<td><input class="but1" style="color:red;" type="button" value="C" OnClick="Clear()"></td>');
    document.write('<td><input class="but1" type="button" value="CE"  OnClick="ClearEntry()"></td>');
    document.write('<td><input class="but1" type="button" value="Del" OnClick="Back()"></td>');
    document.write('<td><input class="but1" type="button" value="1/x" OnClick="Inv()"></td>');
    document.write('<td><input class="but1" type="button" value="Pi" OnClick="Pi()"></td>');
    document.write('<tr>');
    document.write('<tr>');
    document.write('<td><input class="but1" type="button" value="7" OnClick="NumPressed(7)"></td>');
    document.write('<td><input class="but1" type="button" value="8" OnClick="NumPressed(8)"></td>');
    document.write('<td><input class="but1" type="button" value="9" OnClick="NumPressed(9)"></td>');
    document.write('<td><input class="but1" type="button" value="+/-" OnClick="Neg()"></td>');
    document.write('<td><input class="but1" type="button" value="%" OnClick="Percent()"></td>');
    document.write('</tr>');
    document.write('<tr>');
    document.write('<td><input class="but1" type="button" value="4" OnClick="NumPressed(4)"></td>');
    document.write('<td><input class="but1" type="button" value="5" OnClick="NumPressed(5)"></td>');
    document.write('<td><input class="but1" type="button" value="6" OnClick="NumPressed(6)"></td>');
    document.write('<td><input class="but1" type="button" value="+" OnClick="Operation(\'+\')"></td>');
    document.write('<td><input class="but1" type="button" value="-" OnClick="Operation(\'-\')"></td>');
    document.write('</tr>');
    document.write('<tr>');
    document.write('<td><input class="but1" type="button" value="1" OnClick="NumPressed(1)"></td>');
    document.write('<td><input class="but1" type="button" value="2" OnClick="NumPressed(2)"></td>');
    document.write('<td><input class="but1" type="button" value="3" OnClick="NumPressed(3)"></td>');
    document.write('<td><input class="but1" type="button" value="*" OnClick="Operation(\'*\')"></td>');
    document.write('<td><input class="but1" type="button" value="/" OnClick="Operation(\'/\')"></td>');
    document.write('</tr>');
    document.write('<tr>');
    document.write('<td><input class="but1" type="button" value="0" OnClick="NumPressed(0)"></td>');
    document.write('<td><input class="but1" type="button" value="." OnClick="Decimal()"></td>');
    document.write('<td></td>');
    document.write('<td colspan=2><input class="but1" id="equals" type="button" value="=" OnClick="Operation(\'=\')"></td>');
    document.write('</tr>');
    document.write('</table>');
    document.write('</form>');
}