/*
*  GrokSSJsonpCustom
*/ 
Grok.SSCustom = function(symbolName) {
    // カスタムオブジェクトのシンボル名を登録
    this.symbolName = symbolName;
    // type を返す関数を定義
    this.getType = function(){
        return 'demo';
    };
};
Grok.SSCustom.prototype = new Grok.SSCore();
// マッチングポリシーを返す関数を定義
Grok.SSCustom.prototype.getPolicy = function(){
    // 'match' -> マッチ精度重視
    // 'ppc'   -> 単価重視
    // 'even'  -> match | even の中間
    return 'match';
};
// 取得ワード数の最大値を返す関数を定義
Grok.SSCustom.prototype.getMax = function(){
    return 20;
};
// 解析対象のクエリーを返す関数を定義
Grok.SSCustom.prototype.getTargetQuery = function(){
  // urlから対象クエリーを抽出
  var param = location.href + '&';
  param = param.match(/\?(.+)/);
  var targetQuery = '';
  if (param != null && param.length == 2) {
    param = param[1];
    query = param.match(/keyword=([^&]*)/);
    targetQuery = query[1];
/*
    while ( param != null && param != '' ) {
      query = param.match(/(.+?)=(.*?)&/);
      param = RegExp.rightContext;
      if ( query != null ) {
        targetQuery = query[2];
      }
    }
*/
    // 抽出したクエリはURIエンコードされているのでデコードする
	return decodeURIComponent(targetQuery);
  }
  // クエリの抽出が出来なかった場合は空文字を返す
  return ''
}

// ロードしたワードリスト表示をする関数を定義
Grok.SSCustom.prototype.showWordList = function(grokSearchData) {
    // grokSearchData.data = ['xxx', 'xxx', 'xxx']
    var wordList = [];
    if (grokSearchData && grokSearchData.data.length > 0) {

    this.targetQuery = decodeURIComponent(this.getTargetQuery());

// 以下５行追加、HTMLエスケープ
    this.targetQuery = this.targetQuery.replace(/&/g,"&amp;") ;
    this.targetQuery = this.targetQuery.replace(/"/g,"&quot;") ;
    this.targetQuery = this.targetQuery.replace(/'/g,"&#039;") ;
    this.targetQuery = this.targetQuery.replace(/</g,"&lt;") ;
    this.targetQuery = this.targetQuery.replace(/>/g,"&gt;") ;

    var div = document.createElement('div');
    div.className = 'contents_box_title';
    div.innerHTML = '<p><img src="http://' + location.hostname + '/images/icon_web.gif" width="20" height="22" /><p>' + this.targetQuery + 'に関連するキーワード</p>'; 
    div.setAttribute('class', 'contents_box_title');

    Grok.SSUtil.getElementsByClassName('right_ov_trend')[0].appendChild(div);

        for (var i = 0, len = grokSearchData.data.length;i < len;i++) {
            // li エレメントを生成
            var liHTML = '<a href="http://' + location.hostname + '/type/ts/page/1/?keyword=' + encodeURIComponent(grokSearchData.data[i]) + '&area=sponsor-right' + '">';
            liHTML += grokSearchData.data[i] + '</a>';
            var li = document.createElement('li');
            li.className = (i % 2)? 'odd': 'even';
            li.innerHTML = liHTML
            wordList.push(li);
        }
        if (wordList.length > 0) {
            // ul エレメントを生成し、ドキュメントに追加
            var ul = document.createElement('ul');
            Grok.SSUtil.getElementsByClassName('right_ov_trend')[0].appendChild(ul);
            // li エレメントを ul に追加
            // クロージャでスライドダウン効果を実装
            var appendClosure = (function(ul, wordList) {
                var timer = null;
                var index = 0;
                var loopMax = wordList.length
                return function() {
                    timer = setInterval(function() {
                        if (index < loopMax) {
                            ul.appendChild(wordList[index]);
                        } else {
                            clearInterval(timer);
                        }
                        index++;
                    }, 10)
                }
            })(ul, wordList);
            appendClosure();
        }
    } else {
        this.noDataHandler();
    }
};
// ロードしたワードリストが空だった場合の処理を定義
Grok.SSCustom.prototype.noDataHandler = function() {
    Grok.SSUtil.getElementsByClassName('right_ov_trend')[0].style.display = 'none';
    //alert('nodata');
};

// シンボル名をパラメータに指定し、GrokSearchCustom のコンストラクタをコール
Grok.GrokSS4ov = new Grok.SSCustom('Grok.GrokSS4ov')

// window の load イベントで処理を開始
Grok.SSUtil.addListener(window, 'load', function() {
    Grok.GrokSS4ov.invoke();
});

