// JavaScript Document

// タイマー用オブジェクト
function SuggestTimer( target, result_id, url )
{
//alert(target + result_id + url);

  this.target = target;
  this.result_id = result_id;
  this.url = url;
  this.checkInput = function () {
    inputText(this.target, this.result_id, this.url);
  }
  this.start = function () {
    this.timer = setInterval(this.checkInput.bind(this), 700);
  }
  this.stop = function (){
    clearInterval(this.timer);
  }
}
// イベントハンドラ内でthisによりオブジェクトを参照する
Function.prototype.bind = function ( object ) {
  var __method = this;
  return function() {
    return __method.apply( object, arguments );
  }
}
var timer;
// テキストボックスにフォーカスが当たった場合の処理
function focusText( target, result_id, url )
{
  timer = new SuggestTimer( target, result_id, url );
  timer.start();
}
// テキストボックスのフォーカスが外れた場合の処理
function blurText( )
{
  timer.stop();
}

// テキストボックスのデータが変更された場合の処理
function inputText( target, result_id, url )
{
	

//IEのGETメソッドでの通信キャッシュ対策
var date = new Date();
var timestamp = date.getTime();

//alert(prefname);

  // テキストボックスの値を取得
  var text = target.value;
  // GETデータ
  var data = 'key=' + encodeURIComponent(text)
					+"&time="
					+ timestamp;
					
					
  // リクエスト、コールバック関数にはtarget.id, result_idを引数に追加
  sendRequest( url, 
               function (req) { checkData(req, target.id, result_id)},
               'POST',
               data );
}
// レスポンスデータを取得
function checkData( req, target_id, result_id )
{
  // 出力先のトップ要素となるdiv要素
  var topElem = document.getElementById(result_id);
  // div要素の子要素クリア
  deleteMenu(topElem);
  
  // カンマで分割して各単語を取得
  var words = req.responseText.split(',');
  // 最初と最後の単語は無視し、各単語を出力
  for(var i = 1; i < words.length-1; i++) {
    // テキストノード作成
    var text = document.createTextNode(words[i]);
    // <a>要素作成
    var aElem = document.createElement('a');
    aElem.setAttribute("href",
      "javascript:selected('"+words[i]+"', '"+target_id+"', '"+result_id+"')");
    aElem.appendChild(text);
    // <div>要素作成
    var divElem = document.createElement('div');
    // mouseover/mouseoutによるスタイルを設定
    divElem.onmouseover = function (){
      this.style.backgroundColor = "#AAA";
    }
    divElem.onmouseout = function (){
      this.style.backgroundColor = "#EEE";
    }
    divElem.appendChild(aElem);
    topElem.appendChild(divElem);
  }
  //document.getElementById('BoxDATE').style.display = "block";
  //document.kaisaichiform.Smonth.focus();

}
function selected(str, target_id, result_id)
{
  // テキストボックスに値を入力
  document.getElementById(target_id).value = str;
  // 出力先のトップ要素となるdiv要素
  var topElem = document.getElementById(result_id);
  // div要素の子要素クリア
  deleteMenu(topElem);

	var obj = document.forms["keysearch"];
	obj.submit();
}
function deleteMenu(topElem)
{
  var child = topElem.childNodes;
  var length = child.length;
  for(var i = 0; i < length; i++) {
    topElem.removeChild(child[0]);
  }

}


