/*
*  GrokSSJsonpCustom
*  Customize for GMO
*/ 
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 'even';
};
// 取得ワード数の最大値を返す関数を定義
Grok.SSCustom.prototype.getMax = function(){
    return 20;
};
// 解析対象のクエリーを返す関数を定義
Grok.SSCustom.prototype.getTargetQuery = function(){
    var inputElms, targetQuery = '';
    inputElms = document.forms[0].getElementsByTagName('input');
    for (var i = 0, len = inputElms.length;i < len;i++) {
        if (inputElms[i].name == 'search') {
            targetQuery = inputElms[i].value;
        }
    }
    return targetQuery;
};
// ロードしたワードリスト表示をする関数を定義
Grok.SSCustom.prototype.showWordList = function(grokSearchData) {
    // grokSearchData.data = ['xxx', 'xxx', 'xxx']
    var wordList = [];
    if (grokSearchData && grokSearchData.data.length > 0) {
        for (var i = 0, len = grokSearchData.data.length;i < len;i++) {
            // li エレメントを生成
            var liHTML = '<a href="http://sf.super-search.jp/kg/1/keyword/?search=' + encodeURIComponent(grokSearchData.data[i]) +'" ';
            liHTML += 'onmouseover="sp_ov(\'' + grokSearchData.data[i] + '\'); return true;" onmouseout="sp_ot();">';
            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('menu')[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('menu')[0].style.display = 'none';
    alert('nodata');
};

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

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