jQuery(document).ready(function(){
jQuery(document).on('click', '.printomatic, .printomatictext', function(e){
e.preventDefault();
var id=jQuery(this).attr('id');
var this_print_data;
if(eval('typeof print_data_' + id)!=="undefined"){
this_print_data=eval('print_data_' + id);
}
if(this_print_data&&'pom_do_not_print' in this_print_data&&jQuery(this_print_data.pom_do_not_print).length){
jQuery(this_print_data.pom_do_not_print).addClass('pe-no-print');
}
else if(jQuery(print_data.pom_do_not_print).length){
jQuery(print_data.pom_do_not_print).addClass('pe-no-print');
}
var has_top_html=false;
if(this_print_data&&'pom_html_top' in this_print_data){
jQuery('body').prepend('<div id="pom_top_html" class="pe-preserve-ancestor">' + this_print_data.pom_html_top + '</div>');
has_top_html=true;
}
else if(print_data.pom_html_top){
jQuery('body').prepend('<div id="pom_top_html" class="pe-preserve-ancestor">' + print_data.pom_html_top + '</div>');
has_top_html=true;
}
var has_bot_html=false;
if(this_print_data&&'pom_html_bottom' in this_print_data){
jQuery('body').append('<div id="pom_bot_html" class="pe-preserve-ancestor">' + this_print_data.pom_html_bottom + '</div>');
has_bot_html=true;
}
else if(print_data.pom_html_bottom){
jQuery('body').append('<div id="pom_bot_html" class="pe-preserve-ancestor">' + print_data.pom_html_bottom + '</div>');
has_bot_html=true;
}
var trigger=jQuery(this);
var target=trigger.data('print_target');
if(!target){
classes=trigger.attr("class").split(/\s+/);
for(i=0; i<classes.length; i++){
if(classes[i].substring(0, 12)=="printtarget-"){
target=classes[i].substring(12, classes[i].length);
}}
}
if(!target||!jQuery(target).length){
return;
}
var target_arr=target.split(", ");
var targets=[];
var targ;
jQuery.each(target_arr, function(key, value){
if(value=='%prev%'){
targ=trigger.prev();
}
else if(value=='%next%'){
targ=trigger.next();
}else{
targ=jQuery(value);
}
if(targ.length){
jQuery.each(targ, function(){
targets.push(this);
});
}});
jQuery('img').each(function (){
jQuery(this).removeAttr('loading');
});
var pause_time=print_data.pom_pause_time;
if(this_print_data&&'pom_pause_time' in this_print_data){
pause_time=this_print_data.pom_pause_time;
}
if(targets){
if(pause_time){
console.log('pause_time hase been removed for now');
}
PrintElements.print(targets, pause_time, has_top_html, has_bot_html);
}});
});
function pom_cleanup(has_top_html, has_bot_html){
if(has_top_html){
jQuery('#pom_top_html').remove();
}
if(has_bot_html){
jQuery('#pom_bot_html').remove();
}};
var PrintElements=(function (){
"use strict";
var hideFromPrintClass="pe-no-print";
var preservePrintClass="pe-preserve-print";
var preserveAncestorClass="pe-preserve-ancestor";
var bodyElementName="BODY";
var _hide=function (element){
if(!element.classList.contains(preservePrintClass)){
element.classList.add(hideFromPrintClass);
}};
var _preserve=function (element, isStartingElement){
element.classList.remove(hideFromPrintClass);
element.classList.add(preservePrintClass);
if(!isStartingElement){
element.classList.add(preserveAncestorClass);
}};
var _clean=function (element){
element.classList.remove(hideFromPrintClass);
element.classList.remove(preservePrintClass);
element.classList.remove(preserveAncestorClass);
};
var _walkSiblings=function (element, callback){
var sibling=element.previousElementSibling;
while (sibling){
callback(sibling);
sibling=sibling.previousElementSibling;
}
sibling=element.nextElementSibling;
while (sibling){
callback(sibling);
sibling=sibling.nextElementSibling;
}};
var _attachPrintClasses=function (element, isStartingElement){
_preserve(element, isStartingElement);
_walkSiblings(element, _hide);
};
var _cleanup=function (element){
_clean(element);
_walkSiblings(element, _clean);
};
var _walkTree=function (element, callback){
var currentElement=element;
callback(currentElement, true);
currentElement=currentElement.parentElement;
while (currentElement&&currentElement.nodeName!==bodyElementName){
callback(currentElement, false);
currentElement=currentElement.parentElement;
}};
var _print=function (elements, has_top_html, has_bot_html){
for (var i=0; i < elements.length; i++){
_walkTree(elements[i], _attachPrintClasses);
}
window.addEventListener('afterprint', e=> after_print_clean_up(elements, has_top_html, has_bot_html));
window.print();
};
function after_print_clean_up(elements, has_top_html, has_bot_html){
for (var i=0; i < elements.length; i++){
_walkTree(elements[i], _cleanup);
}
pom_cleanup(has_top_html, has_bot_html);
}
return {
print: _print
};})();