//***********************CALCULATOR************************//
//GLOBAL CALCULATOR VARIABLES
var CalcMemory = 0;
var TallyValue;
var TallyFunction = "";
var previousFunctionSymbol = "";
var thisFunctionSymbol = "";
var fSymbolStored = false;
var MemoryButtonPressed = false;
var CalculatorGenerated = false;
var inputFieldGenerated = false;

var CalculatorTable = "<div id=calculatorcontainer>";
CalculatorTable += "<p class=calculatortitle>Calculator<a class=\"calcbut calculatorclosebutton\" id=calcbutclose href=\"javascript:clearButtonClicked('X')\">X<\/a><\/p>";
CalculatorTable += "<input type=text class=calcinput id=calcinput><br>";

//CLEAR BUTTONS
CalculatorTable += "<div class=calcclearbutcell>";
ClearButtons = new Array('CE','C');
for(c=0; c<ClearButtons.length; c++){
	CalculatorTable += "<a class=\"calcbut calculatorClearbutton\" id=calcbutC"+c+" href=\"javascript:clearButtonClicked('"+ClearButtons[c]+"')\">"+ClearButtons[c]+"<\/a>";
}
CalculatorTable += "<\/div>";

//MEMORY BUTTONS
CalculatorTable += "<div class=calcmembutcell>";
MemoryButtons = new Array('MC','MR','MS','M+');
for(d=0; d<MemoryButtons.length; d++){
	CalculatorTable += "<a class=\"calcbut calculatormemorybutton\" id=calcbutM"+d+" href=\"javascript:memoryButtonClicked('"+MemoryButtons[d]+"')\">"+MemoryButtons[d]+"<\/a>";
}
CalculatorTable += "<\/div>";

//MAIN NUMBER BUTTONS
CalculatorTable += "<div class=calcbutcell>";
NumberButtons = new Array('7','8','9','4','5','6','1','2','3','0','+/-','.');
for(e=0; e<NumberButtons.length; e++){
	CalculatorTable += "<a class=\"calcbut calculatornumberbutton\" id=calcbut"+NumberButtons[e]+" href=\"javascript:calcButtonClicked('"+NumberButtons[e]+"')\">"+NumberButtons[e]+"<\/a>";
	if((e+1)%3 == 0 && e+1 < NumberButtons.length){
		CalculatorTable += "<br>";
	}
}
CalculatorTable += "<\/div>";

//FUNCTION BUTTONS
CalculatorTable += "<div class=calcfunctbutcell>";
FunctionButtons = new Array('/','sqrt','*','%','-','1/x','+','=');
for(f=0; f<FunctionButtons.length; f++){
	CalculatorTable += "<a class=\"calcbut calculatorfunctionbutton\" id=calcbutF"+f+" href=\"javascript:calcFunctionButtonClicked('"+FunctionButtons[f]+"')\">"+FunctionButtons[f]+"<\/a>";
	if((f+1)%2 == 0 && f+1 < FunctionButtons.length){
		CalculatorTable += "<br>";
	}
}
CalculatorTable += "<\/div><\/div>";

function showCalculator(){
	dynPop = captureObj('dynPopup');
	dynPop.innerHTML = CalculatorTable;
	ctrlPop('dynPopup','block');
	dynPop.style.top = "-170px";
	dynPop.style.left = "140px";
	dynPop.style.borderWidth="0px";
	dynPop.style.backgroundColor="#fff";
	calculatorMode = true;
}

function hideCalculator(){
	document.all['calculatorcontainer'].style.display = "none";
	calculatorMode = false;
}

function clearButtonClicked(buttonValue){
	switch(buttonValue){
		case "X":
			hideCalculator();
			break;
		case "PASS":
			if(inputFieldGenerated){
				document.all[thisInputID].value = document.all["calcinput"].value;
			}
			break;
		case "CE":
			//Clear CalcinputString
			document.all["calcinput"].value = "";
			break;
		case "C":
			//Clear Everything
			document.all["calcinput"].value = "";
			TallyValue = "";
			break;
	}
}

function memoryButtonClicked(buttonValue){
	switch(buttonValue){
		case "MC":
			//Clear Memory
			CalcMemory = 0;
			document.all["calcinput"].value = "";
			break;
		case "MR":
			document.all["calcinput"].value = CalcMemory;
			if(CalcMemory == 0){
				document.all["calcinput"].value = "";
			}
			break;
		case "MS":
			CalcMemory = parseInt(document.all["calcinput"].value);
			break;
		case "M+":
			CalcMemory = parseInt(CalcMemory) + parseInt(document.all["calcinput"].value);
			break;
	}
	MemoryButtonPressed = true;
}

