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