// ==UserScript==
// @name Image Board Enhancer (Rule34, Gelbooru, e621, and more)
// @namespace ImageBoardEnhancer
// @version 1.1.2
// @description Auto Resize images and video on multiple image boards and enlarges thumbnails on mouse hover and adds content type icons to them.
// @author DanDanDan
// @match *://rule34.xxx/*
// @match *://chan.sankakucomplex.com/*
// @match *://idol.sankakucomplex.com/*
// @match *://gelbooru.com/*
// @match *://danbooru.donmai.us/*
// @match *://konachan.com/*
// @match *://yande.re/*
// @match *://safebooru.org/*
// @match *://rule34.paheal.net/*
// @match *://rule34hentai.net/*
// @match *://e621.net/*
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js
// @grant GM.setValue
// @grant GM.getValue
// ==/UserScript==
(async () => {
'use strict';
try {
var resizeImageToFit = await GM.getValue('resizeImageToFit', true);
var resizeVideoToFit = await GM.getValue('resizeVideoToFit', true);
var autoplayVideos = await GM.getValue('autoplayVideos', true);
var autoScrollToContent = await GM.getValue('autoScrollToContent', true);
var updateWithWindowResize = await GM.getValue('updateWithWindowResize', true);
var updateScrollOnWindowResize = await GM.getValue('updateScrollOnWindowResize', true);
var showFitButton = await GM.getValue('showFitButton', true);
var showScrollButton = await GM.getValue('showScrollButton', true);
var showR34XXXLikeAndFavoriteButtons = await GM.getValue('showR34XXXLikeAndFavoriteButtons', true);
var removeFluid = await GM.getValue('removeFluid', false);
var videoVolume = await GM.getValue('videoVolume', 0);
var widthMargin = await GM.getValue('widthMargin', 15);
var heightMargin = await GM.getValue('heightMargin', 15);
var resizeButton = await GM.getValue('resizeButton', 'BracketLeft');
var scrollButton = await GM.getValue('scrollButton', 'BracketRight');
var enableEnhancedThumbnails = await GM.getValue('enableEnhancedThumbnails', true);
var alwaysShowScrollbars = await GM.getValue('alwaysShowScrollbars', false);
var customSites = await GM.getValue('customSites', '{}');
// Create variables.
var currentWindowWidth = 0;
var currentWindowHeight = 0;
var currentWindowAspect = 0;
var contentTrueWidth = 0;
var contentTrueHeight = 0;
var contentTrueAspect = 0;
var resizeReady = false;
var debugMode = false;
var r34buttons = false;
var toolbarDOM = '.sidebar form';
var containerDOM = '#content';
var imageDOM = '#image';
var playerDOM;
var changeKeyboardShortcut = false;
var containerAlignment = '';
var thumbnailDOM = '.thumb';
var thumbnails = [];
var animationTagIsGif = false;
var urlParams = new URLSearchParams(window.location.search);
var unsupportedThumbnailPage = ((urlParams.get('page') && urlParams.get('page').toLowerCase() == 'favorites') || document.location.hostname.toLowerCase() == 'chan.sankakucomplex.com' || document.location.hostname.toLowerCase() == 'idol.sankakucomplex.com');
// Per-site DOM selection.
if (document.location.hostname.toLowerCase() == 'rule34.xxx') { toolbarDOM = '.space'; r34buttons = showR34XXXLikeAndFavoriteButtons; playerDOM = '#gelcomVideoContainer'; animationTagIsGif = true; }
else if (document.location.hostname.toLowerCase() == 'chan.sankakucomplex.com') { toolbarDOM = '#search-form'; }
else if (document.location.hostname.toLowerCase() == 'idol.sankakucomplex.com') { toolbarDOM = '#search-form'; }
else if (document.location.hostname.toLowerCase() == 'gelbooru.com') { toolbarDOM = '#tag-list form'; containerDOM = '.contain-push'; thumbnailDOM = '.thumbnail-preview'; }
else if (document.location.hostname.toLowerCase() == 'danbooru.donmai.us') { toolbarDOM = '#search-box'; thumbnailDOM = '.post-preview'; }
else if (document.location.hostname.toLowerCase() == 'rule34.paheal.net') { toolbarDOM = '#Navigationleft'; containerDOM = 'article'; imageDOM = '#main_image'; containerAlignment = 'margin-left: auto;'; }
else if (document.location.hostname.toLowerCase() == 'rule34hentai.net') { toolbarDOM = '#Navigationleft'; containerDOM = 'article'; imageDOM = '#main_image'; playerDOM = '#fluid_video_wrapper_video-id'; containerAlignment = 'margin-left: auto;'; }
else if (document.location.hostname.toLowerCase() == 'e621.net') { toolbarDOM = '#search-box'; thumbnailDOM = '.post-preview'; animationTagIsGif = true; }
// Custom site DOM selection.
else if (customSites[document.location.hostname.toLowerCase()]) {
var obj = customSites[document.location.hostname.toLowerCase()];
console.log(obj, 'obj')
if (obj.toolbarDOM) toolbarDOM = obj.toolbarDOM;
if (obj.containerDOM) containerDOM = obj.containerDOM;
if (obj.imageDOM) imageDOM = obj.imageDOM;
if (obj.thumbnailDOM) thumbnailDOM = obj.thumbnailDOM
$("body").append("<button id='ibenhancerDeleteConfigButton' style='position: absolute; top: 0px; right: 0px; z-index: 9999999; color: black; background-color: whitesmoke; font-size: 12px;'>Delete site config.</button>");
$("#ibenhancerDeleteConfigButton").click(deleteSiteConfig);
}
// Default site DOM and add setup button.
else {
// Add setup button to websites wihtout a config.
$("body").append("<button id='ibenhancerSetupButton' style='position: absolute; top: 0px; right: 0px; z-index: 9999999; color: black; background-color: whitesmoke; font-size: 12px;'>Setup Image Board Enhancer</button>");
$("#ibenhancerSetupButton").click(addSiteConfig);
console.warn('This site is not supported, but may still work.');
}
// Get Thumbnails
if (enableEnhancedThumbnails) thumbnails = $(thumbnailDOM);
// Add site config.
function addSiteConfig() {
var config = JSON.parse(prompt("Enter config in JSON format.", '{"toolbarDOM": ".sidebar form", "containerDOM": "#content", "imageDOM": "#image", "thumbnailDOM": ".thumb" }'));
if (config === null || !config || config == {}) {
alert('Config not valid.');
} else {
customSites[document.location.hostname.toLowerCase()] = config;
if (debug) console.log(customSites);
GM.setValue('customSites', customSites);
alert('Config saved.')
location.reload();
}
}
// Delete site config.
function deleteSiteConfig() {
delete customSites[document.location.hostname.toLowerCase()];
GM.setValue('customSites', customSites);
alert('Config deleted.')
location.reload();
}
// Remove the Gelcom Video player.
function removeFluidPlayer() {
if (debugMode) console.log('removeFluidPlayer');
$(playerDOM).replaceWith($(containerDOM + ' video'));
$(containerDOM + ' video').attr('id', 'image');
document.querySelector(imageDOM).outerHTML = document.querySelector(imageDOM).outerHTML; // This removes all event listeners, it seems jquery tries to maintain them.
$(containerDOM + ' video').removeAttr('style');
$(containerDOM + ' video').removeAttr('playsinline');
$(containerDOM + ' video').removeAttr('webkit-playsinline');
$(containerDOM + ' video').attr('controls', 'true');
$(containerDOM + ' video').attr('autoplay', autoplayVideos);
}
// Get window size and aspect ratio.
function getWindowProps() {
if (debugMode) console.log('getWindowProps');
//currentWindowWidth = $(window).width() - widthMargin;
//currentWindowHeight = $(window).height() - heightMargin;
currentWindowWidth = document.documentElement.clientWidth;
currentWindowHeight = document.documentElement.clientHeight;
if (currentWindowWidth !== 0 && currentWindowHeight !== 0)
currentWindowAspect = currentWindowWidth / currentWindowHeight;
}
// Get the real size of the video or image.
function getContentProps() {
if (debugMode) console.log('getContentProps');
if ($(containerDOM + ' video').length) {
contentTrueWidth = $(containerDOM + ' video')[0].videoWidth;
contentTrueHeight = $(containerDOM + ' video')[0].videoHeight;
}
else if ($(containerDOM + ' ' + imageDOM).length) {
var screenImage = $(containerDOM + ' ' + imageDOM);
var theImage = new Image();
theImage.src = screenImage.attr("src");
contentTrueWidth = theImage.width;
contentTrueHeight = theImage.height;
}
if (contentTrueWidth !== 0 && contentTrueHeight !== 0)
contentTrueAspect = contentTrueWidth / contentTrueHeight;
resizeReady = true;
}
// Resize the image (This resizes the video on some sites eg. sankakucomplex.com)
function resizeImage() {
if (debugMode) console.log('resizeImage');
$(containerDOM + ' ' + imageDOM).css('max-width', '');
if (currentWindowAspect > contentTrueAspect) {
$(containerDOM + ' ' + imageDOM)[0].width = currentWindowHeight * contentTrueAspect;
$(containerDOM + ' ' + imageDOM)[0].height = currentWindowHeight;
}
else {
$(containerDOM + ' ' + imageDOM)[0].width = currentWindowWidth;
$(containerDOM + ' ' + imageDOM)[0].height = currentWindowWidth / contentTrueAspect;
}
// Remove css from images.
$(containerDOM + ' ' + imageDOM).removeAttr('style');
}
// Resize Fluid video player.
function resizeFluidVideo() {
if (debugMode) console.log('resizeFluidVideo');
$(containerDOM + ' ' + playerDOM).css('max-width', '');
if (currentWindowAspect > contentTrueAspect) {
$(containerDOM + ' ' + playerDOM).css('width', currentWindowHeight * contentTrueAspect);
$(containerDOM + ' ' + playerDOM).css('height', currentWindowHeight);
}
else {
$(containerDOM + ' ' + playerDOM).css('width', currentWindowWidth);
$(containerDOM + ' ' + playerDOM).css('height', currentWindowWidth / contentTrueAspect);
}
}
// Resize default video.
function resizeVideo() {
if (debugMode) console.log('resizeVideo');
$(containerDOM + ' video').css('max-width', '');
if (currentWindowAspect > contentTrueAspect) {
$(containerDOM + ' video')[0].width = currentWindowHeight * contentTrueAspect;
$(containerDOM + ' video')[0].height = currentWindowHeight;
}
else {
$(containerDOM + ' video')[0].width = currentWindowWidth;
$(containerDOM + ' video').height = currentWindowWidth / contentTrueAspect;
}
}
// Scroll the window to the video or image.
function scrollToContent(delay) {
if (debugMode) console.log('scrollToContent');
setTimeout(function () {
var contentID;
if ($(containerDOM + ' ' + imageDOM).length) contentID = containerDOM + ' ' + imageDOM;
else if ($(containerDOM + ' ' + playerDOM).length) contentID = containerDOM + ' ' + playerDOM;
else if ($(containerDOM + ' video').length) contentID = containerDOM + ' video';
$([document.documentElement, document.body]).animate({
scrollTop: $(contentID).offset().top + 1
}, 0);
$([document.documentElement, document.body]).animate({
scrollLeft: $(contentID).offset().left + 1
}, 0);
}, delay);
}
// Check if resize is ready and what type of content to resize.
function fitContent(delay) {
if (debugMode) console.log('fitContent');
setTimeout(function () {
if (resizeReady) {
getWindowProps();
if ($(containerDOM + ' ' + imageDOM).length) {
resizeImage();
}
else if ($(containerDOM + ' ' + playerDOM).length) {
resizeFluidVideo();
}
else if ($(containerDOM + ' video').length) {
resizeVideo();
}
}
}, delay);
}
// Set the video auto play and volume settings.
function videoSettings() {
if (debugMode) console.log('videoSettings');
$(containerDOM + ' video').prop('autoplay', autoplayVideos);
$(containerDOM + ' video').prop('volume', videoVolume);
$(containerDOM + ' video').prop('loop', true);
if (autoplayVideos) $(containerDOM + ' video')[0].play(); else $(containerDOM + ' video')[0].pause();
}
// Remove the Gelcom player if present.
if (removeFluid && $(playerDOM).length) removeFluidPlayer();
// Get the image properties, resize, and scroll as the page is loading.
// If the image loads too quickly it wont fire the event.
if ($(containerDOM + ' video').length || $(containerDOM + ' ' + imageDOM).length) {
// Show Scrollbars
if (alwaysShowScrollbars) $('body').css({ overflow: 'scroll' });
getContentProps();
if (resizeImageToFit) fitContent(200);
if (autoScrollToContent) scrollToContent(200);
}
// Add event listener to the image or video.
if ($(containerDOM + ' video').length) {
if (debugMode) console.log('Create video event listener');
videoSettings();
$(containerDOM + ' video').on('loadedmetadata', function () { //NOTE: replaced 'loadedmetadata' with 'canplay'
var overflowChanged = function () {
console.log("Overflow changed")
}
document.addEventListener('overflow', overflowChanged)
document.addEventListener('underflow', overflowChanged)
getContentProps();
if (resizeVideoToFit) fitContent(200);
if (autoScrollToContent) scrollToContent(200);
$(containerDOM + ' video').play();
});
}
else if ($(containerDOM + ' ' + imageDOM).length) {
if (debugMode) console.log('Create image event listener');
$(containerDOM + ' ' + imageDOM).on('load', function () {
getContentProps();
if (resizeImageToFit) fitContent(200);
if (autoScrollToContent) scrollToContent(200);
});
}
// Add the event listener to the window.
if (updateWithWindowResize) {
$(window).resize(function () {
fitContent(0);
if (updateScrollOnWindowResize) scrollToContent(0);
});
}
// Setting Functions
function showSettings() {
$("#ibenhancerSettings").addClass('show');
}
function hideSettings() {
$("#ibenhancerSettings").removeClass('show');
location.reload();
}
function changeResizeButtonClicked() {
$('#resizeButton').html('?');
changeKeyboardShortcut = 'resizeButton';
}
function changeScrollButtonClicked() {
$('#scrollButton').html('?');
changeKeyboardShortcut = 'scrollButton';
}
function saveSettings() {
GM.setValue('resizeImageToFit', $('#resizeImageToFitCheckbox').is(':checked'));
GM.setValue('resizeVideoToFit', $('#resizeVideoToFitCheckbox').is(':checked'));
GM.setValue('autoplayVideos', $('#autoplayVideosCheckbox').is(':checked'));
GM.setValue('autoScrollToContent', $('#autoScrollToContentCheckbox').is(':checked'));
GM.setValue('updateScrollOnWindowResize', $('#updateScrollOnWindowResizeCheckbox').is(':checked'));
GM.setValue('updateWithWindowResize', $('#updateWithWindowResizeCheckbox').is(':checked'));
GM.setValue('showFitButton', $('#showFitButtonCheckbox').is(':checked'));
GM.setValue('showScrollButton', $('#showScrollButtonCheckbox').is(':checked'));
GM.setValue('showR34XXXLikeAndFavoriteButtons', $('#showR34XXXLikeAndFavoriteButtonsCheckbox').is(':checked'));
GM.setValue('removeFluid', $('#removeFluidCheckbox').is(':checked'));
GM.setValue('videoVolume', $('#videoVolumeInput').val());
//GM.setValue('widthMargin', $('#widthMarginInput').val());
//GM.setValue('heightMargin', $('#heightMarginInput').val());
GM.setValue('enableEnhancedThumbnails', $('#enableEnhancedThumbnailsCheckbox').is(':checked'));
GM.setValue('alwaysShowScrollbars', $('#alwaysShowScrollbarsCheckbox').is(':checked'));
GM.setValue('resizeButton', resizeButton);
GM.setValue('scrollButton', scrollButton);
hideSettings();
location.reload();
}
// Create the toolbar.
if ($(containerDOM + ' ' + imageDOM).length || $(containerDOM + ' video').length) {
if (debugMode) console.log('Create toolbar');
$(toolbarDOM).after("<div id='ibenhancer'>Image Board Enhancer<br></div>");
if (showFitButton) {
$("#ibenhancer").append("<button id='fitContentButton' style='margin-top: 3px;'>Fit</button>");
$("#fitContentButton").click(function () { getContentProps(); fitContent(0); });
}
if (showScrollButton) {
$("#ibenhancer").append("<button id='scrollContentButton' style='margin-top: 3px;'>Scroll</button>");
$("#scrollContentButton").click(scrollToContent);
}
// Create settings.
$("#ibenhancer").append("<br><button id='ibenhancerSettingsButton' style='margin-top: 3px;'>Settings</button>");
$("#ibenhancerSettingsButton").click(showSettings);
$("#ibenhancer").append(`
<div id="ibenhancerSettings">
<label><input id="resizeImageToFitCheckbox" type="checkbox" ` + (resizeImageToFit ? `checked` : ``) + `>resizeImageToFit</label>
<br>
<label><input id="resizeVideoToFitCheckbox" type="checkbox" ` + (resizeVideoToFit ? `checked` : ``) + `>resizeVideoToFit</label>
<br>
<label><input id="autoplayVideosCheckbox" type="checkbox" ` + (autoplayVideos ? `checked` : ``) + `>autoplayVideos</label>
<br>
<label><input id="autoScrollToContentCheckbox" type="checkbox" ` + (autoScrollToContent ? `checked` : ``) + `>autoScrollToContent</label>
<br>
<label><input id="updateWithWindowResizeCheckbox" type="checkbox" ` + (updateWithWindowResize ? `checked` : ``) + `>updateWithWindowResize</label>
<br>
<label><input id="updateScrollOnWindowResizeCheckbox" type="checkbox" ` + (updateScrollOnWindowResize ? `checked` : ``) + `>updateScrollOnWindowResize</label>
<br>
<label><input id="showFitButtonCheckbox" type="checkbox" ` + (showFitButton ? `checked` : ``) + `>showFitButton</label>
<br>
<label><input id="showScrollButtonCheckbox" type="checkbox" ` + (showScrollButton ? `checked` : ``) + `>showScrollButton</label>
<br>
<label><input id="showR34XXXLikeAndFavoriteButtonsCheckbox" type="checkbox" ` + (showR34XXXLikeAndFavoriteButtons ? `checked` : ``) + `>showR34XXXLikeAndFavoriteButtons</label>
<br>
<label><input id="removeFluidCheckbox" type="checkbox" ` + (removeFluid ? `checked` : ``) + `>removeFluid</label>
<br>
<label><input id="enableEnhancedThumbnailsCheckbox" type="checkbox" ` + (enableEnhancedThumbnails ? `checked` : ``) + `>enableEnhancedThumbnails</label>
<br>
<label><input id="alwaysShowScrollbarsCheckbox" type="checkbox" ` + (alwaysShowScrollbars ? `checked` : ``) + `>alwaysShowScrollbars</label>
<br>
<label>videoVolume<input id="videoVolumeInput" type="number" min="0" max="1" step="0.01" value="` + videoVolume + `" style="width:60px;">0 - 1</label>
<!--<br>
<label>widthMargin<input id="widthMarginInput" type="number" min="0" max="100" step="1" value="` + widthMargin + `" style="width:60px;">0 - 100</label>
<br>
<label>heightMargin<input id="heightMarginInput" type="number" min="0" max="100" step="1" value="` + heightMargin + `" style="width:60px;">0 - 100</label>-->
<br>
<label><button id="resizeButton">` + resizeButton + `</button> resizeButton</label>
<br>
<label><button id="scrollButton">` + scrollButton + `</button> scrollButton</label>
<br>
<button id="ibenhancerSettingsSave">Save</button><button id="ibenhancerSettingsCancel">Cancel</button>
<a href="https://icons8.com/">Icons by Icons8</a>
</div>
` );
$("#ibenhancerSettingsSave").click(saveSettings);
$("#ibenhancerSettingsCancel").click(hideSettings);
$("#resizeButton").click(changeResizeButtonClicked);
$("#scrollButton").click(changeScrollButtonClicked);
addGlobalStyle(`
#ibenhancer {
background: white !important;
color: black !important;
border: solid 1px grey;
border-radius: 4px;
padding: 5px;
width: 170px;
text-align: center !important;
margin-top: 5px;
margin-bottom: 5px;
margin-right: auto;
` + containerAlignment + `
}
#ibenhancer, #ibenhancer label {
font-size: 15px !important;
font-family: Arial, Helvetica, sans-serif !important;
font-style: normal !important;
font-weight: normal !important;
}
#ibenhancerSettings {
position: fixed;
width: 300px;
height: 320px;
left: calc(50vw - 155px);
top: calc(50vh - 165px);
background-color: white;
border: 2px solid black;
border-radius: 3px;
overflow-y: auto;
overflow-x: hidden;
padding: 10px;
text-align: left;
z-index: 999999;
display: none;
-webkit-box-sizing: unset;
-moz-box-sizing: unset;
box-sizing: unset;
color: black;
}
#ibenhancerSettings input {
margin: 5px;
width: auto;
}
#ibenhancerSettings input[type=number] {
border: solid 1px darkgrey;
}
#ibenhancer button {
padding: 3px !important;
width: auto;
border: solid 1px darkgrey !important;
margin: 2px !important;
border-radius 2px !important;
background: WhiteSmoke !important;
cursor: pointer;
}
#ibenhancerSettings.show {
display: block;
}
#fitContentButton {
width: 73px !important;
}
#scrollContentButton {
width: 73px !important;
}
#ibenhancerSettingsButton {
width: 150px !important;
}
`);
var likeButtonImage = 'data:image/png;base64,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';
var favoriteButtonImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAEZ0FNQQAAsY58+1GTAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAA3rSURBVHja5Jx7kJXlfcc/v+d5L2fPXs5e2F2QsshFIIDhJiImWmNTozaxOkmsl9FRa52mHW1njNNax8zEdho7cWzSmmgmMYaIqWBrtJOxqdEMqEFAEJCgFnTVVUBYwrKXc3nPed/n1z92QcQFlj1nYSG/mf1jz3nf5zzv9/n+Ls/v93teUYYuby1ezJ4ZM6ju7KTk+yTWUr9zJ9nGRnqbm6ndt49COo1zDjUGC2gcI56HLRaxqhTDkMS58UbkLBWZZuO4DWNOU2tbUW0B6gAfiIE+RHaL6m4plXZEvt9hYZtTfdUzpt1GEZIklNJpiGOwFgc4wBPB6+tDfB9RJejtpXvcOLwoItXVhYgQ1dUx/+c/x4uiIT2/x/GRGrV2QaL6VWCBNWYGUC+A+j6o9v99UlpQnayABgGBKgoYkSywVa3doMb8l8DLCl0j/RAjDdZiMebPgT9y1p4+6BU6RG4PADUg1ajOc9bOQ+QmVHeKMS8oPAL8GiiNxMOYERgzEJE/NbASWEU/WKeP2HL0gz0OkT8T+KWBNQZuAOqGvBAnAixn7RXAahF5SuB8ToAIzLP9DFuP592kxthRA5aoIqqzxLn/Lobhk8A8RoGI6tQklXo48f3ngM+ecLBEVXqbm/8uqq39jRfHX2I0iuoFcRA8X8hk7hPV6uMOlqjirD0tCcNnCpnMvc7zMoxiUZEgDoLbbZKsAGYeP7BUiYPggjgMX1JrLxbnqLQhHSG1BNWzMOYF5/vXjHjoYFRJjLk6Sqd/jDGpkwGkT6ImTaXa2sdKqqfZOL7vWJ7hmJhVCsObce6nKnJyArU/XhPB+f63VeSbx8bOo68E78+dS7a+/uZ948f/kFNMqru6/jHo6fnG1FWrsElSnhqqCJ2TJ1+dbWj4vl8onGpY0dPScrdXU5N11v7L0cCSQjp9eB1NEnbOnn3e9pkzfyUQnrSqd7Rg2hia29uvn7hu3aOIHNZhyTtz5hzWe/SNGTO2Z/z4NUCbnKJA7Tc1qtqXGHOus3azHE4NbRwP+kUchjbf1LQEkTZxjlNaVBGo8eBnfrH4WaB7ULAmbNky6P3tixbdXqitvcgrFvl9EYXZ5HLfampv/6tBCfjqF7/4SQTjeHq+oWGt87w6TmX1G5xliYhchDG//gQufU1Nh2YOjBjzr0Gh8PsHVL/9siryb9bac4C+j4E1rqPjY9cWw/BLPc3Nl/D7LbOK2ewtpVLpfpGPzL23Z8KEg3U2AO6puEFXRZME3T+uCGIMYo891aTOoUnykXs3BmMtiFR0vjYI/t4FwU9Ude8BsEqljzKw1piLjcinKxa/lEpoqYQJAsKWFvzaWsRaXBRR7Ooi2rsXVDFhiBhzRIBcsQiqBPX1BE1N2FQKdY64r4+os5Mkl0M8DxMElTL2zSljbkh73v0D/+PpR6trgDsq8kPO4aKI9MSJNC5YQMPcuVRPnowNw/6Yxjni7m6633iDrg0b6Fq/nlJPD7aq6hNjJVGEDUPGLF5Mw7x5ZGbPJmhsPMBKF0Xk3n+ffZs2sXf9enq3bcN4HuKVV14QQFX/Ni/ykEIOQF6+7rr91DsbWD1wXVlsskHA+MsvZ9yll2JTqaPek+3ooOPxx9m7dm3/9QNRdFIokJk5k4nXXEPtjBlDWqRdzz/P+8uXU+ruxoRhJXJh1wFLAexfzJmDiCBwDzC/LKCiiKCxkRl33EHzeedhhri6QSZD82c+gwDdmzeDCC6KGHvRRUy77TZSra1DdGRCzZQpNC5YQM+bbxLt2TPkORzBftXHSfJT5xxG+0P9tKr+cVlAFYuELS3Muusu6obAgsFkwpVXMvnmm0nyecZffjlTbrllWDaoavx4Zt11F7VnnIEbYgH1CAuwyPP98TYMsbe2tSGqixPf/xspw0bZMGTG179O9aRJZU2uZsoU0m1tjLvkEqQMD2dTKTKzZ7Pn5ZdxhcIRHchR1DDwo2hruqdnvdH+4uWVZbGqUGDCV75C7bRpFfFEY849d9gPd7CkWluZdMMNuMPsf4ds6I25LAoCTJTJEFdVnTXcrIIrlUhPnEjrhReOyuhyzOLFNMydO3x1VCX2/dn56uoqEzl3Gqozhm3/SiXGfv7z2CPkxU50+mXsF75Q3hCqE2o8b6GxIguBzHBtVdDYSNOiRaN671I/dy7ptjZ0+OooJdV5JjZmupTBqnRbG8Ehm/HRJsbzqJk0adi2S1VJiZxhqqOoTYfpddQ5UmPHnhQ749S4cR/tTY8ZbUMxl5tonO+fNuxUjCp+Xd1JAZafyQw7FBFVYmNajLO2dbgTUKiIiz8udt6YsjITakzGDLQmDje6pZTNnhRglfr6hq+G/fFWjQFqy3HLhd7ekwKsQk9PuUOEhv5m12FTu7Bnz0kBVm73bkx5JsMY+ruCh3e3teR27SLq6xvVQKkq2Z07h5WZPXizYjgkKX9MzLKWQmcnna+/PqrB6nr3XbIffFBuuqZoEOksi5vOsWvDhlEN1s5163DZbHneELJGVHeVEzpUpVLsWrOG/L59oxKouFhk+0svkRpCxvYoutxjvELhQy0nb+T7xLt38/7q1aMSrO3r1pFrbycMAoZbBVURvFKp0/SFYYcpo5iqQG1VFW/94hfEo6wlycUxry9fTnUQlFcqc45UTU2HEdimZbFTqa6qIvv227zx9NOjCqy3n3uO3q1bqU2ncWVW12ORt4zCKwyUesqRxro6tixfzt633hoVQPXu2MHGJUtorKnBlFmAFRGcyGsmEHkXka1l0V2V2jAkKBZ5+bvfJSmzSFC2+iUJq77zHejpoTaVKptVwIcSRatN2NenNoo2lFv+VlVaMhm6tm1j7YMPnlCwXv3Rj9i9aROt9fWV2YQ7t6VYLHYbE8fg3BPlYq9AYAxjGxrY+swzbHjkkRMC1GuPPcaWJ5+ktb6elLVomawa8IS/rOvpwcs3NyOqv5E43g20lKuOdb5PIZNh87Jl2CDg09dee9yA+u2yZWxcupSG2loyYVgJ9UNUoziVerInnca4XI4kn+9R51ZWah/WXFVFprqaDUuWsPZ73ysrNTKk33SOVx58kPUPP0xtOk1LOl2xUx8KG4vQXnIO78DmUuSHwFcrMDiiSks6jQNef+opon37OPvWWwlHIKsadXez5oEHaF+xgrq6Osam08jHD3KW6wmXegP23NOBtIWDFR5sBs6sBGBGhLHpNNYY2leupHv7dhZ+7Wu0nnlmxYD6cONGXnnoIfa2t9NYX09zKoXpb0eoFFB7fJGl+12fvXr+fGJjiI1xCllf9YpKPYwBanwfPI+uXbt474UX0DhmzIwZ/Q1oww0Q83k2LV3KKw89RH7vXpoyGVqqqvqrx5VSbcCD+9PG/I8ngieCrLrxxoMvqMG5zSZJTq8UYDIQ1PWUSuzJ5YgKBZqnTWPOddcx/uyzj3m89158kc2PPcbv2tsJq6oYk05T5/toBVVvYN5ZdW66qm4/8NnGz33uY2hqGN4YNTf/uOLni0UoJAm/iyL6slnEGE4//3xmfvnLNE6detT7O7dsYcsTT/DB2rX9+9F0mqYwJLS2Il7vUElUv+WS5B8OrgjJGxdf/HH37/teT0PDSpw7t9IT2P+z3aUSXVFEIZcjSKWYcO65TL/sMpo/9alDXSs7N2zg/55+mu3r15PEMamqKhpSKep8/4D3rbx71ffiXG6+U917cLAuG6+44tC4AgfnFKqrVyISMAJiRCg6R1exSF8UUSoU8IKA8QsXMunCC2maPp2d69fz7ooVfPjaazjnCFIpaoOA+iDAN2ZE2NQ/OYOLoqs0n1926K5G8tXVg7kB3lm06L6uCRNuN2W06xyVZSIU4pjeOKa3WKRUKGCsJVVXR76rCxUhTKWo8X3qfJ9wICIfqe58Zwzp7u7/bN26ddAQSlZef/3gOuv76TCOXzRJMp8RlIEWTQpJQm+pRLZUIk4SfM+jxvep9X0CY0YUpAPaZ8z2ABYF+fz2wb739DBJfONcTp27FpHVQGakTlvsByE0hlQqRX0QUHKOwBi8AZDc8TjpIRJXRdH11pjt+INXB6UvkznSAOyYNeuqzqlT/8Mc5eBipdWT48CkAwtmLZkdO+6csmbNvUcihVfd3X3EgSavXv14tqnpD7KNjd+2I2S/Dg0Gj+eZIWctNooemLJq1b3hUVoRjlqitUlCkMvd5xWL3+QUFC+KfhLkcrfaIRwVlKGsYeL7OM/jzQsuuKe3tfVucxwYNuIMFsE498jMZ5/9y6ru7uJQzlUOqfhvSyX8fB6vWPyGqt55ShytU/13VG/yCoXiUA+gHlOnhFqLLRTuDfr6bkCk+2TESFRLqnqnE7ltIFw4psTAse/GC4UlkiR/iMjmih5dG9nQAEQ6/GLxUhPH9w5n3uX04GxC9XyJ4+9XMDMyYmLieJmInCfwXDkpp3KM5D4vn/9rUb0EkdHZHaL6NnF8rVcoXKXQUW5+rhLyvwbO1yS5HfhwlMDU7UT+WZPkHJLkZ5UwF5Xsnu1zSXK/c26OEbldRN45MaZJdhr4JwdzE5G7UK1Ya2LFW40VdnvG3C/GzFG4XuFXQM8IogOQV3gJuNXCHCtyt6q+W/EAdgS3Lb3Ao6r6qBjThnOXGOf+JLH2TBnm2yVV9eBe9h3GuS0496x63tMxbBvp94gel5e6KnSIcz+QJPmBszYdGLNQVecYkTNcHE9UkVYnUi+QBlIDjHdAUSErqt3GuU4/DDuKzm2zIr8tOrfWxnGXLZUoesfn3bT/PwBvG/5zEAuJDgAAAABJRU5ErkJggg==';
// Add the like and favorite button to rule34.xxx
if (r34buttons) {
if (debugMode) console.log('r34buttons');
$("#ibenhancer").append('<br><img id="like-butt" class="custom-button" src="' + likeButtonImage + '" alt="like"><img id="favorite-butt" class="custom-button" src="' + favoriteButtonImage + '" alt="favorite">');
$("#like-butt").click(function () {
$("#stats > ul > li:contains('(vote up)') > a:contains('up')").click();
});
$("#favorite-butt").click(function () {
$("#stats + div > ul > li > a:contains('Add to favorites')").click();
});
addGlobalStyle(`
img.custom-button {
cursor: pointer;
width: 35px;
padding: 3px;
margin: 0;
border-radius: 20px;
}
.custom-button:hover {
background-color: rgba(255,255,255,.5);
}
.custom-button:active {
background-color: rgba(255,255,255,1);
}
`);
}
}
function addGlobalStyle(css) {
if (debugMode) console.log('addGlobalStyle');
var head, style;
head = document.getElementsByTagName('head')[0];
if (!head) { return; }
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
head.appendChild(style);
}
// Keyboard shortcuts
document.addEventListener('keyup', (e) => {
if (debugMode) console.log(e.code)
if (!changeKeyboardShortcut) {
if (e.code === resizeButton) { getContentProps(0); fitContent(0); }
else if (e.code === scrollButton) scrollToContent(0);
}
else if (changeKeyboardShortcut == 'resizeButton') {
resizeButton = e.code;
$('#resizeButton').html(e.code);
changeKeyboardShortcut = false;
}
else if (changeKeyboardShortcut == 'scrollButton') {
scrollButton = e.code;
$('#scrollButton').html(e.code);
changeKeyboardShortcut = false;
}
});
// Thumbnails
var gifIcon = '<img width="36px" height="36px" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAACGklEQVRoge3YzYtOURwH8A8pMkJempHyLhssyMrCWkqW/gAbG3sLlJ2yQlnYKBvRNAslCy8bb8UwTZFMTF4SylqkHot7NCPPPM99nvmd2zXdb93Oveee8/3+vvec85zze2jwf6GV6bqBhRX6yGakhZtYVLWRHJwt3MOSYP6Oojk4P6fyLgaCNWYUzcG5DR/S/X0sDdZpK5qLcwPepOenWBms1VY0F+c6TKS651gVrNdWNBfnEF6k+pdYE6xZmREYxHh69wprqxDNxbkCT9L7SWysQjQX53I8Tm3eYXMVork4l+FhavceW6sQzcU5gDumNs/tVYj2w9nr9aUT6bwSomXa9YLZfJgZ41gwC9J+0c9H6Wp+fh+ktURjpG5ojNQN0b9a63EQqxVH8yvYif0YxW0cUiRVfzCJa8Fx/INeNsQj+DGtz/i0+hbOpefr/t7obkXEETUiu3Ax3Z9WHPp+delzIrX7FhFAlJFjiessTpXsM6aYaiGIWux7UzncQ58hbBKU2kYZGUzlR5w3Nae3dOhzSfHHw8mIAKKm1s9ULsYDHNA9u7usSGlHIwKIGpHXqdyBq3hWos8wzghaJ1FGRlJ5XJGqVo6oqXUBh7EbX8UnY10RZeQ79uEo9ijWyoTC1FvFJjiW2j5SGP0UpF0KOVLdftA1jjlzaGyM1A2NkbqhMVI3NEbqhsZI3VD20FiH81ZHzJkRaVA3/AZ83criPw8nKgAAAABJRU5ErkJggg=="/>';
var videoIcon = '<img width="36px" height="36px" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAABEElEQVRoge2ZOw6CQBCGP4yPOxgTr0Jj4m1sLT2Lpa2FpQV6Aq08htEaGzAbAkjiLOxO5ksIMJB/+NlndsEwjC5cgTzSIwNICiO55F8ZgGRcDTjXeU0stPi3AEYoQY0RNW1ETYm0NfYYsMYeLGYkNMxIaPgwcgJuwMqD9k/KKbGkVg4cgaWQbluu5oCA+Ms5b4GpkH5druaAgPgc2Dv3D2AtlKOaqzkgKJ4Cd/xUt16NAEyADfAsnr2BHTCTzuXbSMkCODjvXKRyqRlHSqxqdRBPibyxq+l+1QyI0U9RzvQ3afRqpE/0jSNmJDTMSGioMVJd+42xCwYUl4htvQ2NGiPqtt7+XQQYkmzoDzCMGPgA6oe4sKj4htcAAAAASUVORK5CYII="/>';
var soundIcon = '<img width="36px" height="36px" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAADUUlEQVRoge2ay28NcRTHP0ouTURaifQRbERrIUJSm2o3XsEGGyQNrQV2UhW0C+y8/gLBP+AdIULtStKEpGwRjZASj0pb8Wi5HYtzJjN+nblzZ+ZOp0O/yWRuzjm/me/3/h5zfmcGpvH/oRK4AowAj4Cl6dKJhrlAL2C5joepMoqA2UA3Qv4VUK+/f6VJKixmApcR4h+AOrXbvZIJzAAuIISHgJUuX6aEnEPIfgOaDF9mhHQhRMeAzR7+TAhpA8aBPLDTJ2bKC9kB/EaE7C8QF1bIWqAmBq9Q2ASMIgQ7A2LDCKkFvgCfge2R2RWJRmRSW8gkD0IYIVXAbY3PA+1RCBaDFcg/ZgEXkWU3CFHmyGFEiAV0hGwbiCXAe734VeQBWAyiTvYWREyeEg6zWqBfCXUjqUixCBJSBuzzuWaHth1UDr7IAWeBd64bFjp6kaQwDIKEtKv/GbDYw39L/TcL3eRMAHHzmB9GgSJISBPwXGPeMlFMNbIdsIDVfhcZ0IDGmGTitq0AenB6xhxmp9R3Iy7BpIUAzANeaOxJw1eFbAVGkU1b5JuUWshyYL1HbJPGjjCR8D31tcYhWEohOeCp2k54xNsbswOG3V4UzschWEoh5cAxZKhYwEYjvg3vVcrurSdxCCYxR46o/b5hr1P7a8Neq/aBOASTELJA7Z8Me7nafxj2Oaa9LCKhUsMvxbHzt3HDXmbap4qQPXruM+wL9fzRsNur2JDXxdKa7F04k32DEb8X78nerPbHtiHtHskju8tZwHHggeFv0fNdw96gZ7MHgXQfiOs8Yu1/fRhJW9yYcg9EP1QAL/FOUaqRofgTnxTFThrXlIhM1LaVSLHbQoZOzvCfVt91vwvYAWmm8c04PfEGWGT4a4CvyLLbgA9yiBi7Z4KOJDdWfR4iwClG+KbwYTAZW11zOIGTxgxSwlqXu/hwjeSLD7txig/bIrQvCHc56BLJlYOOInPCAg6FbFs0ki7Q3dH4PHAwCsEwmIyS6dbI7ELinyhi22jFea2wyycmzsN0UtGJEB0Dtnj4MyMEpFppAd+RJ7UbmRJivgxd5fJlSghMfD1dr/bMCYG/PxjoB5bp70x9MGDD6xOOnlQZxUAlMsyGERGZ/KhmGmHxB25kbiUBv+xoAAAAAElFTkSuQmCC"/>'
var flashIcon = '<img width="36px" height="36px" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAAA5UlEQVRoge2aQQrCMBREp+I1vE+P1Ru48XwumgO4dqWbBCW0JJUf/5DMg9BSPuEPM/BLWkAIcZQZQADwIl1r7LHIStBsjZgiqZiVzf5ODo00QULYkBA2JIQNKyFPlIfYN8vO85/pxpGz8X5XALeKOvM3ByshU7w+ANyN9jyEV7TMHbEWMpVL2mAlxE1AQtHaYbho0TuyoDzVm9DNZLeO1hLv85VDHy23QwsvIbSOpPgM54g5ilbGsNGidSTRjSO1/EWwTuM9kRA2JIQNCWFj68g0ALiAe5aEmqIZ3N/aq38YEEJ8eAOEJqp6Qxx7zgAAAABJRU5ErkJggg=="/>';
var straightIcon = '<img width="36px" height="36px" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAB+0lEQVRYhe2VvU4bQRSFPyMai7+IGC+Si+QlIqXEdCBh06dza/MEEMlAQ8ET5DHiUPEKSfgRBhnyBogEAW4sLKeYM5phWRbHuysUiSOtZu7snXvO3Ds/8IoXRi7D2INheMcyFDAUshSQ0xcA7Qx5YmHJB8Cp2rjS/BMKwBZwANwBXeBIYwFQBE5E2Abm0xRQBa69gOHvD9BR/0SCSEtAFegr0FegDEzoKwMtj+gckwmLxAIKuJWvx/htyOd3SEBibOFWDlCTkCiSb/LdTIO4pPZQQReA90APt9Ll0JxF/fuZlLwK7Kh/q6CTQB5YBfY11gcq3rwpjd8lIbc1340QYJEDmrjd/1bjsxq7iSN47iZcA2aAadm/1H7wfAYSsAe80RyAj2ovnuGIha35kuxN2a0I33DNv3jiRoZN+azsAibNNrD/mtqa25Tv8rAkI6HL45pXcBfRPmYj5iME7AArScjBlaAcGl8CrvSvB7zDleCHfEqkAHvxRNW8iLmEarL3SKHmAONeP8DVfCNmzmceH8OREGCe1E+y53Cv2gBzvS5i9sSk+nblfVKoeV3B7oEGcCy7g8vEU89vYnKLZij4MSYTRWAbszG7mCP6Xf6J0h7GPHDpCWikGXwY8jMRWxH3uD2RORoiPZOYpuxDHp6OTFEXuW8HT/i+4v/HXxZ7pgDQ+AB1AAAAAElFTkSuQmCC"/>';
var gayIcon = '<img width="36px" height="36px" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAABR0lEQVRIidXUuUoEQRgE4G9lI49kA1ERD8zFGxRTfTuDVbxeQgWPFzEQM48HkNXAI9FgerAde9adEQMLmoauv6t+pv5p/jsaFevfq+r0VTSojKoGDQzj8g96IRJ/j/ayz1aKKRziHi+4RhsLBfHhOgabeIwuplYu7oe6b5iOxE+xjH7M4ii6uFy417PBYSReRAMngd9P8HE2pQb3gVhKkWhhBs0u4l2Dfw3EYIIbxW5o4lXN4O8CsVg4X8eT7oGmgv+GA58Z5L/+ODoFsTZWcRadzacEi5jyOUUXWMN2QfwBY6G+EZrJTXvCRqLjfHVC5zGWAnfVqwFMykbxFm9h38ZIonYoGDxXMYjRlI1mq4RfCQY3dQ22gsCx9Mt7Hvi9ugbjsmBzkzkMyDrPxTuYqGtANk1lD2BHNhi/xgh2fA1+zy87/x/4AGsUjtWIwZ1aAAAAAElFTkSuQmCC"/>';
var lesbianIcon = '<img width="36px" height="36px" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAABmklEQVRYhe3VzWoUQRSG4Sciiegsso8guFDJBIxZZPwBb0SvRO9AJUyMczEJBrJNFm4muhVF14KKJDAxLuqEaYZJVUUHImE+KKrofr9zTnV3nWaq/1xL6GIfP2Psx7WlBncDr/ABvzJctWbRwxGOTxkDbOAqdiu42bMk3w7zAdbRwbUYnQh4GMxbLOAlHmI+w1UV0QvDF9zNcMvBHOP1BDik9zWQdp5LfhvPcE/a4QDtDF/L6Ual64VC1/Abj/EmPGsFTxX3PqDVQrB3wXVwP9b9gqeK+xFQqxDsW4Nrxfp7wTOWu1QwnabLjfVMzIOCZ2yu0YufY85+KCPcYqw/FjwnMT/lCtiO+UkhWJO7Ij3anYLn6Yh3rNpS9zuQzm8t9xy3MvyK4TG8UyjUhmEjyhVRy63ga7DdUnKYw1YYDiPRA+krnscjqe1ez3CtWPcMW/FmxK7SnNSMcj+jvUhU4o5i59U/o6baUv/uNwLu4gVuFrh+FLdoQjoJPCkOf9+IJqZpATOZe9Xv8V9ynfsTOIump+BiFjDVuesPLa+Y7uSJITcAAAAASUVORK5CYII="/>';
var transIcon = '<img width="36px" height="36px" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAABQElEQVRYhe2WzWrCQBSFP93W7jT2QbpX+wBiwQepiyKlXdUHstiXyM4/EATfwKKl6q6tXeQOCalNZuwNguTAZSCcOefcmWEykOPEKCjr7V29isoBnKEdoCDlAVNlbWtUgAnBdpgxaWsyM58BV5oBPKAHDIEtsAPG8q3K784rMk8lQBv4iIjFaw3MD5irBGgD3yLSB2rAhVQdeImYzGPm/4ZH2Pl9Aq9LuBJVzQA9ws7TMBDus2aAkYjWLLgN4Q41A2xEtGTBvRTuzsUg7SZ0+VcY7pdmgIWM1xZahrNIZDkGeJXxzkKrE5ujAg94J9jbbgLvQTgroKwZAOAW+BSDAcFpL0ndEHS8F05L29ygBbzx91W8BJpZmRuUgSfAjxj7wCMZLHsa1H6xZ/ckc4bLTZe25Ee9sE++AsciP4Q51PADChhdsZzcLLgAAAAASUVORK5CYII="/>';
var trapIcon = '<img width="36px" height="36px" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAABw0lEQVRoge2aTU7DMBCFPyrogp4AIXGKcojeA4mLUCgHgHbFKdggRFcIbgGrFhYtC2AFErCIU0WOaZz4p1Pwk6xk0rHnvYwnsatAGR1gBMyBb2FtDgwVx0qMBBCuauc2QvJMdG2cI6NLxm1m45yrlgojv5ZFx1XWTK2a0KErllAzxZqwnjG6o2vNuExVU000FuJaM777G8fbdAhgi1tT4BjwnRFXWPGxeWqtBZIQaUhCpCEJkYYkRBr+tZAWcAfcR7Ibo2pt01P2QyQ72FrrUB0vItmNsewO7AAfwCewG8Gu4rNA3YwcAFvAJTCJYDth2R14VOe9SHYVnwVsdojFHd6zaleRbD1+Lax6R1iFtENcC/j4F8XXNNxw6ZwyYkDTO+olo6Ey0gZOgSnZi22grkVF3cevyX9QuJ63QcB4wQaeUhbyFDBesKllIval2XvAdaD4CxIhptaJ5jPWfvfOz8fAbTIxE34v9ncECzlWBPsW/W4QLORNnb9a9MtrRKSQPpmYoxDE6voHGzhkPJ9LlJXuYdKisQCn5bcv/JmMmIS8qKPEj2r21XFu4zykvLyQ1s5shHTIvv2YCSCst5kSsa2T/gH6y/OoeKJUAQAAAABJRU5ErkJggg=="/>';
var threeDIcon = '<img width="36px" height="36px" src=" data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TtSIVBTuIiGSoThb8QhylikWwUNoKrTqYXPohNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APEydFJ0UVK/F9SaBHjwXE/3t173L0DhFqJqWbbGKBqlpGMRcVMdkUMvKIDQwB6MS4xU4+nFtLwHF/38PH1LsKzvM/9ObqVnMkAn0g8y3TDIl4nnt60dM77xCFWlBTic+JRgy5I/Mh12eU3zgWHBZ4ZMtLJOeIQsVhoYbmFWdFQiaeIw4qqUb6QcVnhvMVZLVVY4578hcGctpziOs1BxLCIOBIQIaOCDZRgIUKrRoqJJO1HPfwDjj9BLplcG2DkmEcZKiTHD/4Hv7s185MTblIwCrS/2PbHMBDYBepV2/4+tu36CeB/Bq60pr9cA2Y+Sa82tfAR0LMNXFw3NXkPuNwB+p90yZAcyU9TyOeB9zP6pizQdwt0rbq9NfZx+gCkqaulG+DgEBgpUPaax7s7W3v790yjvx+GhXKv1Px9cwAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+QGHgATDBbeK4EAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAB30lEQVRYw+3Wz4tNYRzH8RcuMkXM+JH8Wih2sjJKSX6nlLKwuZQoCzuxIzU7/4IysaCUSBZufmSjqJmtH1MjC8KQ8auIabo2z9Sdp+fcc87cuzyferrd5znn0/s8z/l+vodKlSpVqjRNs8JvD/ZgBzZjI5ZgDn7hLZ7hOp5neD3FtsR8E7/xAyMYwp02PuBluLHIuIZaBlCzxHiCtVlAoyXNLnQBqIkx9LcDGsLxQD4XK3ECPyOjkQJAj8J8DUtxEPcTUB/QF5sNo97mSAcik48lgGJdTEDdKPvyX4oMGh0AwePo2kmsy4OYjzU4GR3ZZEY1lQE6nNil01kX7895CQ+1KfuiQH0J78swu8SxfcF5POxC/o1jIppbXhZoWXiK19jSIVAzayEF1AgJPg8rsA+vWtZX4zYWdQDUG2KlVWN5OzSBz3iAM9HaKuzsAGh7Ym64zJGlcmdxB0CnEg9/bwqoHhK0XQ7sTsy9myHMuVDJrRrEp6k/9fCS/cUV7AqdfgHW4yz+RSX6NeRU0dbRi724myj3USxsNarPoCke7VJzfY9NsdGREgbfcaxgMOaNRmje01TDzbBtB7AVG0JI9YQ2MY4XodquhoAsmzl/8A1vwofZrfBlUalSpUqV8vQfDaH2dxUuD8sAAAAASUVORK5CYII="/>';
if (!unsupportedThumbnailPage && thumbnails.length > 0) {
$('body').append(`<a href="#" id="thumbPlusPreviewLink" style="">
<div id="thumbPlusPreview" class="">
<div id="thumbPlusPreviewImage"></div>
<div style="position: relative;">
<span id="thumbPlusPreviewGif" class="thumbPlusPreviewIcon">` + gifIcon + `</span>
<span id="thumbPlusPreviewVideo" class="thumbPlusPreviewIcon">` + videoIcon + `</span>
<span id="thumbPlusPreviewFlash" class="thumbPlusPreviewIcon">` + flashIcon + `</span>
<span id="thumbPlusPreviewSound" class="thumbPlusPreviewIcon">` + soundIcon + `</span>
<span id="thumbPlusPreview3D" class="thumbPlusPreviewIcon">` + threeDIcon + `</span>
<span id="thumbPlusPreviewStraight" class="thumbPlusPreviewIcon">` + straightIcon + `</span>
<span id="thumbPlusPreviewGay" class="thumbPlusPreviewIcon">` + gayIcon + `</span>
<span id="thumbPlusPreviewLesbian" class="thumbPlusPreviewIcon">` + lesbianIcon + `</span>
<span id="thumbPlusPreviewTrans" class="thumbPlusPreviewIcon">` + transIcon + `</span>
<span id="thumbPlusPreviewTrap" class="thumbPlusPreviewIcon">` + trapIcon + `</span>
</div>
</div>
</a>`);
$('#thumbPlusPreview').css({ backgroundColor: $('body').css("background-color"), backgroundImage: $('body').css("background-image") });
$('#thumbPlusPreview').mouseout(function () {
$('#thumbPlusPreview').removeClass('show gif video sound flash straight gay lesbian trans threed trap');
})
thumbnails.each(function () {
$(this).mouseover(function () {
thumbnailMouseOver(this);
})
});
function thumbnailMouseOver(thumb) {
if ($('img', thumb).attr('oldtitle') && $('img', thumb).attr('oldtitle') != '')
var title = $('img', thumb).attr('oldtitle');
else
var title = $('img', thumb).attr('title');
var tags = title.split(' ').filter(function (el) {
console.log(el.toLowerCase())
if (el) return el.toLowerCase();
});
if (tags.includes("webm")) $('#thumbPlusPreview').addClass('video');
else if (tags.includes("mp4")) $('#thumbPlusPreview').addClass('video');
else if (tags.includes("animated_gif")) $('#thumbPlusPreview').addClass('gif');
else if (tags.includes("flash")) $('#thumbPlusPreview').addClass('flash');
else if (tags.includes("flash_animation")) $('#thumbPlusPreview').addClass('flash');
else if (tags.includes("video")) $('#thumbPlusPreview').addClass('video');
else if (tags.includes("animated") && animationTagIsGif && !tags.includes("sound")) $('#thumbPlusPreview').addClass('gif');
else if (tags.includes("animated")) $('#thumbPlusPreview').addClass('video');
if (tags.includes("sound")) $('#thumbPlusPreview').addClass('sound');
else if (tags.includes("audio")) $('#thumbPlusPreview').addClass('sound');
else if (tags.includes("has_sound")) $('#thumbPlusPreview').addClass('sound');
else if (tags.includes("has_audio")) $('#thumbPlusPreview').addClass('sound');
else if (tags.includes("video_with_sound")) $('#thumbPlusPreview').addClass('sound');
if (tags.includes("hetero")) $('#thumbPlusPreview').addClass('straight');
else if (tags.includes("straight")) $('#thumbPlusPreview').addClass('straight');
else if (tags.includes("male/female")) $('#thumbPlusPreview').addClass('straight');
if (tags.includes("yaoi")) $('#thumbPlusPreview').addClass('gay');
else if (tags.includes("gay")) $('#thumbPlusPreview').addClass('gay');
else if (tags.includes("male/male")) $('#thumbPlusPreview').addClass('gay');
if (tags.includes("yuri")) $('#thumbPlusPreview').addClass('lesbian');
else if (tags.includes("lesbian")) $('#thumbPlusPreview').addClass('lesbian');
else if (tags.includes("female/female")) $('#thumbPlusPreview').addClass('lesbian');
if (tags.includes("futanari")) $('#thumbPlusPreview').addClass('trans');
else if (tags.includes("newhalf")) $('#thumbPlusPreview').addClass('trans');
else if (tags.includes("dickgirl")) $('#thumbPlusPreview').addClass('trans');
else if (tags.includes("shemale")) $('#thumbPlusPreview').addClass('trans');
else if (tags.includes("intersex")) $('#thumbPlusPreview').addClass('trans');
if (tags.includes("trap")) $('#thumbPlusPreview').addClass('trap');
else if (tags.includes("otoko no ko")) $('#thumbPlusPreview').addClass('trap');
if (tags.includes("3d")) $('#thumbPlusPreview').addClass('threed');
$('#thumbPlusPreview').css({ top: thumb.offsetTop, left: thumb.offsetLeft });
$('#thumbPlusPreviewImage').css({ backgroundImage: 'url(' + $('img', thumb).attr('src') + ')' });
$('#thumbPlusPreviewImage').attr('title', title);
var height = $('img', thumb).height() * 1.555;
if (height) $('#thumbPlusPreviewImage').css({ height: $('img', thumb).height() * 1.555 })
if ($(thumb).attr('href'))
$('#thumbPlusPreviewLink').attr('href', $(thumb).attr('href'));
else
$('#thumbPlusPreviewLink').attr('href', $('a', thumb).attr('href'));
$('#thumbPlusPreview').addClass('show');
}
addGlobalStyle(`
#thumbPlusPreview {
display: none;
position: absolute;
z-index: 9999;
top: 0;
left: 0;
border: 2px solid black;
border-radius: 5px;
flex-direction: column !important;
align-content: center !important;
justify-content: center !important;
align-items: center !important;
flex-grow: 4 !important;
margin-left: -50px;
margin-top: -50px;
width: 280px;
min-height: 280px;
max-height: 380px;
}
#thumbPlusPreview.show {
display: flex;
}
#thumbPlusPreviewImage {
width: calc(100% * 0.833);
height: calc(100% * 0.833);
margin-left: auto;
margin-right: auto;
background-repeat: no-repeat;
background-position: center top;
background-size: contain;
}
.thumbPlusPreviewIcon {
display: none;
height: 36px;
width: 36px;
background-color: #fff5;
border-radius: 3px;
padding: 2px;
}
#thumbPlusPreview.gif #thumbPlusPreviewGif,
#thumbPlusPreview.video #thumbPlusPreviewVideo,
#thumbPlusPreview.sound #thumbPlusPreviewSound,
#thumbPlusPreview.flash #thumbPlusPreviewFlash,
#thumbPlusPreview.straight #thumbPlusPreviewStraight,
#thumbPlusPreview.gay #thumbPlusPreviewGay,
#thumbPlusPreview.lesbian #thumbPlusPreviewLesbian,
#thumbPlusPreview.trans #thumbPlusPreviewTrans,
#thumbPlusPreview.trap #thumbPlusPreviewTrap,
#thumbPlusPreview.threed #thumbPlusPreview3D {
display: inline-block;
}
`);
}
}
catch (e) {
console.error(e);
}
if (debugMode) console.log('End of script.');
})();