/** * @file add_dept.js * @brief 出発地追加(ポップアウト形式)の処理を纏めたファイル */ /** * @brief 出発地情報リスト(番号付け) */ var dept_array_list = new Array(); dept_array_list[0] = "SPK"; dept_array_list[1] = "TYO"; dept_array_list[2] = "NRT"; dept_array_list[3] = "HND"; dept_array_list[4] = "NGO"; dept_array_list[5] = "OSA"; dept_array_list[6] = "FUK"; dept_array_list[7] = "HKD"; dept_array_list[8] = "AKJ"; dept_array_list[9] = "AOJ"; dept_array_list[10] = "SDJ"; dept_array_list[11] = "FKS"; dept_array_list[12] = "KIJ"; dept_array_list[13] = "TOY"; dept_array_list[14] = "FSZ"; dept_array_list[15] = "KMQ"; dept_array_list[16] = "OKJ"; dept_array_list[17] = "HIJ"; dept_array_list[18] = "TKS"; dept_array_list[19] = "TAK"; dept_array_list[20] = "MYJ"; dept_array_list[21] = "KCZ"; dept_array_list[22] = "KKJ"; dept_array_list[23] = "NGS"; dept_array_list[24] = "KMJ"; dept_array_list[25] = "OIT"; dept_array_list[26] = "KMI"; dept_array_list[27] = "KOJ"; dept_array_list[28] = "OKA"; dept_array_list[29] = "SNT"; /** * @brief 出発地情報の配列 */ var dept_array = new Array(); dept_array['SPK'] = "札幌"; dept_array['TYO'] = "東京"; dept_array['NRT'] = "成田"; dept_array['HND'] = "羽田"; dept_array['NGO'] = "名古屋"; dept_array['OSA'] = "大阪(関西、伊丹)"; dept_array['FUK'] = "福岡"; dept_array['HKD'] = "函館"; dept_array['AKJ'] = "旭川"; dept_array['AOJ'] = "青森"; dept_array['SDJ'] = "仙台"; dept_array['FKS'] = "福島"; dept_array['KIJ'] = "新潟"; dept_array['TOY'] = "富山"; dept_array['FSZ'] = "静岡"; dept_array['KMQ'] = "小松"; dept_array['OKJ'] = "岡山"; dept_array['HIJ'] = "広島"; dept_array['TKS'] = "徳島"; dept_array['TAK'] = "高松"; dept_array['MYJ'] = "松山"; dept_array['KCZ'] = "高知"; dept_array['KKJ'] = "北九州"; dept_array['NGS'] = "長崎"; dept_array['KMJ'] = "熊本"; dept_array['OIT'] = "大分"; dept_array['KMI'] = "宮崎"; dept_array['KOJ'] = "鹿児島"; dept_array['OKA'] = "那覇"; dept_array['SNT'] = "その他"; var _js_param = new Array(); var _js_airport = new Array(); // ポップアウト内の出発地数 var pop_dept_num = 0; // 現在表示させたポップアウト内の出発地数 var v_pop_dept_num = 0; // デフォルト表示する出発地数(数に変更あれば直すこと) //変更 東京(羽田、成田)→ 東京、成田、羽田 var def_pop_dept_num = 7; /** * @brief 出発地初期化関数 */ function deptInit() { // GETパラメータ取得 getParametar(); // コースが存在する出発地取得 getDeptAirport(); displayDept(); } /** * @brief コース登録されている出発地の場合は非表示を解除する */ function displayDept() { // value値が二つの時 → 数が少ないのでじか指定 if(_js_airport['HND'] == 1 || _js_airport['NRT'] == 1){ _js_airport['TYO'] = 1; } if(_js_airport['KIX'] == 1 || _js_airport['ITM'] == 1){ _js_airport['OSA'] = 1; } var str = ''; var add_dept_check = 0; // 表示する空港数 var airport_num = 0; var form_obj = document.OPS_SEARCH; if (form_obj.ap) { for (var i = 0; i < dept_array_list.length; i++) { var v_airport = 0; var add_airport = 0; if (i < def_pop_dept_num) { var ap_obj = form_obj.ap[i]; // ポップアウト内 } else { var add_dept_num = i - def_pop_dept_num; if (form_obj.ap_add) { var ap_obj = form_obj.ap_add[add_dept_num]; } else { continue; } } if (!ap_obj) { continue; } ap_obj.checked = false; if (_js_airport[ap_obj.value]) { v_airport = 1; airport_num++; if (_js_param['ap'] == ap_obj.value || _js_param['ap'][ap_obj.value]) { if (i > def_pop_dept_num -1) { add_airport = 1; } ap_obj.checked = true; } if (i > def_pop_dept_num - 1) { add_dept_check++; pop_dept_num++; } } else if (_js_param['ap'] == ap_obj.value) { ap_obj.checked = true; v_airport = 1; if (i > def_pop_dept_num - 1) { add_airport = 1; add_dept_check++; pop_dept_num++; } } else if (_js_param['ap'][ap_obj.value]) { ap_obj.checked = true; v_airport = 1; if (i > def_pop_dept_num - 1) { add_airport = 1; add_dept_check++; pop_dept_num++; } } // 主要5都市出発地表示 if (v_airport == 1) { // HTML内に埋め込んであるID作成 var hidden_id = 'js_hidden_' + ap_obj.value; document.getElementById(hidden_id).style.display = 'block'; } // 東京が選択された際hidden解除 if (_js_airport['TYO'] == 1) { if (document.getElementById("js_hidden_TYO_top")) { document.getElementById("js_hidden_TYO_top").style.display = 'block'; } if (document.getElementById("js_hidden_TYO_bottom")) { document.getElementById("js_hidden_TYO_bottom").style.display = 'block'; } } // ポップアウト内の出発地 if (add_airport == 1) { str += '
  • '; // base.js str += makeCheckBoxStr("ap", ap_obj.value, i, dept_array[ap_obj.value], 1, ("controlApCheckBox(\'ap\'," + i + ")")); str += makeCheckLabelStr(ap_obj.value, dept_array[ap_obj.value], 'onclick="checkApBox(\'' + dept_array_list[i] + '\')"'); str += '
  • '; v_pop_dept_num++; } } } else { return; } // 空港が一つも無い場合 if (airport_num == 0) { str = ''; for (var i = 0; i < dept_array_list.length; i++) { airport_tmp = ''; airport_tmp = 'js_hidden_' + dept_array_list[i]; if (document.getElementById(airport_tmp)) { document.getElementById(airport_tmp).style.display = 'block'; pop_dept_num++; } if (_js_param['ap'] == dept_array_list[i] || _js_param['ap'][dept_array_list[i]]) { if (i < def_pop_dept_num) { if (form_obj.ap) { if (form_obj.ap[i]) { form_obj.ap[i].checked = true; } } else { continue; } } else { var check_name = "ap"; var check_value = dept_array_list[i]; var check_id = dept_array_list[i]; var text_node = dept_array[dept_array_list[i]]; var on_click_fank = "controlApCheckBox(\'ap\'," + (i + def_pop_dept_num) + ")"; str += '
  • '; str += makeCheckBoxStr(check_name, check_value, check_id, text_node, 1, on_click_fank); str += makeCheckLabelStr(check_value, text_node, 'onclick="checkApBox(\'' + dept_array_list[i] + '\')"'); str += '
  • '; if (form_obj.ap_add) { if (form_obj.ap_add[i - def_pop_dept_num]) { form_obj.ap_add[i - def_pop_dept_num].checked = true; } } else { continue; } v_pop_dept_num++; } } } add_dept_check++; pop_dept_num = pop_dept_num - def_pop_dept_num; } if(str != ''){ var create_li = document.createElement('span'); create_li.innerHTML = str; var add_dept_id = document.getElementById('js_add_dept_id'); add_dept_id.appendChild(create_li); } if (add_dept_check == 0 || pop_dept_num == v_pop_dept_num) { if (document.getElementById('add_dept_id_link')) { document.getElementById('add_dept_id_link').style.display = 'none'; } } return; } /** * @brief ポップアウト内の追加ボタンが押された時に走る関数。 * チェックされた項目のHTMLを生成し、addCheckBoxに渡す */ function jugeCheckBox() { var form_obj = document.OPS_SEARCH; for (var i = 0; i < dept_array_list.length - def_pop_dept_num; i++) { var ap_obj = form_obj.ap_add[i]; if (ap_obj.checked && checkAp(ap_obj.value)) { str = ''; var check_name = "ap"; var check_value = ap_obj.value; var check_id = (i + def_pop_dept_num) var text_node = dept_array[ap_obj.value]; var on_click_fank = "controlApCheckBox(\'ap\'," + (i + def_pop_dept_num) + ")"; // (base.js) str += '
  • ' //str += makeCheckBoxStr("ap", ap_obj.value, (i + def_pop_dept_num), dept_array[ap_obj.value], 1,("controlApCheckBox(\'ap\'," + (i + def_pop_dept_num) + ")")); str += makeCheckBoxStr(check_name, check_value, check_id, text_node, 1, on_click_fank); str += makeCheckLabelStr(check_value, text_node, 'onclick="checkApBox(\'' + dept_array_list[i + def_pop_dept_num] + '\')"'); str += '
  • '; addCheckBox(str); v_pop_dept_num++; } } if (pop_dept_num == v_pop_dept_num) { if (document.getElementById('add_dept_id_link')) { document.getElementById('add_dept_id_link').style.display = 'none'; } } return; } /** * @brief 出発地の所にチェックボックスを追加する関数 * @param str チェックボックスのHTMLが書かれた文字列 */ function addCheckBox(str) { if (str != '') { var create_li = document.createElement('span'); create_li.innerHTML = str; var add_dept_id = document.getElementById('js_add_dept_id'); add_dept_id.appendChild(create_li); } else { return; } } /** * @brief 既に表示されている出発地ではないかチェックする * @param ap_value チェックを入れる要素 * @return bool true → 表示されている false → 表示されていない */ function checkAp(ap_value) { for(var i = 0; i < document.OPS_SEARCH.length; i++){ if(document.OPS_SEARCH[i].name=="ap" && document.OPS_SEARCH[i].value == ap_value){ return false; } } return true; } /** * @brief 表示されているチェックボックスのチェックをポップアウト内にも反映させる関数 * @param where_obj 何処に属する要素か判定 ap = 表示 ap_add ポップアウト内 * @param ap_num idに振られた番号(グローバルの配列と対応) */ function controlApCheckBox(where_obj, ap_ele) { var form_obj = document.OPS_SEARCH; if (where_obj == 'ap') { if (document.getElementById(ap_ele)) { if (ap_ele >= def_pop_dept_num) { var add_ap_num = form_obj.ap_add[ap_ele - def_pop_dept_num]; if (add_ap_num.checked == true) { add_ap_num.checked = false; } else { add_ap_num.checked = true; } } } } else if (where_obj == 'ap_add') { for (var i = 0; i < form_obj.ap.length; i++ ){ if (form_obj.ap[i].value == dept_array_list[ap_ele]) { if (form_obj.ap[i].checked == true) { form_obj.ap[i].checked = false; } else { form_obj.ap[i].checked = true; } } } } else { return; } } /** * @brief チェックボックス、文字のどちらかがクリックされたら、チェックを入れる関数 * @param $value 出発地のvalue値(SPK等) */ function checkApBox(value) { var form_obj = document.OPS_SEARCH; for (var i = 0; i < form_obj.ap.length; i++) { if (value == form_obj.ap[i].value) { if (form_obj.ap[i].checked == true) { form_obj.ap[i].checked = false; } else { form_obj.ap[i].checked = true; } } } for (var j = 0; j < form_obj.ap_add.length; j++) { if (value == form_obj.ap_add[j].value) { if (form_obj.ap_add[j].checked == true) { form_obj.ap_add[j].checked = false; } else { form_obj.ap_add[j].checked = true; } } } }