CF.Helpers.onSelectWithChecksChange = function (select, parentMasterName, childMasterName) {
	select = $(select);
	var checkBoxDiv = select.up().next();
	var key = checkBoxDiv.id.split('-')[0];
	var name = checkBoxDiv.id.split('-')[1];

	// 子供の div の中身を空にする
	checkBoxDiv.innerHTML = '';
	checkBoxDiv.innerHTML = '';

	//retreive order master
	var job_order_master_6 = {
		21: 0,
		20: 1,
		23: 2,
		27: 3,
		26: 4,
		22: 5,
		24: 6,
		25: 7,
		19: 8,
		18: 9,
		29: 10
	};
	var job_order_master_7 = {
		21: 0,
		20: 1,
		23: 2,
		27: 3,
		26: 4,
		22: 5,
		24: 6,
		25: 7,
		19: 8,
		18: 9,
		29: 10
	};
	var job_order_master_8 = {
		18: 0,
		17: 1,
		19: 2,
		29: 3
	};
	var job_order_master_10 = {
		21: 0,
		20: 1,
		23: 2,
		27: 3,
		26: 4,
		22: 5,
		24: 6,
		28: 7,
		25: 8,
		19: 9,
		18: 10,
		29: 11
	};

	//var orderMaster = CF.MasterData['job_order_master_' + select.value];
	try{
	var orderMaster = eval('job_order_master_' + select.value.toString());
	}catch(e){};
	// 子供のチェックボックスに使う値を取得
	var values = Array(select.value).flatten();
	var relations = CF.MasterData.getRelations(parentMasterName, childMasterName);
	var children = values.inject([], function (result, value) {
		return result.concat(relations[value]);
	}).without(undefined).sort(function (a, b) {
		if(!orderMaster) return a-b;
		var orderA = Number(orderMaster[a]);
		var orderB = Number(orderMaster[b]);
		if (isNaN(orderA)) return 1;
		else if (isNaN(orderB)) return -1;
		
		return orderA - orderB;
	});
	// 子供の div の中身を作る
	// dvi > ul > li > label > input, text
	var master = CF.MasterData[childMasterName];
	var listItems = children.collect(function (code) {
		var childId = [key, name, code].join('_');
		var text = master[code];
		var input = Builder.node('input', {
			type: 'checkbox',
			id: childId,
			name: name + '[]',
			value: code
		});
		var label = Builder.node('label', {
			htmlFor: childId
		},
		[input, text]);
		var li = Builder.node('li', label);
		return li;
	});
	var ul = Builder.node('ul', listItems);
	checkBoxDiv.appendChild(ul);
};

(function($){
	$(function(){
		
		var $select = $('#job-job_category select');
		var selected = {};
		$('input[name^=job]').each(function(){
			var $this = $(this);
			if($this.is(':checked')) {
				selected[$this.val()] = true;
			}
			})
			.hide();
		
		$select.trigger('change');
		
		//restore state
		$('input[name^=job]').each(function(){
			var $this = $(this);
			if(selected[$this.val()]) {$this.attr('checked', 'checked');}
		})
		.show();
		
	});
})(jQuery);