/* 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(A) { A.fn.jFade = function(N) { var B = A.extend( {}, A.fn.jFade.defaults, N); var F, C, K, E, H, J, I, M, D; var G = this; var L = function() { var Q = G; B.steps = B.steps || 20; B.duration = B.duration || 20; clearInterval($(Q).data('jFadeTimer')); C = O(B.end); K = C[0]; E = C[1]; H = C[2]; if (!Q.r) { F = O(B.start); r = F[0]; g = F[1]; b = F[2]; Q.r = r; Q.g = g; Q.b = b } J = Math.round(Math.abs(Q.r - K) / B.steps); I = Math.round(Math.abs(Q.g - E) / B.steps); M = Math.round(Math.abs(Q.b - H) / B.steps); if (J == 0) { J = 1 } if (I == 0) { I = 1 } if (M == 0) { M = 1 } Q.step = 1; Q.timer = setInterval(function() { P(Q, B.property, B.steps, K, E, H, J, I, M) }, B.duration); $(Q).data('jFadeTimer', Q.timer); function P(V, d, a, e, U, X, c, Y, f) { var T = V; var S; if (T.step <= a) { var R = T.r; var W = T.g; var Z = T.b; if (R >= e) { R = R - c } else { R = parseInt(R) + parseInt(c) } if (W >= U) { W = W - Y } else { W = parseInt(W) + parseInt(Y) } if (Z >= X) { Z = Z - f } else { Z = parseInt(Z) + parseInt(f) } S = "rgb(" + R + "," + W + "," + Z + ")"; A(V).css(d, S); T.r = R; T.g = W; T.b = Z; T.step = T.step + 1 } else { clearInterval(T.timer); S = "rgb(" + e + "," + U + "," + X + ")"; A(V).css(d, S) } } function O(R) { var S = [ parseInt(R.substring(0, 2), 16), parseInt(R.substring(2, 4), 16), parseInt(R.substring(4, 6), 16) ]; return S } }; if (B.trigger == "load") { L() } else { A(this).bind(B.trigger, function() { G = this; L() }) } return this }; A.fn.jFade.defaults = { trigger : "load", property : "background", start : "FFFFFF", end : "000000", steps : 5, duration : 30 } })(jQuery);