// ==UserScript==
// @name          NoAd_with_flickr_mixi
// @namespace     http://www.smzl.info/home/tn/
// @include       http://mixi.jp/*
// @include       http://*.mixi.jp/*
// ==/UserScript==

(function() {

	if (true) {

		var scripts = document.getElementsByTagName('script');
		
		var cur1 = scripts.item(1);
		var cur2 = scripts.item(2);
		var next = cur1.nextSibling;
		
		var table = document.createElement("table");
		table.setAttribute("align", "center");
		table.setAttribute("width", "553");
		table.setAttribute("height", "60");
		table.setAttribute("border", "0");
		table.setAttribute("background", "http://img.mixi.jp/img/title2-.gif");
		table.innerHTML = '<tr><td> </td></tr>';
		
		cur1.parentNode.insertBefore(table, cur1);
		
		cur1.parentNode.removeChild(cur1);
		next.parentNode.removeChild(next);
		
		if (document.URL == "http://mixi.jp/" || 
			document.URL == "http://mixi.jp/home.pl") {
			
			var olpng = 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAKXRFWHRDcmVhdGlvbiBUaW1lAIyOIDYgMTEgMjAwNiAwMDo1MjozMSArMDkwMNpDEssAAAAHdElNRQfWCwUPNQYIs7QPAAAACXBIWXMAAB7CAAAewgFu0HU+AAAABGdBTUEAALGPC/xhBQAAAA1JREFUeNpjYGBg2A8AAMQAwORq6hMAAAAASUVORK5CYII=)';
			var loading = 'url(data:image/gif;base64,R0lGODlhEAAQAJEAAAAAAJSUlP///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFFAAAACwAAAAAEAAQAAACJ5SPqTjte9yDQjZaLbZjawyGwUgaZCmco6myp4uqAbymrf3i8R0eBQAh+QQJFAAAACwBAAEADgAOAAACIIwvqXm42syDcbJqY7C8+9skw0hqIjmaAppi7KC+MVsAACH5BAUUAAAALAEAAQAOAA4AAAIfjC9yy8kfHFxymmrxTbz7Dw7iCAojGZ5Dqa7pyaplAQAh+QQFFAAAACwBAAEADgAOAAACIJwvEsuHypYzKcpZ7Rw57s4k4kiW5glFpxWslquaLMwUADs=)';
			
			// LoadingArea
			var objOverlay = document.createElement("div");
			with (objOverlay.style) {
				position = "absolute";
				top = "0";
				left = "0";
				height = document.body.scrollHeight + "px";
				width  = "100%";
				background = olpng;
				display = "none";
			}
			objOverlay.addEventListener("click", function () { objOverlay.style.display = "none"; }, false);
			document.body.appendChild(objOverlay);

			var objArea = document.createElement("div");
			with (objArea.style) {
				float = "left";
				textAlign = "center";
				background = "none";
			}
			objOverlay.appendChild(objArea);
			
			
			// Tables
			next = cur2.nextSibling;
			var table1 = document.createElement("table");
			
			table1.setAttribute("BORDER", "0");
			table1.setAttribute("CELLSPACING", "0");
			table1.setAttribute("CELLPADDING", "0");
			table1.setAttribute("WIDTH", "224");
			table1.innerHTML = 
				'<TR><TD WIDTH="30"><a href="http://www.flickr.com/explore/interesting/7days/" target="_blank"><IMG SRC="http://img.mixi.jp/img/date1.gif" WIDTH="30" HEIGHT="20" BORDER="0"/></a></TD>' + 
				'<TD STYLE="background: url(http://img.mixi.jp/img/date2.gif) no-repeat;" WIDTH="194"><B><FONT COLOR="FFFFFF">Flickr</FONT></B></TD></TR>';
			var table2 = document.createElement("table");
			table2.setAttribute("border", "0");
			table2.setAttribute("cellpadding", "1");
			table2.setAttribute("cellspacing", "0");
			table2.setAttribute("bgcolor", "#FF9933");
			table2.setAttribute("width", "100%");
			table2.setAttribute("STYLE", "margin-bottom: 5px;");
			table2.innerHTML = 
				'<tr><td>' + 
				'<table BORDER="0" CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BGCOLOR="#FFFBE8"><tr><td align="center"><a href="http://www.flickr.com/"><img src="http://www.flickr.com/images/flickr_logo_gamma.gif.v1.2" border="0"/></a></td></tr></table>' +
				'</td></tr>';
			
			cur2.parentNode.insertBefore(table1, cur2);
			cur2.parentNode.insertBefore(table2, cur2);
			
			cur2.parentNode.removeChild(cur2);
			next.parentNode.removeChild(next);
			
			var imgflickr, aflickr;
			var imgs = document.getElementsByTagName('img');
			var as = document.getElementsByTagName('a');
			for (var i=0; i<imgs.length; i++) { if (imgs.item(i).getAttribute("SRC") == 'http://www.flickr.com/images/flickr_logo_gamma.gif.v1.2') { imgflickr = imgs.item(i); break; } }
			for (var i=0; i<as.length; i++) { if (as.item(i).getAttribute("href") == 'http://www.flickr.com/') { aflickr = as.item(i); break; } }
			
			// Flickr
			
			GM_xmlhttpRequest({
				method:"GET",
				url:'http://www.flickr.com/explore/interesting/7days/?',
				onload:function(response) {
					//<a href="/photos/lawatt/286912415/" title="docklines"><img src="http://static.flickr.com/106/286912415_43f1efa1d7_m.jpg" width="240" height="240" alt="docklines" /></a>
					var imgtag = response.responseText.match(/<img.*static.*\/>/i)[0];
					var imgm = imgtag.match(/http.*jpg/i)[0];
					var imgn = imgm.split("_m.jpg")[0] + ".jpg";
					var imgt = imgm.split("_m.jpg")[0] + "_t.jpg";
					var imgo = imgm.split("_m.jpg")[0] + "_o.jpg";
					imgtag.match(/.*width=\"(\d+)\".*height=\"(\d+)\".*/i);
					var mw = RegExp.$1;
					var mh = RegExp.$2;
					var tw = (mw>mh)?100:Math.floor(mw*100/mh);
					var th = (mw<mh)?100:Math.floor(mh*100/mw);
					var nw = (mw>mh)?500:Math.floor(mw*500/mh);
					var nh = (mw<mh)?500:Math.floor(mh*500/mw);
					
					imgflickr.setAttribute("src",imgt);
					//imgflickr.setAttribute("width",tw);
					//imgflickr.setAttribute("height",th);
					aflickr.setAttribute("href",imgn);
					
					var show_overlay = function (e) {
						while (objArea.firstChild) objArea.removeChild(objArea.firstChild);
						objOverlay.style.display = "block";
						with (objArea.style) {
							background = loading + ' no-repeat 50% 50%';
							margin = window.scrollY + ((window.innerHeight - nh) / 2) + "px 0 0 0";
						}

						var imgover = document.createElement("img");
						imgover.src = imgn;
						with (imgover.style) {
							float = "left";
							margin = "10px";
						}
						objArea.appendChild(imgover);
						//objArea.style.background = "none";

						e.preventDefault();
						e.stopPropagation();
					}

					aflickr.addEventListener("click", show_overlay , false);
					
					/*
					document.evaluate(
						"//a[starts-with(@href, 'static.flickr.com')]",
						document,
						null,
						XPathResult.FIRST_ORDERED_NODE_TYPE,
						null).singleNodeValue.addEventListener("click", show_overlay , false);
					*/
					
				}
			});



		}


	}

})();

