jQuery.noConflict();
jQuery(function($) {
	var country_name = get_country_name(location.href);
	csvdata = order = new Array();
	index1 = new Array();
	index2 = new Array();
	indexNum = 2;
	th_width = "19%";
	td_width = "27%";
	option = '';
	$('.comparison_table').hide();
	$.get('/shared/csv/comparison_DSLR.tsv', function(data) {
		csvdata = jQuery.csv("\t")(data);

		// 注釈を除いた、インデックスの長さを取得
		index_len = 0;
		for(var len = 0; len<csvdata[0].length; len++) {
			if(csvdata[0][len].charAt(0) == '*') {
				break;
			}
			index_len++;
		}

		//1行目のIndex
		for(var cnt = 0; cnt<index_len; cnt++) {
			index1[cnt] = csvdata[0][cnt];
		}

		//2行目のIndex
		for(var cnt2 = 1; cnt2<index_len; cnt2++) {
			index2[cnt2] = csvdata[1][cnt2];
		}

		// プルダウンリスト
		for(var cnt3 = 2; cnt3<csvdata.length - 1; cnt3++) {
			if(csvdata[cnt3][2] != undefined) {
				countries = csvdata[cnt3][2].split(',');
			}

			if(csvdata[cnt3][4]){
				if(csvdata[cnt3][3] == '-') {
					//シリーズをプルダウン表示
					option += '<option value="'+csvdata[cnt3][0]+'">'+csvdata[cnt3][4]+'</option>';
					order[csvdata[cnt3][0]] = cnt3;
				}
				else {
					if(csvdata[cnt3][3] == 'new') {
						if(csvdata[cnt3][2].indexOf(country_name) >= 0) {
							// アーカイブ機種でなく、サイトの国情報が一致するものだけをリストに表示
							option += '<option value="'+csvdata[cnt3][0]+'">'+csvdata[cnt3][4]+'</option>';
							order[csvdata[cnt3][0]] = cnt3;
						}
					}
				}
			}
		}

		$('#comparison_areaR ul li:nth-child(1)').html('<select id="prd1" name="prd1"><option value="">Products 1</option>'+option+'</select>');
		$('#comparison_areaR ul li:nth-child(2)').html('<select id="prd2" name="prd2"><option value="">Products 2</option>'+option+'</select>');
		$('#comparison_areaR ul li:nth-child(3)').html('<select id="prd3" name="prd3"><option value="">Products 3</option>'+option+'</select>');

		if($.query.get('prd1').length){ $('#prd1').val($.query.get('prd1')); }
		if($.query.get('prd2').length){ $('#prd2').val($.query.get('prd2')); }
		if($.query.get('prd3').length){ $('#prd3').val($.query.get('prd3')); }

		if($.query.get('prd1') || $.query.get('prd2') || $.query.get('prd3')){
			if(!$('#prd1').val() && !$('#prd2').val() && !$('#prd3').val()){
				alert('There are no data.');
			}
			else{
				//テーブルを作成
				table_data = '';
				table_data_tmp = '';
				for(var cnt4=5; cnt4<index_len; cnt4++) {
					// 小見出しがあるかチェック
					if(index1[cnt4 + 1] == '-') {
						//次の列がハイフンの場合、小見出しがある項目
						//セル結合のため、ハイフンでない項目までの数を取得
						var rowCnt = 1;
						for(var row = cnt4+1; row<index_len; row++) {
							if(index1[row] != '-') {
								break;
							}
							rowCnt++;
						}

						data1CreF = new Array(rowCnt);
						data2CreF = new Array(rowCnt);
						data3CreF = new Array(rowCnt);
						for(var init=0; init<data1CreF.length; init++){
							// 初期化(0:データなし 1:データあり(ハイフン以外))
							data1CreF[init] = 1;
							data2CreF[init] = 1;
							data3CreF[init] = 1;
						}

						rowSpanSetFlg = 0;
						table_data_tmp = '';
						for(var rowCnt2 = 0; rowCnt2<rowCnt; rowCnt2++){
							index_data2 = '<tr>';
							if(rowSpanSetFlg == 0) {
								// 初回のみ、セル結合を実施
								index_data2 += '<th width=' + th_width + ' rowspan="' + rowCnt + '">' + index1[cnt4 + rowCnt2] + '</th>';
								rowSpanSetFlg = 1;
							}
							index_data2 += '<th>' + index2[cnt4 + rowCnt2] + '</th>';

							data1 = '';
							if($('#prd1').val()){
								if(csvdata[order[$('#prd1').val()]][cnt4 + rowCnt2] == '-') {
									//機種が選択されており、データがハイフンの場合
									data1CreF[rowCnt2] = 0;
								}

								data1 = '<td width=' + td_width + '>' + csvdata[order[$('#prd1').val()]][cnt4 + rowCnt2] + '</td>';
							}
							else{
								//機種が未選択の場合
								data1 = '<td width=' + td_width + '>-</td>';
								data1CreF[rowCnt2] = 0;
							}

							data2 = '';
							if($('#prd2').val()){
								if(csvdata[order[$('#prd2').val()]][cnt4 + rowCnt2] == '-') {
									//機種が選択されており、データがハイフンの場合
									data2CreF[rowCnt2] = 0;
								}

								data2 = '<td width=' + td_width + '>' + csvdata[order[$('#prd2').val()]][cnt4 + rowCnt2] + '</td>';
							}
							else{
								//機種が未選択の場合
								data2 = '<td width=' + td_width + '>-</td>';
								data2CreF[rowCnt2] = 0;
							}

							data3 = '';
							if($('#prd3').val()){
								if(csvdata[order[$('#prd3').val()]][cnt4 + rowCnt2] == '-') {
									//機種が選択されており、データがハイフンの場合
									data3CreF[rowCnt2] = 0;
								}

								data3 = '<td width=' + td_width + '>' + csvdata[order[$('#prd3').val()]][cnt4 + rowCnt2] + '</td>';
							}
							else{
								//機種が未選択の場合
								data3 = '<td width=' + td_width + '>-</td>';
								data3CreF[rowCnt2] = 0;
							}

							table_data_tmp += index_data2;
							table_data_tmp += data1;
							table_data_tmp += data2;
							table_data_tmp += data3;
							table_data_tmp += '</tr>';
						}

						flushF = 0;
						for(var dispCnt=0; dispCnt<rowCnt; dispCnt++){
							if((data1CreF[dispCnt] == 1) || (data2CreF[dispCnt] == 1) || (data3CreF[dispCnt] == 1)){
								// 全データハイフンの場合
								flushF = 1;
							}
						}

						if(flushF == 1){
							// 1つでもデータがある場合、表示用のtable_dataに追加
							table_data += table_data_tmp;
							table_data = table_data.replace(/""/g,'"');
						}

						cnt4 += rowCnt - 1;
					}
					else {
						//次の列がハイフンでないため、大見出しのみの項目
						index_data = '<tr>';
						index_data += '<th width=' + th_width + ' colspan="' + indexNum + '">' + index1[cnt4] + '</th>';

						data1 = '';
						data1CreF = 1;
						if($('#prd1').val()){
							if(csvdata[order[$('#prd1').val()]][cnt4] == '-') {
								//機種が選択されており、データがハイフンの場合
								data1CreF = 0;
							}

							data1 = '<td width=' + td_width + '>' + csvdata[order[$('#prd1').val()]][cnt4] + '</td>';
						}
						else{
							//機種が未選択の場合
							data1 = '<td width=' + td_width + '>-</td>';
							data1CreF = 0;
						}

						data2 = '';
						data2CreF = 1;
						if($('#prd2').val()){
							if(csvdata[order[$('#prd2').val()]][cnt4] == '-') {
								//機種が選択されており、データがハイフンの場合
								data2CreF = 0;
							}

							data2 = '<td width=' + td_width + '>' + csvdata[order[$('#prd2').val()]][cnt4] + '</td>';
						}
						else{
							//機種が未選択の場合
							data2 = '<td width=' + td_width + '>-</td>';
							data2CreF = 0;
						}

						data3 = '';
						data3CreF = 1;
						if($('#prd3').val()){
							if(csvdata[order[$('#prd3').val()]][cnt4] == '-') {
								//機種が選択されており、データがハイフンの場合
								data3CreF = 0;
							}

							data3 = '<td width=' + td_width + '>' + csvdata[order[$('#prd3').val()]][cnt4] + '</td>';
						}
						else{
							//機種が未選択の場合
							data3 = '<td width=' + td_width + '>-</td>';
							data3CreF = 0;
						}

						if((data1CreF == 1) || (data2CreF == 1) || (data3CreF == 1)) {
							table_data += index_data;
							table_data += data1;
							table_data += data2;
							table_data += data3;
							table_data += '</tr>';
							table_data = table_data.replace(/""/g,'"');
						}
					}
				}

				$('.comparison_table').append(table_data);

				$('.comparison_table').show();
			}
		}
	});
});

function get_country_name(str) {
	var ret = '';
	if (str != undefined) {
		pathes = str.split('/');
		if (pathes[2].indexOf('stg') != -1) {	// テスト環境
			if (str.indexOf('oisp') != -1){	//シンガポール
				ret = 'oisp';
			}
			else if (str.indexOf('oml') != -1){	//マレーシア
				ret = 'oml';
			}
			else if (str.indexOf('india') != -1){	//インド
				ret = 'india';
			//}
			//else if (str.indexOf('-vn') != -1){	//ベトナム
				//ret = 'oisp';
			}
			else {	//アジア
				ret = 'asia';
			}
		}
		else{
			if (pathes[2] != undefined) {
				if(pathes[2].match(/\.sg/)) {				//シンガポール
					ret = 'oisp';
				}
				else if(pathes[2].match(/\.my/)) {			//マレーシア
					ret = 'oml';
				}
				else if(pathes[2].match(/\.in/)) {			//インド
					ret = 'india';
				}
				else if(pathes[2].match(/\-vn/)) {			//ベトナム
					ret = '';
				}
				else {										// アジア
					ret = 'asia';
				}
			}
		}
	}
	return ret;
}


