/**
 * Applegreen Charity Ticker jQuery plugin
 *
 * @package    applegreen
 * @subpackage ticker
 * @author     Morgan Pyne <mp@morganpyne.com>
 * @version    SVN: $Id$
 */

(function(A){A.fn.charityTicker=function(E){if(this.length>1){this.each(function(){A(this).charityTicker(E)});return this}var C={cents:0,rate:1,displayDigits:10,digitClass:"ticker-digit",digitHeight:18,animationDelay:800,tickInterval:1000,updateInterval:3600000,updateURL:"/ticker-update"};var E=A.extend({},C,E);var G=function(K){var J="";for(i=0;i<K.length;i++){J+='<div class="'+E.digitClass+'">'+K.charAt(i)+"</div>"}return J};var B=function(M,K){var L="_,.0123456789";var J=0;M.children("."+E.digitClass).each(function(){var N,O;var P=A(this);N=L.indexOf(P.html());O=L.indexOf(K.charAt(J));if(O<N){O+=L.length}if(O!=N){P.css({backgroundPosition:"0px -"+((N*E.digitHeight))+"px"});P.html(K.charAt(J));P.animate({backgroundPosition:"0px -"+((O*E.digitHeight))+"px"},E.animationDelay)}J++})};var I=function(M){M+="";var L="";var J=M.length;for(var K=0;K<J;K++){if(K==2){L="."+L}else{if(K>4&&(K-2)%3==0){L=","+L}}L=M.charAt(J-K-1)+L}if(L.length==1){L="0"+L}if(L.length==2){L="0."+L}while(L.length<E.displayDigits){L="_"+L}return L};var F=function(L){var K,J;J=new Date();K=Math.floor(L.data("cents")+(L.data("rate")*(J.getTime()-L.data("startTime").getTime())/1000));B(L,I(K));setTimeout(function(){F(L)},E.tickInterval)};var H=function(J){A.getJSON(E.updateURL,function(K){J.data("cents",K.cents);J.data("rate",K.rate);J.data("startDate",new Date());D("New Updates -  Cents: "+K.cents+", rate: "+K.rate)});setTimeout(function(){H(J)},E.updateInterval)};var D=function(J){if(window.console&&window.console.log){window.console.log(J)}};this.initialize=function(){var K=A(this);var J=new Array(E.displayDigits+1).join("_");K.html(G(J,E.digitClass));K.data("startTime",new Date());K.data("cents",E.cents);K.data("rate",E.rate);B(K,I(E.cents));setTimeout(function(){F(K)},E.tickInterval);setTimeout(function(){H(K)},E.updateInterval);return this};return this.initialize()}})(jQuery);
