Google AJAX Searchでブログタイトル自動検索

Google AJAX Search はブログのサイドバーモジュールとして使うのがきっと正しい。ただ、訪れた人がただのGoogle検索ボックスに入力してくれるとは思えない。

そこで、ブログのタイトルをキーワードとして自動検索させればよいのではないかと思って、作ってみた。見た目にはちょっとしたAdSenseっぽくなる。広告料は入らないけど。

コードはこちら。

<!-- load google scripts -->
<script src="http://maps.google.com/maps?file=api&v=2&key=abcdefg" type="text/javascript" charset="utf-8"></script>
<script src="http://www.google.com/uds/api?file=uds.js&v=0.1&key=abcdefg" type="text/javascript" charset="utf-8"></script>

<!-- overriding style sheet -->
<style type="text/css">
@import url('http://www.google.com/uds/css/gsearch.css');
.gsc-control {
  width: 180px;
}
.gsc-result .gs-title {
  overflow: hidden;
}
</style>

<!-- drawing area -->
<input id="searchInput" type="text" style="display:none" />
<div id="searchControl" align="left"></div>

<!-- drawing script -->
<script type="text/javascript">
// fix charset of the including javascript
document.origCreateElement = document.createElement;
document.createElement = function(name) {
  var e = document.origCreateElement(name);
  if (e.tagName.toUpperCase()=='SCRIPT') {
    e.charset='utf-8';
  }
  return e;
}

// modify these parameters
var titlePrefix = 'foobar's blog:'; // Prefix of the article title 
var titlePostfix = ' - blog hosting site name'; // Postfix of the article title

// Create a search control
var searchControl = new GSearchControl();

var options = new GsearcherOptions();
options.setExpandMode(GSearchControl.EXPAND_MODE_CLOSED);

searchControl.addSearcher(new GwebSearch());
var localsearch = new GlocalSearch();
if (typeof GPoint!='undefined') {
  localsearch.setCenterPoint(new GPoint(139.70055,35.689326)); // Shinjuku
  searchControl.addSearcher(localsearch, options);
}
searchControl.addSearcher(new GvideoSearch(), options);
searchControl.addSearcher(new GblogSearch(), options);

// Tell the searcher to draw itself and tell it where to  attach
var searchInput = document.getElementById('searchInput');
var drawOptions = new GdrawOptions();
drawOptions.setInput(searchInput);
var searchDiv = document.getElementById('searchControl');
searchControl.draw(searchDiv, drawOptions);

var title = document.title;
title = title.substring(titlePrefix.length, title.length-titlePostfix.length);
searchInput.value = title;

// Execute blog title search
if (title && title.length>0) {
  searchControl.execute(title);
}
</script>

キーワード入力ボックスは見えないように設定しているけど、まあお好みで。