/* 
 * random examples #1 www.drkns.net
 * gradient-text.js
 */	

var Gr = Class.create({
	e: [],
	sr: 0, sg: 0, sb: 0, er: 0, eg: 0, eb: 0,
	initialize: function(sc, ec) {
		this.sc(sc, ec);
	},
	el: function(e) {
		this.e.push($(e));
	},
	cl: function(st) {
		$$(st).each(function(e) { 
			this.el(e); 
		}.bind(this));
	},
	sc: function(sc, ec) {
		this.sr = sc >> 16;
		this.sg = (sc & 0x00FF00) >> 8; 
		this.sb = sc & 0x0000FF; 
		this.er = ec >> 16;
		this.eg = (ec & 0x00FF00) >> 8; 
		this.eb = ec & 0x0000FF;
	},
	r: function() {
		var el;
		this.e.each(function(n) {
			el = n.innerHTML.strip();
			n.innerHTML = "";
			var ln = el.length,
				ir = ((this.er-this.sr)/ln).floor(),
				ig = ((this.eg-this.sg)/ln).floor(),
				ib = ((this.eb-this.sb)/ln).floor(),
				r = this.sr,
			 	g = this.sg,
			 	b = this.sb;
			el.toArray().each(function(l) {
				r = (r + ir >= 0x00 && r + ir <= 0xFF) ? r += ir : r;
				g = (g + ig >= 0x00 && g + ig <= 0xFF) ? g += ig : g;
				b = (b + ib >= 0x00 && b + ib <= 0xFF) ? b += ib : b;
				n.insert(new Element('span', {
					style: 'color: #' + [r, g, b].invoke('toColorPart').join('')
				}).update(l));
			});
		}.bind(this));
		this.e.clear();
	}
});

