//
// ranking.js
// 成分ランキング用JavaScript
// 2007.10.25 m.miki

var Ranking = function() {

	var baseURL = "/fooddbT/ranking/";
	var rankingCGI = baseURL + "cmp_order.pl";
	var titleCGI = baseURL + "rankingTitle.pl";

	// 初期出力の対象となる食品成分の配列
	var nlist = new Array(16);

	nlist[0] = "PROTEIN"; // タンパク質
	nlist[1] = "CALCIUM"; // カルシウム
	nlist[2] = "IRON"; // 鉄
	nlist[3] = "ZINC"; // 亜鉛
	nlist[4] = "COPPER"; // 銅
	nlist[5] = "BETA_CAROTENE_EQUIVALENTS"; // β－カロテン当量
	nlist[6] = "ASCORBIC_ACID"; // ビタミンC
	nlist[7] = "THIAMIN"; // ビタミンB1
	nlist[8] = "RIBOFLAVIN"; // ビタミンB2
	nlist[9] = "VITAMIN_B6"; // ビタミンB6
	nlist[10] = "VITAMIN_B12"; // ビタミンB12
	nlist[11] = "VITAMIN_D"; // ビタミンD
	nlist[12] = "VITAMIN_K"; // ビタミンK
	nlist[13] = "CHOLESTEROL"; // コレステロール
	nlist[14] = "TOTAL_DIETARYFIBER"; // 食物繊維総量
	nlist[15] = "SATURATED_FATTY_ACIDS"; // 飽和脂肪酸
	var initNut = nlist[Math.floor(16 * Math.random())];

	// 食品群の配列
	var foodGroup = new Array(18);

	foodGroup[0] = "穀類";
	foodGroup[1] = "いも及びでん粉類";
	foodGroup[2] = "砂糖及び甘味類";
	foodGroup[3] = "豆類";
	foodGroup[4] = "種実類";
	foodGroup[5] = "野菜類";
	foodGroup[6] = "果実類";
	foodGroup[7] = "きのこ類";
	foodGroup[8] = "藻類";
	foodGroup[9] = "魚介類";
	foodGroup[10] = "肉類";
	foodGroup[11] = "卵類";
	foodGroup[12] = "乳類";
	foodGroup[13] = "油脂類";
	foodGroup[14] = "菓子類";
	foodGroup[15] = "し好飲料類";
	foodGroup[16] = "調味料及び香辛料類";
	foodGroup[17] = "調理加工食品類";

	// 食品成分選択ドロップダウンリストの切替用配列
	var glist = new Array(5);
	glist["GENERAL"] = '<select id="cmp" name="cmp" onChange="Ranking.ajaxReq()">'
			+ '<option value="FOOD_ENERGY_kcal">エネルギー</option>'
			+ '<option value="WATER">水分</option>'
			+ '<option value="PROTEIN">たんぱく質</option>'
			+ '<option value="THE_SUM_OF_AMINO_ACID_RESIDUES">アミノ酸組成によるたんぱく質</option>'
			+ '<option value="LIPID">脂質</option>'
			+ '<option value="TRIACYLGLYCEROL_EQUIVALENTS">トリアシルグリセロール当量</option>'
			+ '<option value="CARBOHYDRATES_BY_DIFFERENCE">炭水化物</option>'
			+ '<option value="ASH">灰分</option>'
			+ '<option value="CHOLESTEROL">コレステロール</option>'
			+ '<option value="SODIUM_CHIORIDE">食塩相当量</option>'
			+ '<option value="WEIGHT_CHANGE_RATE">重量変化率</option>'
			+ '<option value="PERCENT_REFUSE">廃棄率</option>' + '</select>';
	glist["MINERAL"] = '<select id="cmp" name="cmp" onChange="Ranking.ajaxReq()">'
			+ '<option value="SODIUM">ナトリウム</option>'
			+ '<option value="POTASSIUM">カリウム</option>'
			+ '<option value="MAGNESIUM">マグネシウム</option>'
			+ '<option value="PHOSPHORUS">リン</option>'
			+ '<option value="CALCIUM">カルシウム</option>'
			+ '<option value="IRON">鉄</option>'
			+ '<option value="ZINC">亜鉛</option>'
			+ '<option value="COPPER">銅</option>'
			+ '<option value="MANGAN">マンガン</option>'
			+ '<option value="IODINE">ヨウ素</option>'
			+ '<option value="SELENIUM">セレン</option>'
			+ '<option value="CHROMIUM">クロム</option>'
			+ '<option value="MOLYBDENUM">モリブデン</option>' + '</select>';
	glist["VITAMIN"] = '<select id="cmp" name="cmp" onChange="Ranking.ajaxReq()">'
			+ '<option value="RETINOL">レチノール</option>'
			+ '<option value="ALPHA_CAROTENE">α－カロテン</option>'
			+ '<option value="BETA_CAROTENE">β－カロテン</option>'
			+ '<option value="CRYPTOXANTHIN">クリプトキサンチン</option>'
			+ '<option value="BETA_CAROTENE_EQUIVALENTS">β－カロテン当量</option>'
			+ '<option value="RETINOL_EQUIVALENTS">レチノール当量</option>'
			+ '<option value="VITAMIN_D">ビタミンD</option>'
			+ '<option value="ALPHA_TOCOPHEROL">α－トコフェロール</option>'
			+ '<option value="BETA_TOCOPHEROL">β－トコフェロール</option>'
			+ '<option value="GAMMA_TOCOPHEROL">γ－トコフェロール</option>'
			+ '<option value="DELTA_TOCOPHEROL">δ－トコフェロール</option>'
			+ '<option value="VITAMIN_K">ビタミンK</option>'
			+ '<option value="THIAMIN">ビタミンB1</option>'
			+ '<option value="RIBOFLAVIN">ビタミンB2</option>'
			+ '<option value="NIACIN">ナイアシン</option>'
			+ '<option value="VITAMIN_B6">ビタミンB6</option>'
			+ '<option value="VITAMIN_B12">ビタミンB12</option>'
			+ '<option value="FOLACHIN">葉酸</option>'
			+ '<option value="PANTOTHENIC_ACID">パントテン酸</option>'
			+ '<option value="BIOTIN">ビオチン</option>'
			+ '<option value="ASCORBIC_ACID">ビタミンC</option>' + '</select>';
	glist["FIBER"] = '<select id="cmp" name="cmp" onChange="Ranking.ajaxReq()">'
			+ '<option value="WATER_SOLUBLE_DIETARYFIBER">水溶性食物繊維</option>'
			+ '<option value="WATER_INSOLUBLE_DIETARYFIBER">不溶性食物繊維</option>'
			+ '<option value="TOTAL_DIETARYFIBER">食物繊維総量</option>'
			+ '</select>';
	glist["FAT"] = '<select id="cmp" name="cmp" onChange="Ranking.ajaxReq()">'
			+ '<option value="SATURATED_FATTY_ACIDS">飽和脂肪酸</option>'
			+ '<option value="MONOUNSATURATED_FATTY_ACIDS">一価不飽和脂肪酸</option>'
			+ '<option value="POLYUNSATURATED_FATTY_ACIDS">多価不飽和脂肪酸</option>'
			+ '<option value="TOTAL_FATTY_ACIDS">脂肪酸総量</option>'
			+ '<option value="POLYUNSATURATED_FATTY_ACIDSn3">n-3系 多価不飽和脂肪酸</option>'
			+ '<option value="POLYUNSATURATED_FATTY_ACIDSn6">n-6系 多価不飽和脂肪酸</option>'
			+ '<option value="FATTY_ACID_040">4:0 酪酸</option>'
			+ '<option value="FATTY_ACID_060">6:0 ヘキサン酸</option>'
			+ '<option value="FATTY_ACID_070">7:0 ヘプタン酸</option>'
			+ '<option value="FATTY_ACID_080">8:0 オクタン酸</option>'
			+ '<option value="FATTY_ACID_100">10:0 デカン酸</option>'
			+ '<option value="FATTY_ACID_101">10:1 デセン酸</option>'
			+ '<option value="FATTY_ACID_120">12:0 ラウリン酸</option>'
			+ '<option value="FATTY_ACID_130">13:0 トリデカン酸</option>'
			+ '<option value="FATTY_ACID_140">14:0 ミリスチン酸</option>'
			+ '<option value="FATTY_ACID_141">14:1 ミリストレイン酸</option>'
			+ '<option value="FATTY_ACID_150">15:0 ペンタデカン酸</option>'
			+ '<option value="FATTY_ACID_150_ANT">15:0 ANT ペンタデカン酸</option>'
			+ '<option value="FATTY_ACID_151">15:1 ペンタデセン酸</option>'
			+ '<option value="FATTY_ACID_160">16:0 パルミチン酸</option>'
			+ '<option value="FATTY_ACID_160_ISO">16:0 ISO パルミチン酸</option>'
			+ '<option value="FATTY_ACID_161">16:1 パルミトレイン酸</option>'
			+ '<option value="FATTY_ACID_162">16:2 ヘキサデカジエン酸</option>'
			+ '<option value="FATTY_ACID_163">16:3 ヘキサデカトリエン酸</option>'
			+ '<option value="FATTY_ACID_164">16:4 ヘキサデカテトラエン酸</option>'
			+ '<option value="FATTY_ACID_170">17:0 ヘプタデカン酸</option>'
			+ '<option value="FATTY_ACID_170_ANT">17:0 ANT ヘプタデカン酸</option>'
			+ '<option value="FATTY_ACID_171">17:1 ヘプタデセン酸</option>'
			+ '<option value="FATTY_ACID_180">18:0 ステアリン酸</option>'
			+ '<option value="FATTY_ACID_181">18:1 オレイン酸</option>'
			+ '<option value="FATTY_ACID_182n6">18:2 n-6 リノール酸</option>'
			+ '<option value="FATTY_ACID_183n3">18:3 n-3 α－リノレン酸</option>'
			+ '<option value="FATTY_ACID_183n6">18:3 n-6 γ－リノレン酸</option>'
			+ '<option value="FATTY_ACID_184n3">18:4 n-3 オクタデカテトラエン酸</option>'
			+ '<option value="FATTY_ACID_200">20:0 アラキジン酸</option>'
			+ '<option value="FATTY_ACID_201">20:1 イコセン酸</option>'
			+ '<option value="FATTY_ACID_202n6">20:2 n-6 イコサジエン酸</option>'
			+ '<option value="FATTY_ACID_203n6">20:3 n-6 イコサトリエン酸</option>'
			+ '<option value="FATTY_ACID_204n3">20:4 n-3 イコサテトラエン酸</option>'
			+ '<option value="FATTY_ACID_204n6">20:4 n-6 アラキドン酸</option>'
			+ '<option value="FATTY_ACID_205n3">20:5 n-3 イコサペンタエン酸</option>'
			+ '<option value="FATTY_ACID_215n3">21:5 n-3 ヘンイコサペンタデエン酸</option>'
			+ '<option value="FATTY_ACID_220">22:0 ベヘン酸</option>'
			+ '<option value="FATTY_ACID_221">22:1 ドコセン酸</option>'
			+ '<option value="FATTY_ACID_222">22:2 ドコサジエン酸</option>'
			+ '<option value="FATTY_ACID_224n6">22:4 n-6 ドコサテトラエン酸</option>'
			+ '<option value="FATTY_ACID_225n3">22:5 n-3 ドコサペンタエン酸</option>'
			+ '<option value="FATTY_ACID_225n6">22:5 n-6 ドコサペンタエン酸</option>'
			+ '<option value="FATTY_ACID_226n3">22:6 n-3 ドコサヘキサエン酸</option>'
			+ '<option value="FATTY_ACID_240">24:0 リグノセリン酸</option>'
			+ '<option value="FATTY_ACID_241">24:1 テトラコセン酸</option>'
			+ '<option value="UNIDENTIFIED">未同定</option>' + '</select>';

	// ランキングを読み込む
	//
	// getResoult(target, cmp, limit, group)
	// target ランキングを表示するタグのid
	// cmp 食品成分
	// limit ランキング数
	// group 食品群
	// caption "ON"なら、ランキングのテーブルにキャプションを付ける
	var getResoult = function(target, cmp, limit, group, caption) {
		param = "out=ajax&cmp=" + cmp + "&limit=" + limit;
		if (group) {
			param = param + "&group=" + group;
		}
		if (caption) {
			param = param + "&caption=" + caption;
		}
		$(target).innerHTML = "読み込み中…";
		new Ajax.Updater( {
			success : target
		}, rankingCGI, {
			method : "get",
			parameters : param,
			onFailure : function(httpObj) {
				$(target).innerHTML = "エラーで読み込めませんでした";
			}
		});
	}

	// ランキングのタイトルを設定する
	//
	// getTitle(target, cmp, limit, group)
	// target タイトルを表示するタグのid
	// cmp 食品成分
	// limit ランキング数
	// group 食品群
	var getTitle = function(target, cmp, limit, group) {
		param = "out=ajax&cmp=" + cmp + "&limit=" + limit;
		if (group) {
			param = param + "&group=" + group;
		}
		new Ajax.Updater( {
			success : target
		}, titleCGI, {
			method : "get",
			parameters : param,
			onFailure : function(httpObj) {
				$(target).innerHTML = "エラーで読み込めませんでした";
			}
		});
	}

	// オブジェクトのメンバ
	return {
		// 初期値用成分
		initNut : initNut,

		// トップページの初期ランキング出力
		topInitLoad : function() {
			getResoult("result", initNut, 5, "", "ON");
		},

		// ランキングページの初期ランキング出力
		initLoad : function() {
			Element.toggle("buttons_input"); // 食品成分グループ選択ドロップダウンリストを表示
			Element.toggle("buttons_ancher"); // 食品成分グループ選択ドロップダウンリストを表示
			Element.toggle("cmpgroup"); // 食品成分グループ選択ドロップダウンリストを表示
			$("cmpspan").innerHTML = glist[$F('cmpgroup')];
			getResoult("result", initNut, 5, "", "");
			getTitle("title", initNut, 5, "");
			Element.toggle("buttons"); // ボタンを隠す
		},

		// ランキングをリクエストする
		//
		// ajaxReq(cmp, limit, group)
		// cmp 食品成分
		// limit ランキング数
		// group 食品群
		ajaxReq : function(cmp, limit, group) {
			var cmp = $F('cmp');
			var limit = $F('limit');
			var group = $F('group');

			getResoult("result", cmp, limit, group, "");
			getTitle("title", cmp, limit, group);
		},

		glist : glist
	};
}();

