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