/*
 * jOla jQuery plugin - Rel. 0.1
 *
 * Copyright (c) 2010 Giovanni Casassa (senamion.com - senamion.it)
 *
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://www.senamion.com
 *
 */


(function($)
{
	$.fn.jOla = function(o) {

		o = $.extend({
			speed: 40,
			expansion: 5,
			multiplier: 1.2,
			rStart: 0,
			gStart: 0,
			bStart: 255,
			rStep: 8,
			gStep: 0,
			bStep: -32,
			position: 0,
			color: true,
			size: true,
			bottomadd: 0,
			bottomstart: 0
		}, o);

		return this.each(function(i) {
			var el = $(this);
			var	uuid = (el.attr('id') || el.attr('class') || 'internalName') + '_jlb';
			var currentFontSizeNum = parseInt(el.css("font-size"));
			var currentFontColor = el.css("color");
			var myText = "";
			var aStr = el.text().split("");
			var	position = o.position;

			for (var len in aStr)
				myText += "<span style='position: relative' id='jOla_" + uuid + "_" + len + "'>" + aStr[len] + "</span>";
			el.html(myText);

			var t = setInterval(function() {
				var	newFontSize = currentFontSizeNum;
				var	newBottomVal = o.bottomstart;

				if (o.size) {
					$("#jOla_" + uuid + "_" + position).css({fontSize: currentFontSizeNum});
					for (i=0;i<=o.expansion;i++) {
						newFontSize *= o.multiplier;
						$("#jOla_" + uuid + "_" + (position+1+i) + ", #jOla_" + uuid + "_" + (position+1+(o.expansion*2)-i))
							.css({fontSize: newFontSize});
					}
				}
				if (o.color) {
					$("#jOla_" + uuid + "_" + position).css({"color": currentFontColor});
					for (i=0;i<=o.expansion;i++) {
						$("#jOla_" + uuid + "_" + (position+1+i) + ", #jOla_" + uuid + "_" + (position+1+(o.expansion*2)-i))
							.css({"color": "rgb("+(o.rStart+(o.rStep*i))+","+(o.gStart+(o.gStep*i))+","+(o.bStart+(o.bStep*i))+")"});
					}
				}

				if (o.bottomadd != 0 && o.bottomstart != 0) {
					$("#jOla_" + uuid + "_" + position).css({"top": "0"});
					for (i=0;i<=o.expansion;i++) {
						newBottomVal += o.bottomadd;
						$("#jOla_" + uuid + "_" + (position+1+i) + ", #jOla_" + uuid + "_" + (position+1+(o.expansion*2)-i))
							.css({"top": newBottomVal});
					}
				}
				position ++;
				
				if (position > len)
					clearInterval(t);
			}, o.speed);
		});
	};
})(jQuery);
