function sparkleText(selector) {
  function prepareElm(elm) {
    var jElm = jQuery(elm),sp;
    var txta = jElm.text().split('');
    jElm.empty();
    for (var i=0; i<txta.length; i++) 
      if (sp = document.createElement('span')) {
        sp.appendChild(document.createTextNode(txta[i])); 
        elm.appendChild(sp);
      }
  }
  function randomColor() {
    function n() {return Math.ceil((Math.random()*1000) % 256);}
    return 'rgb('+n()+','+n()+','+n()+')';
  }
  function animate(elm,i) {
    var spans = jQuery('span',elm).css('color','');
    function animElm(sp) {sp.css('color',randomColor())}
    if (typeof i == 'number') animElm(spans.slice(i,i+1));
    else {
      for (var i=0; i<spans.length; i++)
        setTimeout((function(n) {return function() {animate(elm,n)}})(i),i*110);
      setTimeout(function(){spans.css('color','')},i*110);
    }               
  }

  jQuery(selector).each(function() {
    var elm = this;                                        
    prepareElm(elm);
    animate(elm);
    setInterval(function() {animate(elm)},12000);
  });
}

