Browse code

Cambios en el formato

NikaZhenya authored on 28/09/2018 15:18:20
Showing 2 changed files
... ...
@@ -18,7 +18,7 @@ var foo = (function() {
18 18
   // Obtiene una muestra aleatoria del conjunto
19 19
   Object.defineProperty(Array.prototype, 'sample', {
20 20
     enumerable: false,
21
-    value: function () {
21
+    value: function() {
22 22
       return this[Math.floor(Math.random() * this.length)];
23 23
     }
24 24
   });
... ...
@@ -26,22 +26,26 @@ var foo = (function() {
26 26
   // Limpia un conjunto
27 27
   Object.defineProperty(Array.prototype, 'clear', {
28 28
     enumerable: false,
29
-    value: function () {
30
-      return this.filter(function (e) {return e;});
29
+    value: function() {
30
+      return this.filter(function(e) {
31
+        return e;
32
+      });
31 33
     }
32 34
   });
33 35
 
34 36
   // Revuelve el conjunto; viene de: http://alturl.com/33yti
35 37
   Object.defineProperty(Array.prototype, 'shuffle', {
36 38
     enumerable: false,
37
-    value: function () {
39
+    value: function() {
38 40
       var x = this.length, j, temp;
39 41
 
40
-      if (x === 0) {return this;}
42
+      if (x === 0) {
43
+        return this;
44
+      }
41 45
 
42 46
       while (--x) {
43
-        j       = Math.floor(Math.random() * (x + 1));
44
-        temp    = this[x];
47
+        j = Math.floor(Math.random() * (x + 1));
48
+        temp = this[x];
45 49
         this[x] = this[j];
46 50
         this[j] = temp;
47 51
       }
... ...
@@ -53,9 +57,9 @@ var foo = (function() {
53 53
   // Capitaliza la línea de texto
54 54
   Object.defineProperty(String.prototype, 'capitalize', {
55 55
     enumerable: false,
56
-    value: function () {
56
+    value: function() {
57 57
       return this.charAt(0).toUpperCase() +
58
-             this.toLowerCase().slice(1);
58
+        this.toLowerCase().slice(1);
59 59
     }
60 60
   });
61 61
 
... ...
@@ -65,64 +69,78 @@ var foo = (function() {
65 65
     value: function() {
66 66
       var translate_re = /[ÁÉÍÓÚÜÑáéíóúüñ]/g,
67 67
           translate = {
68
-            'Á':'A', 'É':'E', 'Í':'I',
69
-            'Ó':'O', 'Ú':'U', 'Ü':'U',
70
-            'Ñ':'N', 'á':'a', 'é':'e',
71
-            'í':'i', 'ó':'o', 'ú':'u',
72
-            'ü':'u', 'ñ':'n'
68
+            'Á': 'A',
69
+            'É': 'E',
70
+            'Í': 'I',
71
+            'Ó': 'O',
72
+            'Ú': 'U',
73
+            'Ü': 'U',
74
+            'Ñ': 'N',
75
+            'á': 'a',
76
+            'é': 'e',
77
+            'í': 'i',
78
+            'ó': 'o',
79
+            'ú': 'u',
80
+            'ü': 'u',
81
+            'ñ': 'n'
73 82
           };
74 83
 
75
-      return (this.replace(translate_re, function(match){
84
+      return (this.replace(translate_re, function(match) {
76 85
         return translate[match];
77 86
       }));
78 87
     }
79 88
   });
80 89
 
81 90
   // Mueve el juego; viene de: http://alturl.com/musku
82
-  function scrollTo (element, to, duration) {
83
-    if (duration <= 0) {return;}
91
+  function scrollTo(element, to, duration) {
92
+    if (duration <= 0) {
93
+      return;
94
+    }
84 95
 
85 96
     var difference = to - element.scrollTop,
86
-        perTick  = difference / duration * 10;
97
+        perTick = difference / duration * 10;
87 98
 
88 99
     setTimeout(function() {
89 100
       element.scrollTop = element.scrollTop + perTick;
90 101
 
91
-      if (element.scrollTop === to) {return;}
102
+      if (element.scrollTop === to) {
103
+        return;
104
+      }
92 105
 
93 106
       scrollTo(element, to, duration - 10);
94 107
     }, 10);
95 108
   }
96 109
 
97 110
   // Incrementa la barra de progreso
98
-  function resize_bar (increment = 0) {
99
-    var div_pbar    = document.getElementById('foo-bar'),
100
-        total_width   = document.body.clientWidth,
111
+  function resize_bar(increment = 0) {
112
+    var div_pbar = document.getElementById('foo-bar'),
113
+        total_width = document.body.clientWidth,
101 114
         current_width = div_pbar.clientWidth,
102
-        total_lines   = game_opt.data.content.length -
103
-                        (game_opt.size[1] - 1),
104
-        line_width    = total_width / total_lines,
115
+        total_lines = game_opt.data.content.length -
116
+        (game_opt.size[1] - 1),
117
+        line_width = total_width / total_lines,
105 118
         new_width;
106 119
 
107 120
     // El intervalo se cambia con una animación
108
-    function move () {
121
+    function move() {
109 122
       if (current_width >= new_width) {
110 123
         clearInterval(bar_timer);
111 124
         bar_timer = 0;
112 125
       } else {
113
-        if (increment) {current_width += 10;}
114
-        else           {current_width++;}
126
+        if (increment) {
127
+          current_width += 10;
128
+        } else {
129
+          current_width++;
130
+        }
115 131
         div_pbar.style.width = current_width + 'px';
116 132
       }
117 133
     }
118 134
 
119 135
     // Cálculo de su posición inicial o desde el último guardado
120 136
     if (increment == 0) {
121
-      var lines   = document.getElementsByClassName('foo-line'),
122
-          last_lt = lines[lines.length - 1]
123
-                    .getElementsByClassName('foo-letter')[0]
124
-                    .getAttribute('data-status'),
125
-          total   = 0;
137
+      var lines = document.getElementsByClassName('foo-line'),
138
+          last_lt = lines[lines.length - 1].getElementsByClassName('foo-letter')[0].getAttribute('data-status'),
139
+          total = 0;
126 140
 
127 141
       // Obtiene cuántas líneas se han avanzado
128 142
       for (var i = 0; i < lines.length; i++) {
... ...
@@ -133,7 +151,7 @@ var foo = (function() {
133 133
 
134 134
       // Según si todas las líneas han sido respondidas o no
135 135
       if (total_lines == total - (game_opt.size[1] - 1) &&
136
-          (last_lt == 'correct' || last_lt == 'incorrect')) {
136
+        (last_lt == 'correct' || last_lt == 'incorrect')) {
137 137
         increment = (total - (game_opt.size[1] - 1));
138 138
       } else {
139 139
         increment = (total - (game_opt.size[1] - 1)) - 1;
... ...
@@ -150,50 +168,52 @@ var foo = (function() {
150 150
   }
151 151
 
152 152
   // Valida conjuntos
153
-  function validate_array (array, min_length, min_quantity, label) {
153
+  function validate_array(array, min_length, min_quantity, label) {
154 154
 
155 155
     // No procede si no tiene la extensión necesaria
156 156
     if (array.length != min_length) {
157 157
       throw new Error(label + " array requires only " +
158
-                      min_length + " elements.");
158
+        min_length + " elements.");
159 159
     }
160 160
 
161 161
     // No procede si el tipo o el tamaño mínimo son erróneos
162 162
     for (var i = 0; i < array.length; i++) {
163 163
       if (typeof array[i] != 'number' ||
164
-          array[i] % 1 !== 0          ||
165
-          array[i] < min_quantity) {
164
+        array[i] % 1 !== 0 ||
165
+        array[i] < min_quantity) {
166 166
         throw new Error(label + " array's elements have to be" +
167
-                                " integers equal or greater" +
168
-                                " than " + min_quantity + ".");
167
+          " integers equal or greater" +
168
+          " than " + min_quantity + ".");
169 169
       }
170 170
     }
171 171
   }
172 172
 
173 173
   // Ejecuta la función si se estipuló alguna
174
-  function exec_fn (e) {
174
+  function exec_fn(e) {
175 175
     // Si 'e' es texto, se supone que es el nombre de una función
176 176
     if (typeof e === 'string' &&
177
-        typeof window[e] === 'function') {
177
+      typeof window[e] === 'function') {
178 178
       window[e]();
179
-    }
180
-    else if (typeof e === 'function') {
179
+    } else if (typeof e === 'function') {
181 180
       e();
182 181
     }
183 182
   }
184 183
 
185 184
   // Cuando pasa cada segundo del juego
186
-  function new_time (extra = 0) {
187
-    var div_timer   = document.getElementById('foo-timer-total'),
188
-        qnt_timer   = parseInt(div_timer.innerHTML);
185
+  function new_time(extra = 0) {
186
+    var div_timer = document.getElementById('foo-timer-total'),
187
+        qnt_timer = parseInt(div_timer.innerHTML);
189 188
 
190 189
     // Agrega un extra, si lo hay
191 190
     if (extra != 0) {
192 191
       qnt_timer = qnt_timer + extra;
193
-    // Agrega o quita lo regular
192
+      // Agrega o quita lo regular
194 193
     } else {
195
-      if (game_opt.type == 'story') {qnt_timer = qnt_timer + 1;}
196
-      else {qnt_timer = qnt_timer - 1;}
194
+      if (game_opt.type == 'story') {
195
+        qnt_timer = qnt_timer + 1;
196
+      } else {
197
+        qnt_timer = qnt_timer - 1;
198
+      }
197 199
     }
198 200
 
199 201
     // Se fija variable
... ...
@@ -218,7 +238,7 @@ var foo = (function() {
218 218
   }
219 219
 
220 220
   // Cuando hay un cambio en el puntaje
221
-  function new_score (int) {
221
+  function new_score(int) {
222 222
     var div_score = document.getElementById('foo-score-total'),
223 223
         qnt_score = parseInt(div_score.innerHTML);
224 224
 
... ...
@@ -245,64 +265,60 @@ var foo = (function() {
245 245
   }
246 246
 
247 247
   // Cuando empieza el touch
248
-  function on_touchstart (e) {
248
+  function on_touchstart(e) {
249 249
     // Dibuja la letra actual para mayor visibilización
250
-    function draw_label (l) {
250
+    function draw_label(l) {
251 251
       var d_add = document.getElementById('foo-adds'),
252 252
           p_add = document.createElement('p');
253 253
 
254 254
       // Elimina el token con la letra presionada
255 255
       if (document.getElementById('foo-token')) {
256 256
         document.getElementById('foo-token').parentElement
257
-                .removeChild(document.getElementById('foo-token'));
257
+          .removeChild(document.getElementById('foo-token'));
258 258
       }
259 259
 
260 260
       // Muestra los anuncios
261 261
       d_add.style.display = 'inherit';
262 262
 
263 263
       // Agrega la etiqueta y sus estilos
264
-      p_add.id        = 'foo-token';
264
+      p_add.id = 'foo-token';
265 265
       p_add.style
266
-        .cssText      = 'width:' + d_add.clientHeight               +
267
-                        'px;height:'                                +
268
-                        d_add.clientHeight                          +
269
-                        'px;font-size:'                             +
270
-                        ((parseInt(game_opt.game_fontSize) * 2)     +
271
-                        game_opt.game_fontSize.replace(/\d+/, '') ) +
272
-                        ';background:'                              +
273
-                        game_opt.lt_bkcolor_enable                  +
274
-                        ';border-radius:'                           +
275
-                        (d_add.clientHeight / 5)                    +
276
-                        'px;margin:0 auto;display:flex;'            +
277
-                        'align-items:center;justify-content:center;'+
278
-                        'border:1px solid #ccc;'                    +
279
-                        '-webkit-box-shadow: '                      +
280
-                                    '0 0 25px 0 rgba(0,0,0,0.25);'  +
281
-                        '-moz-box-shadow: '                         +
282
-                                    '0 0 25px 0 rgba(0,0,0,0.25);'  +
283
-                        'box-shadow: 0 0 25px 0 rgba(0,0,0,0.25);';
266
+        .cssText = 'width:' + d_add.clientHeight +
267
+        'px;height:' +
268
+        d_add.clientHeight +
269
+        'px;font-size:' +
270
+        ((parseInt(game_opt.game_fontSize) * 2) +
271
+          game_opt.game_fontSize.replace(/\d+/, '')) +
272
+        ';background:' +
273
+        game_opt.lt_bkcolor_enable +
274
+        ';border-radius:' +
275
+        (d_add.clientHeight / 5) +
276
+        'px;margin:0 auto;display:flex;' +
277
+        'align-items:center;justify-content:center;' +
278
+        'border:1px solid #ccc;' +
279
+        '-webkit-box-shadow: ' +
280
+        '0 0 25px 0 rgba(0,0,0,0.25);' +
281
+        '-moz-box-shadow: ' +
282
+        '0 0 25px 0 rgba(0,0,0,0.25);' +
283
+        'box-shadow: 0 0 25px 0 rgba(0,0,0,0.25);';
284 284
       p_add.innerHTML = l;
285 285
       d_add.appendChild(p_add);
286 286
     }
287 287
 
288 288
     // Analiza si ejecutar las funciones de la bomba o el bono
289
-    function trigger_bomb_bonus (el, i) {
290
-      var bomb_bonus  = game_opt.type + '_bombs_bonus_' +
291
-                        game_opt.lang,
292
-          picked        = el.getAttribute('data-picked'),
293
-          fn            = picked == 0 ?
294
-                            el.getAttribute('data-on_bomb') :
295
-                            el.getAttribute('data-on_bonus'),
296
-          line_index    = get_index(el.parentElement
297
-                                      .previousSibling, 0),
298
-          letter_index  = get_index(el.previousSibling, 0),
299
-          position      = line_index + '-' + letter_index + '-' + i,
300
-          valid         = true,
301
-          final_pos     = [];
289
+    function trigger_bomb_bonus(el, i) {
290
+      var bomb_bonus = game_opt.type + '_bombs_bonus_' + game_opt.lang,
291
+          picked = el.getAttribute('data-picked'),
292
+          fn = picked == 0 ? el.getAttribute('data-on_bomb') : el.getAttribute('data-on_bonus'),
293
+          line_index = get_index(el.parentElement.previousSibling, 0),
294
+          letter_index = get_index(el.previousSibling, 0),
295
+          position = line_index + '-' + letter_index + '-' + i,
296
+          valid = true,
297
+          final_pos = [];
302 298
 
303 299
       // Obtiene el índice
304
-      function get_index (e, i) {
305
-        while(e != null ) {
300
+      function get_index(e, i) {
301
+        while (e != null) {
306 302
           e = e.previousSibling;
307 303
           i++;
308 304
         }
... ...
@@ -313,7 +329,7 @@ var foo = (function() {
313 313
       // Si no hay datos guardados, se guarda
314 314
       if (localStorage.getItem(bomb_bonus) == null) {
315 315
         final_pos.push(position);
316
-      // Si hay datos, se analiza e incorporan
316
+        // Si hay datos, se analiza e incorporan
317 317
       } else {
318 318
         var bomb_bonus_array = JSON.parse(localStorage[bomb_bonus]);
319 319
 
... ...
@@ -336,40 +352,42 @@ var foo = (function() {
336 336
         exec_fn(fn);
337 337
 
338 338
         // Cambia la puntuación
339
-        if (picked == 0)  {new_score(-3);}
340
-        else              {new_score(3);}
339
+        if (picked == 0) {
340
+          new_score(-3);
341
+        } else {
342
+          new_score(3);
343
+        }
341 344
 
342 345
         // Guardado de los datos
343 346
         localStorage.setItem(bomb_bonus, JSON.stringify(final_pos));
344 347
 
345
-        return  '<span style="font-size:'   +
346
-                game_opt.lt_chance_fontSize +
347
-                ';vertical-align:.25em;">'  +
348
-                (picked == '0' ? '-' : '+') +
349
-                '</span>3';
348
+        return '<span style="font-size:' +
349
+          game_opt.lt_chance_fontSize +
350
+          ';vertical-align:.25em;">' +
351
+          (picked == '0' ? '-' : '+') +
352
+          '</span>3';
350 353
       } else {
351
-        return  '<span style="color:#999">' +
352
-                '<span style="font-size:'   +
353
-                game_opt.lt_chance_fontSize +
354
-                ';vertical-align:.25em;">'  +
355
-                (picked == '0' ? '-' : '+') +
356
-                '</span>3</span>';
354
+        return '<span style="color:#999">' +
355
+          '<span style="font-size:' +
356
+          game_opt.lt_chance_fontSize +
357
+          ';vertical-align:.25em;">' +
358
+          (picked == '0' ? '-' : '+') +
359
+          '</span>3</span>';
357 360
       }
358 361
     }
359 362
 
360 363
     if (!game_opt.win) {
361
-      var element      = e.currentTarget,
362
-          p            = element.getElementsByTagName('p')[0],
363
-          status       = element.getAttribute('data-status'),
364
-          picked       = element.getAttribute('data-picked'),
365
-          picked_i     = element.getAttribute('data-picked_i'),
366
-          letters      = element.getAttribute('data-letters')
367
-                                .split('¤'),
368
-          chances      = element.getAttribute('data-chances'),
369
-          loops        = element.getAttribute('data-loops'),
364
+      var element = e.currentTarget,
365
+          p = element.getElementsByTagName('p')[0],
366
+          status = element.getAttribute('data-status'),
367
+          picked = element.getAttribute('data-picked'),
368
+          picked_i = element.getAttribute('data-picked_i'),
369
+          letters = element.getAttribute('data-letters').split('¤'),
370
+          chances = element.getAttribute('data-chances'),
371
+          loops = element.getAttribute('data-loops'),
370 372
           on_st_change = element.getAttribute('data-on_first_change'),
371
-          on_change    = element.getAttribute('data-on_change'),
372
-          on_loop      = element.getAttribute('data-on_loop');
373
+          on_change = element.getAttribute('data-on_change'),
374
+          on_loop = element.getAttribute('data-on_loop');
373 375
 
374 376
       game_opt.currentTarget = element;
375 377
 
... ...
@@ -406,7 +424,7 @@ var foo = (function() {
406 406
               picked_i = i + 1;
407 407
             } else {
408 408
               picked_i = 0;
409
-              loops  = parseInt(loops) + 1;
409
+              loops = parseInt(loops) + 1;
410 410
               element.setAttribute('data-loops', loops);
411 411
 
412 412
               // Corre función cuando se ha dado una vuelta
... ...
@@ -415,7 +433,7 @@ var foo = (function() {
415 415
 
416 416
             // Cambia la letra elegida
417 417
             picked = letters[picked_i];
418
-            element.setAttribute('data-picked',   picked);
418
+            element.setAttribute('data-picked', picked);
419 419
             element.setAttribute('data-picked_i', picked_i);
420 420
 
421 421
             // Etiqueta según si es letra, bomba o bonus
... ...
@@ -440,7 +458,7 @@ var foo = (function() {
440 440
   }
441 441
 
442 442
   // Cuando termina el touch
443
-  function on_touchend (e) {
443
+  function on_touchend(e) {
444 444
     var element = e.currentTarget;
445 445
 
446 446
     // El usuario tiene cierto tiempo antes de perder una oportunidad
... ...
@@ -450,26 +468,26 @@ var foo = (function() {
450 450
         touch_timer = setInterval(compute_letter, 500, this);
451 451
       } else {
452 452
         touch_timer = setInterval(
453
-                        compute_letter, 500, game_opt.currentTarget
454
-                      );
453
+          compute_letter, 500, game_opt.currentTarget
454
+        );
455 455
       }
456 456
     }
457 457
   }
458 458
 
459 459
   // Analiza todo lo relativo a las letras
460
-  function compute_letter (e) {
460
+  function compute_letter(e) {
461 461
     var chances = e.getAttribute('data-chances'),
462
-        status  = e.getAttribute('data-status'),
463
-        d_add   = document.getElementById('foo-adds');
462
+        status = e.getAttribute('data-status'),
463
+        d_add = document.getElementById('foo-adds');
464 464
 
465 465
     // Reseteo de varios elementos para evitar falsos positivos
466 466
     clearInterval(touch_timer);
467
-    touch_old       = null;
467
+    touch_old = null;
468 468
     d_add.style.display = 'none';
469 469
     if (document.getElementById('foo-token')) {
470 470
       document.getElementById('foo-token')
471
-              .parentElement
472
-              .removeChild(document.getElementById('foo-token'));
471
+        .parentElement
472
+        .removeChild(document.getElementById('foo-token'));
473 473
     }
474 474
 
475 475
     /* Cambia la cantidad de oportunidades y si ya se llegó a 0,
... ...
@@ -480,11 +498,11 @@ var foo = (function() {
480 480
 
481 481
       if (chances - 1 == 0) {
482 482
         e.setAttribute('data-status', 'disable');
483
-        e.style.background  = game_opt.lt_bkcolor_disable;
484
-        e.style.cssText    += '-webkit-user-select:none;' +
485
-                              '-moz-user-select:none;'    +
486
-                              '-ms-user-select:none;'     +
487
-                              'user-select:none;';
483
+        e.style.background = game_opt.lt_bkcolor_disable;
484
+        e.style.cssText += '-webkit-user-select:none;' +
485
+          '-moz-user-select:none;' +
486
+          '-ms-user-select:none;' +
487
+          'user-select:none;';
488 488
 
489 489
         // Reemplaza para eliminar los disparadores
490 490
         var e_new = e.cloneNode(true);
... ...
@@ -502,38 +520,35 @@ var foo = (function() {
502 502
   }
503 503
 
504 504
   // Analiza todo lo relativo a las líneas
505
-  function compute_line (e) {
506
-    var foo_game          = document.getElementById('foo-game'),
505
+  function compute_line(e) {
506
+    var foo_game = document.getElementById('foo-game'),
507 507
         on_line_completed = e.getAttribute('data-on_line_completed'),
508
-        on_line_correct   = e.getAttribute('data-on_line_correct'),
508
+        on_line_correct = e.getAttribute('data-on_line_correct'),
509 509
         on_line_incorrect = e.getAttribute('data-on_line_incorrect'),
510
-        childrens         = e.childNodes,
511
-        disable           = true,
512
-        correct           = true,
513
-        next              = true,
514
-        score             = 0,
515
-        bar_resize        = 1,
516
-        results           = [],
517
-        line_text         = '',
510
+        childrens = e.childNodes,
511
+        disable = true,
512
+        correct = true,
513
+        next = true,
514
+        score = 0,
515
+        bar_resize = 1,
516
+        results = [],
517
+        line_text = '',
518 518
         line_text_correct = '',
519
-        line_completed    =
520
-          (childrens[0].getAttribute('data-status') != 'correct'  ) &&
521
-          (childrens[0].getAttribute('data-status') != 'incorrect');
519
+        line_completed = (childrens[0].getAttribute('data-status') != 'correct') && (childrens[0].getAttribute('data-status') != 'incorrect');
522 520
 
523 521
     // Cambia el color de la letra según esté correcta o no
524
-    function change_color (childrens) {
522
+    function change_color(childrens) {
525 523
       for (var k = 0; k < childrens.length; k++) {
526
-        var child         = childrens[k],
527
-            child_type    = child.getAttribute('data-type'),
524
+        var child = childrens[k],
525
+            child_type = child.getAttribute('data-type'),
528 526
             child_correct = child.getAttribute('data-correct'),
529
-            child_picked  = child.getAttribute('data-picked');
527
+            child_picked = child.getAttribute('data-picked');
530 528
 
531 529
         if (child_type == '1') {
532 530
           if (child_correct == child_picked) {
533 531
             child.style.background = game_opt.lt_bkcolor_correct;
534 532
             child.setAttribute('data-status', 'correct');
535
-          }
536
-          else {
533
+          } else {
537 534
             child.style.background = game_opt.lt_bkcolor_incorrect;
538 535
             child.setAttribute('data-status', 'incorrect');
539 536
           }
... ...
@@ -547,14 +562,14 @@ var foo = (function() {
547 547
 
548 548
     // Iteración de las letras para determinar el estado de la línea
549 549
     for (var i = 0; i < childrens.length; i++) {
550
-      var child     = childrens[i],
551
-          child_status  = child.getAttribute('data-status'),
550
+      var child = childrens[i],
551
+          child_status = child.getAttribute('data-status'),
552 552
           child_correct = child.getAttribute('data-correct'),
553
-          child_picked  = child.getAttribute('data-picked'),
553
+          child_picked = child.getAttribute('data-picked'),
554 554
           child_chances = child.getAttribute('data-chances');
555 555
 
556 556
       // Implica que la línea no tiene todas las letras deshabilitadas
557
-      if (child_status  == 'enable') {
557
+      if (child_status == 'enable') {
558 558
         disable = false;
559 559
         results.push(child_correct == child_picked ? true : false);
560 560
       }
... ...
@@ -575,12 +590,14 @@ var foo = (function() {
575 575
 
576 576
       // Obtiene la línea correcta
577 577
       line_text_correct += (child_correct != null ?
578
-                            child_correct : ' ');
578
+        child_correct : ' ');
579 579
     }
580 580
 
581 581
     // Evita un falso negativo
582 582
     for (var j = 0; j < results.length; j++) {
583
-      if (results[j] == false) {next = false;}
583
+      if (results[j] == false) {
584
+        next = false;
585
+      }
584 586
     }
585 587
 
586 588
     /* Una línea se considera completada cuando ya no hay letras
... ...
@@ -588,7 +605,9 @@ var foo = (function() {
588 588
     if (disable || correct || next) {
589 589
 
590 590
       // Añade el puntaje
591
-      if (line_completed) {new_score(score);}
591
+      if (line_completed) {
592
+        new_score(score);
593
+      }
592 594
 
593 595
       // Cambia el color de las letras
594 596
       change_color(childrens);
... ...
@@ -615,7 +634,7 @@ var foo = (function() {
615 615
           // Corre función cuando se completa la línea correctamente
616 616
           exec_fn(on_line_correct);
617 617
         }
618
-      // Corre función cuando se completa incorrectamente
618
+        // Corre función cuando se completa incorrectamente
619 619
       } else {
620 620
         if (line_completed) {
621 621
 
... ...
@@ -633,7 +652,7 @@ var foo = (function() {
633 633
           e.nextSibling.setAttribute('data-visible', true);
634 634
           e.nextSibling.style.display = 'initial';
635 635
           e.nextSibling.nextSibling
636
-                       .setAttribute('data-visible', true);
636
+            .setAttribute('data-visible', true);
637 637
           e.nextSibling.nextSibling.style.display = 'initial';
638 638
           bar_resize = 2;
639 639
         } else {
... ...
@@ -641,41 +660,40 @@ var foo = (function() {
641 641
           e.nextSibling.style.display = 'initial';
642 642
         }
643 643
       } else {
644
-        if (line_completed) {win();}
644
+        if (line_completed) {
645
+          win();
646
+        }
645 647
       }
646 648
 
647 649
       // Incrementa la barra de progreso
648
-      if (line_completed) {resize_bar(bar_resize);}
650
+      if (line_completed) {
651
+        resize_bar(bar_resize);
652
+      }
649 653
 
650 654
       // Muestra la nueva línea
651 655
       scrollTo(foo_game, foo_game.scrollHeight, 500);
652 656
 
653 657
       // Corre función cuando se completa la línea
654
-      if (line_completed) {exec_fn(on_line_completed);}
658
+      if (line_completed) {
659
+        exec_fn(on_line_completed);
660
+      }
655 661
     }
656 662
   }
657 663
 
658 664
   // Analiza todo lo relativo a las palabras
659
-  function compute_words (line_text, line_text_correct) {
660
-    var string_w  = game_opt.type + '_words_' + game_opt.lang,
661
-        sav_words = localStorage.getItem(string_w) != null ?
662
-                    JSON.parse(localStorage.getItem(string_w)) :
663
-                    { total: game_opt.data.words.length,
664
-                      current: 0,
665
-                      words: []
666
-                    },
667
-        current_w = line_text.replace(/[^(\s|A-zÀ-ÿ|\-)]/, '')
668
-                             .split(/\s+/).clear(),
669
-        correct_w = line_text_correct.replace(/[^(\s|A-zÀ-ÿ|\-)]/, '')
670
-                                     .split(/\s+/).clear();
665
+  function compute_words(line_text, line_text_correct) {
666
+    var string_w = game_opt.type + '_words_' + game_opt.lang,
667
+        sav_words = localStorage.getItem(string_w) != null ? JSON.parse(localStorage.getItem(string_w)) : {total: game_opt.data.words.length, current: 0, words: []},
668
+        current_w = line_text.replace(/[^(\s|A-zÀ-ÿ|\-)]/, '').split(/\s+/).clear(),
669
+        correct_w = line_text_correct.replace(/[^(\s|A-zÀ-ÿ|\-)]/, '').split(/\s+/).clear();
671 670
 
672 671
     // Añade la palabra al guardado local y a 'foo.data'
673
-    function add_word (w) {
672
+    function add_word(w) {
674 673
       w = w.capitalize();
675 674
 
676 675
       // Si la palabra no está en el conjunto
677 676
       if (sav_words.words.indexOf(w) == -1) {
678
-        sav_words.words   = sav_words.words.concat(w);
677
+        sav_words.words = sav_words.words.concat(w);
679 678
         sav_words.current = sav_words.words.length;
680 679
 
681 680
         // Se fija variable
... ...
@@ -699,18 +717,18 @@ var foo = (function() {
699 699
         // Guarda la palabra si tiene separación silábica
700 700
         if (correct_w[i].charAt(correct_w[i].length - 1) == '-') {
701 701
           localStorage.setItem('incomplete_word', correct_w[i]);
702
-        // Se completa una palabra si estaba separada
702
+          // Se completa una palabra si estaba separada
703 703
         } else if (
704
-          localStorage.getItem('incomplete_word') != null   &&
704
+          localStorage.getItem('incomplete_word') != null &&
705 705
           localStorage.getItem('incomplete_word') != 'null' &&
706 706
           localStorage.getItem('incomplete_word') != '') {
707
-            word = (localStorage.getItem('incomplete_word') +
708
-                    correct_w[i]).replace('-', '');
709
-            localStorage.removeItem('incomplete_word');
710
-        // Palabra no interrumpida por separación silábica
707
+          word = (localStorage.getItem('incomplete_word') +
708
+            correct_w[i]).replace('-', '');
709
+          localStorage.removeItem('incomplete_word');
710
+          // Palabra no interrumpida por separación silábica
711 711
         } else if (
712
-            localStorage.getItem('incomplete_word') != 'null') {
713
-              word = correct_w[i];
712
+          localStorage.getItem('incomplete_word') != 'null') {
713
+          word = correct_w[i];
714 714
         }
715 715
 
716 716
         // Resetea
... ...
@@ -719,26 +737,29 @@ var foo = (function() {
719 719
         }
720 720
 
721 721
         // Añade la palabra
722
-        if (word != '') {add_word(word);}
722
+        if (word != '') {
723
+          add_word(word);
724
+        }
723 725
 
724
-      // Si no es correcta, limpia la palabra guardada
726
+        // Si no es correcta, limpia la palabra guardada
725 727
       } else {
726 728
         /* Cuando era una palabra con separación silábica se marca
727 729
            nulo para detectarla y rechazar el resto de la palabra */
728 730
         if (correct_w[i].charAt(correct_w[i].length - 1) == '-') {
729 731
           localStorage.setItem('incomplete_word', null);
730
-        // Resetea
731
-        } else {localStorage.removeItem('incomplete_word');}
732
+          // Resetea
733
+        } else {
734
+          localStorage.removeItem('incomplete_word');
735
+        }
732 736
       }
733 737
     }
734 738
   }
735 739
 
736 740
   // Analiza si hay nuevos récords
737
-  function highest_scores () {
738
-    var hig_score   = localStorage.getItem(game_opt.type +
739
-                      '_highest_scores_' + game_opt.lang),
740
-        new_score   = foo.data.score,
741
-        new_words   = game_opt.new_words;
741
+  function highest_scores() {
742
+    var hig_score = localStorage.getItem(game_opt.type + '_highest_scores_' + game_opt.lang),
743
+        new_score = foo.data.score,
744
+        new_words = game_opt.new_words;
742 745
 
743 746
     // Con esta manera se evitan falsos positivos
744 747
     if (typeof new_words !== 'undefined') {
... ...
@@ -769,22 +790,22 @@ var foo = (function() {
769 769
       }
770 770
 
771 771
       // Guarda los récords
772
-      localStorage.setItem(game_opt.type      +
773
-                           '_highest_scores_' +
774
-                           game_opt.lang, JSON.stringify(hig_score));
772
+      localStorage.setItem(game_opt.type +
773
+        '_highest_scores_' +
774
+        game_opt.lang, JSON.stringify(hig_score));
775 775
     }
776 776
   }
777 777
 
778 778
   // Cuando se gana el juego
779
-  function win () {
779
+  function win() {
780 780
     // Si se reinicia un juego que ya está completo
781 781
     if (foo.data.letter == null) {
782
-      foo.data.active   = false;
782
+      foo.data.active = false;
783 783
       foo.data.finished = true;
784 784
 
785 785
       // Detiene el temporizador
786 786
       clearInterval(game_timer);
787
-    // Cuando se gana la primera vez
787
+      // Cuando se gana la primera vez
788 788
     } else {
789 789
       var additional_score = parseInt(foo.data.time / 4);
790 790
 
... ...
@@ -799,7 +820,7 @@ var foo = (function() {
799 799
       // En el modo historia se restan puntos relativos al tiempo
800 800
       if (game_opt.type == 'story') {
801 801
         new_score(-Math.abs(additional_score));
802
-      // En el modo arcade se suman puntos relativos al tiempo
802
+        // En el modo arcade se suman puntos relativos al tiempo
803 803
       } else {
804 804
         new_score(additional_score);
805 805
       }
... ...
@@ -823,143 +844,143 @@ var foo = (function() {
823 823
   }
824 824
 
825 825
   // Cuando se pierde el juego
826
-  function lose () {
826
+  function lose() {
827 827
     foo.disable();
828 828
 
829 829
     // Corre función cuando se completa el juego insatisfactoriamente
830 830
     exec_fn(game_opt.on_lose);
831 831
 
832
-    foo.data.active   = false;
832
+    foo.data.active = false;
833 833
     foo.data.finished = true;
834 834
   }
835 835
 
836 836
   return {
837 837
     // Permite acceso a datos del juego
838
-    data : {
839
-      type            : null,
840
-      active          : null,
841
-      finished        : null,
842
-      time            : null,
843
-      score           : null,
844
-      past_score      : null,
845
-      line            : null,
846
-      line_correct    : null,
847
-      lines_correct   : null,
848
-      lines_incorrect : null,
849
-      letter          : null,
850
-      new_words       : []
838
+    data: {
839
+      type: null,
840
+      active: null,
841
+      finished: null,
842
+      time: null,
843
+      score: null,
844
+      past_score: null,
845
+      line: null,
846
+      line_correct: null,
847
+      lines_correct: null,
848
+      lines_incorrect: null,
849
+      letter: null,
850
+      new_words: []
851 851
     },
852 852
 
853 853
     // Crea el juego
854
-    create : function (opt) {
855
-      opt.type                    =
856
-        opt.type                  || null;
857
-      opt.url                     =
858
-        opt.url                   || null;
859
-      opt.lang                    =
860
-        opt.lang                  || 'es';
861
-      opt.size                    =
862
-        opt.size                  || [7, 13];
863
-      opt.margin                  =
864
-        opt.margin                || [2, 1, 1, 1];
865
-      opt.border                  =
866
-        opt.border                || [0,0];
867
-      opt.score_position          =
868
-        opt.score_position        || 2;
869
-      opt.timer_position          =
870
-        opt.timer_position        || 0;
871
-      opt.top                     =
872
-        opt.top                   || 10;
873
-      opt.score_label             =
874
-        opt.score_label           || 'Puntos';
875
-      opt.timer_label             =
876
-        opt.timer_label           || 'Tiempo';
877
-      opt.border_style            =
878
-        opt.border_style          || 'solid';
879
-      opt.border_color            =
880
-        opt.border_color          || 'black';
881
-      opt.game_fontSize           =
882
-        opt.game_fontSize         || '1em';
883
-      opt.game_fontFamily         =
884
-        opt.game_fontFamily       || 'Impact, Charcoal, sans-serif';
885
-      opt.labels_fontSize         =
886
-        opt.labels_fontSize       || '.75em';
887
-      opt.labels_fontFamily       =
888
-        opt.labels_fontFamily     || 'Impact, Charcoal, sans-serif';
889
-      opt.totals_fontSize         =
890
-        opt.totals_fontSize       || '1.5em';
891
-      opt.totals_fontFamily       =
892
-        opt.totals_fontFamily     || 'Impact, Charcoal, sans-serif';
893
-      opt.lt_fontSize             =
894
-        opt.lt_fontSize           || '1em';
895
-      opt.lt_chance_fontSize      =
896
-        opt.lt_chance_fontSize    || '.5em';
897
-      opt.lt_bkcolor_correct      =
898
-        opt.lt_bkcolor_correct    || 'green';
899
-      opt.lt_bkcolor_incorrect    =
900
-        opt.lt_bkcolor_incorrect  || 'red';
901
-      opt.lt_bkcolor_enable       =
902
-        opt.lt_bkcolor_enable     || 'white';
903
-      opt.lt_bkcolor_disable      =
904
-        opt.lt_bkcolor_disable    || '#ddd';
905
-      opt.bar_style               =
906
-        opt.bar_style             || '3px solid #ccc';
907
-      opt.on_init                 =
908
-        opt.on_init               || '';
909
-      opt.on_finish               =
910
-        opt.on_finish             || '';
911
-      opt.on_win                  =
912
-        opt.on_win                || '';
913
-      opt.on_lose                 =
914
-        opt.on_lose               || '';
915
-      opt.on_error                =
916
-        opt.on_error              || '';
917
-      opt.on_new_time             =
918
-        opt.on_new_time           || '';
919
-      opt.on_new_score            =
920
-        opt.on_new_score          || '';
921
-      opt.on_new_word             =
922
-        opt.on_new_word           || '';
923
-      opt.on_new_record           =
924
-        opt.on_new_record         || '';
925
-      opt.ar_chances              =
926
-        opt.ar_chances            || 3;
927
-      opt.ar_min_answers          =
928
-        opt.ar_min_answers        || 2;
929
-      opt.ar_max_answers          =
930
-        opt.ar_max_answers        || 3;
931
-      opt.ar_max_answers_total    =
932
-        opt.ar_max_answers_total  || 5;
933
-      opt.ar_bomb_or_bonus        =
934
-        opt.ar_bomb_or_bonus      || 20;
935
-      opt.ar_random_first_letter  =
936
-        opt.ar_random_first_letter|| 3;
937
-      opt.ar_length               =
938
-        opt.ar_length             || 10;
939
-      opt.ar_on_ten_seconds       =
940
-        opt.ar_on_ten_seconds     || '';
941
-      opt.ar_on_line_completed    =
942
-        opt.ar_on_line_completed  || '';
943
-      opt.ar_on_line_correct      =
944
-        opt.ar_on_line_correct    || '';
945
-      opt.ar_on_line_incorrect    =
946
-        opt.ar_on_line_incorrect  || '';
947
-      opt.ar_on_first_change      =
948
-        opt.ar_on_first_change    || '';
949
-      opt.ar_on_change            =
950
-        opt.ar_on_change          || '';
951
-      opt.ar_on_loop              =
952
-        opt.ar_on_loop            || '';
953
-      opt.ar_on_bomb              =
954
-        opt.ar_on_bomb            || '';
955
-      opt.ar_on_bonus             =
956
-        opt.ar_on_bonus           || '';
854
+    create: function(opt) {
855
+      opt.type =
856
+        opt.type || null;
857
+      opt.url =
858
+        opt.url || null;
859
+      opt.lang =
860
+        opt.lang || 'es';
861
+      opt.size =
862
+        opt.size || [7, 13];
863
+      opt.margin =
864
+        opt.margin || [2, 1, 1, 1];
865
+      opt.border =
866
+        opt.border || [0, 0];
867
+      opt.score_position =
868
+        opt.score_position || 2;
869
+      opt.timer_position =
870
+        opt.timer_position || 0;
871
+      opt.top =
872
+        opt.top || 10;
873
+      opt.score_label =
874
+        opt.score_label || 'Puntos';
875
+      opt.timer_label =
876
+        opt.timer_label || 'Tiempo';
877
+      opt.border_style =
878
+        opt.border_style || 'solid';
879
+      opt.border_color =
880
+        opt.border_color || 'black';
881
+      opt.game_fontSize =
882
+        opt.game_fontSize || '1em';
883
+      opt.game_fontFamily =
884
+        opt.game_fontFamily || 'Impact, Charcoal, sans-serif';
885
+      opt.labels_fontSize =
886
+        opt.labels_fontSize || '.75em';
887
+      opt.labels_fontFamily =
888
+        opt.labels_fontFamily || 'Impact, Charcoal, sans-serif';
889
+      opt.totals_fontSize =
890
+        opt.totals_fontSize || '1.5em';
891
+      opt.totals_fontFamily =
892
+        opt.totals_fontFamily || 'Impact, Charcoal, sans-serif';
893
+      opt.lt_fontSize =
894
+        opt.lt_fontSize || '1em';
895
+      opt.lt_chance_fontSize =
896
+        opt.lt_chance_fontSize || '.5em';
897
+      opt.lt_bkcolor_correct =
898
+        opt.lt_bkcolor_correct || 'green';
899
+      opt.lt_bkcolor_incorrect =
900
+        opt.lt_bkcolor_incorrect || 'red';
901
+      opt.lt_bkcolor_enable =
902
+        opt.lt_bkcolor_enable || 'white';
903
+      opt.lt_bkcolor_disable =
904
+        opt.lt_bkcolor_disable || '#ddd';
905
+      opt.bar_style =
906
+        opt.bar_style || '3px solid #ccc';
907
+      opt.on_init =
908
+        opt.on_init || '';
909
+      opt.on_finish =
910
+        opt.on_finish || '';
911
+      opt.on_win =
912
+        opt.on_win || '';
913
+      opt.on_lose =
914
+        opt.on_lose || '';
915
+      opt.on_error =
916
+        opt.on_error || '';
917
+      opt.on_new_time =
918
+        opt.on_new_time || '';
919
+      opt.on_new_score =
920
+        opt.on_new_score || '';
921
+      opt.on_new_word =
922
+        opt.on_new_word || '';
923
+      opt.on_new_record =
924
+        opt.on_new_record || '';
925
+      opt.ar_chances =
926
+        opt.ar_chances || 3;
927
+      opt.ar_min_answers =
928
+        opt.ar_min_answers || 2;
929
+      opt.ar_max_answers =
930
+        opt.ar_max_answers || 3;
931
+      opt.ar_max_answers_total =
932
+        opt.ar_max_answers_total || 5;
933
+      opt.ar_bomb_or_bonus =
934
+        opt.ar_bomb_or_bonus || 20;
935
+      opt.ar_random_first_letter =
936
+        opt.ar_random_first_letter || 3;
937
+      opt.ar_length =
938
+        opt.ar_length || 10;
939
+      opt.ar_on_ten_seconds =
940
+        opt.ar_on_ten_seconds || '';
941
+      opt.ar_on_line_completed =
942
+        opt.ar_on_line_completed || '';
943
+      opt.ar_on_line_correct =
944
+        opt.ar_on_line_correct || '';
945
+      opt.ar_on_line_incorrect =
946
+        opt.ar_on_line_incorrect || '';
947
+      opt.ar_on_first_change =
948
+        opt.ar_on_first_change || '';
949
+      opt.ar_on_change =
950
+        opt.ar_on_change || '';
951
+      opt.ar_on_loop =
952
+        opt.ar_on_loop || '';
953
+      opt.ar_on_bomb =
954
+        opt.ar_on_bomb || '';
955
+      opt.ar_on_bonus =
956
+        opt.ar_on_bonus || '';
957 957
 
958 958
       // Corre función cuando está empezando a estar listo
959 959
       exec_fn(opt.on_init);
960 960
 
961 961
       // Obtiene la información del JSON
962
-      function request (url) {
962
+      function request(url) {
963 963
         var xhr = new XMLHttpRequest();
964 964
 
965 965
         // Inicio de la petición
... ...
@@ -968,7 +989,7 @@ var foo = (function() {
968 968
         xhr.send();
969 969
 
970 970
         // Cuando está cargando
971
-        xhr.onprogress = function (e) {
971
+        xhr.onprogress = function(e) {
972 972
           if (e.lengthComputable) {
973 973
             console.log(parseInt((e.loaded / e.total) * 100) + '%');
974 974
           } else {
... ...
@@ -983,7 +1004,7 @@ var foo = (function() {
983 983
 
984 984
             // Guardado local del juego
985 985
             localStorage.setItem(game_opt.type + '_' +
986
-                                 game_opt.lang, result);
986
+              game_opt.lang, result);
987 987
 
988 988
             // Manda a construir el juego
989 989
             build();
... ...
@@ -991,7 +1012,7 @@ var foo = (function() {
991 991
         };
992 992
 
993 993
         // Cuando hay error
994
-        xhr.onerror = function () {
994
+        xhr.onerror = function() {
995 995
           // Corre función cuando hay error
996 996
           exec_fn(game_opt.on_error);
997 997
           throw new Error(lang_load_error);
... ...
@@ -999,144 +1020,144 @@ var foo = (function() {
999 999
       }
1000 1000
 
1001 1001
       // Reelabora los datos de arcade para la estructura necesaria
1002
-      function relabel (result) {
1002
+      function relabel(result) {
1003 1003
         var new_result = {
1004
-          type    : result.type,
1005
-          score   : result.score,
1006
-          timer   : result.timer,
1007
-          words   : result.words,
1008
-          content : (game_opt.type == 'story' ? result.content : [])
1004
+          type: result.type,
1005
+          score: result.score,
1006
+          timer: result.timer,
1007
+          words: result.words,
1008
+          content: (game_opt.type == 'story' ? result.content : [])
1009 1009
         };
1010 1010
 
1011 1011
         // Obtiene las posibles respuestas
1012
-        function random_letters ( index_total, index_actual,
1013
-                                  correct, ignore) {
1014
-          var total       =
1015
-                Math.floor(Math.random()      *
1016
-                (game_opt.ar_max_answers      -
1017
-                game_opt.ar_min_answers + 1)) +
1018
-                game_opt.ar_min_answers,
1019
-              final_pick  = [],
1020
-              status      = 'disable',
1012
+        function random_letters(index_total, index_actual,
1013
+          correct, ignore) {
1014
+          var total = Math.floor(Math.random() * (game_opt.ar_max_answers - game_opt.ar_min_answers + 1)) + game_opt.ar_min_answers,
1015
+              final_pick = [],
1016
+              status = 'disable',
1021 1017
               reach;
1022 1018
 
1023 1019
           // Elige las letras incorrectas
1024
-          function random_select (c) {
1020
+          function random_select(c) {
1025 1021
 
1026 1022
             // Basada en Scrabble: http://alturl.com/4j8co
1027 1023
             // Español
1028
-            window.vowels_es = [
1029
-              'a','a','a','a','a',  // x12
1030
-              'a','a','a','á','á',
1031
-              'á','á',
1032
-              'e','e','e','e','e',  // x12
1033
-              'e','e','e','é','é',
1034
-              'é','é',
1035
-              'i','i','i','i','í',  // x6
1024
+            window.foo_vowels_es = [
1025
+              'a', 'a', 'a', 'a', 'a', // x12
1026
+              'a', 'a', 'a', 'á', 'á',
1027
+              'á', 'á',
1028
+              'e', 'e', 'e', 'e', 'e', // x12
1029
+              'e', 'e', 'e', 'é', 'é',
1030
+              'é', 'é',
1031
+              'i', 'i', 'i', 'i', 'í', // x6
1036 1032
               'í',
1037
-              'o','o','o','o','o',  // x9
1038
-              'o','ó','ó','ó',
1039
-              'u','u','u','ú','ü']; // x5
1040
-            window.consonants_es = [
1041
-              'b','b',              // x2
1042
-              'c','c','c','c',      // x4
1043
-              'd','d','d','d','d',  // x5
1044
-              'f',                  // x1
1045
-              'g','g',              // x2
1046
-              'h','h',              // x2
1047
-              'j',                  // x1
1048
-              'k',                  // x1
1049
-              'l','l','l','l',      // x4
1050
-              'm','m',              // x2
1051
-              'n','n','n','n','n',  // x5
1052
-              'ñ',                  // x1
1053
-              'p','p',              // x2
1054
-              'q',                  // x1
1055
-              'r','r','r','r','r',  // x5
1056
-              's','s','s','s','s',  // x6
1033
+              'o', 'o', 'o', 'o', 'o', // x9
1034
+              'o', 'ó', 'ó', 'ó',
1035
+              'u', 'u', 'u', 'ú', 'ü'
1036
+            ]; // x5
1037
+            window.foo_consonants_es = [
1038
+              'b', 'b', // x2
1039
+              'c', 'c', 'c', 'c', // x4
1040
+              'd', 'd', 'd', 'd', 'd', // x5
1041
+              'f', // x1
1042
+              'g', 'g', // x2
1043
+              'h', 'h', // x2
1044
+              'j', // x1
1045
+              'k', // x1
1046
+              'l', 'l', 'l', 'l', // x4
1047
+              'm', 'm', // x2
1048
+              'n', 'n', 'n', 'n', 'n', // x5
1049
+              'ñ', // x1
1050
+              'p', 'p', // x2
1051
+              'q', // x1
1052
+              'r', 'r', 'r', 'r', 'r', // x5
1053
+              's', 's', 's', 's', 's', // x6
1057 1054
               's',
1058
-              't','t','t','t',      // x4
1059
-              'v','w','x','y','z']; // x1
1060
-            window.punctuation_es = [
1061
-              '.','.','.','.','.',
1062
-              ',',',',',',',',',',
1063
-              ';',';',';',':',':',
1064
-              ':','¡','¡','¡','¡',
1065
-              '!','!','!','!','¿',
1066
-              '¿','¿','¿','?','?',
1067
-              '?','?','(','(','(',
1068
-              ')',')',')','«','»',
1069
-              '“','”','-','[',']'];
1055
+              't', 't', 't', 't', // x4
1056
+              'v', 'w', 'x', 'y', 'z'
1057
+            ]; // x1
1058
+            window.foo_punctuation_es = [
1059
+              '.', '.', '.', '.', '.',
1060
+              ',', ',', ',', ',', ',',
1061
+              ';', ';', ';', ':', ':',
1062
+              ':', '¡', '¡', '¡', '¡',
1063
+              '!', '!', '!', '!', '¿',
1064
+              '¿', '¿', '¿', '?', '?',
1065
+              '?', '?', '(', '(', '(',
1066
+              ')', ')', ')', '«', '»',
1067
+              '“', '”', '-', '[', ']'
1068
+            ];
1070 1069
 
1071 1070
             // Inglés
1072
-            window.vowels_en = [
1073
-              'a','a','a','a','a',  // x9
1074
-              'a','a','a','a',
1075
-              'e','e','e','e','e',  // x12
1076
-              'e','e','e','e','e',
1077
-              'e','e',
1078
-              'i','i','i','i','i',  // x9
1079
-              'i','i','i','i',
1080
-              'o','o','o','o','o',  // x8
1081
-              'o','o','o',
1082
-              'u','u','u','u'];    // x4
1083
-            window.consonants_en = [
1084
-              'b','b',              // x2
1085
-              'c','c',              // x2
1086
-              'd','d','d','d',      // x4
1087
-              'f','f',              // x2
1088
-              'g','g','g',          // x3
1089
-              'h','h',              // x2
1090
-              'j',                  // x1
1091
-              'k',                  // x1
1092
-              'l','l','l','l',      // x4
1093
-              'm','m',              // x2
1094
-              'n','n','n','n','n',  // x6
1071
+            window.foo_vowels_en = [
1072
+              'a', 'a', 'a', 'a', 'a', // x9
1073
+              'a', 'a', 'a', 'a',
1074
+              'e', 'e', 'e', 'e', 'e', // x12
1075
+              'e', 'e', 'e', 'e', 'e',
1076
+              'e', 'e',
1077
+              'i', 'i', 'i', 'i', 'i', // x9
1078
+              'i', 'i', 'i', 'i',
1079
+              'o', 'o', 'o', 'o', 'o', // x8
1080
+              'o', 'o', 'o',
1081
+              'u', 'u', 'u', 'u'
1082
+            ]; // x4
1083
+            window.foo_consonants_en = [
1084
+              'b', 'b', // x2
1085
+              'c', 'c', // x2
1086
+              'd', 'd', 'd', 'd', // x4
1087
+              'f', 'f', // x2
1088
+              'g', 'g', 'g', // x3
1089
+              'h', 'h', // x2
1090
+              'j', // x1
1091
+              'k', // x1
1092
+              'l', 'l', 'l', 'l', // x4
1093
+              'm', 'm', // x2
1094
+              'n', 'n', 'n', 'n', 'n', // x6
1095 1095
               'n',
1096
-              'p','p',              // x2
1097
-              'q',                  // x1
1098
-              'r','r','r','r','r',  // x6
1096
+              'p', 'p', // x2
1097
+              'q', // x1
1098
+              'r', 'r', 'r', 'r', 'r', // x6
1099 1099
               'r',
1100
-              's','s','s','s',      // x4
1101
-              't','t','t','t','t',  // x6
1100
+              's', 's', 's', 's', // x4
1101
+              't', 't', 't', 't', 't', // x6
1102 1102
               't',
1103
-              'v','v',              // x2
1104
-              'w','w',              // x2
1105
-              'x',                  // x1
1106
-              'y','y',              // x2
1107
-              'z'];                 // x1
1108
-            window.punctuation_en = [
1109
-              '.','.','.','.','.',
1110
-              ',',',',',',',',',',
1111
-              ';',';',';',':',':',
1112
-              ':','’','’','’','’',
1113
-              '!','!','!','!','?',
1114
-              '?','?','?','(','(',
1115
-              '(',')',')',')','“',
1116
-              '”','-','[',']'];
1117
-
1118
-            var vowels      = window['vowels_'      + game_opt.lang],
1119
-                consonants  = window['consonants_'  + game_opt.lang],
1120
-                punctuation = window['punctuation_' + game_opt.lang];
1103
+              'v', 'v', // x2
1104
+              'w', 'w', // x2
1105
+              'x', // x1
1106
+              'y', 'y', // x2
1107
+              'z'
1108
+            ]; // x1
1109
+            window.foo_punctuation_en = [
1110
+              '.', '.', '.', '.', '.',
1111
+              ',', ',', ',', ',', ',',
1112
+              ';', ';', ';', ':', ':',
1113
+              ':', '’', '’', '’', '’',
1114
+              '!', '!', '!', '!', '?',
1115
+              '?', '?', '?', '(', '(',
1116
+              '(', ')', ')', ')', '“',
1117
+              '”', '-', '[', ']'
1118
+            ];
1119
+
1120
+            var vowels = window['foo_vowels_' + game_opt.lang],
1121
+                consonants = window['foo_consonants_' + game_opt.lang],
1122
+                punctuation = window['foo_punctuation_' + game_opt.lang];
1121 1123
 
1122 1124
             // Cuando aún no hay nada, se agrega la respuesta correcta
1123 1125
             if (final_pick.length == 0) {
1124 1126
               final_pick.push(c);
1125
-            // Elección de las letras
1127
+              // Elección de las letras
1126 1128
             } else {
1127
-              var accepted        = true,
1128
-                  candidate_type  =
1129
-                    Math.floor(Math.random()              *
1130
-                    (game_opt.ar_bomb_or_bonus - 0 + 1))  + 0,
1129
+              var accepted = true,
1130
+                  candidate_type = Math.floor(Math.random() * (game_opt.ar_bomb_or_bonus - 0 + 1)) + 0,
1131 1131
                   candidate;
1132 1132
 
1133 1133
               // Cero es bomba
1134 1134
               if (candidate_type == 0) {
1135 1135
                 candidate = 0;
1136
-              // Uno es bono
1136
+                // Uno es bono
1137 1137
               } else if (candidate_type == 1) {
1138 1138
                 candidate = 1;
1139
-              // El resto es un caracter
1139
+                // El resto es un caracter
1140 1140
               } else {
1141 1141
                 // Detecta si es vocal, consonante o puntuación
1142 1142
                 if (/\w/.test(c.transliterate())) {
... ...
@@ -1152,9 +1173,9 @@ var foo = (function() {
1152 1152
 
1153 1153
               // Indaga si está el candidato presente en el conjunto
1154 1154
               for (var k = 0; k < final_pick.length; k++) {
1155
-                if (candidate_type > 1      &&
1156
-                    candidate.toLowerCase() ==
1157
-                      ('' + final_pick[k]).toLowerCase()) {
1155
+                if (candidate_type > 1 &&
1156
+                  candidate.toLowerCase() ==
1157
+                  ('' + final_pick[k]).toLowerCase()) {
1158 1158
                   accepted = false;
1159 1159
                   break;
1160 1160
                 }
... ...
@@ -1165,7 +1186,7 @@ var foo = (function() {
1165 1165
               if (accepted) {
1166 1166
                 // Hace mayúscula si la respuesta correcta lo está
1167 1167
                 if (candidate_type > 1 &&
1168
-                    /[A-Z]/.test(c.transliterate())) {
1168
+                  /[A-Z]/.test(c.transliterate())) {
1169 1169
                   candidate = candidate.toUpperCase();
1170 1170
                 }
1171 1171
 
... ...
@@ -1177,7 +1198,7 @@ var foo = (function() {
1177 1177
           }
1178 1178
 
1179 1179
           // Revisa que el conjunto no empiece con una bomba o un bono
1180
-          function check_shuffle (array) {
1180
+          function check_shuffle(array) {
1181 1181
             if (typeof array[0] === 'number') {
1182 1182
               return check_shuffle(array.shuffle());
1183 1183
             } else {
... ...
@@ -1197,12 +1218,12 @@ var foo = (function() {
1197 1197
              la correcta */
1198 1198
           if (
1199 1199
             Math.floor(
1200
-            Math.random() *
1201
-            Math.floor(game_opt.ar_random_first_letter)) != 0 &&
1200
+              Math.random() *
1201
+              Math.floor(game_opt.ar_random_first_letter)) != 0 &&
1202 1202
             !ignore
1203 1203
           ) {
1204
-            final_pick  = check_shuffle(final_pick.shuffle());
1205
-            status      = 'enable';
1204
+            final_pick = check_shuffle(final_pick.shuffle());
1205
+            status = 'enable';
1206 1206
           }
1207 1207
 
1208 1208
           // Aumenta la cantidad de respuestas erróneas
... ...
@@ -1215,32 +1236,35 @@ var foo = (function() {
1215 1215
             reach <= game_opt.ar_max_answers_total
1216 1216
           ) {
1217 1217
             // Aumenta el máximo posible
1218
-            game_opt.ar_max_answers   = reach;
1218
+            game_opt.ar_max_answers = reach;
1219 1219
             // Aumenta el mínimo posible
1220
-            game_opt.ar_min_answers   = game_opt.ar_min_answers + 1;
1220
+            game_opt.ar_min_answers = game_opt.ar_min_answers + 1;
1221 1221
             // Aumenta la posibilidad de que salga bomba o bonus
1222 1222
             game_opt.ar_bomb_or_bonus = game_opt.ar_bomb_or_bonus - 1;
1223 1223
           }
1224 1224
 
1225
-          return {status: status, letters: final_pick};
1225
+          return {
1226
+            status: status,
1227
+            letters: final_pick
1228
+          };
1226 1229
         }
1227 1230
 
1228 1231
         // Se agregan líneas en blanco para que empiece en el fondo
1229 1232
         for (var i = 0; i < game_opt.size[1] - 1; i++) {
1230 1233
           if (game_opt.type != 'story') {
1231 1234
             new_result.content.push({
1232
-              visible           : true,
1233
-              on_line_completed : game_opt.ar_on_line_completed,
1234
-              on_line_correct   : game_opt.ar_on_line_correct,
1235
-              on_line_incorrect : game_opt.ar_on_line_incorrect
1235
+              visible: true,
1236
+              on_line_completed: game_opt.ar_on_line_completed,
1237
+              on_line_correct: game_opt.ar_on_line_correct,