/**
* This file is part of HTML2print.
*
* HTML2print is free software: you can redistribute it and/or modify it under the
* terms of the GNU Affero General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* HTML2print is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License along
* with HTML2print. If not, see .
*/
(function($, undefined) {
'use strict';
var $viewport = $("#viewport")[0]
, $previewBtn = $('[name="preview"]')[0]
, $gridBtn = $('[name="grid"]')[0]
, $debugBtn = $('[name="debug"]')[0]
, $spreadBtn = $('[name="spread"]')[0]
, $zoomBtn = $('[name="zoom"]')[0]
, $pageBtn = $('[name="page"]')[0]
, $displayBtn = $('[name="display"]')[0]
, $reloadBtn = $('#reload')[0]
, $printBtn = $('#print')[0]
, $designmodeBtn = $('[name="designmode"]')[0]
;
$viewport.addEventListener("load", function(event) {
var $contentDoc = this.contentDocument;
var $doc = this.contentDocument.getElementsByTagName('html')[0]
function switchPreview(event) {
if(this.checked) {
$doc.classList.add("preview");
$doc.classList.remove("normal");
} else {
$doc.classList.add("normal");
$doc.classList.remove("preview");
}
}
function switchGrid(event) {
console.log(event);
if (this.checked) {
$doc.classList.add("grid");
} else {
$doc.classList.remove("grid");
}
}
function switchDebug(event) {
if(this.checked) {
$doc.classList.add("debug");
} else {
$doc.classList.remove("debug");
}
}
function switchSpread(event) {
if(this.checked) {
$doc.classList.add("spread");
} else {
$doc.classList.remove("spread");
}
}
function switchDesignMode(event) {
if(this.checked) {
$contentDoc.designMode = "on";
} else {
$contentDoc.designMode = "off";
}
}
function setZoom(event) {
var zoomLevel = this.value / 100;
var elt = $doc.querySelector("#pages");
elt.style.webkitTransform = "scale(" + zoomLevel + ")";
elt.style.webkitTransformOrigin = "0 0";
}
function changePage(event) {
var pageNumber = this.value - 1;
var target = $doc.querySelectorAll('.paper')[pageNumber];
var offsetTop = target.offsetTop;
$doc.querySelector('body').scrollTop = offsetTop;
}
function changeDisplay(event) {
var htmlelt = $doc.querySelectorAll('html')[0];
var elts = $doc.querySelectorAll('img');
$doc.classList.remove("low");
$doc.classList.remove("bw");
$doc.classList.remove("color");
$doc.classList.add(this.value);
//for (var i = 0, l = elts.length; i < l; i ++) {
//var elt = elts[i];
//if (!elt.dataset.low) { elt.dataset.low = elt.src; }
//elt.style.visibility = 'visible';
//if (elt.dataset[this.value]) {
//elt.src = elt.dataset[this.value];
//} else {
//elt.src = "";
//elt.style.visibility = 'hidden'
//}
//}
//console.log("Wait for hi-res images to load");
//window.setTimeout(function(){
console.log("Check image resolution");
// Redlights images too small for printing
var images = $doc.getElementsByTagName("img");
for (var i=0; i < images.length; i++) {
if (Math.ceil(images[i].naturalHeight / images[i].height) < 1.8) {
console.log(images[i] + ": " + Math.floor(images[i].naturalHeight / images[i].height) );
images[i].className += "lo-res";
}
if (Math.ceil(images[i].naturalHeight / images[i].height) < 4.5) {
console.log(images[i] + ": " + Math.floor(images[i].naturalHeight / images[i].height) );
images[i].className += "too-big";
}
}
console.log("done checking resolution");
//}, 2000);
//
// TODO: change le titre ici
//console.log(document.title)
//console.log($contentDoc.title)
//
}
function reload(event) {
$viewport.contentWindow.location.reload();
}
function print(event) {
$viewport.contentWindow.print();
}
$previewBtn.addEventListener("change", switchPreview);
$gridBtn.addEventListener("change", switchGrid);
$debugBtn.addEventListener("change", switchDebug);
$spreadBtn.addEventListener("change", switchSpread);
$zoomBtn.addEventListener("change", setZoom);
$pageBtn.addEventListener("change", changePage);
$reloadBtn.addEventListener("click", reload);
$printBtn.addEventListener("click", print);
$displayBtn.addEventListener("change", changeDisplay);
$designmodeBtn.addEventListener("change", switchDesignMode);
switchPreview.bind($previewBtn)();
switchGrid.bind($gridBtn)();
switchDebug.bind($debugBtn)();
switchSpread.bind($spreadBtn)();
setZoom.bind($zoomBtn)();
//changePage.bind($pageBtn)();
}, false);
})(document.querySelectorAll.bind(document));