stuppid_bot

Untitled

Apr 9th, 2013
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function rand(min, max) {
  2.     return min + Math.floor( ++max * Math.random() );
  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 parseParam(str, params) {
  17.     var temp = str.split('=');
  18.     var name = temp[0];
  19.     var value = temp[1];
  20.  
  21.     if (!name)
  22.         return;
  23.    
  24.     var i = name.indexOf('[');
  25.  
  26.     if (i == 0)
  27.         return;
  28.  
  29.     var l = name.length;
  30.     i = i < 0 ? l : i;
  31.     var parts = [];
  32.     parts[0] = name.substr(0, i++);
  33.     var j = i;
  34.  
  35.     while (j < l) {
  36.         if (name[j] == ']') {
  37.             if (name[j + 1] == '[') {
  38.                 parts.push( name.slice(i, j) );
  39.                 ++j;
  40.                 i = j + 1;
  41.             }
  42.         }
  43.  
  44.         ++j;
  45.     }
  46.    
  47.     var part, current = params;
  48.    
  49.     while (1) {
  50.         part = parts.shift();
  51.        
  52.         if (part == '') {
  53.             var nums = Object.keys(current).filter(function(a) { return /^\d+$/.test(a); });      
  54.             part = nums.length ? Math.max(nums) + 1 : 0;
  55.         }
  56.        
  57.         if (!parts.length)
  58.             break;
  59.        
  60.         if (current[part] === undefined)
  61.             current[part] = {};                      
  62.        
  63.         current = current[part];
  64.     }
  65.    
  66.     current[part] = decodeURIComponent(value);
  67. }
  68.  
  69. function serializeForm(form) {
  70.     //
  71. }
  72.  
  73. function parseQuery(query, delimiter) {
  74.     query = query.split(delimiter || '&');
  75.     var i = query.length, temp, obj = {};
  76.    
  77.     while (i--) {
  78.         temp = query[i].split('=');
  79.         obj[temp[0]] = decodeURIComponent(temp[1]);
  80.     }
  81.    
  82.     return obj;
  83. }
  84.  
  85. function buildQuery(obj, delimiter) {
  86.     var parts = [], name;
  87.    
  88.     for (name in obj)
  89.         parts.push( name + '=' + encodeURI(obj[name]) );
  90.    
  91.     return parts.join(delimiter || '&');
  92. }
  93.  
  94. /**
  95.  * Возвращает размер в байтах в понятном для человека формате.
  96.  *
  97.  * @param size размер в байтах, целое число
  98.  * @param std стандарт, 'SI' | 'IEC'
  99.  * @return string
  100.  */
  101. function formatSize(size, std) {
  102.     if (std) std = std.toLowerCase();
  103.     var i = 0,
  104.         base = std == 'si' ? 1000 : 1024,
  105.         prefixes = ' KMGTPEZY';
  106.    
  107.     if (size < 1)
  108.         return '0';
  109.     else if (size >= base) {
  110.         i = Math.floor( Math.log(size) / Math.log(base) );
  111.        
  112.         if (i >= prefixes.length)
  113.             return 'N/A';
  114.        
  115.         size = ( size / Math.pow(base, i) ).toFixed(2) * 1 + ' ';
  116.     }
  117.    
  118.     return size + prefixes[i] + ( std == 'iec' && i ? 'i' : '' ) + 'B';
  119. }
  120.  
  121. /**
  122.  * Склоняет слово в зависимости от количества.
  123.  *
  124.  * @param count количество
  125.  * @param base основа слова
  126.  * @param ending1 окончание для ед.ч.
  127.  * @param ending2 окончание для мн.ч.
  128.  * @param ending3 еще одно окончание для мн.ч., если не задано, то слово
  129.  * склоняется как в английском
  130.  * @return string
  131.  */
  132. function pluralize(count, base, ending1, ending2, ending3) {
  133.     base = count + ' ' + base;
  134.    
  135.     if (ending3 === undefined)
  136.         return base + ( count == 1? ending1 : ending2 );
  137.    
  138.     count %= 100;
  139.     count = count > 20 ? count % 10 : count;
  140.     return base + ( count == 0 || count > 4 ? ending3 : count > 1 ? ending2 : ending1 );
  141. }
  142.  
  143. /**
  144.  * Возвращает продолжительность времени в формате Ч:ММ:СС либо М{1,2}:СС.
  145.  *
  146.  * @param ms миллисекунды
  147.  * @return string
  148.  */
  149. function duration(ms) {
  150.     var temp = [], i;
  151.     temp.push(ms / 3600000);
  152.     temp.push(temp[0] % 1 * 60);
  153.     temp.push(temp[1] % 1 * 60);
  154.     temp = temp.map(Math.floor);  
  155.     temp = temp[0] ? temp : temp.slice(1);
  156.     i = temp.length;
  157.    
  158.     while (--i)
  159.         temp[i] = temp[i] < 10 ? '0' + temp[i] : temp[i];
  160.    
  161.     return temp.join(':');
  162. }
  163.  
  164. /**
  165.  * Возвращает продолжительность времени словами.
  166.  *
  167.  * @param ms миллисекунды
  168.  * @param ending окончание для слов минута и секунда в ед.ч.
  169.  * @return string
  170.  */
  171. function durationWords(ms, ending) {
  172.     ending = ending || 'а';
  173.     var days = ms / 86400000,
  174.         hours = days % 1 * 24,
  175.         minutes = hours % 1 * 60,
  176.         seconds = minutes % 1 * 60;
  177.    return ( days >= 1 ? pluralize( Math.floor(days), 'д', 'ень', 'ня', 'ней' )  + ' ' : '' )
  178.        + ( hours >= 1 ? pluralize( Math.floor(hours), 'час', '', 'а', 'ов' ) + ' ' : '' )
  179.        + ( minutes >= 1 ? pluralize( Math.floor(minutes), 'минут', ending, 'ы', '' ) + ' ' : '' )
  180.        + pluralize( Math.round(seconds), 'секунд', ending, 'ы', '');
  181. }
Advertisement
Add Comment
Please, Sign In to add comment