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].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;
}
var periodcount;
function blogAjaxJsonSearch( archive_file_path, text ) {
if(text){
    search_keyword = text;
    var div_tag = document.getElementsByTagName('div');
    for ( var i = 0; i < div_tag.length; i ++ ) {
        //if ( div_tag[i].id == 'main' || div_tag[i].id == 'splash' ) {
		if ( div_tag[i].id == 'main' ) {
            result_content = div_tag[i];
        }
    }
    result_content.innerHTML = 'now searching.';
	periodcount=0;
    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 ) {
		
        if(periodcount++ <80)	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 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++ ) {	
        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 = '';
	
	var result_html = '<h1 class="title_pro_new" style="margin-top:10px;">Result</h1><form class="searchform-at-body" action="javascript:blogAjaxJsonSearch(\'http://www.juki.co.jp/industrial_e/search_data.php\', document.getElementById(\'search_text_body\').value);"><input name="search_text" id="search_text_body" size="20" class="loupe" type="text" value="' + search_keyword  +'"><input id="search_button_body" src="http://www.juki.co.jp/industrial_e/common/image/general_images/search_bt.gif" title="Search inside of ISM Website" alt="Search inside of ISM Website" style="vertical-align: top;" onclick="javascript:blogAjaxJsonSearch(\'http://www.juki.co.jp/industrial_e/search_data.php\', document.getElementById(\'search_text_body\').value );" type="image"></form>';
    if ( result_data.length == 0 ) {
        result_html =result_html+  'No pages were found containing <strong>'+keywords+'</strong><br /><a href="javascript:location.reload();">&raquo;Back</a>';
    } else {
        result_html =result_html+ build_search_result_html( result_data, keywords );
    }
    var div = window.document.getElementsByTagName('div');
    is_loaded = true;
    clearTimeout(timerId);
    result_content.innerHTML = result_html;
	
	if(setHeight) setHeight();
}

function build_search_result_html( result_data, keywords ) {
    var html = '<div class="search_entry"><h2 class="search_count">Result: ' + result_data.length + ' pages found</h2><div class="search_entry-body">';
    for ( var i= 0; i<result_data.length; i++ ) {
		result_data[i].body = result_data[i].body.replace(new RegExp( '<.?MT.*?.?>', "g"),'');
		result_data[i].body = result_data[i].body.replace(new RegExp( '<.*?>', "g"),'');
    	html += '<h2><a href="' + result_data[i].link + '">' + highlight( result_data[i].title, keywords ) + '</a></h2><p>' + highlight( trunc( result_data[i].body, keywords[0] ), keywords ) + '</p>';
    }
    html += '</div></div>';
    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] + '|'; 
        }
    }
    var	replaced_text = text.replace( new RegExp( '(' + keyword + ')', "ig"), '<span class="searchword">' + "$1" + '</span>' );
    while( replaced_text.match( new RegExp( '(<[^>]+)<span class="searchword">(' + keyword + ')</span>(.*?>)', "ig") ) ) {
        replaced_text = replaced_text.replace( new RegExp( '(<[^>]+)<span class="searchword">(' + keyword + ')</span>(.*?>)', "ig"), "$1$2$3" );
    }
    return replaced_text;

}
