;(function($) {

  $.fn.fancyletter = function(options) {

    return this.each(function() {
      var $this = $(this);
      var opts = $.extend({}, $.fn.fancyletter.defaults, options || {}, $.metadata ? $this.metadata() : $.meta ? $this.data() : {});
      var node = this;
      while (node.childNodes.length) {
    	  node = node.firstChild;
      }
      var text = node.nodeValue;
      var firstLetter = text.slice(0,1);
      var re = new RegExp(opts.characters);
      if (re.test(firstLetter)) {
      	node.nodeValue = text.slice(1);
    	  var $span = $(['<span class="',
    	    opts.commonClass,
    	    ' ',
    	    opts.ltrClassPrefix,
          firstLetter.toLowerCase(),
          '">',
            firstLetter,
          '</span>']
    		.join('')
    		).prependTo(this);
        if (opts.bgImgPath !== null)
         $span.css('backgroundImage', 'url(' + opts.bgImgPath + firstLetter.toLowerCase() + opts.bgImgExt + ')');
        }
    });
  };  

  $.fn.fancyletter.defaults = {
    commonClass:      'fancy-letter', 
    ltrClassPrefix:   'ltr-',
    characters:       '[a-zA-Z]',
    bgImgPath:        null,
    bgImgExt:         null
  };

})(jQuery);
