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