function printlimator() { //remove conflicts with other javascript libraries var $ = jQuery; //like the hover function, but for mousedown state $.fn.active = function(fn1, fn2) { var el = this; $(el).mousedown(fn1); $(document).mouseup(function() { fn2.call(el); }); return this; }; var history = []; var dont = false; $('body *:not(._print_controls, ._print_controls *)').live('click', function (e) { if (!dont) { e.preventDefault(); var done; if(e.altKey) { done = $("body *").not("._print_controls, ._print_controls *, style") .not($(this).parents().andSelf()) .not($(this).find("*")) .hide(); } else done = $(this).hide(); done.addClass("_print_removed"); history.push(done); } }).live('mouseover', function () { if (!dont) $(this).css('outline', '3px solid red') }).live('mouseout', function () { if (!dont) $(this).css('outline', 'none') }); var controls = $('
').addClass('_print_controls').css({ position: 'fixed', top: 25, right: 25, width: 162, height: 182, background: 'url(http://css-tricks.com/examples/ThePrintliminator/images/printliminator2.png) no-repeat', zIndex: 10000 }).mouseover(function () { dont = true }).mouseout(function () { dont = false }).appendTo('body'); //fix IE6, which doesn't support position: fixed if (controls.css('position') != 'fixed') { controls.css('position', 'absolute'); } //Remove Graphics $('
').css({ background: 'url(http://css-tricks.com/examples/ThePrintliminator/images/printliminator2.png) 0 -182px no-repeat', position: 'absolute', top: 6, left: 6, width: 74, height: 74 }).click(function () { var done = $('img,iframe,object,embed,input[type=image],ins').hide(); var bg = $('body *:not(._print_controls, ._print_controls *)').css('background'); var item = $('body *:not(._print_controls, ._print_controls *)').css('background', 'none'); done.addClass("_print_removed"); history.push(function() { done.show(); item.css('background', bg); }); }).hover(function(){ $(this).css({ "background-position": "0 -256px" }) }, function() { $(this).css({ "background-position": "0 -182px" }) }).active(function(){ $(this).css({ "background-position": "0 -330px" }) }, function() { $(this).css({ "background-position": "0 -182px" }) }).appendTo(controls); // Print Stylize $('
').css({ background: 'url(http://css-tricks.com/examples/ThePrintliminator/images/printliminator2.png) no-repeat -222px -182px', position: 'absolute', top: 6, left: 83, width: 74, height: 74 }).click(function () { window.print(); }).hover(function(){ $(this).css({ "background-position": "-222px -256px" }) }, function() { $(this).css({ "background-position": "-222px -182px" }) }).active(function(){ $(this).css({ "background-position": "-222px -330px" }) }, function() { $(this).css({ "background-position": "-222px -182px" }) }).appendTo(controls); //Print $('
').css({ background: 'url(http://css-tricks.com/examples/ThePrintliminator/images/printliminator2.png) -74px -182px no-repeat', position: 'absolute', top: 83, left: 83, width: 74, height: 74 }).hover(function(){ $(this).css({ "background-position": "-74px -256px" }) }, function() { $(this).css({ "background-position": "-74px -182px" }) }).active(function(){ $(this).css({ "background-position": "-74px -330px" }) }, function() { $(this).css({ "background-position": "-74px -182px" }) }).click(function () { var links = $("link[rel='stylesheet'], style:not(#_print_control_styles)").remove(); //cache and remove inline styles var inline = $('body *:not(._print_controls, ._print_controls > *, ._print_removed)').map(function() { var style = $(this).attr("style"); $(this).attr("style", ""); return { el: this, style: style }; }); var print = $("").appendTo("head"); history.push(function() { print.remove(); links.appendTo("head"); inline.each(function() { $(this.el).attr("style", this.style); }); }); }).appendTo(controls); //Close $('
').css({ background: 'url(http://css-tricks.com/examples/ThePrintliminator/images/printliminator2.png) -222px -3px no-repeat', position: 'absolute', top: -20, right: -20, width: 33, height: 33 }).hover(function(){ $(this).css({ "background-position": "-222px -39px" }) }, function(){ $(this).css({ "background-position": "-222px -3px" }) }).click(function(){ $('._print_controls').remove(); }).appendTo(controls); $("
").css({ background: 'url(http://css-tricks.com/examples/ThePrintliminator/images/printliminator2.png) -148px -182px no-repeat', position: 'absolute', top: 83, left: 6, width: 74, height: 74 }).hover(function(){ $(this).css({ "background-position": "-148px -256px" }) }, function() { $(this).css({ "background-position": "-148px -182px" }) }).active(function(){ $(this).css({ "background-position": "-148px -330px" }) }, function() { $(this).css({ "background-position": "-148px -182px" }) }).click(function() { var last = history.pop(); if(last) { if(typeof last != 'function') last.removeClass("_print_removed").show(); else last.call(); } }).appendTo(controls); //make sure that the controls don't get printed $('