/* Firebug console wrapper */

$.logger = {
  info: function() { 
    if (window.console) { 
      args = Array.prototype.slice.call(arguments);
      console.info(args.shift(), args.length > 0 ? args : "");
    }
  },
  error: function() {
    if (window.console) { 
      args = Array.prototype.slice.call(arguments);
      console.error(args.shift(), args.length > 0 ? args : "");
    }
  },
  debug: function() {
    if (window.console) {
      args = Array.prototype.slice.call(arguments);
      console.debug(args.shift(), args.length > 0 ? args : "");
    }
  }
}

/* Misc */

$.util = {
  addUrlParam: function(url, value) {
    return url + (url.indexOf("?") == -1 ? "?" : "&") + value;
  }
}

/* GA Tracker */ 

$.tracker = {
  record: function() {
    if (window.pageTracker == undefined) { return; }
    args = Array.prototype.slice.call(arguments);
    var category = args.shift();
    var action = args.shift();
    var label = args.shift();
    var value = args.shift();
    var url = "/event" + "/" + category + "/" + action;
    url = $.tracker.appendPath(url, label);
    url = $.tracker.appendPath(url, value);
    pageTracker._trackEvent(category, action, label, value);
    pageTracker._trackPageview(url);
  },
  appendPath: function(path, value) {
    if (value) {
      // strip leading slashes out
      return (value.toString().indexOf("/") == 0) ? (path + value) : (path + "/" + value);
    }
    return path;
  }
}

/* Donation Ticker Improved */

$.fn.donationTicker2 = function(options) {
  return this.each(function() {
    var settings = {
      target: "span#amount",
      decimalPlaces: 7,
      rate: 0.0,
      amount: 0.0,
      refresh: 1000
    };

    $.extend(settings, options);

    if (settings.rate == 0) { return; }

    var parentElement = this;
    var timer = setInterval(function() {
      settings.amount += settings.rate;
      $(parentElement).find(settings.target).text("$" + settings.amount.toFixed(settings.decimalPlaces));
    }, 1000);
    return this;

    // listen for refresh notifications
    $(parentElement).bind("refresh.donationTicker", function(e, amount, rate) {
      settings.amount = amount;
      settings.rate = rate;
    });
  });
}
