




	MakeSelect = function (Select1,Select2) {
		if (Select1)	this.FormSelect1	= Select1;
		if (Select2)	this.FormSelect2	= Select2;
	};

	MakeSelect.prototype.URL_SUFFIX		= '';
	MakeSelect.prototype.FormSelect1	= '';
	MakeSelect.prototype.FormSelect2	= '';
	MakeSelect.prototype.onChange		= function(Select1,Select2){};
	MakeSelect.prototype.SetData		= PrefData;

//	MakeSelect.prototype.SetData		= RouteDataArr;


	MakeSelect.prototype.Sel2_Array = [];

	new function(){
		var Cnt = 0;
		var rev = {};
		var map = MakeSelect.prototype.SetData[0];
		for(var i=0; i<map.length; i++) {
			if (!map[i]) continue;
			rev[map[i]] = i;
		}
		MakeSelect.prototype.DataArrID = rev;
	};

	// Form の初期化 ------------------------------------------------------------
	MakeSelect.prototype.init = function () {

		var A_Sel1 = document.getElementsByName(this.FormSelect1);
		var A_Sel2 = document.getElementsByName(this.FormSelect2);
		if (!A_Sel1) return;
		if (!A_Sel2) return;

		this.Elem_Sel1 = A_Sel1[0];
		this.Elem_Sel2 = A_Sel2[0];
		if (!this.Elem_Sel1) return;
		if (!this.Elem_Sel2) return;

		this.onceAfterSel1 = null;
		this.onceAfterSel2 = null;

		this.initSelectList(this.Elem_Sel1, this.SetData[0]);
		this.initSelectList(this.Elem_Sel2, []);

		var __this = this;
		jQuery(this.Elem_Sel1).bind('change', function(){__this.onChangeSel1();});
		jQuery(this.Elem_Sel2).bind('change', function(){__this.onChangeSel2();});

	};
	// -------------------------------------------------------------------------

	// SELECT の初期化 ----------------------------------------------------------
	MakeSelect.prototype.initSelectList = function (elem,list,defval) {
		var opts = elem.options;
		for(var i=opts.length; i>0; i--) {
			if (!opts[i]) continue;
			opts[i].parentNode.removeChild(opts[i]);
		}
		if (list.length) {
			elem.disabled = false;
		} else {
			elem.disabled = true;
		}
		for(var i=0; i<list.length; i++) {
			var str = list[i];
			if (!str) continue;
			if (typeof(str) == 'object') str = str[1];
			var eopt = document.createElement('option');
			elem.appendChild(eopt);
			eopt.text  = str;
			eopt.value = str;
			if (str == defval) eopt.selected = true;
		}
	}
	// -------------------------------------------------------------------------

	// SELECTの値を取得 ---------------------------------------------------------
	MakeSelect.prototype.getSelectValue = function (elem) {
		var opts = elem.options;
		if (!opts) return;
		for(var i=0; i<opts.length; i++) {
			if (opts[i].selected) return opts[i].value;
		}
	};

	MakeSelect.prototype.getSel1Value = function () {
		return this.getSelectValue(this.Elem_Sel1);
	};

	MakeSelect.prototype.getSel2Value = function () {
		return this.getSelectValue(this.Elem_Sel2);
	};

	// -------------------------------------------------------------------------


	// Safariの文字化け防止
	MakeSelect.prototype.getResponseText = function (req) {
		var text = req.responseText;
		if (navigator.appVersion.indexOf('KHTML') > -1) {
			var esc = escape(text);
			if (esc.indexOf('%u') < 0 && esc.indexOf('%') > -1) {
				text = decodeURIComponent(esc);
			}
		}
		return text;
	};


	// Select 1 変更時のイベント ------------------------------------------------
	MakeSelect.prototype.onChangeSel1 = function () {

		var V_Sel1 = this.getSel1Value();
		var __this = this;

		var Sel1_CD = function (data) {
			if (__this.onceAfterSel1) {
				__this.onceAfterSel1(V_Sel1, '', '');
				__this.onceAfterSel1 = null;
			} else if (__this.onChange) {
				__this.onChange(V_Sel1, '', '');
			}
		};

		if (!V_Sel1) {
			this.initSelectList(this.Elem_Sel2, []);
			window.setTimeout(Sel1_CD, 1);
			return;
		}

		var Sel1_ID = this.DataArrID[V_Sel1];
		if (!Sel1_ID) return;

		var updateSel2List = function (data) {
			__this.initSelectList(__this.Elem_Sel2, data);
			window.setTimeout(Sel1_CD, 1);
		};

		var data = this.SetData[Sel1_ID];
		if (data) return updateSel2List(data);


	};
	// -------------------------------------------------------------------------

	// Select 2 変更時のイベント ------------------------------------------------
	MakeSelect.prototype.onChangeSel2 = function () {

		var V_Sel1 = this.getSel1Value();
		if (!V_Sel1) return;

		var Sel1_ID = this.DataArrID[V_Sel1];
		if (!Sel1_ID) return;

		var data = this.SetData[Sel1_ID];
		if (!data) return;

		var V_Sel2 = this.getSel2Value();
		if (!V_Sel2) return;

		var __this = this;
		var Sel2_CD = function () {
			if ( __this.onceAfterSel2 ) {
				__this.onceAfterSel2(V_Sel1, V_Sel2, '');
				__this.onceAfterSel2 = null;
			} else if ( __this.onChange ) {
				__this.onChange(V_Sel1, V_Sel2, '');
			}
		};
		window.setTimeout(Sel2_CD, 1);
	};
	// -------------------------------------------------------------------------

	// Select に selected を設定 ------------------------------------------------
	MakeSelect.prototype.setSelectValue = function (elem,value) {
		if (!elem) return;
		var opts = elem.options;
		if (!opts) return;
		for(var i=0; i<opts.length; i++) {
			opts[i].selected = false;
		}
		for(var i=0; i<opts.length; i++) {
			if (opts[i].value == value) {
				opts[i].selected = true;
			}
		}
	};
	// -------------------------------------------------------------------------

	// -------------------------------------------------------------------------
	MakeSelect.prototype.SetVal = function (Sel1,Sel2) {
		if (Sel1) {
			var __this = this;
			if (Sel2) {
				this.onceAfterSel1 = function () {
					__this.setSelectValue(__this.Elem_Sel2, Sel2);
					__this.onChangeSel2();
				};
			}
			var func = function () {
				__this.setSelectValue(__this.Elem_Sel1, Sel1);
				__this.onChangeSel1();
			};
			window.setTimeout(func, 1);
		}
	};
	// -------------------------------------------------------------------------

