// JavaScript Document

/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  &&                                                                                  &&
  &&                                                                                  &&
  &&                    RPN 'Reverse Polish Notation' functions                       &&
  &&                                                                                  &&
  &&                                                                                  &&
  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/

  
//function pushes stack up
//function is called from runCalc(a) when a number is entered
function lift()
{
	var i;
	//for loop actually changes all the values in the stack except in the X register since it stays the same
	for(i = 6; i > 0; i--)
	{	
		numberArray[i].flag = numberArray[(i - 1)].flag;
		numberArray[i].coefficient = numberArray[(i - 1)].coefficient;
		numberArray[i].exponent = numberArray[(i - 1)].exponent;
		numberArray[i].type = numberArray[(i - 1)].type;
		numberArray[i].numerator = numberArray[(i - 1)].numerator;
		numberArray[i].denominator = numberArray[(i - 1)].denominator;
		numberArray[i].wholePart = numberArray[(i - 1)].wholePart;
		numberArray[i].decimalValue = numberArray[(i - 1)].decimalValue;
		numberArray[i].stringValue = numberArray[(i - 1)].stringValue + '';
	}//end for

	
	document.stackForm.rowJ.value = numberArray[6].stringValue;
	document.stackForm.rowI.value = numberArray[5].stringValue;
	document.stackForm.rowH.value = numberArray[4].stringValue;
	document.stackForm.rowT.value = numberArray[3].stringValue;
	document.stackForm.rowZ.value = numberArray[2].stringValue;	
	document.stackForm.rowY.value = numberArray[1].stringValue;
//alert('whole part 0 = ' +numberArray[0].wholePart);
//alert('numerator = 0 ' +numberArray[0].numerator);
//alert('denominator 0 = ' +numberArray[0].denominator);

//alert('whole part 1 = ' +numberArray[1].wholePart);
//alert('numerator 1 = ' +numberArray[1].numerator);
//alert('denominator 1 = ' +numberArray[1].denominator);
}//end function


/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
 
 
//function pushes stack down after calculation has been made by using an operation
//register T stays the same, registers Z and Y are the only changed ones
function drop()
{
	var i;
	
	//for loop actually changes all the values in the stack except in the X register since it stays the same
	for(i = 1; i < 6; i++)
	{	
		numberArray[i].flag = numberArray[(i + 1)].flag;
		numberArray[i].coefficient = numberArray[(i + 1)].coefficient;
		numberArray[i].exponent = numberArray[(i + 1)].exponent;
		numberArray[i].type = numberArray[(i + 1)].type;
		numberArray[i].numerator = numberArray[(i + 1)].numerator;
		numberArray[i].denominator = numberArray[(i + 1)].denominator;
		numberArray[i].wholePart = numberArray[(i + 1)].wholePart;
		numberArray[i].decimalValue = numberArray[(i + 1)].decimalValue;
		numberArray[i].stringValue = numberArray[(i + 1)].stringValue;
	}//end for
	
	document.stackForm.rowY.value = numberArray[1].stringValue;
	document.stackForm.rowZ.value = numberArray[2].stringValue;
	document.stackForm.rowT.value = numberArray[3].stringValue;
	document.stackForm.rowH.value = numberArray[4].stringValue;
	document.stackForm.rowI.value = numberArray[5].stringValue;
	
}//end function

