+(function() {
+ var slice = Array.prototype.slice;
+
+ function update(array, args) {
+ var arrayLength = array.length, length = args.length;
+ while (length--) array[arrayLength + length] = args[length];
+ return array;
+ };
+
+ function merge(array, args) {
+ array = slice.call(array, 0);
+ return update(array, args);
+ };
+
+ Function.prototype.bind = function(context) {
+ if (arguments.length < 2 && typeof arguments[0] === 'undefined') {
+ return this;
+ }
+ var __method = this;
+ var args = slice.call(arguments, 1);
+ return function() {
+ var a = merge(args, arguments);
+ return __method.apply(context, a);
+ }
+ }
+
+})();
+
+function nblck_each(array, body, after) {
+ $.each(array, function(i) {
+ body(this, i);
+ });
+
+ after();
+};
+
+function nblck_map(array, func, after) {
+ var acc = [];
+
+ nblck_each(array, function(elem, index) {
+ acc.push(func(elem, index));
+ }, function(){
+ after(acc);
+ });
+};
+