var Search = Class.create();
Search.prototype = {
  //
  // コンストラクタ
  // submitElm: "",
  // 
  initialize: function(search_submit_id, search_form_id) {
	this.submitElm = $(search_submit_id);
	this.formElm = $(search_form_id);

	Event.observe(this.submitElm , 'click', this.execute.bindAsEventListener(this));
	//Event.observe($("reset_area_submit") , 'click', this.reset.bindAsEventListener(this, "area_category"));
	//Event.observe($("reset_job_submit"), 'click', this.reset.bindAsEventListener(this, "job_category"));
  },

  init: function() {
	$A($$(".CategorySearchSets")).each(function(element) { if (element) { element.remove(); } });
	if ($("set1_type")) { $("set1_type").remove(); }
	if ($("set2_type")) { $("set2_type").remove(); }
	$A($$(".set1")).each(function(element) { if (element) { element.remove(); } });
	$A($$(".set2")).each(function(element) { if (element) { element.remove(); } });
  },

  getChecked: function(checkbox_class) {

	rest = $A($$("." + checkbox_class)).findAll(function(element) { return element.checked; }).invoke('getValue');
	this.generateSearchHidden(rest, checkbox_class);
	return rest;
  },

  generateSearchHidden: function(checkedAry, kind) {
	var num = 0;
	if (kind == "area_category") { num = 1; } else if (kind == "way_category") { num = 2; }
	
	else if (kind == "yoto_category") { num = 3; }
	

	if (num > 0) {
	  checkedAry.each(function (value, index) {
		if (index == 0) {
		  hidden = new Element("input", { type : "hidden", name : "CategorySearchSets", value : "set" + num});
		  Element.addClassName(hidden, "CategorySearchSets");  
		  this.formElm.insert(hidden);
		  hidden = new Element("input", { type : "hidden", name : "set" + num + "_type", value : "or", id : "set" + num + "_type"});
		  this.formElm.insert(hidden);
	    }
	    hidden = new Element("input", { type : "hidden", name : "set" + num, value : value});
		Element.addClassName(hidden, "set" + num);  
	    this.formElm.insert(hidden);
	  }.bind(this));
	  //hidden = new Element("input", { type : "hidden", name : "limit" , value : 5});
	  hidden = new Element("input", { type : "hidden", name : "limit" , value : 15});
	  
	  this.formElm.insert(hidden);
	}
  },

  execute: function(e) {
	this.init();
	e.stop();
	var area_categories= this.getChecked("area_category");
	var way_categories = this.getChecked("way_category");
	
	var yoto_categories = this.getChecked("yoto_category");

	
	this.formElm.submit();
  },

  reset: function(e, kind_class) {
	$A($$("." + kind_class)).each( function (element) { element.checked = false; });
	Event.stop(e);
  }
}

//---------------------------------------------------------------------------
// ページロード完了時のイベント設定処理
//---------------------------------------------------------------------------
Event.observe (window, 'load', function() {
														oSearch = new Search("search_submit_id", "search_form_id");
}, false);

