////////////////////////
//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 です。
////////////////////////

/*--------------------------------------------------------------------------
[memo]
http://www.dakiny.com/archives/movable-type/movable_typeajyaxmt/index.php
本バージョンはDakiny氏の上記エントリーで公開されたバージョンにさらに改変を加えたものです。本バージョンに関する解説は下記です。
http://hyper-text.org/archives/2007/10/ajax_search_mt.shtml
--------------------------------------------------------------------------*/


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 = '<img class="searching" src="/img/loader.gif" width="16" height="16" alt="Searching" /> Searching .'; // modified by www watch
    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 = '<ol type=1 start=1 style="text-align:left;">';
    for ( var i = 0; i < entries.length-1; i++ ) {	//	patched by furyu: entries.length => entries.length-1
        text += '<li><a href="' + entries[i].link + '">' +entries[i].title + '</a</li>';
    }
    text += '</ol>';
    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<keywords.length;i++) {
        key[ key.length ] = new RegExp( keywords[i], "i" );
    }
    for ( var i= 0; i<entries.length-1; i++ ) {	//	patched by furyu: entries.length => entries.length-1
        var is_match = true;
        for ( var j= 0; j<key.length; j++ ) {
            var res_body = key[j].exec( entries[i].body );
            var res_title = key[j].exec( entries[i].title );
            if ( !res_body && !res_title ) {
                is_match = false;
            }
        }
        if ( is_match ) {
            result_data[ result_data.length ] = entries[i];
        }
    }
    var result_html = '';
    if ( result_data.length == 0 ) {
        result_html = build_no_result_html( result_data, keywords ); // Pached by Digiclo
    }  if ( keywords == '' ) {
        result_html = build_no_keyword_html( result_data, keywords ); // modified by www watch
    } else {
        result_html = build_search_result_html( result_data, keywords );
    }
    var div = window.document.getElementsByTagName('div');
//	var content;
//	var original_content_html = '';
//	for ( var i = 0; i < div.length; i ++ ) {
//		if ( div[i].className == 'content' ) {
//			content = div[i];
//			original_content_html = content.innerHTML;
//		}
//	}
    is_loaded = true;
    clearTimeout(timerId);
    result_content.innerHTML = result_html;
}

