
var togglePreviewKeydown = function(event) {
// esc
   if([27].contains(event.code)) { 
      document.togglePreview();
   }
   
// ctrl + p   
   if(event.control && [80].contains(event.code)) {
      document.togglePreview();
   }
}

document.togglePreview = function() {
   $$('link').filter(function(item) {
      return item.get('rel') == 'stylesheet';
   }).each(function(item) {
      if(item.get('media') == 'print') {
         item.set({
            'media': 'all',
            'kill': true 
         });
      }
      else if(item.get('kill')) {
         item.set({
            'media': 'print',
            'kill': false
         });      
      }

//Firefox 2 does not apply media change      
      if(Browser.Engine.gecko && Browser.Engine.version <= 18 && item.get('kill')) {
         var split = '?';
         if(item.get('href').indexOf(split) > 0) {
            split = '&';
         }
         item.set('href', item.get('href') + split + Math.random());
      } 
   });
   
   var closePreview = $('closepreview');
   var fn = 'addEvent';
   if(closePreview) {
      if(closePreview.getStyle('display') == 'none') {
         closePreview.setStyle('display', '');
      }
      else {
         closePreview.setStyle('display', 'none');
         fn = 'removeEvent';
      }
   }
   else {
      var h1 = new Element('h1', {
         'text': 'Версия для печати'
      });
      var print = new Element('input', {
         'type': 'button',
         'value': 'Печатать',
         'title': 'ctrl + p',
         'events': {
            'click': function() {
               document.togglePreview();
               window.print();
            }
         }
      });
      var close = new Element('input', {
         'type': 'button',
         'value': 'Закрыть',
         'title': 'Esc',
         'events': {
            'click': document.togglePreview
         }
      });
      var div = new Element('div', {
         'id': 'closepreview'
      });
      div.adopt(h1.adopt(print, close)).inject($(document.body), 'top');
   }
   window.scrollTo(0, 0);
   document[fn]('keydown', togglePreviewKeydown);
}

window.addEvent('domready', function() {
   $$('a[href$=print]').each(function(item) {
      item.addEvent('click', function() {
         document.togglePreview();
         return false;
      });
   });
   
   if(document.location.hash.indexOf('#print') > -1) {
      document.togglePreview();
   }
});
