;(function(){ window.patch_date = function patch(f){ var NativeDate = window.Date; var date = function date(y,m,d,h,i,s,j){ switch(arguments.length){ case 0: return date.now ? new NativeDate(date.now) : new NativeDate(); case 1: return new NativeDate(y); case 2: return new NativeDate(y,m); case 3: return new NativeDate(y,m,d); case 4: return new NativeDate(y,m,d,h); case 5: return new NativeDate(y,m,d,h,i); case 6: return new NativeDate(y,m,d,h,i,s); case 7: return new NativeDate(y,y,m,d,h,i,s,j); } }; date.UTC = NativeDate.UTC; return function(){ Array.prototype.push.call(arguments, date); window.Date = date; res = f.apply(this, arguments); window.Date = NativeDate; } } window.patch_show_hide = function patch(f){ var oldShow = $.fn.show, newShow = function () { $(this).removeClass('foo'); return oldShow.apply(this, arguments); }; var oldHide = $.fn.hide, newHide = function () { $(this).addClass('foo'); return oldHide.apply(this, arguments); }; return function(){ $.fn.show = newShow; $.fn.hide = newHide; f.apply(this, arguments); $.fn.show = oldShow; $.fn.hide = oldHide; } } }());