Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. /*******************************************************************************
  2. Toutes les fonctions liées à la page pour le gestion des cadres des options,
  3. demande d'un nouveau texte…
  4. *******************************************************************************/
  5. //cette fonction permet d'avoir un nouveau texte
  6. var exo_en_cours = 0; // la leçon en cours // le numéro de la leçon
  7. var cur_checked = "checked";
  8. var le_texte=new Array();
  9. var vies = 2;
  10. function change_exo(a)
  11. {
  12. if (a=="+" && exo_en_cours<exo.length-1)
  13. exo_en_cours++;
  14. else if (a=="-" && exo_en_cours>0)
  15. exo_en_cours--;
  16. new_text(exo_en_cours);
  17. }
  18. function new_text(a)
  19. {
  20. //on réinitialise les variables
  21. le_texte = new Array;
  22. recommencer = false;
  23. nb_recom=0;
  24. l=0; // la ligne en cours
  25. if (!a) // si le numéro de l'exercice n'est pas défini
  26. a=0; // on choisi par défaut le premier (donc le 0)
  27. exo_en_cours = a; // permet de connaître globalement sur quel exo on se trouve
  28. var reg = new RegExp("###","g");
  29. le_texte = exo[a].split(reg);
  30. document.getElementById("resultats").innerHTML = ""; // efface la zone de résulats
  31. document.getElementById("txt").value = ""; // efface le texte frappé //on efface le texte précédement tapé
  32. document.getElementById("txt").focus(); // donne le focus à la zone de frappe
  33. document.getElementById("exo_nb").innerHTML = (a+1) +" : "+titre[a]; // affiche le numéro de l'exo (+1 pour faire joli) et le titre de l'exercice
  34. //vies = 2;
  35. if (mode_jeu)
  36. document.getElementById("nb_vies").innerHTML = make_heart();
  37. else
  38. document.getElementById("nb_vies").innerHTML = "";
  39. ligne_suivante();
  40. // ce qui suit permet de griser les boutons [-] et [+]
  41. document.getElementById("but_+").style.color = "inherit";
  42. document.getElementById("but_+").style.borderColor = "inherit";
  43. document.getElementById("but_-").style.color = "inherit";
  44. document.getElementById("but_-").style.borderColor = "inherit";
  45. if (exo_en_cours == 0)
  46. {
  47. document.getElementById("but_-").style.color = "grey";
  48. document.getElementById("but_-").style.borderColor = "grey";
  49. }
  50. if (exo_en_cours == exo.length-1)
  51. {
  52. document.getElementById("but_+").style.color = "grey";
  53. document.getElementById("but_+").style.borderColor = "grey";
  54. }
  55. color_key(); // colorisation des touches du clavier
  56. }
  57. function view_options(action)
  58. {
  59. if (action == "")
  60. return;
  61. document.getElementById("options").style.display = action;
  62. document.getElementById("voile").style.display = action;
  63. if (action == "block")
  64. document.getElementById("txt").blur();
  65. if (action == "none")
  66. document.getElementById("txt").focus();
  67. }
  68. function view_help(action)
  69. {
  70. if (action == "")
  71. return;
  72. document.getElementById("help").style.display = action;
  73. document.getElementById("voile").style.display = action;
  74. if (action == "block")
  75. document.getElementById("txt").blur();
  76. if (action == "none")
  77. document.getElementById("txt").focus();
  78. }
  79. var mode_jeu = false;
  80. function modejeu(a)
  81. {
  82. if (a)
  83. {
  84. mode_jeu = true;
  85. vies = 2;
  86. }
  87. else
  88. mode_jeu = false;
  89. }
  90. function make_heart()
  91. {
  92. var coeur="&#10084; ";
  93. var nb_vies="";
  94. /*for (var i=0 ; i<vies ; i++)
  95. {
  96. nb_vies+=coeur;
  97. }*/
  98. return vies+' <span style="color:red">'+coeur+'</span>';
  99. }
  100. function options(e)
  101. {
  102. //var touche = window.event ? e.keyCode : e.which;
  103. //alert(touche);
  104. }
  105. var type_kb = "kb_decal";
  106. function aff_kb(a)
  107. {
  108. if (a == true)
  109. type_clavier(type_kb);
  110. else
  111. type_clavier("none");
  112. }
  113. function type_clavier(a)
  114. {
  115. if (a == "none")
  116. {
  117. document.getElementById("aff_kb").innerHTML="";
  118. return;
  119. }
  120. if (a == "kb_decal")
  121. document.getElementById("aff_kb").innerHTML=kb_decal();
  122. if (a == "kb_typematrix")
  123. document.getElementById("aff_kb").innerHTML=kb_typematrix();
  124. //document.getElementById("aff_kb").innerHTML=kb_typematrix();
  125. //document.getElementById("aff_kb").innerHTML=kb_decal();
  126. //document.getElementById("aff_kb").innerHTML='<img src="bepo-standard.png" alt="clavier bépo" />';
  127. color_key();
  128. }
  129. var shift_down = false;
  130. var altgr_down = false;
  131. function get_key(e,action)
  132. {
  133. var touche = window.event ? e.keyCode : e.which;
  134. //alert(touche + " " + action);
  135. if(action == "down") //on enfonce la touche
  136. {
  137. if (touche== 16) //shift
  138. shift_down = true;
  139. if (touche == 17 || touche == 225) //altgr linux = 225 ; win = 17 ??? étrange
  140. altgr_down = true;
  141. }
  142. if(action == "up")
  143. {
  144. if (touche== 16) //shift
  145. shift_down = false;
  146. if (touche == 17 || touche == 225) //altgr
  147. altgr_down = false;
  148. }
  149. if (shift_down == true && altgr_down == true)
  150. layout = bepo_4;
  151. if (shift_down == true && altgr_down == false)
  152. layout = bepo_2;
  153. if (shift_down == false && altgr_down == true)
  154. layout = bepo_3;
  155. if (shift_down == false && altgr_down == false)
  156. layout = bepo_1;
  157. for (var k = 0 ; k < layout.length ; k++)
  158. {
  159. if(document.getElementById("k"+k))
  160. document.getElementById("k"+k).innerHTML = layout.charAt(k);
  161. }
  162. color_key();
  163. }
  164. function color_key()
  165. {
  166. var a;
  167. var b;
  168. var exo_pre="";
  169. for (var key=0 ; key < 48 ; key++)
  170. {
  171. if (document.getElementById("k"+key))
  172. document.getElementById("k"+key).style.backgroundColor = "inherit";
  173. }
  174. for (var i = 0 ; i < exo_en_cours ; i++)
  175. {
  176. exo_pre += lettres[i];
  177. //alert(exo_pre);
  178. }
  179. for (var key=0 ; key < 48 ; key++)
  180. {
  181. if (document.getElementById("k"+key))
  182. {
  183. a = document.getElementById("k"+key).innerHTML;
  184. for (var lettre = 0 ; lettre < exo_pre.length ; lettre++)
  185. {
  186. b = exo_pre.charAt(lettre);
  187. //alert(key+" _" +a+"_ _"+b+"_");
  188. if ( a == b && document.getElementById("k"+key) )
  189. document.getElementById("k"+key).style.backgroundColor = "#c1f7ad";
  190. }
  191. for (var lettre = 0 ; lettre < lettres[exo_en_cours].length ; lettre++)
  192. {
  193. b = lettres[exo_en_cours].charAt(lettre);
  194. //alert(key+" _" +a+"_ _"+b+"_");
  195. if ( a == b && document.getElementById("k"+key) )
  196. document.getElementById("k"+key).style.backgroundColor = "#7cfc00";
  197. }
  198. }
  199. }
  200. //document.getElementById("k"+key).style.backgroundColor = col;
  201. }
  202. var bepo_1 = "$\"«»()@+-/*=%bépoè^vdljzwauie,ctsrnmçêàyx.k'qghf";
  203. var bepo_2 = "#1234567890°`BÉPOÈ!VDLJZWAUIE;CTSRNMÇÊÀYX:K?QGHF";
  204. var bepo_3 = "–—<>[] | &œ ¡ æù¨€’ \\{}… ¿ ";
  205. var bepo_4 = " „“”≤≥ ˝ Œ ÆÙ   ‘’· ";
  206. /*
  207. var bepo_1 = "²&é\"'(-è_çà)=azertyuiop^$qsdfghjklmù*<wxcvbn,;:!";
  208. var bepo_2 = " 1234567890°+AZERTYUIOP¨₤QSDFGHJKLM%µ>WXCVBN?./§";
  209. var bepo_3 = " ~#{[|`\\^@]} € ";
  210. var bepo_4 = " ";
  211. */
  212. var k=0;
  213. function kb_decal()
  214. {
  215. var row_dec = new Array(0,35,41,28);
  216. var key_per_row = new Array(13,12,12,11);
  217. k=0;
  218. var row=0;
  219. var diff=0;
  220. var kb= '<div class="kb">';
  221. for (var i = 0 ; i < 4 ; i++)
  222. {
  223. for(var j = 0 ; j < key_per_row[i] ; j++)
  224. {
  225. k105="";
  226. if(k==37)
  227. k105="border:dashed 1px black;";
  228. if(j == 0)
  229. kb += '<div style="'+k105+'margin-left:'+row_dec[i]+'px" class="key" id="k'+k+'">'+bepo_1.charAt(k)+'</div>';
  230. else
  231. kb += '<div class="key" id="k'+k+'">'+bepo_1.charAt(k)+'</div>';
  232. k++;
  233. }
  234. kb += '<div style="clear:both"></div>';
  235. }
  236. kb += '</div>';
  237. return kb;
  238. }
  239. function kb_typematrix()
  240. {
  241. var row_dec = new Array(0,26,26,26);
  242. var key_per_row = new Array(13,12,11,11);
  243. var key_space = new Array(6,5,5,5);
  244. k=0;
  245. var row=0;
  246. var kb= '<div class="kb">';
  247. for (var i = 0 ; i < 4 ; i++)
  248. {
  249. for(var j = 0 ; j < key_per_row[i] ; j++)
  250. {
  251. if(k == 48)
  252. k=36;
  253. if(j == 0)
  254. kb += '<div style="margin-left:'+row_dec[i]+'px" class="key" id="k'+k+'">'+bepo_1.charAt(k)+'</div>';
  255. else if(j == key_space[i])
  256. kb += '<div style="margin-left:20px" class="key" id="k'+k+'">'+bepo_1.charAt(k)+'</div>';
  257. else
  258. kb += '<div class="key" id="k'+k+'">'+bepo_1.charAt(k)+'</div>';
  259. k++;
  260. if(k == 36)
  261. k=38;
  262. }
  263. kb += '<div style="clear:both"></div>';
  264. //k=48; // pour avoir le nombre total de touche
  265. }
  266. kb += '</div>';
  267. return kb;
  268. }