var jquery_loader         = '/ajax-loader.gif';
var json_search_data      = '/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 = '<h2><img src="/_commons/images/search-title.gif" alt="Search" /></h2><p id="search_notice" style="text-align:left;">一致するエントリーはありませんでした。</p><br><br>';
}
else
{
result_html = json_search_result_html(result_data, keywords);
}
$('#search-content').css('height', 'auto')
.css('background-image', 'none')
.html(result_html);
}
function json_search_result_html(result_data, keywords)
{
var html = '<h2><img src="/_commons/images/search-title.gif" alt="Search" /></h2><p id="search_notice" style="text-align:left;">検索結果（' + result_data.length + '件ヒット ）</p><div class="module-content">';
for (var i= 0;i < result_data.length;i++)
{
html += '<dl><dt><a href="' + result_data[i].link + '#search_word=' + json_search_keyword + '">' + result_data[i].title + '</a></dt><dd>' + trunc( result_data[i].body) + '</dd></dl>';
}
html += '</div><p class="search_hide"><a class="imgbutton" href="javascript:void(0)" style="font-weight:bold;" onclick="clear_block(\'#search-content\')"><span>&raquo; 検索結果を閉じる</span></a></p>';
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).html('');
}

function trunc( text, keyword ) {
    var key = new RegExp( keyword, "i" );
    var res = key.exec( text );

    if ( res ) {
    	var index  = res.index;
    	var length = res[0].length;
    	var start;
    	var end;

    	start = index - 20;
    	end = 100;
    	text = text.substring( start, index ) + text.substr( index, length ) + text.substr( index + length, end ) +'...';
    } else {
        text = text.substring( start, 100 );
    }
    return text;
}

