typo.js
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:4k
源码类别:

Ajax

开发平台:

Others

  1. window._lang = window._lang || "default" ;
  2. window._l10s = window._l10s || { } ;
  3. window._l10s[_lang] = window._l10s[_lang] || { }
  4. function _(string_to_localize) {
  5.     var args = [ ] ;
  6.     var string_to_localize = arguments[0] ;
  7.     for(var i=1 ; i<arguments.length ; i++) {
  8.       args.push( arguments[i] ) ;
  9.     }
  10.     var translated = _l10s[_lang][string_to_localize] || string_to_localize
  11.     if ( typeof(translated)=='function' ) { return translated.apply(window,args) ; }
  12.     if ( typeof(translated)=='array' ) {
  13.       if (translated.length == 3) {
  14.         translated = translated[args[0]==0 ? 0 : (args[0]>1 ? 2 : 1)] ;
  15.       } else {
  16.         translated = translated[args[0]>1 ? 1 : 0] ;
  17.       }
  18.     }
  19.     return translated.interpolate(args) ;
  20. }
  21. function register_onload(func) {
  22.   Event.observe(window, 'load', func, false);
  23. }
  24. function show_dates_as_local_time() {
  25.     $$('span.typo_date').each(function(e){
  26.         var classname = e.className ;
  27.         var gmtdate = '' ;
  28.         res = classname.match( /gmttimestamp-(d+)/ ) ;
  29.         if (!res) {
  30.           gmtdate = e.title ;
  31.         } else {
  32.           gmtdate = new Date() ;
  33.           gmtdate.setTime( parseInt(res[1]) * 1000 )  ;
  34.         }      
  35.         e.update(get_local_time_for_date(gmtdate))
  36.     })
  37. }
  38. function get_local_time_for_date(time) {
  39.   if (typeof(time)=='date') {
  40.     system_date = time ;
  41.   } else { 
  42.     system_date = new Date(time);
  43.   }
  44.   user_date = new Date();
  45.   delta_minutes = Math.floor((user_date - system_date) / (60 * 1000));
  46.   if (Math.abs(delta_minutes) <= (8*7*24*60)) { // eight weeks... I'm lazy to count days for longer than that
  47.     distance = distance_of_time_in_words(delta_minutes);
  48.     if (delta_minutes < 0) {
  49.       return _("#{0} from now", distance) ;
  50.     } else {
  51.       return _("#{0} ago", distance) ;
  52.     }
  53.   } else {
  54.     return _('on #{0}', system_date.toLocaleDateString());
  55.   }
  56. }
  57. // a vague copy of rails' inbuilt function,
  58. // but a bit more friendly with the hours.
  59. function distance_of_time_in_words(minutes) {
  60.   if (minutes.isNaN) return "";
  61.   minutes = Math.abs(minutes);
  62.   if (minutes < 1) return (_('less than a minute'));
  63.   if (minutes < 50) return (_( '#{0} minute' + (minutes == 1 ? '' : 's'), minutes));
  64.   if (minutes < 90) return (_('about one hour'));
  65.   if (minutes < 1080) return (_("#{0} hours", Math.round(minutes / 60)));
  66.   if (minutes < 1440) return (_('one day'));
  67.   if (minutes < 2880) return (_('about one day'));
  68.   else return (_("#{0} days", Math.round(minutes / 1440))) ;
  69. }
  70. function commentAdded(request) {
  71.   Element.cleanWhitespace('commentList');
  72.   new Effect.BlindDown($('commentList').lastChild);
  73.   if ($('dummy_comment')) { Element.remove('dummy_comment'); }
  74.   $('commentform').elements["comment_body"].value = '';
  75.   $('commentform').elements["comment_body"].focus();
  76. }
  77. function failure(request) {
  78.   $('errors').innerHTML = request.responseText;
  79.   new Effect.Highlight('errors');
  80. }
  81. function loading() {
  82.   $('form-submit-button').disabled = true;
  83.   Element.show('comment_loading');
  84.   new Element.hide('preview');
  85. }
  86. function complete(request) {
  87.   Element.hide('comment_loading');
  88.   Element.show('commentform');
  89.   $('form-submit-button').disabled = false;
  90.   if (request.status == 200) { commentAdded() };
  91. }
  92. function popup(mylink, windowname)
  93. {
  94.   if (! window.focus) return true;
  95.   var href;
  96.   window.open(mylink, windowname, 'width=400,height=500,scrollbars=yes');
  97.   return false;
  98. }
  99. // From http://www.shawnolson.net/scripts/public_smo_scripts.js
  100. function check_all(checkbox) {
  101.  var form = checkbox.form, z = 0;
  102.  for(z=0; z<form.length;z++){
  103.   if(form[z].type == 'checkbox' && form[z].name != 'checkall'){
  104.   form[z].checked = checkbox.checked;
  105.   }
  106.  }
  107. }
  108. register_onload(function() {
  109.   if ($('commentform')) {
  110.     var _author = getCookie('author');
  111.     var _url = getCookie('url');
  112.     if(_author != null) { $('commentform').elements['comment[author]'].value = _author }
  113.     if(_url != null) { $('commentform').elements['comment[url]'].value = _url }
  114.     if ($('commentform').elements['comment[url]'].value != ''
  115.         || $('commentform').elements['comment[email]'].value != '') {
  116.       Element.show('guest_url'); Element.show('guest_email');
  117.     }
  118.   }
  119. })
  120. register_onload(function() { if ($('q')) {$('q').setAttribute('autocomplete', 'off');} })