/**
分類検索 for web
* 選択肢クラス
* @param parentValue 親の値(null:いつでも表示)
* @param text 表示テキスト
* @param value 値
*/
function SelectOption(parentValue, text, value)
{
	this.parentValue = parentValue;
	this.setOption = function()
	{
		this.text = text;
		this.value = value;
	};
	return this;
}

/**
* セレクトボックスクラス
* @param id セレクトボックスID
*/

function SelectBox(id)
{
	
	/**
	* IDに対応オブジェクトを取得
	* @return オブジェクトorNULL
	*/
	function getObject()
	{
		var obj = document.getElementById(id);
		if(!obj.options && ( (typeof obj.length) == "number") )
		{
			if(obj.length > 0)
			{
				obj = obj[0];
			}
			else
			{
				obj = null;
			}
		}
		return obj;
	}
	// オプションのリスト
	var options = [];
	/**
	* オプション登録
	* @param condition 表示条件
	*/
	this.registOption = function(option)
	{
		options[options.length] = option;
	};
	// 子のオブジェクト
	var child = null;
	/**
	* 子のオブジェクトを設定する
	* @param childObj 子のオブジェクト
	*/
	this.setChild = function(childObj)
	{
		child = childObj;
	};
	/**
	* オプション反映
	* @param parentValue 親の値(null:全部表示)
	* ※比較に==を使っているのでundefinedもnullと等しく扱われる。
	*/
	this.make = function(parentValue)
	{
		var obj = getObject();
		if(obj)
		{
			// 選択肢削除
			obj.options.length = 0;
			// 表示すべき選択肢抽出
			var opt = (parentValue != null) ? [] : options;
			if(parentValue != null)
			{
				for(var i = 0; i < options.length; i++)
				{
					if( (options[i].parentValue == null) || (options[i].parentValue == parentValue) )
					{
						opt[opt.length] = options[i];
					}
				}
			}
			// 選択肢反映
			obj.options.length = opt.length;
			for(var i = 0; i < opt.length; i++)
			{
				opt[i].setOption.call(obj.options[i]);
			}
			// 子のオブジェクトにも連鎖反映
			if(child)
			{
				child.make(obj.value);
				}
		}
	};
	return this;
}

var stbox1 = new SelectBox("sb_strage1");
stbox1.registOption(new SelectOption(null, "種類を選択", ""));

stbox1.registOption(new SelectOption("null", "内蔵用ハードディスク", "ベアーハードディスク"));
stbox1.registOption(new SelectOption("null", "内蔵用 2.5インチ SSD", "SSD・2.5・Internal"));
stbox1.registOption(new SelectOption("null", "内蔵用 1.8インチ SSD", "SSD・1.8・Internal"));
stbox1.registOption(new SelectOption("null", "その他の内蔵用 SSD", "SSD・Internal"));

var stbox2 = new SelectBox("sb_strage2");
stbox2.registOption(new SelectOption(null, "接続方式を選択", ""));

stbox2.registOption(new SelectOption("ベアーハードディスク", "3.5インチ SATA", "3.5インチ・S-ATA"));
stbox2.registOption(new SelectOption("ベアーハードディスク", "3.5インチ ATA (IDE)", "3.5インチ・ATA"));
stbox2.registOption(new SelectOption("ベアーハードディスク", "2.5インチ SATA", "2.5インチ・S-ATA"));
stbox2.registOption(new SelectOption("ベアーハードディスク", "2.5インチ ATA (IDE)", "2.5インチ・ATA"));
stbox2.registOption(new SelectOption("ベアーハードディスク", "選択しない", ""));
stbox2.registOption(new SelectOption("SSD・2.5・Internal", "SATA", "SATA"));
stbox2.registOption(new SelectOption("SSD・2.5・Internal", "PATA", "PATA"));
stbox2.registOption(new SelectOption("SSD・2.5・Internal", "選択しない", ""));
stbox2.registOption(new SelectOption("SSD・1.8・Internal", "IDE", "IDE"));
stbox2.registOption(new SelectOption("SSD・1.8・Internal", "ZIF", "ZIF"));
stbox2.registOption(new SelectOption("SSD・1.8・Internal", "選択しない", ""));
stbox2.registOption(new SelectOption("SSD・Internal", "PCIe", "PCIe"));
stbox2.registOption(new SelectOption("SSD・Internal", "選択しない", ""));

var stbox3 = new SelectBox("sb_strage3");
stbox3.registOption(new SelectOption(null, "容量を選択", ""));

stbox3.registOption(new SelectOption("3.5インチ・S-ATA", "2.0TB", "2000GB"));
stbox3.registOption(new SelectOption("3.5インチ・S-ATA", "1.5TB", "1500GB"));
stbox3.registOption(new SelectOption("3.5インチ・S-ATA", "1.0TB", "1000GB"));
stbox3.registOption(new SelectOption("3.5インチ・S-ATA", "750GB", "0750GB"));
stbox3.registOption(new SelectOption("3.5インチ・S-ATA", "640GB", "0640GB"));
stbox3.registOption(new SelectOption("3.5インチ・S-ATA", "500GB", "0500GB"));
stbox3.registOption(new SelectOption("3.5インチ・S-ATA", "320GB", "0320GB"));
stbox3.registOption(new SelectOption("3.5インチ・S-ATA", "250GB", "0250GB"));
stbox3.registOption(new SelectOption("3.5インチ・S-ATA", "160GB", "0160GB"));
stbox3.registOption(new SelectOption("3.5インチ・S-ATA", "選択しない", ""));

