/*
 * jQuery pretty date plug-in 1.0.0
 * 
 * http://bassistance.de/jquery-plugins/jquery-plugin-prettydate/
 * 
 * Based on John Resig's prettyDate http://ejohn.org/blog/javascript-pretty-date
 *
 * Copyright (c) 2009 Jörn Zaefferer
 *
 * $Id: jquery.validate.js 6096 2009-01-12 14:12:04Z joern.zaefferer $
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */

(function() {
  $.prettyDate = {	
    template: function(source, params) {
      if ( arguments.length == 1 )
        return function() {
          var args = $.makeArray(arguments);
          args.unshift(source);
          return $.prettyDate.template.apply( this, args );
        };
      if ( arguments.length > 2 && params.constructor != Array  ) {
        params = $.makeArray(arguments).slice(1);
      }
      if ( params.constructor != Array ) {
        params = [ params ];
      }
      $.each(params, function(i, n) {
        source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
      });
      return source;
    },
	
    now: function() {
      return new Date();
    },
	
    // Takes an ISO time and returns a string representing how
    // long ago the date represents.
    format: function(time) {
      var event = new Date(parseInt(time));
      var event_time = Highcharts.dateFormat('%H:%M', event.getTime());
      var event_date = Highcharts.dateFormat('%e. %b %Y', event.getTime());
      
      var diff = parseInt (($.prettyDate.now().getTime() - event.getTime()) / 1000);
      var today = parseInt(($.prettyDate.now().getTime() / 1000)%(24*60*60));
      var yesterday = parseInt ((($.prettyDate.now().getTime() / 1000)%(24*60*60)) + (24*60*60));

      var messages = $.prettyDate.messages;
      return (
        diff < (2*60*60) && messages.minutes(Math.floor( diff/60 )) ||
        diff < today && messages.today(event_time) ||
        diff < yesterday && messages.yesterday(event_time) ||
        event_date
      );
    }	
  };

  $.prettyDate.messages = {
    minutes: $.prettyDate.template("vor {0} Min"),
    today: $.prettyDate.template("heute, {0}"),
    yesterday: $.prettyDate.template("gestern, {0}")
  };
	
  $.fn.prettyDate = function(options) {
    options = $.extend({
      value: function() {
        return $(this).attr('rel');
      },
      interval: 60 * 1000
    }, options);
    var elements = this;
    function format() {
      elements.each(function() {
        var date = $.prettyDate.format(options.value.apply(this));
        if ( date && $(this).text() != date )
          $(this).text( date );
      });
    }
    format();
    if (options.interval)
      setInterval(format, options.interval);
    return this;
  };

})();