function calcButtonClicked(buttonValue){
	if(fSymbolStored || MemoryButtonPressed){
		document.all["calcinput"].value = "";
		fSymbolStored = false;
		MemoryButtonPressed = false;
	}

	currentValue = document.all["calcinput"].value;
	if(buttonValue == "+/-" || buttonValue == "."){
		switch(buttonValue){
			case "+/-":
				if(currentValue.indexOf("-") == -1){	revisedValue = "-" + currentValue;	}
				else{	revisedValue = currentValue.substring(1,currentValue.length);		}
				break;
			case ".":
				if(currentValue.indexOf(".") != -1){	revisedValue = currentValue;	}
				else{	revisedValue = currentValue + ".";	}
				break;
		}
	}else{
		revisedValue = currentValue + buttonValue;
	}
	document.all["calcinput"].value = revisedValue;
}

function calcFunctionButtonClicked(buttonValue){
	TallyValue = document.all["calcinput"].value;
	if(TallyFunction != ""){	TallyValue = eval(TallyFunction + TallyValue);	}

	switch(buttonValue){
		case "/":
			TallyFunction = TallyValue + "/";
			break;
		case "sqrt":
			Value = eval(TallyValue);
			FinalValue = Math.sqrt(Value);
			document.all["calcinput"].value = FinalValue;
			TallyFunction = "";
			TallyValue = "";
			break;
		case "*":
			TallyFunction = TallyValue + "*";
			break;
		case "%":
			FinalValue = TallyValue / 100;
			document.all["calcinput"].value = FinalValue;
			TallyFunction = "";
			TallyValue = "";
			break;
		case "-":
			if(previousFunctionSymbol == buttonValue){	TallyFunction = TallyValue + "--";	}
			else{	TallyFunction = TallyValue + "-";	}
			break;
		case "1/x":
			FinalValue = 1/TallyValue;
			document.all["calcinput"].value = FinalValue;
			TallyFunction = "";
			TallyValue = "";
			break;
		case "+":
			if(previousFunctionSymbol == buttonValue){	TallyFunction = TallyValue + "++";	}
			else{	TallyFunction = TallyValue + "+";	}
			break;
		case "=":
			document.all["calcinput"].value = TallyValue;
			TallyFunction = "";
			TallyValue = "";
			break;
	}
	fSymbolStored = true;
}

function handleCalculatorKeyPresses(keyPressed) {
	window.event.keyCode = 0;
	window.event.cancelBubble = true;
	window.event.returnValue=false;

	if(keyPressed < 106 && keyPressed > 95){
		ButtonValue = keyPressed - 96;
		document.all['calcbut'+ButtonValue].setActive();
		calcButtonClicked(ButtonValue);
	}else{
		switch(keyPressed){
			case 106:
				document.all['calcbutF2'].setActive();
				calcFunctionButtonClicked('*');
				break;
			case 107:
				document.all['calcbutF6'].setActive();
				calcFunctionButtonClicked('+');
				break;
			case 109:
				document.all['calcbutF4'].setActive();
				calcFunctionButtonClicked('-');
				break;
			case 111:
				document.all['calcbutF0'].setActive();
				calcFunctionButtonClicked('/');
				break;
			case 13:
				document.all['calcbutF7'].setActive();
				calcFunctionButtonClicked('=');
				break;
			case 67:
				document.all['calcbutC1'].setActive();
				clearButtonClicked('C');
				break;
			case 27:
				document.all['calcbutC1'].setActive();
				clearButtonClicked('C');
				break;
			case 80:
				document.all['calcbutC0'].setActive();
				clearButtonClicked('PASS');
				break;
			case 8:
				document.all["calcinput"].focus();
				window.event.keyCode = keyPressed;
				window.event.cancelBubble = false;
				window.event.returnValue=true;
				break;
			case 46:
				document.all["calcinput"].focus();
				window.event.keyCode = keyPressed;
				window.event.cancelBubble = false;
				window.event.returnValue=true;
				break;
			case 110:
				ButtonValue = ".";
				document.all["calcbut."].setActive();
				calcButtonClicked(ButtonValue);
				break;
			case 88:
				hideCalculator();
				break;
		}
	}
	self.status = pageTitle;
}