//var jquery_loader = 'http://localhost/shared/img/loadingAnimation.gif';
var jquery_loader = 'http://www.backlog.jp/shared/img/loadingAnimation.gif';
//var json_search_data = 'http://localhost/demo/support/search_data.txt';
var json_search_data = 'http://www.backlog.jp/support/search_data.txt';
var json_search_keyword = '';
var json_search_is_loaded = false;
var json_search_entries;

function json_search_archive() {
    var result_data = new Array();

    json_search_keyword = json_search_keyword.replace(/([\/\\\.\*\+\?\|\(\)\[\]\{\}\$\^])/g, "\\$1");
    json_search_keyword = json_search_keyword.replace(/( +|　+)/, ' ');
    json_search_keyword = json_search_keyword.replace(/( |　)$/, '');

    var keywords = json_search_keyword.split(/ |　/);
    var key = new Array();

    for (var i = 0;i < keywords.length;i++) {
        key[key.length] = new RegExp(keywords[i], "i");
    }

    for (var i = 0;i < json_search_entries.length - 1;i++) {
        var is_match = true;

        for (var j = 0;j < key.length;j++) {
            var res_body = key[j].exec( json_search_entries[i].body );
            var res_title = key[j].exec( json_search_entries[i].title );

            if (!res_body && !res_title) {
                is_match = false;
            }
        }

        if (is_match) {
            result_data[result_data.length] = json_search_entries[i];
        }
    }

    var result_html = '';

    if (result_data.length == 0) {
        result_html = '一致しませんでした';
    } else {
        result_html = json_search_result_html(result_data, keywords);
    }

    $('#search-content').css('height', 'auto')
                .css('background-image', 'none')
                .html(result_html)
                .slideDown();
    $('#categoryBlock').slideUp();
    
    jQuery('#module-content a[href*=#]').click(function() {
        if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
            var $target = jQuery(this.hash);
            $target = $target.length && $target || jQuery('[name=' + this.hash.slice(1) +']');
            if ($target.length) {
                var targetOffset = $target.offset().top;
                jQuery('html,body').animate({
                    scrollTop: targetOffset
                }, 'slow');
                return false;
            }
        }
    });

}

function json_search_result_html(result_data, keywords) {
    var html = '<p id="search_notice">※スペースでAND検索が出来ます。</p><div id="module-content"><h2>【&nbsp;'+ keywords +'&nbsp;】で検索した結果一覧<span>（' + result_data.length + '件ヒット ）</span></h2><ul>';

    for (var i= 0;i < result_data.length;i++) {
        html += '<li><a href="' + result_data[i].link +  '">' + result_data[i].title + '</a></li>';
    }

    html += '</ul><p class="search_hide"><a class="SearchClose" href="javascript:void(0)" style="font-weight:bold;" onclick="clear_block(\'#search-content\')"><span>△ 検索結果を閉じる</span></a></p></div>';

    return html;
}

function json_search() {
    json_search_keyword = $('input#search_box').val();

    $('#search-content').html('')
    .css('height', '100px')
    .css('background', 'transparent url(' + jquery_loader + ') no-repeat center center');

    if (json_search_is_loaded) {
        json_search_archive();
    } else {
        $.ajax({
            url: json_search_data,
            type: 'GET',
            dataType: 'xml',
            timeout: 1500,
            error: function() {
                $('#search-content').css('height', 'auto')
                .css('background-image', 'none')
                .html('Error loading XML document');
            },
            complete: function(xml) {
                var data_string = xml.responseText;

                data_string = data_string.replace(new RegExp('<.*?>', "i"), '');
                json_search_entries = eval(data_string);

                json_search_archive();

                json_search_is_loaded = true;
            }
        });
    }
}

function clear_block(blockid) {
    $(blockid).slideUp();
    $('#categoryBlock').slideDown();
}
