/*
 * 出発地
 * value: <option>タグの value値
 * label: セレクトボックスの表示テキスト
 * dest:  出発地に対応する到着地。destAreaから対応するもののvalueの値を列挙
 */
var startArea = [
{"value":"",  "label":"選択してください","dest":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43]},
{"value":"AO", "label":"青森[青森・弘前・八戸・三沢]", "dest":[6,8,9,11]},
{"value":"AK", "label":"秋田[秋田・大曲・横手・土崎]", "dest":[8,9,11]},
{"value":"IW", "label":"岩手A[盛岡・北上・花巻]", "dest":[8,9,11]},
{"value":"IT", "label":"岩手B[一関・平泉・水沢]", "dest":[8,9,11]},
{"value":"YG", "label":"山形[山形・酒田・鶴岡・米沢・天童]", "dest":[8,9,16,17,20,21]},
{"value":"MG", "label":"宮城[仙台・泉中央・古川]", "dest":[1,8,9,11,16,17,20,21,24,25,26]},
{"value":"FK", "label":"福島[福島・郡山]", "dest":[8,9,16,17,20,21,24,25]},
{"value":"TY", "label":"東京[東京・新宿]", "dest":[1,2,3,4,5,6,7,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]},
{"value":"TD", "label":"千葉[東京ディズニーリゾート]", "dest":[1,2,3,4,5,6,13,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,37,38]},
{"value":"ST", "label":"埼玉[大宮]", "dest":[1,2,3,4,5,17,18,24,25,26]},
{"value":"KN", "label":"神奈川[横浜]", "dest":[1,2,3,4,6,14,19,20,21,22,23,24,25,26,29,30,32,33,34,35,36,37]},
{"value":"IB", "label":"茨城[つくば]", "dest":[]},
{"value":"NT", "label":"新潟[新潟・長岡・燕三条・六日町]", "dest":[8,9,24,25,26]},
{"value":"YN", "label":"山梨[八ヶ岳・清里]", "dest":[8]},
{"value":"NO", "label":"長野[長野・松本・蓼科・上高地]", "dest":[8,11,20,21,24,25,26]},
{"value":"TM", "label":"富山[富山・富山大学・高岡]", "dest":[5,6,7,8,9,21,24,25,26,10]},
{"value":"IS", "label":"石川[金沢・小松]", "dest":[5,6,7,8,9,10,20,24,25,26]},
{"value":"FI", "label":"福井[福井]", "dest":[8,9,20,24,25,26]},
{"value":"SI", "label":"静岡[静岡エコパアリーナ]", "dest":[]},
{"value":"AI", "label":"愛知[名古屋・一宮・岡崎・豊田]", "dest":[5,6,7,8,9,11,17,18,24,25,26,29,30,31,38]},
{"value":"GI", "label":"岐阜[岐阜]", "dest":[5,6,7,8,9,11]},
{"value":"MI", "label":"三重[四日市・津・宇治山田]", "dest":[8,9,11]},
{"value":"SH", "label":"滋賀[草津]", "dest":[8,9,11,15,16]},
{"value":"KY", "label":"京都[京都]", "dest":[6,7,8,9,10,11,13,15,16,17,18,20,30,32,33,36,38,39,40,41]},
{"value":"OO", "label":"大阪[梅田・なんば・天王寺・ＵＳＪ]", "dest":[6,7,8,9,10,11,13,15,16,17,18,20,30,32,33,36,38,39,40,41]},
{"value":"HY", "label":"兵庫[神戸・加古川・姫路]", "dest":[6,7,8,9,10,11,13,15,16,17,18,20,36,38,39,40,41]},
{"value":"NA", "label":"奈良[奈良・天理]", "dest":[8,9]},
{"value":"WA", "label":"和歌山[和歌山]", "dest":[8,9]},
{"value":"OY", "label":"岡山[岡山・津山]", "dest":[8,9,11,20,38]},
{"value":"HI", "label":"広島[広島・西条・広島大学]", "dest":[8,9,11,20,24,25]},
{"value":"YM", "label":"山口[新山口・下関]", "dest":[8,9,20]},
{"value":"TT", "label":"鳥取[米子]", "dest":[8,9]},
{"value":"SM", "label":"島根[出雲・松江]", "dest":[8,9]},
{"value":"KA", "label":"香川[高松]", "dest":[8,9,11]},
{"value":"TO", "label":"徳島[徳島]", "dest":[8,9,11]},
{"value":"EH", "label":"愛媛[松山]", "dest":[8,9,11,24,25,26,38]},
{"value":"KT", "label":"高知[高知]", "dest":[8,9,11,38]},
{"value":"FU", "label":"福岡[博多・小倉・門司]", "dest":[8,9,20,24,25,26,29,36,37,39,40,41,42,43]},
{"value":"NG", "label":"長崎[長崎・ハウステンボス]", "dest":[24,25,26,38]},
{"value":"KM", "label":"熊本[熊本]", "dest":[24,25,26,38]},
{"value":"OI", "label":"大分[大分・別府・湯布院]", "dest":[24,25,26,38]},
{"value":"MY", "label":"宮崎[宮崎・都城]", "dest":[38]},
{"value":"KG", "label":"鹿児島[鹿児島・本港・空港]", "dest":[38]}
];

