// ==UserScript== // @name whirlpoolImages // @namespace http://plsek.id.au/GreaseMonkey // @description replace links to images with the image itself - V8.1 // @include http://forums.whirlpool.net.au/forum-replies* // ==/UserScript== (function(){ function injectGoogleVid() { var Trigger="http://video.google.com/videoplay?docid="; var xp='//a[contains(@href, "'+Trigger+'")]'; var gvs=document.evaluate(xp,document.body,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null); for(var i=0;i'; } } function injectYouTube() { var Trigger="http://www.youtube.com/watch?v="; var xp='//a[contains(@href, "'+Trigger+'")]'; var yts=document.evaluate(xp,document.body,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null); for(var i=0;i'+ ''; } } var imagePadding=parseInt(GM_getValue("imagePadding", "12")); var maxHeight=parseInt(GM_getValue("maximumHeight", "300")); var youTubeX=GM_getValue("embedYoutube", "false"); var youTube=(youTubeX=="true"); var googleVidX=GM_getValue("embedGoogleVid", "false"); var googleVid=(googleVidX=="true"); var EventManager= { _registry: null, Initialise: function() { if (this._registry == null) { this._registry = []; EventManager.Add(window, "_unload", this.CleanUp); } }, Add: function(obj, type, fn, useCapture) { this.Initialise(); var realType=(type=="_unload"?"unload":type); if (typeof obj == "string") obj = document.getElementById(obj); if (obj == null || fn == null) return false; if(obj.addEventListener) obj.addEventListener(realType, fn, useCapture); else if(obj.attachEvent) obj.attachEvent("on"+realType, fn); this._registry.push({obj:obj, type:type, fn:fn, useCapture:useCapture}); return true; }, CleanUp: function() { for (var i = 0; i < EventManager._registry.length; i++) { with(EventManager._registry[i]) { if(type=="unload") fn(); if(obj.removeEventListener) obj.removeEventListener(type,fn,useCapture); else if (obj.detachEvent) obj.detachEvent("on"+realType, fn); } } EventManager._registry = null; } }; var imageTable={}; function clickImage(e) { var el=e.target; if(imageTable[el.id].width) { var cWidth=el.style.width; el.style.width=imageTable[el.id].width; imageTable[el.id].width=cWidth; } else if(imageTable[el.id].height) { var cHeight=el.style.height; el.style.height=imageTable[el.id].height; imageTable[el.id].height=cHeight; } } function makeThumb(inX, inY, maxX, maxY) { var retVal={changed:false, widthChanged:false, heightChanged:false, width:inX, height:inY}; if(inX>maxX || inY>maxY) { retVal.changed=true; var xRatio=1.0*inX/(1.0 * maxX); var yRatio=1.0*inY/(1.0 * maxY); if(yRatio>xRatio) { retVal.height=maxY; retVal.heightChanged=true; retVal.width=Math.ceil((1.0*inX)/yRatio); } else { retVal.width=maxX; retVal.widthChanged=true; retVal.height=Math.ceil((1.0*inY)/xRatio); } } return retVal; } function addImageToImageAnchor(Anchor, Container, num) { var extensions=".jpeg.jpg.gif.png.bmp"; var href=Anchor.href.toLowerCase(); var dot=href.lastIndexOf("."); if(dot >= 0 && extensions.indexOf(href.substr(dot)) >= 0) { var imgObj=document.createElement('IMG'); EventManager.Add(imgObj,"load", function() { var div=document.createElement("DIV"); var img=document.createElement("IMG"); img=div.appendChild(img); img.style.border="none"; img.style.padding="0"; img.style.margin="0"; var width; if(document.defaultView && document.defaultView.getComputedStyle) width=parseInt(document.defaultView.getComputedStyle(Container, '').getPropertyValue("width")); else width=Container.clientWidth-24; width=parseInt(width); width-=(imagePadding*2); var dimension=makeThumb(imgObj.width, imgObj.height, width, maxHeight); if(dimension.changed) { img.style.cursor="move"; img.id=imgObj.alt; if(dimension.widthChanged) { img.style.width=dimension.width+"px"; imageTable[img.id]={width:imgObj.width+"px"}; } if(dimension.heightChanged) { img.style.height=dimension.height+"px"; imageTable[img.id]={height:imgObj.height+"px"}; } EventManager.Add(img, "click", clickImage, false); div.style.paddingLeft=imagePadding+"px"; div.style.paddingRight=imagePadding+"px"; } Anchor.parentNode.insertBefore(div, Anchor); img.src=imgObj.src; }, false); var id="addImage"+num; imgObj.alt=id; imgObj.src=Anchor.href; } } function configImages(e) { var newDiv=document.getElementById("wimage_config"); if(newDiv) return; newDiv=document.body.appendChild(document.createElement("DIV")); newDiv.style.position="absolute"; //newDiv.style.display="-moz-stack"; newDiv.style.top=(e.pageY-10)+"px"; newDiv.style.left=(e.pageX-10)+"px"; newDiv.style.zIndex="9999"; newDiv.style.height="164px"; newDiv.style.color="black"; newDiv.id="wimage_config"; newDiv=newDiv.appendChild(document.createElement("DIV")); newDiv.style.border="ridge 2px"; newDiv.style.padding="10px"; newDiv.style.backgroundColor="#ddddff"; newDiv.appendChild(document.createTextNode("Image padding")); newDiv.appendChild(document.createElement("BR")); var inPadding=newDiv.appendChild(document.createElement("INPUT")); inPadding.type="text"; inPadding.value=imagePadding; inPadding.id="wimage_padding"; newDiv.appendChild(document.createElement("BR")); newDiv.appendChild(document.createTextNode("Maximum height")); newDiv.appendChild(document.createElement("BR")); var inHeight=newDiv.appendChild(document.createElement("INPUT")); inHeight.type="text"; inHeight.value=maxHeight; inHeight.id="wimage_height"; newDiv.appendChild(document.createElement("BR")); newDiv.appendChild(document.createTextNode("Inline youTube")); var inYouTube=newDiv.appendChild(document.createElement("INPUT")); inYouTube.type="checkbox"; inYouTube.checked=youTube; inYouTube.id="wimage_youtube"; newDiv.appendChild(document.createElement("BR")); newDiv.appendChild(document.createTextNode("Inline Google")); var inGoogleVid=newDiv.appendChild(document.createElement("INPUT")); inGoogleVid.type="checkbox"; inGoogleVid.checked=googleVid; inGoogleVid.id="wimage_googlevid"; newDiv.appendChild(document.createElement("BR")); newDiv.appendChild(document.createElement("BR")); var inClose=newDiv.appendChild(document.createElement("INPUT")); inClose.type="button"; inClose.value="CANCEL"; EventManager.Add(inClose, "click", function() { var div=document.getElementById("wimage_config"); document.body.removeChild(div); }, false); var inSubmit=newDiv.appendChild(document.createElement("INPUT")); inSubmit.type="button"; inSubmit.value="ACCEPT"; EventManager.Add(inSubmit, "click", function() { var div=document.getElementById("wimage_config"); var pad=document.getElementById("wimage_padding"); var hgt=document.getElementById("wimage_height"); var eyt=document.getElementById("wimage_youtube"); var egv=document.getElementById("wimage_googlevid"); var imagePadding=parseInt(pad.value); var maxHeight=parseInt(hgt.value); var youTube=eyt.checked; var googleVid=egv.checked; GM_setValue("imagePadding", imagePadding.toString()); GM_setValue("maximumHeight", maxHeight.toString()); GM_setValue("embedYoutube", youTube.toString()); GM_setValue("embedGoogleVid", googleVid.toString()); document.body.removeChild(div); }, false); } var imgNum=0; var xPath=".//TD[@class='bodytext']"; var replies=document.evaluate(xPath,document.body,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null); for(var i=0;i