Merge branch '2020.09-rc' into stable
[friendica-addons.git/.git] / calc / calc.php
1 <?php
2 /**
3  * Name: Calculator App
4  * Description: Simple Calculator Application
5  * Version: 1.0
6  * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
7  */
8 use Friendica\Core\Hook;
9 use Friendica\DI;
10
11 function calc_install() {
12         Hook::register('app_menu', 'addon/calc/calc.php', 'calc_app_menu');
13 }
14
15 function calc_app_menu($a,&$b) {
16         $b['app_menu'][] = '<div class="app-title"><a href="calc">Calculator</a></div>'; 
17 }
18
19
20 function calc_module() {}
21
22
23
24
25 function calc_init($a) {
26
27 $x = <<< EOT
28
29 <script language="JavaScript">
30 /**************************************
31  * www.FemaleNerd.com         *
32  **************************************/
33
34 // Declare global variables
35 var displayText = ""
36 var num1
37 var num2
38 var operatorType
39
40 // Write to display
41 function addDisplay(n){
42    id = document.getElementById("display");
43 id.value = ""
44 displayText += n
45 id.value = displayText
46 }
47
48 // Addition
49 function addNumbers() {
50 if (displayText == "") {
51   displayText = result
52  }
53 num1 = parseFloat(displayText)
54 operatorType = "add"
55 displayText = ""
56 }
57
58 // Subtraction
59 function subtractNumbers() {
60 if (displayText == "") {
61   displayText = result
62  }
63 num1 = parseFloat(displayText)
64 operatorType = "subtract"
65 displayText = ""
66 }
67
68 // Multiplication
69 function multiplyNumbers() {
70 if (displayText == "") {
71   displayText = result
72  }
73 num1 = parseFloat(displayText)
74 operatorType = "multiply"
75 displayText = ""
76 }
77
78 // Division
79 function divideNumbers() {
80 if (displayText == "") {
81   displayText = result
82  }
83 num1 = parseFloat(displayText)
84 operatorType = "divide"
85 displayText = ""
86 }
87
88 // Sine
89 function sin() {
90    id = document.getElementById("display");
91 if (displayText == "") {
92   num1 = result
93   }
94 else {
95   num1 = parseFloat(displayText)
96   }
97 if (num1 != "") {
98   result = Math.sin(num1)
99   id.value = result
100   displayText = ""
101   }
102 else {
103   alert("Please write the number first")
104   }
105 }
106
107 // Cosine
108 function cos() {
109    id = document.getElementById("display");
110 if (displayText == "") {
111   num1 = result
112   }
113 else {
114   num1 = parseFloat(displayText)
115   }
116 if (num1 != "") {
117   result = Math.cos(num1)
118   id.value = result
119   displayText = ""
120   }
121 else {
122   alert("Please write the number first")
123   }
124 }
125
126 // ArcSine
127 function arcSin() {
128    id = document.getElementById("display");
129 if (displayText == "") {
130   num1 = result
131   }
132 else {
133   num1 = parseFloat(displayText)
134   }
135 if (num1 != "") {
136   result = Math.asin(num1)
137   id.value = result
138   displayText = ""
139   }
140 else {
141   alert("Please write the number first")
142   }
143 }
144
145 // ArcCosine
146 function arcCos() {
147    id = document.getElementById("display");
148 if (displayText == "") {
149   num1 = result
150   }
151 else {
152   num1 = parseFloat(displayText)
153   }
154 if (num1 != "") {
155   result = Math.acos(num1)
156   id.value = result
157   displayText = ""
158   }
159 else {
160   alert("Please write the number first")
161   }
162 }
163
164 // Square root
165 function sqrt() {
166    id = document.getElementById("display");
167 if (displayText == "") {
168   num1 = result
169   }
170 else {
171   num1 = parseFloat(displayText)
172   }
173 if (num1 != "") {
174   result = Math.sqrt(num1)
175   id.value = result
176   displayText = ""
177   }
178 else {
179   alert("Please write the number first")
180   }
181 }
182
183 // Square number (number to the power of two)
184 function square() {
185    id = document.getElementById("display");
186 if (displayText == "") {
187   num1 = result
188   }
189 else {
190   num1 = parseFloat(displayText)
191   }
192 if (num1 != "") {
193   result = num1 * num1
194   id.value = result
195   displayText = ""
196   }
197 else {
198   alert("Please write the number first")
199   }
200 }
201
202 // Convert degrees to radians
203 function degToRad() {
204    id = document.getElementById("display");
205 if (displayText == "") {
206   num1 = result
207   }
208 else {
209   num1 = parseFloat(displayText)
210   }
211 if (num1 != "") {
212   result = num1 * Math.PI / 180
213   id.value = result
214   displayText = ""
215   }
216 else {
217   alert("Please write the number first")
218   }
219 }
220
221 // Convert radians to degrees
222 function radToDeg() {
223    id = document.getElementById("display");
224 if (displayText == "") {
225   num1 = result
226   }
227 else {
228   num1 = parseFloat(displayText)
229   }
230 if (num1 != "") {
231   result = num1 * 180 / Math.PI
232   id.value = result
233   displayText = ""
234   }
235 else {
236   alert("Please write the number first")
237   }
238 }
239
240 // Calculations
241 function calculate() {
242    id = document.getElementById("display");
243
244 if (displayText != "") {
245   num2 = parseFloat(displayText)
246 // Calc: Addition
247   if (operatorType == "add") {
248     result = num1 + num2
249     id.value = result
250     }
251 // Calc: Subtraction
252   if (operatorType == "subtract") {
253     result = num1 - num2
254     id.value = result
255     }
256 // Calc: Multiplication
257   if (operatorType == "multiply") {
258     result = num1 * num2
259     id.value = result
260     }
261 // Calc: Division
262   if (operatorType == "divide") {
263     result = num1 / num2
264     id.value = result
265     }
266   displayText = ""
267   }
268   else {
269   id.value = "Oops! Error!"
270   }
271 }
272
273 // Clear the display
274 function clearDisplay() {
275    id = document.getElementById("display");
276
277 displayText = ""
278 id.value = ""
279 }
280 </script>
281
282 EOT;
283 DI::page()['htmlhead'] .= $x;
284 }
285
286 function calc_content($app) {
287
288 $o = '';
289
290 $o .=  <<< EOT
291
292 <h3>Calculator</h3>
293 <br /><br />
294 <table>
295 <tbody><tr><td> 
296 <table bgcolor="#af9999" border="1">
297 <tbody><tr><td>
298 <table border="1" cellpadding="2" cellspacing="2">
299 <form name="calc">
300 <!--
301 <TR><TD VALIGN=top colspan=6 ALIGN="center"> <H2>Calculator</H2> </TD>
302 -->
303 <tbody><tr>
304         <td colspan="5"><input size="22" id="display" name="display" type="text"></td>
305 </tr><tr align="left" valign="middle">
306         <td><input name="one" value="&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;" onclick="addDisplay(1)" type="button"></td>
307         <td><input name="two" value="&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;" onclick="addDisplay(2)" type="button"></td>
308         <td><input name="three" value="&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;" onclick="addDisplay(3)" type="button"></td>
309         <td><input name="plus" value="&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;" onclick="addNumbers()" type="button"></td>
310 </tr><tr align="left" valign="middle">
311         <td><input name="four" value="&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;" onclick="addDisplay(4)" type="button"></td>
312         <td><input name="five" value="&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;" onclick="addDisplay(5)" type="button"></td>
313         <td><input name="six" value="&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;" onclick="addDisplay(6)" type="button"></td>
314         <td><input name="minus" value="&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;" onclick="subtractNumbers()" type="button"></td>
315 </tr><tr align="left" valign="middle">
316         <td><input name="seven" value="&nbsp;&nbsp;7&nbsp;&nbsp;&nbsp;" onclick="addDisplay(7)" type="button"></td>
317         <td><input name="eight" value="&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;" onclick="addDisplay(8)" type="button"></td>
318         <td><input name="nine" value="&nbsp;&nbsp;9&nbsp;&nbsp;&nbsp;" onclick="addDisplay(9)" type="button"></td>
319         <td><input name="multiplication" value="&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;" onclick="multiplyNumbers()" type="button"></td>
320 </tr><tr align="left" valign="middle">
321         <td><input name="zero" value="&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;" onclick="addDisplay(0)" type="button"></td>
322         <td><input name="pi" value="&nbsp;Pi&nbsp;&nbsp;" onclick="addDisplay(Math.PI)" type="button"> </td> 
323         <td><input name="dot" value="&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;" onclick='addDisplay(".")' type="button"></td>
324         <td><input name="division" value="&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;" onclick="divideNumbers()" type="button"></td>
325 </tr><tr align="left" valign="middle">
326         <td><input name="sqareroot" value="sqrt" onclick="sqrt()" type="button"></td>
327         <td><input name="squarex" value=" x^2" onclick="square()" type="button"></td>
328         <td><input name="deg-rad" value="d2r&nbsp;" onclick="degToRad()" type="button"></td>
329         <td><input name="rad-deg" value="r2d&nbsp;" onclick="radToDeg()" type="button"></td>
330 </tr><tr align="left" valign="middle">
331         <td><input name="sine" value="&nbsp;sin&nbsp;" onclick="sin()" type="button"></td>
332         <td><input name="arcsine" value="asin" onclick="arcSin()" type="button"></td>
333         <td><input name="cosine" value="cos" onclick="cos()" type="button"></td>
334         <td><input name="arccosine" value="acs" onclick="arcCos()" type="button"></td>
335
336 </tr><tr align="left" valign="middle">
337         <td colspan="2"><input name="clear" value="&nbsp;&nbsp;Clear&nbsp;&nbsp;" onclick="clearDisplay()" type="button"></td>
338         <td colspan="3"><input name="enter" value="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" onclick="calculate()" type="button"></td>
339
340 </tr></tbody></table>
341 </form>
342
343         <!--
344         <TD VALIGN=top> 
345                 <B>NOTE:</B> All sine and cosine calculations are
346                 <br>done in radians. Remember to convert first
347                 <br>if using degrees.
348         </TD>
349         -->
350         
351 </td></tr></tbody></table>
352
353
354 </td></tr></tbody></table>
355
356 EOT;
357 return $o;
358
359 }