//////////////////////// //File : blog_ajax_json_search.js //site : http://java.cocolog-nifty.com/ //author: naoyuki //year : 2006 //この作品は、クリエイティブ・コモンズの帰属-同一条件許諾 2.1 日本ライセンスの下でライセンスされています。この使用許諾条件を見るには、http://creativecommons.org/licenses/by-sa/2.1/jp/をチェックするか、クリエイティブ・コモンズに郵便にてお問い合わせください。住所は:559 Nathan Abbott Way, Stanford, California 94305, USA です。 //////////////////////// var is_loaded = false; var backnumber_url_list; var entries; var search_keyword; var result_content; var timerId; load_center_id(); function load_center_id() { var center = document.getElementById( 'center' ); if ( center ) { ligting_search_keyword( center ); } else { window.setTimeout( 'load_center_id()', 5000 ); } } function ligting_search_keyword( center ) { var args = getHashArgs(); var searched_keyword = args.search_word; if ( searched_keyword ) { searched_keyword = searched_keyword.replace( /([\/\\\.\*\+\?\|\(\)\[\]\{\}\$\^])/g, "\\$1" ); searched_keyword = searched_keyword.replace( /( +| +)/, ' ' ); searched_keyword = searched_keyword.replace( /( | )$/, '' ); var keywords = searched_keyword.split(/ | /); var h3 = center.getElementsByTagName( 'h3' ); h3[0].innerHTML = highlight( h3[0].innerHTML, keywords ); var div = center.getElementsByTagName( 'div' ); for ( var i = 0; i < div.length; i++ ) { if ( div[i].className == 'entry-body-text' || div[i].className == 'comment-content' ) { // patched by furyu: add 'comment-content' div[i].innerHTML = highlight( div[i].innerHTML, keywords ); } } } } function getHashArgs () { var args = new Object(); var query = location.href.replace(/.*?#/,""); query = decodeURIComponent( query ); var pairs = query.split("&"); for ( var i = 0; i < pairs.length; i++ ) { var pos = pairs[i].indexOf('='); if ( pos == -1 ) continue; var argname = pairs[i].substring( 0, pos ); var value = pairs[i].substring( pos + 1 ); args[argname] = value; } return args; } function blogAjaxJsonSearch( archive_file_path, text ) { search_keyword = text; var div_tag = document.getElementsByTagName('div'); for ( var i = 0; i < div_tag.length; i ++ ) { if ( div_tag[i].className == 'result' ) { // Pached by Dificlo result_content = div_tag[i]; } } result_content.innerHTML = 'now searching.'; added_period( result_content ); if ( is_loaded ) { search(); } else { new Ajax.Request( archive_file_path, {method: 'get', onComplete: function(request){ parse_archive_data( request ); } } ); } } function added_period( content ) { if ( !is_loaded ) { result_content.innerHTML += '.'; timerId = setTimeout("added_period()", 50 ); } } function parse_archive_data( request ) { var data_string = request.responseText; data_string = data_string.replace( new RegExp( '<.*?>', "i"), '' ) entries = eval( data_string ); search(); } function show_all_backnumbers() { var text = '
    '; for ( var i = 0; i < entries.length-1; i++ ) { // patched by furyu: entries.length => entries.length-1 text += '
  1. ' +entries[i].title + ''; } text += '
'; document.getElementById('center').innerHTML = text; } function search() { var result_data = new Array(); search_keyword=search_keyword.replace( /([\/\\\.\*\+\?\|\(\)\[\]\{\}\$\^])/g, "\\$1" ); search_keyword = search_keyword.replace( /( +| +)/, ' ' ); search_keyword = search_keyword.replace( /( | )$/, '' ); var keywords = search_keyword.split(/ | /); var key = new Array(); for (var i= 0;i entries.length-1 var is_match = true; for ( var j= 0; j
    '; for ( var i= 0; i' + highlight( result_data[i].title, keywords ) + '
    ' + highlight( trunc( result_data[i].body, keywords[0] ), keywords ) + ''; } html += '

[Go Back Page][Go Back Index]

'; return html; } // Add by Digiclo function build_no_result_html( result_data, keywords ) { var html = '
※スペースでAND検索が出来ます。
※この状態からの2度目の検索は非常に高速です。

検索結果(0件ヒット )

    一致するものはありませんでした。

    '; html += '

[Go Back Page][Go Back Index]

'; return 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 = 55; text = text.substring( start, index ) + text.substr( index, length ) + text.substr( index + length, end ) +'...'; } else { text = text.substring( start, 50 ); } return text; } function highlight( text, keywords ) { var keyword = ''; for ( var i= 0; i' + "$1" + '' ); }