maloomf9 / FurAffinity Thumbnail hax

// ==UserScript==
// @name          FurAffinity Thumbnail hax
// @namespace	  http://www.furaffinity.net/maloo
// @version       0.7
// @description   Expands thumbnails when you mouseover them & restores the old gallery layout. USE WITH ADBLOCK FOR BETTER LOAD TIMES! Edit this script to change settings and see more.
// @include       *://*furaffinity.net/browse*
// @include       *://*furaffinity.net/gallery/*
// @include       *://*furaffinity.net/scraps/*
// @include       *://*furaffinity.net/favorites/*
// @include       *://*furaffinity.net/msg/submissions*
// @include       *://*furaffinity.net/search*
// @include       *://*furaffinity.net/controls/*
// @run-at document-start
// ==/UserScript==


//USE WITH ADBLOCK FILTER TO PREVENT DOUBLE-HIT TO FA THUMBNAIL SERVERS. It also improves your load times, if you want a selfish reason.
//Manually add http://t.facdn.net/*@200*$~collapse and http://t.facdn.net/*@300*$~collapse to your filters.

(function() {
    
    // size thumbnail is scaled down to while not hovered over
    var size = 250;
    
    // set desired delay until enlarged thumbnail is shown (in seconds)
    var popupDelay = 0.25;
    
    // set transition duration here (in seconds)
    var transitionDuration = 0.25;
	
	// size thumbnail is scaled to after hovering over
	var currentSize = 400;

	//Actual thumbnail image size. FA generates thumbnails at 50, 100, 150, 200, 300, and 400. Any other number will result in errors.
	//Matching the size above means that, when hovered over, the thumbnail expands to it's full, unzoomed size.
	var thumbSize = 400;
	//
    // Code starts here    
    // ========================================================================  



function addGlobalStyle(css) {
    var head, style;
    head = document.documentElement;
    if (!head) { console.log("I failed"); return; }
    style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
}


    
    
    // calculate margin for default sized thumbnail
    var margin = Math.floor((currentSize - size) / -2);
	
addGlobalStyle( getGalleryCss(size) +
        'section.gallery figure.t-image b u a[href^="/view/"]:hover {position:relative;z-index:10;margin:' + margin + 'px !important;-moz-transition: all ' + transitionDuration + 's ease-in-out ' + popupDelay + 's !important}' +
        'section.gallery figure.t-image b u a[href^="/view/"]:hover img {max-width:' + currentSize + 'px !important;max-height:' + currentSize + 'px !important;-moz-transition: all ' + transitionDuration + 's ease-in-out ' + popupDelay + 's !important}' +
    	'section.gallery figure {overflow:visible !important;}' + // needed for hover effect
		'section.gallery {overflow:visible !important;}' /* +
    	'center.flow.nodesc span, center.flow.nodesc small {display:none !important}'*/ // hack because we need to set overflow:visible*/
    );  
	function getGalleryCss(size) {
        return '' +
        'section.gallery figure {width:' + (size + 10) + 'px !important;}' +
        'section.gallery.s-200 figure {height:' + (size + 10) + 'px !important;}' +
        'form.messages-form section.messagecenter.nodesc.s-200 figure {height:' + (size + 30) + 'px !important;}' +
        'section.gallery u {height:' + (size + 10) + 'px !important;}' +
        /*'center.flow.with-titles-usernames b {height:' + (size + 54) + 'px !important;}' +
        'center.flow.with-titles b {height:' + (size + 40) + 'px !important;}' +*/
        //'section.gallery.with-checkboxes figure {height:' + (size + 76) + 'px !important;}' + //76
        'section.gallery img {width: auto !important;height: auto !important;max-width:' + size + 'px !important;max-height:' + size + 'px !important;}'; //Thumnail Size
    }

//window.addEventListener('DOMContentLoaded', function(e) {
//while (document.getElementsByClassName('cat')[0] == null)
//{
//
//}

/*document.addEventListener("DOMContentLoaded", function(event)
{
	console.log("Replacing Images");
	for(var i=0; i<image_elements.length; i++) {

		var image_element = image_elements[i];
		if( image_element.src.search("/poetry/") == -1 && image_element.src.search("/music/") == -1 && image_element.src.search("/stories/") == -1 && image_element.src.search(".swf") == -1 ) {
			image_element.src = image_element.src.replace("@200","@" + thumbSize);
			image_element.src = image_element.src.replace("@300","@" + thumbSize);
		}   
	}
}

});*/

document.addEventListener("DOMContentLoaded", ReplaceImages);
  
function ReplaceImages()
{
	console.log("DOM Content Trigger");
	image_elements = document.getElementsByTagName('img');
	for(var i=0; i<image_elements.length; i++) {

		var image_element = image_elements[i];
		if( image_element.src.search("/poetry/") == -1 && image_element.src.search("/music/") == -1 && image_element.src.search("/stories/") == -1 && image_element.src.search(".swf") == -1 ) {
			image_element.src = image_element.src.replace("@200","@" + thumbSize);
			image_element.src = image_element.src.replace("@300","@" + thumbSize);
			image_element.src = image_element.src.replace("@400","@" + thumbSize);
		}   
	}
	document.removeEventListener("DOMContentLoaded", ReplaceImages);
}

})();