// modified by www watch
function build_search_result_html( result_data, keywords ) {
	var html ='<div id="main-contents"><p id="directory"><a href="http://www.wako-pallet.com/">ホーム</a>&gt;「' + search_keyword + '」の検索結果</p><h2>「' + search_keyword + '」の検索結果</h2>';
	
	html += '<p id="allitem">全' + result_data.length + '商品</p><ul>';
	
	for ( var i= 0; i<result_data.length; i++ ) {
		html += '<li><table><tr><th><a href="' + result_data[i].link + '"><img src="' + result_data[i].thum_img + '" /></a></th><td><span class="date">' + result_data[i].date + '<br /></span><span class="name"><a href="' + result_data[i].link + '">' + result_data[i].title + '</a><br /></span><span class="size">' + result_data[i].except + '<br /></span><span class="price">￥' + result_data[i].keyword + '<br /><br /></span><div class="description"><a href="' + result_data[i].link + '詳細を見る&nbsp;&nbsp;&nbsp;</div></a><div class="allclear"></div></td></tr></table></li>';
	}

	html +='</ul><p class="caption"><a href="javascript:void(0);" title="元のページに戻る" onclick="location.reload(true); return false;" onkeypress="location.reload(true); return false;">元のページに戻る</a></p></div>';
	
	html += '<div id="leftsidebar"><div id="left-item-box"><dl><dt><img src="http://www.wako-pallet.com/images/select_item.gif" alt="商品から選ぶ" width="90" height="15" /></dt><dd><a onmouseover="changeImages(\'cate_cargo\',\'http://www.wako-pallet.com/images/cate_cargo_r.gif\');return true" onmouseout="changeImages(\'cate_cargo\',\'http://www.wako-pallet.com/images/cate_cargo.gif\');return true" href="http://www.wako-pallet.com/cat23/"><img src="http://www.wako-pallet.com/images/cate_cargo.gif" name="cate_cargo" width="150" height="35" alt="カーゴプレスタ" /></a></dd><dd><a onmouseover="changeImages(\'cate_plywood\',\'http://www.wako-pallet.com/images/cate_plywood_r.gif\');return true" onmouseout="changeImages(\'cate_plywood\',\'http://www.wako-pallet.com/images/cate_plywood.gif\');return true" href="http://www.wako-pallet.com/cat32/"><img src="http://www.wako-pallet.com/images/cate_plywood.gif" name="cate_plywood" width="150" height="35" alt="合板台車" /></a></dd><!-- <dd><a onmouseover="changeImages(\'cate_dolly\',\'http://www.wako-pallet.com/images/cate_dolly_r.gif\');return true" onmouseout="changeImages(\'cate_dolly\',\'http://www.wako-pallet.com/images/cate_dolly.gif\');return true" href="http://www.wako-pallet.com/cat35/"><img src="http://www.wako-pallet.com/images/cate_dolly.gif" name="cate_dolly" width="150" height="35" alt="ドーリー台車" /></a></dd> --><!-- <dd><a onmouseover="changeImages(\'cate_eco\',\'http://www.wako-pallet.com/images/cate_eco_r.gif\');return true" onmouseout="changeImages(\'cate_eco\',\'http://www.wako-pallet.com/images/cate_eco.gif\');return true" href="http://www.wako-pallet.com/cat30/"><img src="http://www.wako-pallet.com/images/cate_eco.gif" name="cate_eco" width="150" height="35" alt="保冷用品" /></a></dd> --><dd><a onmouseover="changeImages(\'cate_hanger\',\'http://www.wako-pallet.com/images/cate_hanger_r.gif\');return true" onmouseout="changeImages(\'cate_hanger\',\'http://www.wako-pallet.com/images/cate_hanger.gif\');return true" href="http://www.wako-pallet.com/cat33/"><img src="http://www.wako-pallet.com/images/cate_hanger.gif" name="cate_hanger" width="150" height="35" alt="ハンガーラック" /></a></dd><!-- <dd><a onmouseover="changeImages(\'cate_support\',\'http://www.wako-pallet.com/images/cate_support_r.gif\');return true" onmouseout="changeImages(\'cate_support\',\'http://www.wako-pallet.com/images/cate_support.gif\');return true" href="http://www.wako-pallet.com/cat34/"><img src="http://www.wako-pallet.com/images/cate_support.gif" name="cate_support" width="150" height="35" alt="サポートロック" /></a></dd> --><!-- <dd><a onmouseover="changeImages(\'cate_nest\',\'http://www.wako-pallet.com/images/cate_nest_r.gif\');return true" onmouseout="changeImages(\'cate_nest\',\'http://www.wako-pallet.com/images/cate_nest.gif\');return true" href="http://www.wako-pallet.com/cat38/"><img src="http://www.wako-pallet.com/images/cate_nest.gif" name="cate_nest" width="150" height="35" alt="ネスティングボックス" /></a></dd> --><dd><a onmouseover="changeImages(\'cate_wood\',\'http://www.wako-pallet.com/images/cate_wood_r.gif\');return true" onmouseout="changeImages(\'cate_wood\',\'http://www.wako-pallet.com/images/cate_wood.gif\');return true" href="http://www.wako-pallet.com/cat31/"><img src="http://www.wako-pallet.com/images/cate_wood.gif" name="cate_wood" width="150" height="35" alt="木製パレット" /></a></dd><!-- <dd><a onmouseover="changeImages(\'cate_plastic\',\'http://www.wako-pallet.com/images/cate_plastic_r.gif\');return true" onmouseout="changeImages(\'cate_plastic\',\'http://www.wako-pallet.com/images/cate_plastic.gif\');return true" href="http://www.wako-pallet.com/cat27/"><img src="http://www.wako-pallet.com/images/cate_plastic.gif" name="cate_plastic" width="150" height="35" alt="プラスチックパレット" /></a></dd> --><!-- <dd><a onmouseover="changeImages(\'cate_20feet\',\'http://www.wako-pallet.com/images/cate_20feet_r.gif\');return true" onmouseout="changeImages(\'cate_20feet\',\'http://www.wako-pallet.com/images/cate_20feet.gif\');return true" href="http://www.wako-pallet.com/cat26/"><img src="http://www.wako-pallet.com/images/cate_20feet.gif" name="cate_20feet" width="150" height="35" alt="コンテナー" /></a></dd> --><dd><a onmouseover="changeImages(\'cate_palebox\',\'http://www.wako-pallet.com/images/cate_palebox_r.gif\');return true" onmouseout="changeImages(\'cate_palebox\',\'http://www.wako-pallet.com/images/cate_palebox.gif\');return true" href="http://www.wako-pallet.com/cat36/"><img src="http://www.wako-pallet.com/images/cate_palebox.gif" name="cate_palebox" width="150" height="35" alt="パレボックス" /></a></dd><!-- <dd><a onmouseover="changeImages(\'cate_other\',\'http://www.wako-pallet.com/images/cate_other_r.gif\');return true" onmouseout="changeImages(\'cate_other\',\'http://www.wako-pallet.com/images/cate_other.gif\');return true" href="http://www.wako-pallet.com/cat37/"><img src="http://www.wako-pallet.com/images/cate_other.gif" name="cate_other" width="150" height="35" alt="その他" /></a></dd> --></dl></div><div id="left-cate-box"><dl><dt><img src="http://www.wako-pallet.com/images/select_category.gif" alt="カテゴリーから選ぶ" width="136" height="14" /></dt><!-- <dd><a href="http://www.wako-pallet.com/cat28/">新品</a></dd> --><dd><a href="http://www.wako-pallet.com/cat24/">新古品</a></dd><dd><a href="http://www.wako-pallet.com/cat29/">中古品</a></dd></dl></div></div>';

	return html;
}

function build_no_result_html( result_data, keywords ) {
var html = '<div class="section"><h2>「' + search_keyword + '」の検索結果（0 件）</h2><p>該当するエントリーはありませんでした。</p></div>';
html += '<p class="caption"><a href="javascript:void(0);" title="元のページに戻る" onclick="location.reload(true); return false;" onkeypress="location.reload(true); return false;">元のページに戻る</a></p>';
return html;
}
function build_no_keyword_html( result_data, keywords ) {
var html = '<div class="section"><h2>検索キーワード未入力</h2><p>検索キーワードが入力されていません。キーワードを指定してください。</p></div>';
html += '<p class="caption"><a href="javascript:void(0);" title="元のページに戻る" onclick="location.reload(true); return false;" onkeypress="location.reload(true); return false;">元のページに戻る</a></p>';
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<keywords.length; i++ ) {
        if ( i == keywords.length - 1 ) {
            keyword += keywords[i];
        } else {
            keyword += keywords[i] + '|'; 
        }
    }
    return text.replace( new RegExp( '(' + keyword + ')', "ig"), '<span class="keywords">' + "$1" + '</span>' ); // modified by www watch
}



// modified by www watch

function gray() {
        document.getElementById('search_box').style.color = '#ccc';
}
Event.observe(window, 'load', gray, false);

var isInitialized = false;
function initialize(object) {
        if(!isInitialized) {
        object.value = "";
        object.style.color = "#333";
        isInitialized = true;
        }
}
