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.
 
 
 
 

389 rivejä
10 KiB

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