<?php /** * Name: Calculator App * Description: Simple Calculator Application * Version: 1.0 * Author: Mike Macgirvin <http://macgirvin.com/profile/mike> */ 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; }