Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function rand(min, max) {
- return min + Math.floor( ++max * Math.random() );
- }
- function shuffle(arr) {
- var i = 0, j, swap, len = arr.length;
- while (i < len) {
- j = Math.floor( Math.random() * len );
- swap = arr[j];
- arr[j] = arr[i];
- arr[i++] = swap;
- }
- }
- function parseParam(str, params) {
- var temp = str.split('=');
- var name = temp[0];
- var value = temp[1];
- if (!name)
- return;
- var i = name.indexOf('[');
- if (i == 0)
- return;
- var l = name.length;
- i = i < 0 ? l : i;
- var parts = [];
- parts[0] = name.substr(0, i++);
- var j = i;
- while (j < l) {
- if (name[j] == ']') {
- if (name[j + 1] == '[') {
- parts.push( name.slice(i, j) );
- ++j;
- i = j + 1;
- }
- }
- ++j;
- }
- var part, current = params;
- while (1) {
- part = parts.shift();
- if (part == '') {
- var nums = Object.keys(current).filter(function(a) { return /^\d+$/.test(a); });
- part = nums.length ? Math.max(nums) + 1 : 0;
- }
- if (!parts.length)
- break;
- if (current[part] === undefined)
- current[part] = {};
- current = current[part];
- }
- current[part] = decodeURIComponent(value);
- }
- function serializeForm(form) {
- //
- }
- function parseQuery(query, delimiter) {
- query = query.split(delimiter || '&');
- var i = query.length, temp, obj = {};
- while (i--) {
- temp = query[i].split('=');
- obj[temp[0]] = decodeURIComponent(temp[1]);
- }
- return obj;
- }
- function buildQuery(obj, delimiter) {
- var parts = [], name;
- for (name in obj)
- parts.push( name + '=' + encodeURI(obj[name]) );
- return parts.join(delimiter || '&');
- }
- /**
- * Возвращает размер в байтах в понятном для человека формате.
- *
- * @param size размер в байтах, целое число
- * @param std стандарт, 'SI' | 'IEC'
- * @return string
- */
- function formatSize(size, std) {
- if (std) std = std.toLowerCase();
- var i = 0,
- base = std == 'si' ? 1000 : 1024,
- prefixes = ' KMGTPEZY';
- if (size < 1)
- return '0';
- else if (size >= base) {
- i = Math.floor( Math.log(size) / Math.log(base) );
- if (i >= prefixes.length)
- return 'N/A';
- size = ( size / Math.pow(base, i) ).toFixed(2) * 1 + ' ';
- }
- return size + prefixes[i] + ( std == 'iec' && i ? 'i' : '' ) + 'B';
- }
- /**
- * Склоняет слово в зависимости от количества.
- *
- * @param count количество
- * @param base основа слова
- * @param ending1 окончание для ед.ч.
- * @param ending2 окончание для мн.ч.
- * @param ending3 еще одно окончание для мн.ч., если не задано, то слово
- * склоняется как в английском
- * @return string
- */
- function pluralize(count, base, ending1, ending2, ending3) {
- base = count + ' ' + base;
- if (ending3 === undefined)
- return base + ( count == 1? ending1 : ending2 );
- count %= 100;
- count = count > 20 ? count % 10 : count;
- return base + ( count == 0 || count > 4 ? ending3 : count > 1 ? ending2 : ending1 );
- }
- /**
- * Возвращает продолжительность времени в формате Ч:ММ:СС либо М{1,2}:СС.
- *
- * @param ms миллисекунды
- * @return string
- */
- function duration(ms) {
- var temp = [], i;
- temp.push(ms / 3600000);
- temp.push(temp[0] % 1 * 60);
- temp.push(temp[1] % 1 * 60);
- temp = temp.map(Math.floor);
- temp = temp[0] ? temp : temp.slice(1);
- i = temp.length;
- while (--i)
- temp[i] = temp[i] < 10 ? '0' + temp[i] : temp[i];
- return temp.join(':');
- }
- /**
- * Возвращает продолжительность времени словами.
- *
- * @param ms миллисекунды
- * @param ending окончание для слов минута и секунда в ед.ч.
- * @return string
- */
- function durationWords(ms, ending) {
- ending = ending || 'а';
- var days = ms / 86400000,
- hours = days % 1 * 24,
- minutes = hours % 1 * 60,
- seconds = minutes % 1 * 60;
- return ( days >= 1 ? pluralize( Math.floor(days), 'д', 'ень', 'ня', 'ней' ) + ' ' : '' )
- + ( hours >= 1 ? pluralize( Math.floor(hours), 'час', '', 'а', 'ов' ) + ' ' : '' )
- + ( minutes >= 1 ? pluralize( Math.floor(minutes), 'минут', ending, 'ы', '' ) + ' ' : '' )
- + pluralize( Math.round(seconds), 'секунд', ending, 'ы', '');
- }
Advertisement
Add Comment
Please, Sign In to add comment