function Area(n, code, countries, cities, num, theme) {
    this.name = n;
    this.code = code;
    this.countries = countries;
    this.cities = cities;
    this.num = num;
    this.theme = theme;
}

function Country(n, code, cities, num) {
    this.name = n;
    this.code = code;
    this.cities = cities;
    this.num = num;
}
function City(n, code) {
    this.name = n;
    this.code = code;
}

areas = new Array();
countries = new Array();
cities = new Array();

function InitArrays() {
    cities[0] = new City("ホノルル", "HNL");
    countries[0] = new Country("アメリカ(ハワイ州)", "HW", cities, cities.length);
    areas[0] = new Area("ハワイ", "HW", countries, null, countries.length, 0);

    countries = new Array();
    cities = new Array();
    cities[0] = new City("グアム", "GUM");
    countries[0] = new Country("グアム", "MN", cities, cities.length);
    areas[1] = new Area("グアム", "MN", countries, null, countries.length, 0);


    countries = new Array();
    cities = new Array();
    cities[0] = new City("ロサンゼルス", "LAX");
    cities[1] = new City("ニューヨーク", "NYC");
    cities[2] = new City("ラスベガス", "LAS");
    cities[3] = new City("ボストン", "BOS");
    cities[4] = new City("シカゴ", "CHI");
    cities[5] = new City("オーランド", "ORL");
    cities[6] = new City("シアトル", "SEA");
    cities[7] = new City("サンフランシスコ", "LAS");
    countries[0] = new Country("アメリカ", "US", cities, cities.length);

    cities = new Array();
    cities[0] = new City("バンクーバー", "YVR");
    cities[1] = new City("トロント", "YTO");
    countries[1] = new Country("カナダ", "CA", cities, cities.length);
    areas[2] = new Area("北アメリカ", "AM", countries, null, countries.length, 0);


    countries = new Array();
    cities = new Array();
    cities[0] = new City("カンクン", "CUN");
    countries[0] = new Country("メキシコ", "MX", cities, cities.length);
    areas[3] = new Area("中南米", "SA", countries, null, countries.length, 0);

    countries = new Array();
    cities = new Array();
    cities[0] = new City("ロンドン", "LON");
    countries[0] = new Country("イギリス", "GB", cities, cities.length);

    cities = new Array();
    cities[0] = new City("パリ", "PAR");
    countries[1] = new Country("フランス", "FR", cities, cities.length);
    areas[4] = new Area("ヨーロッパ", "EU", countries, null, countries.length, 0);

    countries = new Array();
    cities = new Array();
    cities[0] = new City("ソウル", "SEL");
    cities[1] = new City("プサン（釜山）", "PUS");
    cities[2] = new City("チェジュ（済州島）", "CJU");
    countries[0] = new Country("韓国", "KR", cities, cities.length);

    cities = new Array();
    cities[0] = new City("上海", "SHA");
    cities[1] = new City("北京", "BJS");
    countries[1] = new Country("中国", "CN", cities, cities.length);

    cities = new Array();
    cities[0] = new City("台北", "TPE");
    countries[2] = new Country("台湾", "TW", cities, cities.length);

    cities = new Array();
    cities[0] = new City("香港", "HKG");
    countries[3] = new Country("香港", "HK", cities, cities.length);

    cities = new Array();
    cities[0] = new City("バンコク", "BKK");
    countries[4] = new Country("タイ", "TH", cities, cities.length);

    cities = new Array();
    cities[0] = new City("シンガポール", "SIN");
    countries[5] = new Country("シンガポール", "SG", cities, cities.length);

    cities = new Array();
    cities[0] = new City("マニラ", "MNL");
    countries[6] = new Country("フィリピン", "PH", cities, cities.length);

    cities = new Array();
    cities[0] = new City("バリ", "DPS");
    countries[7] = new Country("インドネシア", "ID", cities, cities.length);

    cities = new Array();
    cities[0] = new City("ホーチミン", "SGN");
    cities[1] = new City("ハノイ", "HAN");
    countries[8] = new Country("ベトナム", "VN", cities, cities.length);

    cities = new Array();
    cities[0] = new City("シェムリアプ", "REP");
    countries[9] = new Country("カンボジア", "KH", cities, cities.length);

    cities = new Array();
    cities[0] = new City("クアラルンプール", "KUL");
    cities[1] = new City("ランカウイ", "LGK");
    cities[2] = new City("ペナン", "PEN");
    countries[10] = new Country("マレーシア", "MY", cities, cities.length);
    areas[5] = new Area("アジア", "AS", countries, null, countries.length, 0);

    countries = new Array();
    cities = new Array();
    cities[0] = new City("シドニー", "SYD");
    cities[1] = new City("ケアンズ", "CNS");
    countries[0] = new Country("オーストラリア", "AU", cities, cities.length);
    areas[6] = new Area("オセアニア", "OC", countries, null, countries.length, 0);
}

//////////////////////////////////////////////////////////////////////
var areaSelect = document.getElementById('area');
var area_cdInput = document.getElementById('area_cd');
var countrySelect = document.getElementById('country');
var citySelect = document.getElementById('city');
var conditionHD = document.getElementById('condition');
var conditionDIV = document.getElementById('conditionBody');
/////////////////////////////////////////////////////////////////////

function showSelect(sel) { sel.style.display = 'block'; }
function hideSelect(sel) { sel.style.display = 'none'; }
function resetSelect(sel) { if (sel.options.length > 1) { sel.options.length = 1; } }

function initAreaList() {
    InitArrays();
    for (i = 0; i < areas.length; i++) {
        areaSelect.options[i + 1] = new Option(areas[i].name, areas[i].code);
    }
}

