var forIn = function(obj, fn) {
for (var p in obj) {
if (obj.hasOwnProperty(p)) {
if (fn(p, obj[p], obj) === false) {
break;
}
}
}
};
var forEach = function(arr, fn) {
for (var i = 0; i < arr.length; i += 1) {
if (fn(arr[i], i, arr) === false) {
break;
}
}
};
var forTimes = function(count, fn) {
for (var i = 0; i < count; i += 1) {
if (fn(i) === false) {
break;
}
}
};
var concat = function() {
return [].concat.apply([], arguments);
};
var deduplicate = function(arr, equals) {
return arr.reduce(function(acc, val) {
if (acc.filter(function(fi) { return equals(fi, val); }).length === 0) {
acc.push(val);
}
return acc;
}, []);
};
var shuffle = function(array) {
var tmp, current, top = array.length;
if (top) {
while (--top) {
current = Math.floor(Math.random() * (top + 1));
tmp = array[current];
array[current] = array[top];
array[top] = tmp;
}
}
return array;
};
var any = function(arr, fn) {
for (var i = 0; i < arr.length; i += 1) {
if (fn(arr[i], i, arr) === true) {
return true;
}
}
};
var groupBy = function(array, fn) {
var groups = {};
array.forEach(function(item) {
var result = fn(item);
var group = JSON.stringify(result.group);
groups[group] = groups[group] || [];
groups[group].push(result.data || result);
});
return Object.keys(groups).map(function(group) {
return groups[group];
});
};
var limit = function(v, min, max) {
v = Number(v) || 0;
return Math.max(min, Math.min(max, v));
};
var map = function (v, in_min, in_max, out_min, out_max) {
v = limit(v, in_min, in_max);
return (v - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
};
var inRange = function(val, min, max) {
return !!val && (!min || val >= min) && (!max || val <= max);
};
var rangeOverlap = function(min1, max1, min2, max2) {
return (max2 === null || min1 <= max2) && (max1 === null || max1 >= min2);
};
// strings
var format = function(str) {
var i;
for (i = 1; i < arguments.length; i += 1) {
str = str.replace('{' + (i - 1) + '}', arguments[i]);
}
return str;
};
var lpad = function (str, pad, length) {
while (str.length < length)
str = pad + str;
return str;
};
// dates
var today = function() {
var t = new Date();
t.setHours(0, 0, 0, 0);
return t;
};
var dateAdd = function (date, ms) {
return new Date(date.getTime() + ms);
};
var parseHourMinute = function (timeStr) {
var hm = ('' + timeStr).replace(':', '');
var h = 0;
var m = parseInt(hm) || 0;
if (hm.length > 2) {
h = parseInt(hm.slice(0, -2)) || 0;
m = parseInt(hm.slice(-2)) || 0
}
h = Math.min(h, 23);
m = Math.min(m, 59);
return { h: h, m: m };
};
var formatTime = function (minutes) {
var minutesPerDay = 60 * 24;
while (minutes < 0)
minutes += minutesPerDay;
while (minutes >= minutesPerDay)
minutes -= minutesPerDay;
var h = Math.floor(minutes / 60);
var m = minutes % 60;
return lpad('' + h, '0', 2) + ':' + lpad('' + m, '0', 2);
};
var timeUp = function (time) {
var hm = parseHourMinute(time());
var hm2 = (hm.h * 60) + hm.m;
hm2 += 30;
time(formatTime(hm2));
};
// urls
var createQuery = function(qry) {
var arr = [];
exports.forIn(qry, function(k, v) {
// Handle js dates
if (v && v.toISOString) {
v = v.toISOString();
}
arr.push(encodeURIComponent(k) + '=' + encodeURIComponent(v));
});
return arr.join('&');
};
31900cookie-checkJavascript Helper Functions