(function($){$.fn.printPreview=function(){this.each(function(){$(this).bind('click',function(e){e.preventDefault();if(!$('#print-modal').length){$.printPreview.loadPrintPreview();}});});return this;};var mask,size,print_modal,print_controls;$.printPreview={loadPrintPreview:function(){print_modal=$('<div id="print-modal"></div>');print_controls=$('<div id="print-modal-controls">'+'<a href="#" class="print" title="Print page">Print page</a>'+'<a href="#" class="close" title="Close print preview">Close</a>').hide();var print_frame=$('<iframe id="print-modal-content" scrolling="no" border="0" frameborder="0" name="print-frame" />');print_modal
.hide()
.append(print_controls)
.append(print_frame)
.appendTo('body');var print_frame_ref=window.frames["print-frame"].document;print_frame_ref.open();print_frame_ref.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'+'<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">'+'<head><title>'+document.title+'</title></head>'+'<body></body>'+'</html>');print_frame_ref.close();$('body',print_frame_ref).html($('body > *:not(#print-modal):not(script)').clone());$('head link[media*=print], head link[media=all]').each(function(){$('head',print_frame_ref).append($(this).clone().attr('media','all'));});$('a',print_frame_ref).bind('click.printPreview',function(e){e.preventDefault();});$('head').append('<style type="text/css">'+'@media print {'+'/* -- Print Preview --*/'+'#print-modal-mask,'+'#print-modal {'+'display: none !important;'+'}'+'}'+'</style>');$.printPreview.loadMask();$('body').css({overflowY:'hidden',height:'100%'});$('img',print_frame_ref).load(function(){print_frame.height($('body',print_frame.contents())[0].scrollHeight);});starting_position=$(window).height()+$(window).scrollTop();var css={top:starting_position,height:'100%',overflowY:'auto',zIndex:10000,display:'block'}
print_modal
.css(css)
.animate({top:$(window).scrollTop()},400,'linear',function(){print_controls.fadeIn('slow').focus();});print_frame.height($('body',print_frame.contents())[0].scrollHeight);$('a',print_controls).bind('click',function(e){e.preventDefault();if($(this).hasClass('print')){window.print();}
else{$.printPreview.distroyPrintPreview();}});},distroyPrintPreview:function(){print_controls.fadeOut(100);print_modal.animate({top:$(window).scrollTop()-$(window).height(),opacity:1},400,'linear',function(){print_modal.remove();$('body').css({overflowY:'auto',height:'auto'});});mask.fadeOut('slow',function(){mask.remove();});$(document).unbind("keydown.printPreview.mask");mask.unbind("click.printPreview.mask");$(window).unbind("resize.printPreview.mask");},loadMask:function(){size=$.printPreview.sizeUpMask();mask=$('<div id="print-modal-mask" />').appendTo($('body'));mask.css({position:'absolute',top:0,left:0,width:size[0],height:size[1],display:'none',opacity:0,zIndex:9999,backgroundColor:'#000'});mask.css({display:'block'}).fadeTo('400',0.75);$(window).bind("resize..printPreview.mask",function(){$.printPreview.updateMaskSize();});mask.bind("click.printPreview.mask",function(e){$.printPreview.distroyPrintPreview();});$(document).bind("keydown.printPreview.mask",function(e){if(e.keyCode==27){$.printPreview.distroyPrintPreview();}});},sizeUpMask:function(){if($.browser.msie){var d=$(document).height(),w=$(window).height();return[window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,d-w<20?w:d];}else{return[$(document).width(),$(document).height()];}},updateMaskSize:function(){var size=$.printPreview.sizeUpMask();mask.css({width:size[0],height:size[1]});}}})(jQuery);
