stuppid_bot

Untitled

Apr 5th, 2013
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function rand(min, max) {
  2.     return Math.floor( Math.random() * (max - min + 1) ) + min;
  3. }
  4.  
  5. function shuffle(arr) {
  6.     var i = 0, j, swap, len = arr.length;
  7.  
  8.     while (i < len) {
  9.         j = Math.floor( Math.random() * len );
  10.         swap = arr[j];
  11.         arr[j] = arr[i];
  12.         arr[i++] = swap;
  13.     }
  14. }
  15.  
  16. function parseQS(query) {    
  17.     query = ( query[0] == '?' ? query.substr(1) : query ).split('&');
  18.     var i = query.length, temp, obj = {};
  19.    
  20.     while (i--) {
  21.         temp = query[i].split('=');
  22.         obj[ temp[0] ] = decodeURIComponent( temp[1] );
  23.     }
  24.    
  25.     return obj;
  26. }
  27.  
  28. function buildQS(obj) {
  29.     var parts = [], name;
  30.    
  31.     for (name in obj) {
  32.         parts.push( name + '=' + encodeURI( obj[name] ) );
  33.     }
  34.    
  35.     return '?' + parts.join('&');
  36. }
  37.  
  38. /**
  39.  * Возвращает размер в байтах в понятном для человека формате.
  40.  *
  41.  * @param size размер в байтах, целое число
  42.  * @param std стандарт, 'SI' | 'IEC'
  43.  * @return string
  44.  */
  45. function formatSize(size, std) {
  46.     if (std) std = std.toLowerCase();
  47.     var i = 0,
  48.         base = std == 'si' ? 1000 : 1024,
  49.         prefixes = ' KMGTPEZY';
  50.    
  51.     if (size < 1) {
  52.         return 0;
  53.     }
  54.     else if (size >= base) {
  55.         i = Math.floor( Math.log(size) / Math.log(base) );
  56.         if (i >= prefixes.length) return 'N/A';
  57.         size = ( size / Math.pow(base, i) ).toFixed(2) * 1 + ' ';
  58.     }
  59.    
  60.     return size + prefixes[i] + ( std == 'iec' && i ? 'i' : '' ) + 'B';
  61. }
  62.  
  63. /**
  64.  * Склоняет слово в зависимости от количества.
  65.  *
  66.  * @param count количество
  67.  * @param base основа слова
  68.  * @param ending1 окончание для ед.ч.
  69.  * @param ending2 окончание для мн.ч.
  70.  * @param ending3 еще одно окончание для мн.ч., если не задано, то слово
  71.  * склоняется как в английском
  72.  * @return string
  73.  */
  74. function pluralize(count, base, ending1, ending2, ending3) {
  75.     base = count + ' ' + base;
  76.    
  77.     if (ending3 === undefined) {
  78.         return base + ( count == 1? ending1 : ending2 );
  79.     }
  80.    
  81.     count %= 100;
  82.     count = count > 20 ? count % 10 : count;
  83.     return base + ( count == 0 || count > 4 ? ending3 : count > 1 ? ending2
  84.         : ending1 );
  85. }
  86.  
  87. /**
  88.  * Возвращает продолжительность в понятном для человека формате.
  89.  *
  90.  * @param ms миллисекунды
  91.  * @param ending окончание для слов минута и секунда в ед.ч.
  92.  * @return string
  93.  */
  94. function formatDuration(ms, ending) {
  95.     ending = ending || 'а';
  96.     var year = 365.25,
  97.         day = 24,
  98.         hour = 60,
  99.         minute = 60,
  100.         second = 1000,
  101.         years = ms / ( year * day * hour * minute * second ),
  102.         days = years % 1 * year, hours = days % 1 * day,
  103.         minutes = hours % 1 * hour,
  104.         seconds = minutes % 1 * minute;
  105.    return ( years >= 1
  106.        ? pluralize( Math.floor(years), '', 'год', 'года', 'лет' )
  107.        + ' ' : '' ) + ( days >= 1
  108.        ? pluralize( Math.floor(days), 'д', 'ень', 'ня', 'ней' )
  109.        + ' ' : '' ) + ( hours >= 1
  110.        ? pluralize( Math.floor(hours), 'час', '', 'а', 'ов' ) + ' ' : '' )
  111.        + ( minutes >= 1
  112.        ? pluralize( Math.floor(minutes), 'минут', ending, 'ы', '' )
  113.        + ' ' : '' ) + pluralize(
  114.            Math.round(seconds), 'секунд', ending, 'ы', ''
  115.        );
  116. }
Advertisement
Add Comment
Please, Sign In to add comment