Google Time & Language Select

By Yamamaya Last update Mar 14, 2009 — Installed 1,093 times. Daily Installs: 7, 4, 2, 2, 5, 3, 4, 3, 2, 2, 2, 4, 2, 3, 3, 4, 3, 2, 5, 5, 2, 2, 2, 5, 6, 2, 2, 2, 3, 2, 3, 4

There are 7 previous versions of this script.

// ==UserScript==
// @name         Google Time & Language Select
// @namespace    Yamamaya
// @description  You can select time option and language.
// @include      http://www.google.*/
// @include      http://www.google.*/search*
// @include      http://www.google.*/webhp?*
// @version      1.0.8
// ==/UserScript==

(function(){	 
  var google = {
  	 init: function(){
	 	var self = this;
	 	$X('.//input[@name="btnG"]').forEach(function(item){
			self.time(item);
			if(/^http\:\/\/www\.google.(?:[a-z]{2}\.)?[a-z]{2,3}\/search\?/.test(window.location.href))
			  self.language(item);
		});
        this.remove();	
		this.submit();		 	
	 },
	 time: function(item){
        var time = document.createElement("select");
            time.setAttribute("name","as_qdr");
		    time.setAttribute("style","margin: 0px 5px 0px 3px");
            time.innerHTML = "<option selected='' value='all'>指定なし</option>"
		                   + "<option value='d'>24時間以内</option>"
						   + "<option value='w'>1週間以内</option><option value='m'>1か月以内</option>"
						   + "<option value='y'>1年以内</option>";
		item.parentNode.insertBefore(time,item);	 	
	 },
	 language: function(item){
	 	var contents;
	 	var language = {
			"英語": "lang_en",
			"スペイン語": "lang_es",
			"フランス語": "lang_fr",
			"イタリア語": "lang_it",
			"ドイツ語": "lang_de",
			"中国語 簡体": "lang_zh-CN",
			"中国語 繁体": "lang_zh-TW",
			"韓国語": "lang_ko",
			"日本語": "lang_ja"
		};
		
        var langBox = document.createElement("select");
		    langBox.setAttribute("style","margin: 0px 5px 0px 2px");
		
		contents += "<option>言語選択</option>" 
		for(var i in language){
			contents += "<div><input type='radio' id='lr' value="+language[i]+" name='lr'/><label for='lr'>"+i+"</label></div>" 
		};
		contents += "<div><input type='radio' value='' name='lr' id='all'/><label for='all'>すべての言語</label></div>";		
		langBox.innerHTML = contents;		
		item.parentNode.insertBefore(langBox,item);	 	
	 },
	 remove: function(){
	 	$X('.//select[@name="as_qdr"][2]').forEach(function(item){
			item.parentNode.removeChild(item);
		});
	 },
	 submit: function(){
         var path = ['.//node()[@value="all"]',
	                 './/node()[@value="d"]',
				     './/node()[@value="w"]',
				     './/node()[@value="m"]',
				     './/node()[@value="y"]',
				     './/node()[@name="lr"]'
				    ].join(" | ");

		 $X(path).forEach(function(button){
		 	button.addEventListener("click", Gsubmit, false);
		 });    
 
         function Gsubmit(){
	       var gform = $XS(".//form[@name='f'] | .//form[@name='gs']");	   
	       gform.submit();
         };	 	
	 }
  };

 google.init();
 
 
 function $X(exp, ctx){
   var xp = (ctx && ctx.ownerDocument || document).evaluate(exp, ctx || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null),
   r = [];
   for (var i = 0;i < xp.snapshotLength;++i) r.push(xp.snapshotItem(i));
   return r;
 };
 
 function $XS(query,node){
	 return document.evaluate(
	        query, 
	       (node||document), 
		    null, 
            XPathResult.FIRST_ORDERED_NODE_TYPE, 
		    null).singleNodeValue;
 }; 
})();