/*
 * 到着地
 * value: <option>タグの value値
 * label: セレクトボックスの表示テキスト
 * dest:  到着に対応する出発地。startAreaから対応するもののvalueの値を列挙
 */
var destArea = [
{"value":"",  "label":"選択してください","start":[1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43]},
{"value":"AO", "label":"青森[青森・弘前・八戸・三沢]", "start":[6,8,9,10,11]},
{"value":"AK", "label":"秋田[秋田・大曲・横手・土崎]", "start":[8,9,10,11]},
{"value":"IW", "label":"岩手A[盛岡・北上・花巻]", "start":[8,9,10,11]},
{"value":"IT", "label":"岩手B[一関・平泉・水沢]", "start":[8,9,10,11]},
{"value":"YG", "label":"山形[山形・酒田・鶴岡・米沢・天童]", "start":[8,9,10,16,17,20,21]},
{"value":"MG", "label":"宮城[仙台・泉中央・古川]", "start":[1,8,9,11,14,15,16,17,20,21,24,25,26]},
{"value":"FK", "label":"福島[福島・郡山]", "start":[8,9,16,17,20,21,24,25]},
{"value":"TY", "label":"東京[東京・新宿]", "start":[1,2,3,4,5,6,7,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]},
{"value":"TD", "label":"千葉[東京ディズニーリゾート]", "start":[1,2,3,4,5,6,7,13,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,34,35,36,37,38]},
{"value":"ST", "label":"埼玉[大宮]", "start":[1,2,3,4,5,17,18,25,26]},
{"value":"KN", "label":"神奈川[横浜]", "start":[1,2,3,4,6,7,15,19,20,21,22,23,24,25,26,29,30,32,33,34,35,36,37]},
{"value":"IB", "label":"茨城[つくば]", "start":[]},
{"value":"NT", "label":"新潟[新潟・長岡・燕三条・六日町]", "start":[8,9,24,25,26]},
{"value":"YN", "label":"山梨[八ヶ岳・清里]", "start":[8]},
{"value":"NO", "label":"長野[長野・松本・蓼科・上高地]", "start":[8,11,20,23,24,25,26]},
{"value":"TM", "label":"富山[富山・富山大学・高岡]", "start":[5,6,7,8,9,10,16,17,23,24,25,26]},
{"value":"IS", "label":"石川[金沢・小松]", "start":[5,6,7,8,9,10,16,17,20,24,25,26]},
{"value":"FI", "label":"福井[福井]", "start":[8,9,20,24,25,26]},
{"value":"SI", "label":"静岡[静岡エコパアリーナ]", "start":[]},
{"value":"AI", "label":"愛知[名古屋・一宮・岡崎・豊田]", "start":[5,6,7,8,9,11,17,18,24,25,26,29,30,31,38]},
{"value":"GI", "label":"岐阜[岐阜]", "start":[5,6,7,8,9,11]},
{"value":"MI", "label":"三重[四日市・津・宇治山田]", "start":[8,9,11]},
{"value":"SH", "label":"滋賀[草津]", "start":[8,9,11,12,15,16]},
{"value":"KY", "label":"京都[京都]", "start":[6,7,8,9,11,13,15,16,17,18,20,30,36,38,39,40,41]},
{"value":"OO", "label":"大阪[梅田・なんば・天王寺・ＵＳＪ]", "start":[6,7,8,9,10,11,13,15,16,17,18,20,27,29,30,32,33,36,38,39,40,41]},
{"value":"HY", "label":"兵庫[神戸・加古川・姫路]", "start":[6,7,8,9,10,11,13,15,16,17,18,20,36,38,39,40,41]},
{"value":"NA", "label":"奈良[奈良・天理]", "start":[8,9]},
{"value":"WA", "label":"和歌山[和歌山]", "start":[8,9]},
{"value":"OY", "label":"岡山[岡山・津山]", "start":[8,9,11,20,38]},
{"value":"HI", "label":"広島[広島・西条・広島大学]", "start":[8,9,11,20,21,25]},
{"value":"YM", "label":"山口[新山口・下関]", "start":[8,9,20]},
{"value":"TT", "label":"鳥取[米子]", "start":[8,9]},
{"value":"SM", "label":"島根[出雲・松江]", "start":[8,9]},
{"value":"KA", "label":"香川[高松]", "start":[8,9,11]},
{"value":"TO", "label":"徳島[徳島]", "start":[8,9,11]},
{"value":"EH", "label":"愛媛[松山]", "start":[8,9,11,24,25,26,38]},
{"value":"KT", "label":"高知[高知]", "start":[8,9,11,38]},
{"value":"FU", "label":"福岡[博多・小倉・門司]", "start":[8,9,20,24,25,26,29,36,37,39,40,41,42,43]},
{"value":"NG", "label":"長崎[長崎・ハウステンボス]", "start":[24,25,26,38]},
{"value":"KM", "label":"熊本[熊本]", "start":[24,25,26,38]},
{"value":"OI", "label":"大分[大分・別府・湯布院]", "start":[24,25,26,38]},
{"value":"MY", "label":"宮崎[宮崎・都城]", "start":[38]},
{"value":"KG", "label":"鹿児島[鹿児島・本港・空港]", "start":[38]}
];


