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

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