jQuery.extend({ compareVersions : function (have, require) { if (typeof require == 'undefined') { require = have; have = jQuery.fn.jquery; } function parts(val) { // Expecting following format 1.2.3rc1, 1.2.4a, etc. return val.replace(/[a-z]+/i, function(m) { return '.' + (m == 'pre' ? '0pre' : m); }).split('.'); } if (require == have) return 0; var latest = parts(have), required = parts(require), i = 0; while (latest[i] && required[i]) { if (latest[i] < required[i]) { return -1; } else if (latest[i] > required[i]) { return 1; } i++; } return (latest[i] ? (/^d/.test(latest[i]) ? 1 : -1) : (/^d/.test(required[i]) ? -1 : 1)); }, hasVersion : function() { var ok = this.compareVersions.apply(this, arguments); return (ok === 0 || ok === 1); } });