var appid = 'CdO9qESxg672wl8a6p1h8rs_zb4BvFWvqcv5DZcs7TCPEsJhiH0KDYOT5QOMUF9RJg--t';

function doSearch() {
  document.getElementById('results').innerHTML = '<p>検索中です。しばらくお待ちください。</p>';
  var script = document.createElement('script');
  script.setAttribute('type', 'text/javascript');
  script.setAttribute('src', [
    'http://api.search.yahoo.com/WebSearchService/V1/webSearch',
    '?appid=', encodeURIComponent(appid),
    '&query=', encodeURIComponent(document.getElementById('q').value),
    '&site=',  encodeURIComponent(document.getElementById('d').value),
    '&results=3',
    '&format=html',
    '&language=ja',
    '&output=json',
    '&callback=handleWebResults'
  ].join(''));
  script.setAttribute('charset', 'UTF-8');

  document.body.appendChild(script);
}

function handleWebResults(response) {
  var results = document.getElementById('results');
  var q = document.getElementById('q').value;
  var d = document.getElementById('d').value;
  var buf = [
    '<p><b>らくらく村 から',
    escapeHTML(q),
    'を検索しました</b></p>'
  ];

  if (response.Error) {
    buf.push([
      '<p>処理中にエラーが発生しました: <em>',
      r.Error.Message,
      '</em></p><hr />'
    ].join(''));
    results.innerHTML = buf.join('');
    return;
  }

  var ResultSet = response.ResultSet;

  if (ResultSet.totalResultsReturned === 0) {
    buf.push([
      '<p>該当するページが見つかりませんでした。</p><hr />'
    ].join(''));
    results.innerHTML = buf.join('');
    return;
  }

  buf.push([
    '<p>',
    ResultSet.totalResultsAvailable,
    '件見つかりました。検索結果の上位3件までが表示されるバウよ。<br>全件検索は<a href="search.asp">サイト内検索ページ</a>へ</p><hr />'
  ].join(''));

  for (var i = 0; i < ResultSet.Result.length; i++) {
    var item = ResultSet.Result[i];
    buf.push([
      '<a href="',
      item.Url,
      '">',
      item.Title,
      '</a><p>',
      item.Summary,
      '</p><p>',
      item.DisplayUrl,
      '</p><hr />'
    ].join(''));
  }

  results.innerHTML = buf.join('');
}

function escapeHTML(str) {
  return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
}
