You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
3.5 KiB

  1. calc_array = new Array();
  2. var calcul = 0;
  3. var pas_ch = 0;
  4. function $id(id) {
  5. return document.getElementById(id);
  6. }
  7. function f_calc(id, n) {
  8. if (n == 'ce') {
  9. init_calc(id);
  10. }
  11. else if (n == '=') {
  12. if (calc_array[id][0] != '=' && calc_array[id][1] != 1) {
  13. eval('calcul=' + calc_array[id][2] + calc_array[id][0] + calc_array[id][3] + ';');
  14. calc_array[id][0] = '=';
  15. $id(id + '_result').value = calcul;
  16. calc_array[id][2] = calcul;
  17. calc_array[id][3] = 0;
  18. }
  19. }
  20. else if (n == '+-') {
  21. $id(id + '_result').value = $id(id + '_result').value * (-1);
  22. if (calc_array[id][0] == '=') {
  23. calc_array[id][2] = $id(id + '_result').value;
  24. calc_array[id][3] = 0;
  25. }
  26. else {
  27. calc_array[id][3] = $id(id + '_result').value;
  28. }
  29. pas_ch = 1;
  30. }
  31. else if (n == 'nbs') {
  32. if ($id(id + '_result').value < 10 && $id(id + '_result').value > -10) {
  33. $id(id + '_result').value = 0;
  34. }
  35. else {
  36. $id(id + '_result').value = $id(id + '_result').value.slice(0, $id(id + '_result').value.length - 1);
  37. }
  38. if (calc_array[id][0] == '=') {
  39. calc_array[id][2] = $id(id + '_result').value;
  40. calc_array[id][3] = 0;
  41. }
  42. else {
  43. calc_array[id][3] = $id(id + '_result').value;
  44. }
  45. }
  46. else {
  47. if (calc_array[id][0] != '=' && calc_array[id][1] != 1) {
  48. eval('calcul=' + calc_array[id][2] + calc_array[id][0] + calc_array[id][3] + ';');
  49. $id(id + '_result').value = calcul;
  50. calc_array[id][2] = calcul;
  51. calc_array[id][3] = 0;
  52. }
  53. calc_array[id][0] = n;
  54. }
  55. if (pas_ch == 0) {
  56. calc_array[id][1] = 1;
  57. }
  58. else {
  59. pas_ch = 0;
  60. }
  61. document.getElementById(id + '_result').focus();
  62. return true;
  63. }
  64. function add_calc(id, n) {
  65. if (calc_array[id][1] == 1) {
  66. $id(id + '_result').value = n;
  67. }
  68. else {
  69. $id(id + '_result').value += n;
  70. }
  71. if (calc_array[id][0] == '=') {
  72. calc_array[id][2] = $id(id + '_result').value;
  73. calc_array[id][3] = 0;
  74. }
  75. else {
  76. calc_array[id][3] = $id(id + '_result').value;
  77. }
  78. calc_array[id][1] = 0;
  79. document.getElementById(id + '_result').focus();
  80. return true;
  81. }
  82. function init_calc(id) {
  83. $id(id + '_result').value = 0;
  84. calc_array[id] = new Array('=', 1, '0', '0', 0);
  85. document.getElementById(id + '_result').focus();
  86. return true;
  87. }
  88. function key_detect_calc(id, evt) {
  89. if ((evt.keyCode > 95) && (evt.keyCode < 106)) {
  90. var nbr = evt.keyCode - 96;
  91. add_calc(id, nbr);
  92. }
  93. else if ((evt.keyCode > 47) && (evt.keyCode < 58)) {
  94. var nbr = evt.keyCode - 48;
  95. add_calc(id, nbr);
  96. }
  97. else if (evt.keyCode == 107) {
  98. f_calc(id, '+');
  99. }
  100. else if (evt.keyCode == 109) {
  101. f_calc(id, '-');
  102. }
  103. else if (evt.keyCode == 106) {
  104. f_calc(id, '*');
  105. }
  106. else if (evt.keyCode == 111) {
  107. f_calc(id, '/');
  108. }
  109. else if (evt.keyCode == 110) {
  110. add_calc(id, '.');
  111. }
  112. else if (evt.keyCode == 190) {
  113. add_calc(id, '.');
  114. }
  115. else if (evt.keyCode == 188) {
  116. add_calc(id, '.');
  117. }
  118. else if (evt.keyCode == 13) {
  119. f_calc(id, '=');
  120. }
  121. else if (evt.keyCode == 46) {
  122. f_calc(id, 'ce');
  123. }
  124. else if (evt.keyCode == 8) {
  125. f_calc(id, 'nbs');
  126. }
  127. else if (evt.keyCode == 27) {
  128. f_calc(id, 'ce');
  129. }
  130. return true;
  131. }