Вход Регистрация
Файл: Script/themes/dolphin/js/jquery.timeago.js
Строк: 165
<?php
/**
 * Timeago is a jQuery plugin that makes it easy to support automatically
 * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
 *
 * @name timeago
 * @version 0.11.4
 * @requires jQuery v1.2.3+
 * @author Ryan McGeary
 * @license MIT License - http://www.opensource.org/licenses/mit-license.php
 *
 * For usage and examples, visit:
 * http://timeago.yarp.com/
 *
 * Copyright (c) 2008-2012, Ryan McGeary (ryan -[at]- mcgeary [*dot*] org)
 */
(function($) {
  $.
timeago = function(timestamp) {
    if (
timestamp instanceof Date) {
      return 
inWords(timestamp);
    } else if (
typeof timestamp === "string") {
      return 
inWords($.timeago.parse(timestamp));
    } else if (
typeof timestamp === "number") {
      return 
inWords(new Date(timestamp));
    } else {
      return 
inWords($.timeago.datetime(timestamp));
    }
  };
  var 
$t = $.timeago;

  $.
extend($.timeago, {
    
settings: {
      
refreshMillis60000,
      
allowFuturefalse,
      
strings: {
        
prefixAgonull,
        
prefixFromNownull,
        
suffixAgo"ago",
        
suffixFromNow"from now",
        
seconds"seconds",
        
minute"a minute",
        
minutes"%d minutes",
        
hour"an hour",
        
hours"%d hours",
        
day"a day",
        
days"%d days",
        
month"a month",
        
months"%d months",
        
year"a year",
        
years"%d years",
        
wordSeparator" ",
        
numbers: []
      }
    },
    
inWords: function(distanceMillis) {
      var 
$l this.settings.strings;
      var 
prefix $l.prefixAgo;
      var 
suffix $l.suffixAgo;
      if (
this.settings.allowFuture) {
        if (
distanceMillis 0) {
          
prefix $l.prefixFromNow;
          
suffix $l.suffixFromNow;
        }
      }

      var 
seconds Math.abs(distanceMillis) / 1000;
      var 
minutes seconds 60;
      var 
hours minutes 60;
      var 
days hours 24;
      var 
years days 365;

      function 
substitute(stringOrFunctionnumber) {
        var 
string = $.isFunction(stringOrFunction) ? stringOrFunction(numberdistanceMillis) : stringOrFunction;
        var 
value = ($l.numbers && $l.numbers[number]) || number;
        return 
string.replace(/%d/ivalue);
      }

      var 
words seconds 45 && substitute($l.secondsMath.round(seconds)) ||
        
seconds 90 && substitute($l.minute1) ||
        
minutes 45 && substitute($l.minutesMath.round(minutes)) ||
        
minutes 90 && substitute($l.hour1) ||
        
hours 24 && substitute($l.hoursMath.round(hours)) ||
        
hours 42 && substitute($l.day1) ||
        
days 30 && substitute($l.daysMath.round(days)) ||
        
days 45 && substitute($l.month1) ||
        
days 365 && substitute($l.monthsMath.round(days 30)) ||
        
years 1.5 && substitute($l.year1) ||
        
substitute($l.yearsMath.round(years));

      var 
separator $l.wordSeparator === undefined ?  " " $l.wordSeparator;
      return $.
trim([prefixwordssuffix].join(separator));
    },
    
parse: function(iso8601) {
      var 
= $.trim(iso8601);
      
s.replace(/.d+/,""); // remove milliseconds
      
s.replace(/-/,"/").replace(/-/,"/");
      
s.replace(/T/," ").replace(/Z/," UTC");
      
s.replace(/([+-]dd):?(dd)/," $1$2"); // -04:00 -> -0400
      
return new Date(s);
    },
    
datetime: function(elem) {
      var 
iso8601 $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
      return 
$t.parse(iso8601);
    },
    
isTime: function(elem) {
      
// jQuery's `is()` doesn't play well with HTML5 in IE
      
return $(elem).get(0).tagName.toLowerCase() === "time"// $(elem).is("time");
    
}
  });

  $.
fn.timeago = function() {
    var 
self this;
    
self.each(refresh);

    var 
$s $t.settings;
    if (
$s.refreshMillis 0) {
      
setInterval(function() { self.each(refresh); }, $s.refreshMillis);
    }
    return 
self;
  };

  function 
refresh() {
    var 
data prepareData(this);
    if (!
isNaN(data.datetime)) {
      $(
this).text(inWords(data.datetime));
    }
    return 
this;
  }

  function 
prepareData(element) {
    
element = $(element);
    if (!
element.data("timeago")) {
      
element.data("timeago", { datetime$t.datetime(element) });
      var 
text = $.trim(element.text());
      if (
text.length && !($t.isTime(element) && element.attr("title"))) {
        
element.attr("title"text);
      }
    }
    return 
element.data("timeago");
  }

  function 
inWords(date) {
    return 
$t.inWords(distance(date));
  }

  function 
distance(date) {
    return (new 
Date().getTime() - date.getTime());
  }

  
// fix for IE6 suckage
  
document.createElement("abbr");
  
document.createElement("time");
}(
jQuery));
?>
Онлайн: 1
Реклама