/**
 * mksort.js - Implements SQL style multi-key asc/desc sorting of object arrays
 * Author: Fil Baumanis ( @unfail, @bitless )
 */
mksort = {};
(function(){var obLen=function(obj){var size=0,key=0;for(key in obj){if(obj.hasOwnProperty(key))size++;}return size;};var obIx=function(obj,ix){var size=0,key=0;for(key in obj){if(obj.hasOwnProperty(key)){if(size==ix)return key;size++;}}return false;};var keySort=function(a,b,d){d=d!==null?d:1;if(a==b)return 0;return a>b?1*d:-1*d;};mksort.sort=function(objarr,keys){keys=keys||{};var KL=obLen(keys);if(!KL)return objarr.sort(keySort);for(var k in keys){keys[k]=keys[k]=='desc'||keys[k]==-1?-1:(keys[k]=='skip'||keys[k]===0?0:1);}objarr.sort(function(a,b){var sorted=0,ix=0;while(sorted===0&&ix<KL){var k=obIx(keys,ix);if(k){var dir=keys[k];sorted=keySort(a[k],b[k],dir);ix++;}}return sorted;});return objarr;};})();

/**
 * mksort.js - SQL style multi-key sorting of object arrays
 * Author: Fil @bitless
 */
mksort={};
(function(){var e=function(e){var t=0,n=0;for(n in e){if(e.hasOwnProperty(n))t++}return t};var t=function(e,t){var n=0,r=0;for(r in e){if(e.hasOwnProperty(r)){if(n==t)return r;n++}}return false};var n=function(e,t,n){n=n!==null?n:1;e=r(e)?e*1:e.toLowerCase();t=r(t)?t*1:t.toLowerCase();if(e==t)return 0;return e>t?1*n:-1*n};var r=function(e){return!isNaN(parseFloat(e))&&isFinite(e)};mksort.sort=function(r,i){i=i||{};var s=e(i);if(!s)return r.sort(n);for(var o in i){i[o]=i[o]=="desc"||i[o]==-1?-1:i[o]=="skip"||i[o]===0?0:1}r.sort(function(e,r){var o=0,u=0;while(o===0&&u<s){var a=t(i,u);if(a){var f=i[a];o=n(e[a],r[a],f);u++}}return o});return r}})()

Update mksort.min.js