/*!
 * Helpers compartidos por todas las escenas.
 * Expuesto en window.SPM_Util.
 */
(function () {
  'use strict';

  function splitText(str) {
    // Devuelve HTML con cada palabra/letra envuelta para animar.
    return str.split(' ').map(function (word) {
      var chars = word.split('').map(function (c) {
        return '<span class="char">' + (c === ' ' ? '&nbsp;' : escapeHtml(c)) + '</span>';
      }).join('');
      return '<span class="word">' + chars + '</span>';
    }).join('<span class="char">&nbsp;</span>');
  }

  function escapeHtml(s) {
    return s.replace(/[&<>"']/g, function (c) {
      return ({ '&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;' })[c];
    });
  }

  function injectStyles(root, css, id) {
    if (root.getElementById(id)) return;
    var s = document.createElement('style');
    s.id = id; s.textContent = css;
    root.appendChild(s);
  }

  function clear(el) { while (el.firstChild) el.removeChild(el.firstChild); }

  window.SPM_Util = {
    splitText: splitText,
    escapeHtml: escapeHtml,
    injectStyles: injectStyles,
    clear: clear
  };
})();