stbox3.registOption(new SelectOption("3.5インチ・ATA", "500GB", "0500GB"));
stbox3.registOption(new SelectOption("3.5インチ・ATA", "320GB", "0320GB"));
stbox3.registOption(new SelectOption("3.5インチ・ATA", "250GB", "0250GB"));
stbox3.registOption(new SelectOption("3.5インチ・ATA", "選択しない", ""));

stbox3.registOption(new SelectOption("2.5インチ・S-ATA", "500GB-7200rpm", "0500GB 7200rpm"));
stbox3.registOption(new SelectOption("2.5インチ・S-ATA", "500GB-5400rpm", "0500GB 5400rpm"));
stbox3.registOption(new SelectOption("2.5インチ・S-ATA", "320GB-7200rpm", "0320GB 7200rpm"));
stbox3.registOption(new SelectOption("2.5インチ・S-ATA", "320GB-5400rpm", "0320GB 5400rpm"));
stbox3.registOption(new SelectOption("2.5インチ・S-ATA", "250GB-7200rpm", "0250GB 7200rpm"));
stbox3.registOption(new SelectOption("2.5インチ・S-ATA", "250GB-5400rpm", "0250GB 5400rpm"));
stbox3.registOption(new SelectOption("2.5インチ・S-ATA", "160GB-7200rpm", "0160GB 7200rpm"));
stbox3.registOption(new SelectOption("2.5インチ・S-ATA", "160GB-5400rpm", "0160GB 5400rpm"));
stbox3.registOption(new SelectOption("2.5インチ・S-ATA", "300GB-10000rpm", "0300GB 10000rpm"));
stbox3.registOption(new SelectOption("2.5インチ・S-ATA", "150GB-10000rpm", "0150GB 10000rpm"));
stbox3.registOption(new SelectOption("2.5インチ・S-ATA", "選択しない", ""));

stbox3.registOption(new SelectOption("2.5インチ・ATA", "320GB", "0320GB"));
stbox3.registOption(new SelectOption("2.5インチ・ATA", "250GB", "0250GB"));
stbox3.registOption(new SelectOption("2.5インチ・ATA", "160GB", "0160GB"));
stbox3.registOption(new SelectOption("2.5インチ・ATA", "120GB", "0120GB"));
stbox3.registOption(new SelectOption("2.5インチ・ATA", "80GB", "0080GB"));
stbox3.registOption(new SelectOption("2.5インチ・ATA", "選択しない", ""));

stbox3.registOption(new SelectOption("SATA", "250GB", "0250GB"));
stbox3.registOption(new SelectOption("SATA", "120GB", "0120GB"));
stbox3.registOption(new SelectOption("SATA", "80GB", "0080GB"));
stbox3.registOption(new SelectOption("SATA", "60GB", "0060GB"));
stbox3.registOption(new SelectOption("SATA", "30GB", "0030GB"));
stbox3.registOption(new SelectOption("SATA", "選択しない", ""));

stbox3.registOption(new SelectOption("PATA", "250GB", "0250GB"));
stbox3.registOption(new SelectOption("PATA", "120GB", "0120GB"));
stbox3.registOption(new SelectOption("PATA", "60GB", "0060GB"));
stbox3.registOption(new SelectOption("PATA", "30GB", "0030GB"));
stbox3.registOption(new SelectOption("PATA", "選択しない", ""));

stbox3.registOption(new SelectOption("IDE", "120GB", "0120GB"));
stbox3.registOption(new SelectOption("IDE", "60GB", "0060GB"));
stbox3.registOption(new SelectOption("IDE", "30GB", "0030GB"));
stbox3.registOption(new SelectOption("IDE", "選択しない", ""));

stbox3.registOption(new SelectOption("ZIF", "120GB", "0120GB"));
stbox3.registOption(new SelectOption("ZIF", "60GB", "0060GB"));
stbox3.registOption(new SelectOption("ZIF", "30GB", "0030GB"));
stbox3.registOption(new SelectOption("ZIF", "選択しない", ""));

stbox3.registOption(new SelectOption("PCIe", "1.0TB", "1000GB"));
stbox3.registOption(new SelectOption("PCIe", "500GB", "0500GB"));
stbox3.registOption(new SelectOption("PCIe", "250GB", "0250GB"));
stbox3.registOption(new SelectOption("PCIe", "120GB", "0120GB"));
stbox3.registOption(new SelectOption("PCIe", "選択しない", ""));


stbox1.setChild(stbox2);
stbox2.setChild(stbox3);

