// ==UserScript==
// @name          Useful_pya
// @namespace     http://www.smzl.info/home/tn/
// @include       http://pya.cc/*
// ==/UserScript==

var OK_18 = 0;		// 18+デフォルト表示 (0:OFF 1:ON)
var OK_GRO = 0;		// グロデフォルト表示 (0:OFF 1:ON)
var MAX_IMAGE = 0;	// 表示枚数指定 (0:すべて表示)

main();

function proc(targeturl, hanflg) {
	GM_xmlhttpRequest({
		method:"GET",
		url:targeturl,
		onload:function(response) {
			
			var inner, imgid;
			inner = response.responseText;
			
			if (inner.match(/\.\/pickpimg.php\?imgid=(\d+)/i)) {
				
				imgid = RegExp.$1;
				var objImg = document.getElementById('I' + imgid);
				var objTD = document.getElementById('S' + imgid);
				var imgsrc = inner.match(/http:\/\/61.197.151.26\/[^\"^\']*/gi)[0];
				
				if (hanflg == '') {
					if (imgsrc.indexOf('video.gif') == -1) {
						objImg.setAttribute("src", imgsrc);
						objImg.setAttribute("width", "400");
						if (inner.match(/<SPAN CLASS=\"tk\">(.*?)<\/SPAN>.*<SPAN CLASS=\"tk\">(.*?)<\/SPAN>/i)) {
							var sunkan = RegExp.$1 + RegExp.$2;
							objTD.innerHTML = '<SPAN CLASS="tk">' + sunkan + '</SPAN>';
						}
					} else {
						var videosrc = inner.match(/http:\/\/61.197.151.26\/[^\"^\']*/gi)[1];
						objImg.parentNode.innerHTML = 
							'<EMBED TYPE="application/x-mplayer2"  PLUGINSPAGE="http://microsoft.com/windows/mediaplayer/en/download" Width="350"  Height="350"  Src="' + videosrc + '"  AutoSize="0"  AutoStart="0"  ClickToPlay="1" DisplaySize="0" EnableContextMenu="1" EnableFullScreenControls="1" EnableTracker="1" TransparentatStart="1" Mute="0" PlayCount="1" ShowControls="1" ShowAudioControls="1" ShowDisplay="0" ShowGotoBar="0" ShowPositionControls="1" ShowStatusBar="1" ShowTracker="1"> </EMBED>';
						if (inner.match(/<SPAN CLASS=\"tk\">(.*?)<\/SPAN>.*<SPAN CLASS=\"tk\">(.*?)<\/SPAN>/i)) {
							var sunkan = RegExp.$1 + RegExp.$2;
							objTD.innerHTML = '<SPAN CLASS="tk">' + sunkan + '</SPAN>';
						}
					}
				} else {
					objImg.setAttribute("src", 'http://pya.cc/pyaimg/' + hanflg);
					ayes = document.createElement("a");
					ayes.setAttribute("href", "javascript:void(0)");
					ayes.innerHTML = "YES";
					objTD.appendChild(ayes);
					var chg_img = function (e) {
						
						objImg.setAttribute("src", imgsrc);
						objImg.setAttribute("width", "400");
						var sunkan = "";
						if (inner.match(/<SPAN CLASS=\"tk\">([^>]*)<\/SPAN>.*<SPAN CLASS=\"tk\">([^>]*)<\/SPAN>/i)) {
							sunkan = RegExp.$1 + RegExp.$2;
						}
						objTD.innerHTML = '<SPAN CLASS="tk">' + sunkan + '</SPAN>';
						e.preventDefault();
						e.stopPropagation();
					}
					ayes.addEventListener("click", chg_img , false);
				}
				
				objImg.parentNode.parentNode.setAttribute("name", "loaded");
				
				
			} else {	// 判定ページ (再帰)
				if (inner.match(/spimg.php\?imgid=(\d+)/i)) {
					imgid = RegExp.$1;
					var objImg = document.getElementById('I' + imgid);
					var objTD = document.getElementById('S' + imgid);
					
					var han = inner.match(/han.gif|gro.gif/i);
					if ( (OK_18 == 1 && inner.match(/han.gif/i)) || (OK_GRO == 1 && inner.match(/gro.gif/i)) ) {
						proc(targeturl.replace(/(.*)pimg(.*)/, "$1spimg$2"), '');
					} else {
						proc(targeturl.replace(/(.*)pimg(.*)/, "$1spimg$2"), han);
					}
				}
			}
		}
	});
}

function main() {
	
	if (document.location.pathname == '/' || 
		document.location.pathname == '/index.php' || 
		document.location.pathname == '/kako.php') {
		var apimgs = new Array();
		var as = document.getElementsByTagName('a');
		for (var i=0; i<as.length; i++) { if (as.item(i).getAttribute("href").indexOf('pyaimg/pimg.php?imgid=') != -1 && as.item(i).parentNode.getAttribute("width") == "400") { apimgs.push(as.item(i)); } }
		
		var zoomin = 'url(data:image/gif;base64,R0lGODlhEAAQAJECAP///1+UEP///wAAACH5BAEAAAIALAAAAAAQABAAAAInVI6Zpu0BYnwHKOswRDrpn0GS1XFmFaJqU0rPCFPcKFduLeIOgwsFADs=)';
		var zoomout = 'url(data:image/gif;base64,R0lGODlhEAAQAJECAP///1+UEP///wAAACH5BAEAAAIALAAAAAAQABAAAAImVI6Zpu0BYnwHKOvwzbxZOWmJiJBV511TBoJU6b6QJFdmHTC1UAAAOw==)';
		var zoomin6 = 'url(data:image/gif;base64,R0lGODlhJwAQAJECAP///1+UEP///wAAACH5BAEAAAIALAAAAAAnABAAAAJEVI6pyx3mopyg1okbUDv70IFI+Enh+V0maG3kKkbo8SbumM0xc9MqPPotSJ0ar9Xi7YollmW4YzV9wimmas1OIVqMoAAAOw==)';
		var zoomout6 = 'url(data:image/gif;base64,R0lGODlhJwAQAJECAP///1+UEP///wAAACH5BAEAAAIALAAAAAAnABAAAAJBVI6pyx3mopyg1okbUDv70HFfFiYldTKbdaVO55rqCyLx4t6rfVFcP7MdbiYWaxaCjUBHUQk4ai4/0Kn1+sB6BAUAOw==)';
		var zoominall = 'url(data:image/gif;base64,R0lGODlhJwAQAJECAP///1+UEP///wAAACH5BAEAAAIALAAAAAAnABAAAAJIVI6pyx3mopyg1okbUDv70IFI+Enh6VwHSS6bdbWJKo4Rump5veu9vOuwTBzazNLjpWAwzkwJvDVttuYUcy19jNquNwH5ZgQFADs=)';
		var zoomoutall = 'url(data:image/gif;base64,R0lGODlhJwAQAJECAP///1+UEP///wAAACH5BAEAAAIALAAAAAAnABAAAAJFVI6pyx3mopyg1okbUDv70HFfFiYlF5anaF0rch1q9L6gjMM0Y3e+KTlZeMObLthqiXSzTxLIHCpJxdEoZs1qF5BtRlAAADs=)';
		
		var pimgurl = new Array();
		var pimgid = new Array();
		var pimgtr = new Array();
		var pimgnewtr = new Array();
		var pimgnewtd = new Array();
		var pimgnewimg = new Array();
		var sunkannewtr = new Array();
		var sunkannewtd = new Array();
		
		var ocadiv;
		var oc6div = new Array();
		var occdiv = new Array();
		
		var max = (MAX_IMAGE<=0 || MAX_IMAGE>6*12)?6*12:MAX_IMAGE;
		if (max > apimgs.length) max = apimgs.length;
		
		for (var i=0; i<max; i++) {
			
			pimgurl[i] = "http://pya.cc/" + apimgs[i].getAttribute("href");
			pimgid[i] = pimgurl[i].split('=')[1];
			pimgtr[i] = apimgs[i].parentNode.parentNode.nextSibling.nextSibling;
			pimgnewtr[i] = document.createElement("tr");
			pimgnewtd[i] = document.createElement("td");
			pimgnewimg[i] = document.createElement("img");
			sunkannewtr[i] = document.createElement("tr");
			sunkannewtd[i] = document.createElement("td");
			
			pimgnewtd[i].setAttribute("colspan", "5");
			pimgnewtd[i].setAttribute("align", "center");
			pimgnewimg[i].setAttribute("id", "I" + pimgid[i]);
			pimgnewimg[i].setAttribute("name", "I" + pimgid[i]);
			sunkannewtd[i].setAttribute("colspan", "5");
			sunkannewtd[i].setAttribute("align", "center");
			sunkannewtd[i].setAttribute("id", "S" + pimgid[i]);
			pimgnewtr[i].appendChild(pimgnewtd[i]);
			pimgnewtd[i].appendChild(pimgnewimg[i]);
			sunkannewtr[i].appendChild(sunkannewtd[i]);
			pimgtr[i].parentNode.insertBefore(pimgnewtr[i], pimgtr[i]);
			pimgtr[i].parentNode.insertBefore(sunkannewtr[i], pimgtr[i]);
			
			pimgnewtr[i].style.display = "none";
			sunkannewtr[i].style.display = "none";
			
			// event function -----
			var open_imgs = function (e) {
				var ocid = parseInt(e.target.getAttribute("id").split("+")[0]);
				var ocidn = parseInt(e.target.getAttribute("id").split("+")[1]);
				var ocstate = e.target.getAttribute("name");
				
				var setdisplay,setstate;
				var zooms = new Array();
				
				if (ocstate == "open") {
					setdisplay = "table-row"
					setstate = "close";
					zooms[0] = zoomout;
					zooms[1] = zoomout6;
					zooms[2] = zoomoutall;
				} else {
					setdisplay = "none"
					setstate = "open";
					zooms[0] = zoomin;
					zooms[1] = zoomin6;
					zooms[2] = zoominall;
				}
				
				for (var k=ocid; k<ocid+ocidn; k++) {
					if (k>=max) break;
					if (ocstate == "open" && pimgnewtr[k].getAttribute("name") != "loaded") proc(pimgurl[k], '');
					pimgnewtr[k].style.display = setdisplay;
					sunkannewtr[k].style.display = setdisplay;
					occdiv[k].style.background = zooms[0] + ' no-repeat 50% 50%';
					occdiv[k].setAttribute("name", setstate);
				}
				if (ocidn == 6) {
					e.target.style.background = zooms[1] + ' no-repeat 50% 50%';
					e.target.setAttribute("name", setstate);
				} else if (ocidn == max) {
					e.target.style.background = zooms[2] + ' no-repeat 50% 50%';
					e.target.setAttribute("name", setstate);
					for (var k=0; k<oc6div.length; k++) {
						oc6div[k].style.background = zooms[1] + ' no-repeat 50% 50%';
						oc6div[k].setAttribute("name", setstate);
					}
				}
				
				e.preventDefault();
				e.stopPropagation();
			}
			
			// create buttons -----
			occdiv[i] = document.createElement("div");
			occdiv[i].setAttribute("id", i + "+1");
			occdiv[i].setAttribute("name", "open");
			with (occdiv[i].style) {
				float = "left";
				height = "16px"; width = "16px"; margin = "0 0 0 0"; border = "0";
				background = zoomin + ' no-repeat 50% 50%';
			}
			occdiv[i].addEventListener("click", open_imgs , false);
			
			var tmptd = document.createElement("td");
			tmptd.appendChild(occdiv[i]);
			tmptd.setAttribute("bgcolor",apimgs[i].parentNode.getAttribute("bgcolor"));
			tmptd.setAttribute("align","right");
			apimgs[i].parentNode.setAttribute("colspan","3");
			apimgs[i].parentNode.parentNode.appendChild(tmptd);
			
			if (i%6==0) {
				j=Math.floor(i/6);
				var octr = document.createElement("tr");
				
				// ALL
				var ocatd = document.createElement("td");
				ocatd.setAttribute("colspan", "2");
				ocatd.setAttribute("align", "left");
				ocatd.setAttribute("valign", "bottom");
				if (i==0) {
					ocadiv = document.createElement("div");
					ocadiv.setAttribute("id", 0 + "+" + max);
					ocadiv.setAttribute("name", "open");
					with (ocadiv.style) {
						float = "left"; height = "16px"; width = "39px"; margin = "0 0 0 0"; border = "0";
						background = zoominall + ' no-repeat 50% 50%';
					}
					ocadiv.addEventListener("click", open_imgs , false);
					ocatd.appendChild(ocadiv);
				}
				octr.appendChild(ocatd);
				
				// x6
				var oc6td = document.createElement("td");
				oc6div[j] = document.createElement("div");
				oc6td.setAttribute("colspan", "3");
				oc6td.setAttribute("align", "right");
				oc6td.setAttribute("valign", "bottom");
				oc6div[j].setAttribute("id", i + "+6");
				oc6div[j].setAttribute("name", "open");
				with (oc6div[j].style) {
					float = "left"; height = "16px"; width = "39px"; margin = "0 0 0 0"; border = "0";
					background = zoomin6 + ' no-repeat 50% 50%';
				}
				
				oc6div[j].addEventListener("click", open_imgs , false);
				oc6td.appendChild(oc6div[j]);
				octr.appendChild(oc6td);

				apimgs[i].parentNode.parentNode.previousSibling.parentNode.insertBefore(octr, apimgs[i].parentNode.parentNode.previousSibling);
			}
			
			//proc(pimgurl[i], '');
		}
	}
}
