// ==UserScript==
// @name           GoogleInstantSearch
// @namespace      http://ma.la/
// @author         ma.la <timpo@ma.la>
// @include        http://www.google.*/
// @description    inspired by yahoo!
// ==/UserScript==
// 2005-09-17 : ver0.01
// Released under the GPL license
//  http://www.gnu.org/copyleft/gpl.html

(function(){
	var wait = 500;
	var st = document.createElement("div");
	st.innerHTML = "通信状態";
	with(st.style){
		fontSize  = "80%";
		background = "#DDF";
		marginTop = "1em";
	}
	document.f.appendChild(st)

	var div = document.createElement("div");
	div.innerHTML = "ここに結果が";
	with(div.style){
		background = "#FFF";
		width = "450px";
		margin = "5px auto";
		padding = "0.7em";
		textAlign = "left";
		border  = "1px solid #444";
		MozBorderRadius = "7px";
	}
	document.f.appendChild(div);
	
	var base = "http://"+location.host+"/search";
	var query;
	var qbox = document.f.q;
	var qurl;
	var lucky;
	var TimerID;
	var last = "";
	document.f.q.onkeyup = function(e){
		if(e.ctrlKey && e.keyCode == 13 && lucky){
			e.preventDefault();
			location.href=lucky;
			return
		}
		if(last == qbox.value) return;
		last = qbox.value;
		if(!last) return;
		clearTimeout(TimerID);
		qurl = qbox.value;
		query = "?q="+qurl+"&btnI=I%27m+Feeling+Lucky";
		TimerID = setTimeout(do_request,wait);
	}
	var do_request = function(){
		st.innerHTML = "取得中 : " + qurl;
		var req = new XMLHttpRequest();
		req.onreadystatechange = function(){
			if(req.readyState != 4) return;
			var lc = req.getResponseHeader("Location");
			lucky = lc;
			div.innerHTML = ['<a href="',lc,'">',lc,'</a> <small>(Ctrl+Enterで移動)</small>'].join("");
			st.innerHTML = "完了 : " + qurl;
			get_detail(lc);
		}
		req.open("GET", base+query, true);
		req.send(null);
	}
	var get_detail = function(url){
		st.innerHTML = "詳細取得中 : " + url;
		var req = new XMLHttpRequest();
		var query = "?ie=UTF-8&oe=UTF-8&q="+url;
		req.onreadystatechange = function(){
			if(req.readyState != 4) return;
			var v = req.responseText;
			var m = v.slice(v.indexOf("<!--m-->"),v.indexOf("<br clear=all>"));
			div.innerHTML = ['<div style="float:right;background:yellow;padding:2px"><small>Ctrl+Enterで移動</small></div>'].join("") + m;
			st.innerHTML = "完了 : " + url;
		}
		req.open("GET", base+query, true);
		req.send(null);
	}
})();