function selectAirLinkArea(e) {
    document.getElementById("alertDep").style.display = "none";
    resetSelect(countrySelect);
    resetSelect(citySelect);
    hideSelect(citySelect);

    idx = areaSelect.selectedIndex;

    if (idx == 0) {
        hideSelect(countrySelect);
    }
    else {
        for (i = 0; i < areas[idx - 1].num; i++) {
            var selectOption = new Option(areas[idx - 1].countries[i].name, areas[idx - 1].countries[i].code);
            countrySelect.options[i + 1] = selectOption;
        }
        showSelect(countrySelect);
    }
}

function selectAirLinkCountry() 
{
    citySelect.options.length = 1;
    var a_idx = areaSelect.selectedIndex;
    var c_idx = countrySelect.selectedIndex;

    if (c_idx == 0) {
        resetSelect(countrySelect);
        hideSelect(citySelect);
    }
    else 
    {
        for (i = 0; i < areas[a_idx - 1].countries[c_idx - 1].num; i++) {
            citySelect.options[i + 1] = new Option(areas[a_idx - 1].countries[c_idx - 1].cities[i].name, areas[a_idx - 1].countries[c_idx - 1].cities[i].code);
        }
        showSelect(citySelect);
    }
}

/////////////////////////////////////////////////////////////////////

var the_day = new Date();
var this_year = the_day.getFullYear();
var this_month = the_day.getMonth() + 1;
var selected_days = [];

function airlink_searchDate() {
    var d = new Date();
    d.setDate(d.getDate() + 6);
    var curr_date = d.getDate();
    var curr_month = d.getMonth();
    curr_month++;
    var curr_year = d.getFullYear();
    document.getElementById("ticket_date").value = curr_month + "/" + curr_date + "/" + curr_year;
    createDayList("depYYMM", "depDD", "", "");
}

function createDayList(monthId, dayId, selMonth, selDate) {
    if (selMonth) {
        var month = selMonth;
        selMonth = month.replace(/(\d{4})\/(0)(\d{1,2})/, "$1\/$3");
    }

    if (selDate) {
        var date = selDate;
        selDate = date.replace(/(0)(\d{1,2})/, "$2");
    }

    var monthList = document.getElementById(monthId);
    var dayList = document.getElementById(dayId);

    var selectMonth = document.getElementById('depYYMM').value;
    var last_day = getLastDay(selectMonth);

    setDayOption(last_day, selectMonth, dayList, selDate);
}

function getLastDay(year_month) {

    if (year_month == "" || year_month == null) {
        return "";
    }
    var last_day;
    var selected_month = new Array(2);
    selected_month = year_month.split("/");

    if (selected_month[1] == 2) {
        var preDate = new Date(this_year, 2, 0);
        var pre_day = preDate.getDate();
        if (pre_day == 29) {

            last_day = 29;
        } else {

            last_day = 28;
        }
    } else {

        if ((selected_month[1] == 4) || (selected_month[1] == 6) || (selected_month[1] == 9) || (selected_month[1] == 11)) {

            last_day = 30;
        } else {

            last_day = 31;
        }
    }
    return last_day;
}

function changeDay(sel, day_id) {
    sel_num = sel.selectedIndex;
    select_month = sel.options[sel_num].value;
    var last_day = getLastDay(select_month);
    setDayOption(last_day, select_month, day_id);
}

function setDayOption(lastDay, selected_month, dayList, selDate) {
    var day_count = 0;
    dayList.options.length = 1;
    dayList.options[day_count++] = new Option("指定なし", (selected_month + "/" + "#"));

    if (document.getElementById("ticket_date")) {
        var ticketDate = document.getElementById("ticket_date");
    } else if (parent.document.getElementById("ticket_date")) {
        var ticketDate = parent.document.getElementById("ticket_date");
    } else {
        var ticketDate = parent.parent.document.getElementById("ticket_date");
    }
    if (!ticketDate) return;
    var sepTicketDate = ticketDate.value.split("/");
    var theDay = new Date();
    var thisMonth = sepTicketDate[0];
    var j;


    var month = selected_month.split("/");
    if (month[1] == thisMonth) {
        if ((ticketDate != null) && (ticketDate.value != "")) {
            var date = ticketDate.value.split("/");
            j = date[1];
        } else {
            j = theDay.getDate();
        }
    } else {
        j = 1;
    }

    while (j < (lastDay + 1)) {
        var selectedDate = false;
        var cnt = day_count++;
        dayList.options[cnt] = new Option(j, (selected_month + "/" + j));
        if (selDate == j) {
            dayList.options[cnt].selected = true;
        }
        j++;
    }
}

function checkAreaCd() {
    var let = true;
    if ((document.forms[0].area_cd.value == "") && (document.forms[0].theme_cd.value == "")) {
        document.getElementById("alertDep").style.display = "";
        let = false;
    }
    return let;
}

function chSearchCondition() {
    if (conditionHD.value == "ON") {
        conditionHD.value = "OFF";
        conditionDIV.style.display = 'none';
    }
    else {
        conditionHD.value = "ON";
        conditionDIV.style.display = 'block';
    }
}

function initAirLinkSearch() {

    initAreaList();
    airlink_searchDate();
    conditionHD.value = "OFF";
    conditionDIV.style.display = 'none';
}

areaSelect.onchange = function(event) { selectAirLinkArea(); stopBubble(event); };
countrySelect.onchange = function(event) { selectAirLinkCountry(); stopBubble(event); };

function stopBubble(e) { e = getEventObj(e); e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); }
function getEventObj(e) { if (!e) e = window.event; return e; }