//---------------------------------------------------------------------------
// formの外側に存在するチェックボックス送信用クラス
//---------------------------------------------------------------------------
var SendCheckBox = Class.create();
SendCheckBox.prototype = {
  submitElm: "", // イベント対象のボタン要素
  form: "", // formタグの要素
  dataClassElms: "", // データの要素(複数の可能性あり)
  checkAllElm: "",
  firstAction: "",  
  //
  // コンストラクタ
  // submitId：サブミットボタンのid
  // formId：フォームのid
  // dataClassName：送信対象のクラス名
  // checkAll：すべてチェックするためのチェックボックスのid
  //
  initialize: function(submitId, formId) {
	this.submitElm = $(submitId);
	this.form = $(formId);
	this.firstAction = this.form.action;

	this.searchMoneyElms = document.getElementsByClassName("search_money");
	this.searchFreeElms = document.getElementsByClassName("search_free");
	this.searchPlaceElms = document.getElementsByClassName("search_place");
	this.searchOtherElms = document.getElementsByClassName("search_other");
	Event.observe(this.submitElm, 'click', this.send.bindAsEventListener(this));
  },

  // すべてチェック用のチェックボックスが押されたとき場合のすべてのチェックボックスのonもしくはoff
  /*
  checkAll: function(event) {
  	var checkAllElm = this.checkAllElm; // eachメソッド内では、this.checkAllElmが無効になるので、再指定
	var nodes = $A(this.dataClassElms);
	nodes.each(function (node) {
	  if (checkAllElm.checked == true) {
		node.checked = true;
	  } else {
		node.checked = false;
	  }
	})
  },
*/
  // 送信する。
  send: function(event) {
//	var nodes = $A(this.dataClassElms);
	var money_nodes = $A(this.searchMoneyElms);
	var free_nodes = $A(this.searchFreeElms);
	var place_nodes = $A(this.searchPlaceElms);
	var other_nodes = $A(this.searchOtherElms);

	var check_conds;
	
	var moneyVal = 0;
	money_nodes.each(function (node, index) {
	  if (node.checked == true) moneyVal += (1 << (node.value - 1));

	})

	var freeVal = 0;
	free_nodes.each(function (node) {
	  if (node.checked == true) freeVal += (1 << (node.value - 1));
	})

	var placeVal = 0;
	place_nodes.each(function (node) {
	  if (node.checked == true) placeVal += (1 << (node.value - 1));
	})

	var otherVal = 0;
	other_nodes.each(function (node) {
	  if (node.checked == true) otherVal += (1 << (node.value - 1));
	})



	var prefValue = $("prefId").value;
	var areaValue = $("areaId").value;
	var trainValue = $("trainId").value;
	// var categoryValue = $("category_value").value;
	var paymentMinValue = $("payment_hour_min").value;
	var paymentMaxValue = $("payment_hour_max").value;
	var kindValue = $("kind_value").value;
	var word = $("word").value;
	


//	this.form.action = this.firstAction + "/0/" + moneyVal + "/" + freeVal + "/" + placeVal + "/" + otherVal + "/0/0/" + "1/";
	this.form.action = this.firstAction + "?money=" + moneyVal + "&free=" + freeVal + "&place=" + placeVal + "&other=" + otherVal;
	
	this.form.action += prefValue != "" ? "&work_pref=" + prefValue : ""; 
	this.form.action += areaValue != "" ? "&area_master_id=" + areaValue : ""; 
	this.form.action += trainValue != "" ? "&train_master_id=" + trainValue : ""; 
	// this.form.action += categoryValue != "" ? "&category_value=" + categoryValue : ""; 
	this.form.action += paymentMinValue != "" ? "&payment_hour_min=" + paymentMinValue : ""; 
	this.form.action += paymentMaxValue != "" ? "&payment_hour_max=" + paymentMaxValue : ""; 
	this.form.action += kindValue != "" ? "&kind_value=" + kindValue : ""; 
	this.form.action += word != "" ? "&word=" + word : ""; 
	/*
	nodes.each(function (node) {
	  alert(val & (1 << node.value));
	})
	*/
/*
	if (this.checkOpenCount(nodes) == false) {
	  Event.stop(event);
	  return false;
	}
*/
	// this.createHidden(nodes);
	this.form.submit();
	Event.stop(event);
	return false;
  },

  // 選択したチェックボックス(公開指定)の数を数える
  checkOpenCount: function (nodes) {
	var checkCount = 0;
	nodes.each (function (node) {
	  if (node.checked	== true) {
		checkCount++;
	  }
	});

	if (checkCount != 3) {
	  alert(checkCount + "個の項目は選択しております。\n公開する項目は3個です。");
	  return false;
	}
  },
  
  // サブミットで渡すためにhiddenを生成する。
  createHidden: function (nodes) {
	var f = this.form; // eachメソッド内では、this.formが無効になるので、再指定
	nodes.each(function (node) {
	  if (node.checked == true) {
		var input = document.createElement('input');		
		input.type = "hidden";
		input.name = "data[Entry][id][]";
		input.value = node.value;
		f.appendChild(input);
	  }
	});
  }
}

//---------------------------------------------------------------------------
// ページロード完了時のイベント設定処理
//---------------------------------------------------------------------------
Event.observe (window, 'load', function() {

if ($("search_submit_btn") && $("search_form")) {
  oSendCheckBox = new SendCheckBox("search_submit_btn", "search_form");
  }

}, false);

