var Result=0, Operator=0, Second=0, Ready=0, Done=1, Complete=0, Integer, CurrentValue;

function reset(value)

{

	document.calculator.LED.value = value;

	Result = 0, Operator = 0, Second = 0, Ready = 0; Done = 1; Complete = 0;

}

function SetValue(NewValue)

{

	Integer = 1;

	if(Second || Done)

	{

		Second = 0;

		Done = 0;

		CurrentValue = NewValue;

	}

	for(var i=0; i<CurrentValue.length; i++)

		if (CurrentValue[i]=='.')

			Integer=0;

}

function Click(Caption)

{

	CurrentValue = document.calculator.LED.value;

	if(Caption=='.')

	{

		SetValue('0');

		if(Integer)

		{

			CurrentValue += Caption;

			document.calculator.LED.value = CurrentValue;

			Complete = 0;

		}

	}

	if (Caption.length == 1 && Caption>='0' && Caption<='9')

	{

		SetValue('');

		if(CurrentValue=='0')

			CurrentValue='';

		CurrentValue += Caption;

		document.calculator.LED.value = CurrentValue;

		Complete = 1;

	}

	if (Caption=='pi')

	{

		CurrentValue = Math.PI;

		document.calculator.LED.value = CurrentValue;

		Complete = 1;

	}

	if (Caption=='e')

	{

		CurrentValue = Math.E;

		document.calculator.LED.value = CurrentValue;

		Complete = 1;

	}

	if(Caption=='-' || Caption=='+' || Caption=='/' || Caption=='*' || Caption=='^')

	{

		if(Second)

			Operator = Caption

		else

		{

			if(!Ready)

			{

				Operator = Caption;

				Result = CurrentValue;

				Ready=1;

			} else

			{

				if (Operator=='^')

					Result = Math.pow(Result, CurrentValue);

				else

					Result = eval(Result + Operator + CurrentValue);

				Operator = Caption; document.calculator.LED.value = Result;

			} Complete=0; Second = 1;

		}

	}

	if(Caption=='1/x' )

	{

		Result = eval('1/' + CurrentValue) ; reset(Result);

	}

	if(Caption=='sqrt')

	{

		Result = Math.sqrt(CurrentValue);

		reset(Result);

	}

	if(Caption=='exp' )

	{

		Result = Math.exp(CurrentValue);

		reset(Result);

	}

	if(Caption=='log' )

	{

		Result = Math.log(CurrentValue) / Math.LN10;

		reset(Result);

	}

	if(Caption=='ln' )

	{

		Result = Math.log(CurrentValue);

		reset(Result);

	}

	if(Caption=='sin' )

	{

		Result = CurrentValue;

		if (document.calculator.angle[0].checked)

			Result = Result * Math.PI / 180;

		if (document.calculator.angle[2].checked)

			Result = Result * Math.PI / 200;

		Result = Math.sin(Result);

		reset(Result);

	}

	if(Caption=='cos' )

	{

		Result = CurrentValue;

		if (document.calculator.angle[0].checked)

			Result = Result * Math.PI / 180;

		if (document.calculator.angle[2].checked)

			Result = Result * Math.PI / 200;

		Result = Math.cos(Result);

		reset(Result);

	}

	if(Caption=='tan' )

	{

		Result = CurrentValue;

		if (document.calculator.angle[0].checked)

			Result = Result * Math.PI / 180;

		if (document.calculator.angle[2].checked)

			Result = Result * Math.PI / 200;

		Result = Math.tan(Result);

		reset(Result);

	}

	if(Caption=='asin' )

	{

		Result = Math.asin(CurrentValue);

		if (document.calculator.angle[0].checked)

			Result = Result * 180 / Math.PI;

		if (document.calculator.angle[2].checked)

			Result = Result * 200 / Math.PI;

		reset(Result);

	}

	if(Caption=='acos' )

	{

		Result = Math.acos(CurrentValue);

		if (document.calculator.angle[0].checked)

			Result = Result * 180 / Math.PI;

		if (document.calculator.angle[2].checked)

			Result = Result * 200 / Math.PI;

		reset(Result);

	}

	if(Caption=='atan' )

	{

		Result = Math.atan(CurrentValue);

		if (document.calculator.angle[0].checked)

			Result = Result * 180 / Math.PI;

		if (document.calculator.angle[2].checked)

			Result = Result * 200 / Math.PI;

		reset(Result);

	}

	if(Caption=='sinh' )

	{

		Result = Math.exp(CurrentValue);

		Result = (Result - 1 / Result) / 2;

		reset(Result);

	}

	if(Caption=='cosh' )

	{

		Result = Math.exp(CurrentValue);

		Result = (Result + 1 / Result) / 2;

		reset(Result);

	}

	if(Caption=='tanh' )

	{

		Result = Math.exp(CurrentValue);

		Result = (Result - 1 / Result) / (Result + 1 / Result);

		reset(Result);

	}

	if(Caption=='asinh' )

	{

		Result = CurrentValue / Math.abs(CurrentValue) * Math.log(Math.abs(CurrentValue) + Math.sqrt(CurrentValue * CurrentValue + 1));

		reset(Result);

	}

	if(Caption=='acosh' )

	{


		Result = 2 * Math.log(Math.sqrt((CurrentValue + 1) / 2) + Math.sqrt((CurrentValue - 1) / 2));

		reset(Result);

	}

	if(Caption=='atanh' )

	{


		Result = Math.log((CurrentValue - 1) / (CurrentValue + 1)) / 2;

		reset(Result);

	}

	if(Caption=='+/-')

		document.calculator.LED.value = eval(-CurrentValue);

	if(Caption=='=' && Complete && Operator!='0')

	{

		if (Operator=='^')

		{

			Result = Math.pow(Result, CurrentValue);

			reset(Result);

		} else

			reset(eval(Result + Operator + CurrentValue));

	}

	if (Caption=='C')

		reset(0);

	if(document.calculator.LED.value[0] == '.')

		document.calculator.LED.value = '0' + document.calculator.LED.value;

}
