function getMask() {
	var mask = [];
	for(var i = 0; i < array_num; i++) {
		mask[i] = 0;
	}

	$("input:checked").each(function() {
		var list = $(this).attr('value').split(",");
		for( var i = 0; i < array_num; i++ ) {
			mask[i] |= parseInt(list[i], 16);
		}
	})

	return mask;
}

function cal_keyword_num(mask) {
	var result_num = 0;
	var num = [];
	for(var bit = 0; bit < keyword_num; bit++) {
		num[bit] = 0;
	}
	var selected = [];
	var c = 0;
	for(var i = 0; i < keyword.length; i++) {
		var and_result = _and(mask, keyword[i]);
		var or_result = [];
		for(var oi = 0; oi < or_mask.length; oi++) {
			or_result[oi] = _or(mask, keyword[i], oi);
		}
		if(and_result && isOneOrMoreTrue(or_result)) {
			for(var ii = 0; ii < keyword[i].length; ii++) {
				var k = keyword[i][ii];
				for(var oi = 0; oi < or_mask.length; oi++) {
					if(!or_result[oi]) {
						k &= or_mask[oi][ii];
					}
				}
				for(var bit = 0; bit < unit; bit++) {
					num[ii*unit+bit] += k & 1;
					k >>>= 1;
				}
			}
			if (isAllTrue(or_result)) {
				result_num++;
				selected[c++] = company_id[i];
			}
		}
	}
	num[-1] = result_num;
	var ret = {'keyword': num, 'company': selected};
	return ret;
}

function isOneOrMoreTrue(or_result) {
	var ret = false;
	for(var i = 0; i < or_result.length; i++) {
		ret = ret || or_result[i];
	}
	return ret;
}

function isAllTrue(or_result) {
	var ret = true;
	for(var i = 0; i < or_result.length; i++) {
		ret = ret && or_result[i];
	}
	return ret;
}

function set_keyword_num(num) {
	for(var i = 0; i < num.length; i++) {
		var num_id = "num"+i;
		var cb_id = "cb"+i;
// キーワードのヒット数が変化すると配置がずれてしまう。
// このため、文字列を2文字に固定にする。（ヒット数が3桁になると困るが）
// その際、背景が白のため、白色の文字で表示。スペースでは数字文字の幅と異なるためずれてしまう。
//		$("#"+num_id).text(num[i]);
		var n = num[i]+"";
		$("#"+num_id).html((n.length==1) ? "<span style='color: #ffffff'>0</span>"+n: n);
		if(num[i]) {
			$("#"+cb_id).attr("disabled","");
		} else {
			$("#"+cb_id).attr("checked","");
			$("#"+cb_id).attr("disabled","disabled");
		}
	}
	$("#result_num").text(num[-1]);
}

function _and(mask, kw) {
	var ret = true;
	var _m = false;
	for(var i = 0; i < kw.length; i++) {
		var _mask = mask[i] & and_mask[i];
		var _kw = kw[i];
		ret = ret && (_mask & _kw) == _mask;
		_m |= _mask;
	}
	return (!_m) ? true : ret;
}

function _or(mask, kw, oi) {
	var ret = false;
	var _m;
	for(var i = 0; i < kw.length; i++) {
		var _mask = mask[i] & or_mask[oi][i];
		var _kw = kw[i];
		ret = ret || (_mask & _kw) ? true : false;
		_m |= _mask;
	}
	return (!_m) ? true : ret;
}

function clear_checkbox() {
        $("#sakusaku_form input[type='checkbox']").attr('checked', false);

	var ret = cal_keyword_num(getMask());
	set_keyword_num(ret.keyword);
	set_selected_company_id(ret.company);
}
function change_contents(contents) {
	$("#contents_flg").val(contents);

	if(contents == 0) {
		$("#contents0").html("<img src='../themes/default/search/sakusaku_btn_base_o.png' width='95' height='24' alt='基本情報' />");
		$("#contents1").html("<a href='javascript: void(0)' onclick='change_contents(1)' class='roll'><img src='../themes/default/search/sakusaku_btn_price.png' width='95' height='24' alt='料金情報' /></a>");

		$("[id^=basic_contents]").show();
		$("[id^=charge_contents]").hide();
	} else if(contents == 1) {
		$("#contents0").html("<a href='javascript: void(0)' onclick='change_contents(0)' class='roll'><img src='../themes/default/search/sakusaku_btn_base.png' width='95' height='24' alt='基本情報' /></a>");
		$("#contents1").html("<img src='../themes/default/search/sakusaku_btn_price_o.png' width='95' height='24' alt='料金情報' />");

		$("[id^=basic_contents]").hide();
		$("[id^=charge_contents]").show();
	}
}
function change_photo(photo) {
	$("#photo_flg").val(photo);

	if(photo == 0) {
		$("#photo0").html("<img src='../themes/default/search/sakusaku_btn_gaikan_o.png' width='95' height='24' alt='外観' />");
		$("#photo1").html("<a href='javascript: void(0)' onclick='change_photo(1)' class='roll'><img src='../themes/default/search/sakusaku_btn_room.png' width='95' height='24' alt='部屋' /></a>");
		$("#photo2").html("<a href='javascript: void(0)' onclick='change_photo(2)' class='roll'><img src='../themes/default/search/sakusaku_btn_bath.png' width='95' height='24' alt='風呂' /></a>");

		$("[id^=externals_image]").show();
		$("[id^=room_image]").hide();
		$("[id^=bath_image]").hide();
	} else if(photo == 1) {
		$("#photo0").html("<a href='javascript: void(0)' onclick='change_photo(0)' class='roll'><img src='../themes/default/search/sakusaku_btn_gaikan.png' width='95' height='24' alt='外観' /></a>");
		$("#photo1").html("<img src='../themes/default/search/sakusaku_btn_room_o.png' width='95' height='24' alt='部屋' />");
		$("#photo2").html("<a href='javascript: void(0)' onclick='change_photo(2)' class='roll'><img src='../themes/default/search/sakusaku_btn_bath.png' width='95' height='24' alt='風呂' /></a>");

		$("[id^=externals_image]").hide();
		$("[id^=room_image]").show();
		$("[id^=bath_image]").hide();
	} else if(photo == 2) {
		$("#photo0").html("<a href='javascript: void(0)' onclick='change_photo(0)' class='roll'><img src='../themes/default/search/sakusaku_btn_gaikan.png' width='95' height='24' alt='外観' /></a>");
		$("#photo1").html("<a href='javascript: void(0)' onclick='change_photo(1)' class='roll'><img src='../themes/default/search/sakusaku_btn_room.png' width='95' height='24' alt='部屋' /></a>");
		$("#photo2").html("<img src='../themes/default/search/sakusaku_btn_bath_o.png' width='95' height='24' alt='風呂' />");

		$("[id^=externals_image]").hide();
		$("[id^=room_image]").hide();
		$("[id^=bath_image]").show();
	}
}

function normal_search() {
	$('#outline_flg').val(1);
	$('#search_flg').val(1);
	$('#sakusaku_form').submit();
}


function detail_search() {
	$('#outline_flg').val(0);
	$('#search_flg').val(0);
	$('#sakusaku_form').submit();
}

function change_pos(pos) {
	$('#search_flg').val(0);
	$("#result_block_pos").val(pos);
	$("#sakusaku_form").submit();
}

function change_order(order) {
	$('#search_flg').val(1);
	$("#order_flg").val(order);
	$("#sakusaku_form").attr("action","#a_search_control");
	$("#sakusaku_form").submit();
}