$(function() {


// start pulldown initialize
function createStartPullDown() {
for (var i = 0; i < $('select.area_start').length; i++) {
var select = $('select.area_start').get(i);
for (var j = 0; j < startArea.length; j++) {
select.options[j] = new Option(startArea[j].label, startArea[j].value);
}
}
}

// dest pulldown initialize
function createDestPullDown() {
for (var i = 0; i < $('select.area_dest').length; i++) {
var select = $('select.area_dest').get(i);
for (var j = 0; j < destArea.length; j++) {
select.options[j] = new Option(startArea[j].label, startArea[j].value);
}
}
}

// dest change & start pulldown update
function updateStartPullDown(selectedDest, idx) {
var start = $('select.area_start').get(idx);
var selectedStart = $(start.options[start.selectedIndex]).val();

while (start.options.length > 0) start.remove(0);

var starts = destArea[0].start;
for (var i = 0; i < destArea.length; i++) {
if (selectedDest && destArea[i].value == selectedDest) {
starts = destArea[i].start;
}
}

start.options[0] = new Option('選択してください', '');
var selectedIdx = 0;
for (var i = 0; i < starts.length; i++) {
var area = startArea[starts[i]];
start.options[i+1] = new Option(area.label, area.value);
if (selectedStart && area.value == selectedStart) selectedIdx = i+1;
}

start.selectedIndex = selectedIdx;
}

// start change & dest pulldown update
function updateDestPullDown(selectedStart, idx) {
var dest = $('select.area_dest').get(idx);
var selectedDest = $(dest.options[dest.selectedIndex]).val();

while (dest.options.length > 0) dest.remove(0);

var dests = startArea[0].dest;
for (var i = 0; i < startArea.length; i++) {
if (selectedStart && startArea[i].value == selectedStart) {
dests = startArea[i].dest;
}
}

dest.options[0] = new Option('選択してください', '');
var selectedIdx = 0;
for (var i = 0; i < dests.length; i++) {
var area = destArea[dests[i]];
dest.options[i+1] = new Option(area.label, area.value);
if (selectedDest && area.value == selectedDest) selectedIdx = i+1;
}

dest.selectedIndex = selectedIdx;
}


// Initialize
createStartPullDown();
createDestPullDown();

    // 変更後にページがリロードされたときのため
if ($('#hdn_area_start').val() != "") {
    $('select.area_start').val($('#hdn_area_start').val());
    updateDestPullDown($('select.area_start').val(), 0);
}

if ($('#hdn_area_dest').val() != "") {
    $('select.area_dest').val($('#hdn_area_dest').val());
    updateStartPullDown($('select.area_dest').val(), 0);
}

$('#hdn_area_start').val($('select.area_start').val());
$('#hdn_area_dest').val($('select.area_dest').val());

$('select.area_start').each(function(idx) {
$(this).change(function(){
updateDestPullDown($(this.options[this.selectedIndex]).val(), idx);
$('#hdn_area_start').val($(this.options[this.selectedIndex]).val());
});
})

$('select.area_dest').each(function(idx) {
$(this).change(function(){
updateStartPullDown($(this.options[this.selectedIndex]).val(), idx);
$('#hdn_area_dest').val($(this.options[this.selectedIndex]).val());
});
})

});
