var jquery_loader         = 'http://www.tinybeans.net/blog/img/common/loading.gif';
var json_search_data      = 'http://www.tinybeans.net/blog/search_data.txt';
var json_search_keyword   = '';
var json_search_is_loaded = false;
var json_search_entries;

$(function(){
	$('#search_content').html('<form action="javascript:json_search();"><fieldset><legend accesskey="s">かたつむりくんのWWW内の検索</legend><div><p><input type="text" id="search_box" class="ti searchBox" name="search" onblur="if (this.value == \'\') this.value = \'Search words\';" onfocus="if (this.value == \'Search words\') this.value = \'\';" value="Search words" /></p><p><input type="submit" tabindex="2" accesskey="2" value="検索" /></p></div></fieldset></form>');
	$('body').append('<div id="search_result_container"><div id="search_result"></div></div>');
});

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 = '<p>一致しませんでした</p><p id="search_hide"><a class="imgbutton" href="javascript:void(0)" style="font-weight:bold;" onclick="clear_block(\'#search_result\')" onkeypress="clear_block(\'#search_result\')"><span>[CLOSE]</span></a></p>';
	} else {
		result_html = json_search_result_html(result_data, keywords);
	}
	$('#search_result').css('height', 'auto')
		.css('background-image', 'none')
		.html(result_html);
	$('#search_result_container').css('top', getPageScroll()[1]);
}

function json_search_result_html(result_data, keywords) {
	var html = '<p id="search_notice">「' + json_search_keyword + '」の検索結果（' + result_data.length + ' 件）<br />※スペースでAND検索が出来ます。</p><ul>';
	for (var i= 0;i < result_data.length;i++) {
		html += '<li><a href="' + result_data[i].link + '#search_word=' + json_search_keyword + '">' + result_data[i].title + '</a></li>';
	}
	html += '</ul><p id="search_hide"><a class="imgbutton" href="javascript:void(0)" style="font-weight:bold;" onclick="clear_block(\'#search_result\')" onkeypress="clear_block(\'#search_result\')"><span>[CLOSE]</span></a></p>';
	return html;
}


function json_search() {
	json_search_keyword = $('input#search_box').val();
	$('#search_result').html('<p>検索中 ...</p>');
//		.css('height', '40px').css('display','block');
//		.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: 3000,
//		error: function() {
//			$('#search_result').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;}
		});
	}
}

// getPageScroll() by quirksmode.com
function getPageScroll() {
	var xScroll, yScroll;
	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;	
	}
	return new Array(xScroll,yScroll) 
}

function clear_block(blockid) {
	$(blockid).slideUp(function(){$(this).html('').css('display','block');});
}

