356 lines
		
	
	
	
		
			8.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			356 lines
		
	
	
	
		
			8.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
function calc_install() {
 | 
						|
	register_hook('app_menu', 'addon/calc/calc.php', 'calc_app_menu');
 | 
						|
}
 | 
						|
 | 
						|
function calc_uninstall() {
 | 
						|
	unregister_hook('app_menu', 'addon/calc/calc.php', 'calc_app_menu');
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
function calc_app_menu($a,&$b) {
 | 
						|
	$b['app_menu'] .= '<div class="app-title"><a href="calc">Calculator</a></div>'; 
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function calc_module() {}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
function calc_init($a) {
 | 
						|
 | 
						|
$x = <<< EOT
 | 
						|
 | 
						|
<script language="JavaScript">
 | 
						|
/**************************************
 | 
						|
 * www.FemaleNerd.com         *
 | 
						|
 **************************************/
 | 
						|
 | 
						|
// Declare global variables
 | 
						|
var displayText = ""
 | 
						|
var num1
 | 
						|
var num2
 | 
						|
var operatorType
 | 
						|
 | 
						|
// Write to display
 | 
						|
function addDisplay(n){
 | 
						|
   id = document.getElementById("display");
 | 
						|
id.value = ""
 | 
						|
displayText += n
 | 
						|
id.value = displayText
 | 
						|
}
 | 
						|
 | 
						|
// Addition
 | 
						|
function addNumbers() {
 | 
						|
if (displayText == "") {
 | 
						|
  displayText = result
 | 
						|
 }
 | 
						|
num1 = parseFloat(displayText)
 | 
						|
operatorType = "add"
 | 
						|
displayText = ""
 | 
						|
}
 | 
						|
 | 
						|
// Subtraction
 | 
						|
function subtractNumbers() {
 | 
						|
if (displayText == "") {
 | 
						|
  displayText = result
 | 
						|
 }
 | 
						|
num1 = parseFloat(displayText)
 | 
						|
operatorType = "subtract"
 | 
						|
displayText = ""
 | 
						|
}
 | 
						|
 | 
						|
// Multiplication
 | 
						|
function multiplyNumbers() {
 | 
						|
if (displayText == "") {
 | 
						|
  displayText = result
 | 
						|
 }
 | 
						|
num1 = parseFloat(displayText)
 | 
						|
operatorType = "multiply"
 | 
						|
displayText = ""
 | 
						|
}
 | 
						|
 | 
						|
// Division
 | 
						|
function divideNumbers() {
 | 
						|
if (displayText == "") {
 | 
						|
  displayText = result
 | 
						|
 }
 | 
						|
num1 = parseFloat(displayText)
 | 
						|
operatorType = "divide"
 | 
						|
displayText = ""
 | 
						|
}
 | 
						|
 | 
						|
// Sine
 | 
						|
function sin() {
 | 
						|
   id = document.getElementById("display");
 | 
						|
if (displayText == "") {
 | 
						|
  num1 = result
 | 
						|
  }
 | 
						|
else {
 | 
						|
  num1 = parseFloat(displayText)
 | 
						|
  }
 | 
						|
if (num1 != "") {
 | 
						|
  result = Math.sin(num1)
 | 
						|
  id.value = result
 | 
						|
  displayText = ""
 | 
						|
  }
 | 
						|
else {
 | 
						|
  alert("Please write the number first")
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Cosine
 | 
						|
function cos() {
 | 
						|
   id = document.getElementById("display");
 | 
						|
if (displayText == "") {
 | 
						|
  num1 = result
 | 
						|
  }
 | 
						|
else {
 | 
						|
  num1 = parseFloat(displayText)
 | 
						|
  }
 | 
						|
if (num1 != "") {
 | 
						|
  result = Math.cos(num1)
 | 
						|
  id.value = result
 | 
						|
  displayText = ""
 | 
						|
  }
 | 
						|
else {
 | 
						|
  alert("Please write the number first")
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// ArcSine
 | 
						|
function arcSin() {
 | 
						|
   id = document.getElementById("display");
 | 
						|
if (displayText == "") {
 | 
						|
  num1 = result
 | 
						|
  }
 | 
						|
else {
 | 
						|
  num1 = parseFloat(displayText)
 | 
						|
  }
 | 
						|
if (num1 != "") {
 | 
						|
  result = Math.asin(num1)
 | 
						|
  id.value = result
 | 
						|
  displayText = ""
 | 
						|
  }
 | 
						|
else {
 | 
						|
  alert("Please write the number first")
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// ArcCosine
 | 
						|
function arcCos() {
 | 
						|
   id = document.getElementById("display");
 | 
						|
if (displayText == "") {
 | 
						|
  num1 = result
 | 
						|
  }
 | 
						|
else {
 | 
						|
  num1 = parseFloat(displayText)
 | 
						|
  }
 | 
						|
if (num1 != "") {
 | 
						|
  result = Math.acos(num1)
 | 
						|
  id.value = result
 | 
						|
  displayText = ""
 | 
						|
  }
 | 
						|
else {
 | 
						|
  alert("Please write the number first")
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Square root
 | 
						|
function sqrt() {
 | 
						|
   id = document.getElementById("display");
 | 
						|
if (displayText == "") {
 | 
						|
  num1 = result
 | 
						|
  }
 | 
						|
else {
 | 
						|
  num1 = parseFloat(displayText)
 | 
						|
  }
 | 
						|
if (num1 != "") {
 | 
						|
  result = Math.sqrt(num1)
 | 
						|
  id.value = result
 | 
						|
  displayText = ""
 | 
						|
  }
 | 
						|
else {
 | 
						|
  alert("Please write the number first")
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Square number (number to the power of two)
 | 
						|
function square() {
 | 
						|
   id = document.getElementById("display");
 | 
						|
if (displayText == "") {
 | 
						|
  num1 = result
 | 
						|
  }
 | 
						|
else {
 | 
						|
  num1 = parseFloat(displayText)
 | 
						|
  }
 | 
						|
if (num1 != "") {
 | 
						|
  result = num1 * num1
 | 
						|
  id.value = result
 | 
						|
  displayText = ""
 | 
						|
  }
 | 
						|
else {
 | 
						|
  alert("Please write the number first")
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Convert degrees to radians
 | 
						|
function degToRad() {
 | 
						|
   id = document.getElementById("display");
 | 
						|
if (displayText == "") {
 | 
						|
  num1 = result
 | 
						|
  }
 | 
						|
else {
 | 
						|
  num1 = parseFloat(displayText)
 | 
						|
  }
 | 
						|
if (num1 != "") {
 | 
						|
  result = num1 * Math.PI / 180
 | 
						|
  id.value = result
 | 
						|
  displayText = ""
 | 
						|
  }
 | 
						|
else {
 | 
						|
  alert("Please write the number first")
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Convert radians to degrees
 | 
						|
function radToDeg() {
 | 
						|
   id = document.getElementById("display");
 | 
						|
if (displayText == "") {
 | 
						|
  num1 = result
 | 
						|
  }
 | 
						|
else {
 | 
						|
  num1 = parseFloat(displayText)
 | 
						|
  }
 | 
						|
if (num1 != "") {
 | 
						|
  result = num1 * 180 / Math.PI
 | 
						|
  id.value = result
 | 
						|
  displayText = ""
 | 
						|
  }
 | 
						|
else {
 | 
						|
  alert("Please write the number first")
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Calculations
 | 
						|
function calculate() {
 | 
						|
   id = document.getElementById("display");
 | 
						|
 | 
						|
if (displayText != "") {
 | 
						|
  num2 = parseFloat(displayText)
 | 
						|
// Calc: Addition
 | 
						|
  if (operatorType == "add") {
 | 
						|
    result = num1 + num2
 | 
						|
    id.value = result
 | 
						|
    }
 | 
						|
// Calc: Subtraction
 | 
						|
  if (operatorType == "subtract") {
 | 
						|
    result = num1 - num2
 | 
						|
    id.value = result
 | 
						|
    }
 | 
						|
// Calc: Multiplication
 | 
						|
  if (operatorType == "multiply") {
 | 
						|
    result = num1 * num2
 | 
						|
    id.value = result
 | 
						|
    }
 | 
						|
// Calc: Division
 | 
						|
  if (operatorType == "divide") {
 | 
						|
    result = num1 / num2
 | 
						|
    id.value = result
 | 
						|
    }
 | 
						|
  displayText = ""
 | 
						|
  }
 | 
						|
  else {
 | 
						|
  id.value = "Oops! Error!"
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Clear the display
 | 
						|
function clearDisplay() {
 | 
						|
   id = document.getElementById("display");
 | 
						|
 | 
						|
displayText = ""
 | 
						|
id.value = ""
 | 
						|
}
 | 
						|
</script>
 | 
						|
 | 
						|
EOT;
 | 
						|
$a->page['htmlhead'] .= $x;
 | 
						|
}
 | 
						|
 | 
						|
function calc_content($app) {
 | 
						|
 | 
						|
$o = '';
 | 
						|
 | 
						|
$o .=  <<< EOT
 | 
						|
 | 
						|
<h3>Calculator</h3>
 | 
						|
<br /><br />
 | 
						|
<table>
 | 
						|
<tbody><tr><td> 
 | 
						|
<table bgcolor="#af9999" border="1">
 | 
						|
<tbody><tr><td>
 | 
						|
<table border="1" cellpadding="2" cellspacing="2">
 | 
						|
<form name="calc">
 | 
						|
<!--
 | 
						|
<TR><TD VALIGN=top colspan=6 ALIGN="center"> <H2>Calculator</H2> </TD>
 | 
						|
-->
 | 
						|
<tbody><tr>
 | 
						|
	<td colspan="5"><input size="22" id="display" name="display" type="text"></td>
 | 
						|
</tr><tr align="left" valign="middle">
 | 
						|
	<td><input name="one" value="  1   " onclick="addDisplay(1)" type="button"></td>
 | 
						|
	<td><input name="two" value="  2   " onclick="addDisplay(2)" type="button"></td>
 | 
						|
	<td><input name="three" value="  3   " onclick="addDisplay(3)" type="button"></td>
 | 
						|
	<td><input name="plus" value="  +   " onclick="addNumbers()" type="button"></td>
 | 
						|
</tr><tr align="left" valign="middle">
 | 
						|
	<td><input name="four" value="  4   " onclick="addDisplay(4)" type="button"></td>
 | 
						|
	<td><input name="five" value="  5   " onclick="addDisplay(5)" type="button"></td>
 | 
						|
	<td><input name="six" value="  6   " onclick="addDisplay(6)" type="button"></td>
 | 
						|
	<td><input name="minus" value="   -   " onclick="subtractNumbers()" type="button"></td>
 | 
						|
</tr><tr align="left" valign="middle">
 | 
						|
	<td><input name="seven" value="  7   " onclick="addDisplay(7)" type="button"></td>
 | 
						|
	<td><input name="eight" value="  8   " onclick="addDisplay(8)" type="button"></td>
 | 
						|
	<td><input name="nine" value="  9   " onclick="addDisplay(9)" type="button"></td>
 | 
						|
	<td><input name="multiplication" value="  *    " onclick="multiplyNumbers()" type="button"></td>
 | 
						|
</tr><tr align="left" valign="middle">
 | 
						|
	<td><input name="zero" value="  0   " onclick="addDisplay(0)" type="button"></td>
 | 
						|
	<td><input name="pi" value=" Pi  " onclick="addDisplay(Math.PI)" type="button"> </td> 
 | 
						|
	<td><input name="dot" value="   .   " onclick='addDisplay(".")' type="button"></td>
 | 
						|
	<td><input name="division" value="   /   " onclick="divideNumbers()" type="button"></td>
 | 
						|
</tr><tr align="left" valign="middle">
 | 
						|
	<td><input name="sqareroot" value="sqrt" onclick="sqrt()" type="button"></td>
 | 
						|
	<td><input name="squarex" value=" x^2" onclick="square()" type="button"></td>
 | 
						|
	<td><input name="deg-rad" value="d2r " onclick="degToRad()" type="button"></td>
 | 
						|
	<td><input name="rad-deg" value="r2d " onclick="radToDeg()" type="button"></td>
 | 
						|
</tr><tr align="left" valign="middle">
 | 
						|
	<td><input name="sine" value=" sin " onclick="sin()" type="button"></td>
 | 
						|
	<td><input name="arcsine" value="asin" onclick="arcSin()" type="button"></td>
 | 
						|
	<td><input name="cosine" value="cos" onclick="cos()" type="button"></td>
 | 
						|
	<td><input name="arccosine" value="acs" onclick="arcCos()" type="button"></td>
 | 
						|
 | 
						|
</tr><tr align="left" valign="middle">
 | 
						|
	<td colspan="2"><input name="clear" value="  Clear  " onclick="clearDisplay()" type="button"></td>
 | 
						|
	<td colspan="3"><input name="enter" value="     =      " onclick="calculate()" type="button"></td>
 | 
						|
 | 
						|
</tr></tbody></table>
 | 
						|
</form>
 | 
						|
 | 
						|
	<!--
 | 
						|
	<TD VALIGN=top> 
 | 
						|
		<B>NOTE:</B> All sine and cosine calculations are
 | 
						|
		<br>done in radians. Remember to convert first
 | 
						|
		<br>if using degrees.
 | 
						|
	</TD>
 | 
						|
	-->
 | 
						|
	
 | 
						|
</td></tr></tbody></table>
 | 
						|
 | 
						|
 | 
						|
</td></tr></tbody></table>
 | 
						|
 | 
						|
EOT;
 | 
						|
return $o;
 | 
						|
 | 
						|
}
 |