﻿/*
 * @include "DDP_Framework.js"
 * @include "DDP_SearchConfig.js"
 */

/**
 * @fileoverview 検索系システムで使用するJavaScriptが記述されています。
 */
if( typeof(console) == 'undefined' || console == null ){ console = { "log" : function(){} } };
// デバッグモード設定
if( typeof(DEBUG_MODE) == 'undefined' || DEBUG_MODE == null) {
    var DEBUG_MODE = false;
}
console.log("load DDP_Search.js ...");
///////////////////////// DDP_Search 共通クラス START /////////////////////////
/**
 * 親クラス
 */
if ( typeof(DDP_Search) == 'undefined' ) DDP_Search = function() { };

/**
 * 定数クラス定義
 */
DDP_Search.Const = function() { };

/** WebMethodからExceptionが返ってきた場合のデフォルトメッセージ */
DDP_Search.Const.DEFAULT_ERROR_ALERT_MESSAGE =
    "現在処理中です。OKボタンを押してクリックして、しばらくお待ちください。";

/** UpdatePanelの更新で、何らかの理由でエラーが返ってきた場合のメッセージ */
DDP_Search.Const.UPDATE_PANEL_ERROR_ALERT_MESSAGE =
    "ただいま混み合っております。恐れ入りますが、しばらくしてからお試しください。";

/** 航空検索時、エラーが返ってきた場合のメッセージ */
DDP_Search.Const.AIR_SEARCH_ERROR_ALERT_MESSAGE =
    "ただいま混み合っております。恐れ入りますが、しばらくしてからお試しください。";

/** WebMethod成功時 結果コード */
DDP_Search.Const.WEB_METHOD_RESULT_CODE_SUCCESS = "success";

/** WebMethod失敗時 結果コード */
DDP_Search.Const.WEB_METHOD_RESULT_CODE_ERROR = "error";

/** プラン詳細表示用モード */
DDP_Search.Const.UPDATE_PANEL_RESPONSE_MODE_PLAN_DETAIL = "planDetail";

/** 検索結果表示用モード */
DDP_Search.Const.UPDATE_PANEL_RESPONSE_MODE_SEARCH_RESULT = "searchResult";

/** 検索パネルプルダウンの無効項目スタイル */
DDP_Search.Const.DISABLE_PULL_DOWN_ITEM_STYLE = "sel_ds";

/** ボタンリンク無効スタイル */
DDP_Search.Const.DISABLE_BUTTON_LINK_STYLE = "limit btn_up btn_ds";

/** ボタンリンク有効（未選択）スタイル */
DDP_Search.Const.ABLE_BUTTON_LINK_STYLE = "limit btn_up";

/** ボタンリンク有効（選択）スタイル */
DDP_Search.Const.SELECTED_BUTTON_LINK_STYLE = "limit btn_dw";

/** こだわり条件解除ボタンDisable時付加スタイル */
DDP_Search.Const.CLEAR_SPECIFIC_BUTTON_DISALBE_STYLE = "disabletext mesh_unlink";


/** こだわり条件hiddenのvalueの区切り文字 */
DDP_Search.Const.SPECIFIC_VALUE_SEPARATOR = ":";

/** Trueを表す文字列 */
DDP_Search.Const.FLAG_TRUE = "true";

/** Falseを表す文字列 */
DDP_Search.Const.FLAG_FALSE = "false";

/** サブエリア 未選択項目 文字列 */
DDP_Search.Const.SUB_AREA_NO_SELECTED_TEXT = "選択してください";

/** サブエリア 未選択項目 スタイル */
DDP_Search.Const.SUB_AREA_NO_SELECTED_STYLE = "noselect";

/** サブエリア 未選択項目（指定なし可） 文字列 */
DDP_Search.Const.SUB_AREA_NO_SELECTED_TEXT_UNSELECTABLE = "指定なし";

/** MeshListを生成する際に使用するテンプレート */
DDP_Search.Const.MESH_LIST_TEMPLATE =
    '<p class="mt2" id="mesh_{0}">\n{1}{2}\n</p>';

/** MeshListを生成する際に使用するHidden部のテンプレート */
DDP_Search.Const.MESH_LIST_HIDDEN_TEMPLATE =
    '<input id="mesh_value_{0}" type="hidden" value="{1}" />';

/** MeshListを生成する際に使用するリンク部のテンプレート */
DDP_Search.Const.MESH_LIST_LINK_TEMPLATE =
    '<a id="mesh_anchor_{0}" href="javascript:;">{1}</a>';


/** メッシュ 未選択項目 スタイル */
DDP_Search.Const.MESH_LIST_LINK_STYLE = "";

/** メッシュ 選択不可項目 スタイル */
DDP_Search.Const.MESH_LIST_NOLINK_STYLE = "mesh_unlink";

/** メッシュ 選択中項目 スタイル */
DDP_Search.Const.MESH_LIST_SELECTED_STYLE = "mesh_em mesh_unlink";

/** メッシュDisableスタイル */
DDP_Search.Const.MESH_LIST_DISABLE_STYLE = "mt2 disabletext mesh_unlink";

/** 地図から選択する 選択不可スタイル */
DDP_Search.Const.MAP_SELECT_LINK_DISABLE = "disabletext mesh_unlink"

/** 航空検索区分：往路検索 */
DDP_Search.Const.AIR_REFERENCE_TYPE_GO = "go";
 
/** 航空検索区分：復路検索 */
DDP_Search.Const.AIR_REFERENCE_TYPE_RETURN = "return";

/** 航空検索区分：往復検索 */
DDP_Search.Const.AIR_REFERENCE_TYPE_ROUND_TRIP = "roundTrip";

/** 航空検索結果片道表示件数 */
DDP_Search.Const.AIR_RESULT_LENGTH = 3;

/** 往路接頭語 */
DDP_Search.Const.GO_PREFIX = "go_";

/** 復路接頭語 */
DDP_Search.Const.RETURN_PREFIX = "return_";

/** 結果接頭語 */
DDP_Search.Const.RESULT_PREFIX = "result_";

/** マルチ空港リストを生成する際に使用するリンク部のテンプレート */
DDP_Search.Const.MULTI_LIST_LINK_TEMPLATE =
    '<a id="{0}multi_airport_{1}" href="javascript:;">{2}{3}便</a>';

/** マルチ空港リストを生成する際に使用するリンク部のテンプレート */
DDP_Search.Const.MULTI_LIST_HALF_ROUND_TRIP_MESSAGE_TEMPLATE =
    '&nbsp;{0}（{1}）&nbsp;'

/** マルチ空港リストを生成する際に使用するリンク部のテンプレート */
DDP_Search.Const.MULTI_LIST_MESSAGE_TEMPLATE =
    '他に{0}{1}の候補があります。';

/** 航空検索条件シートプルダウン：普通席以外 Value */
DDP_Search.Const.AIR_SEARCH_OTHER_SEAT_VALUE = 2;


/** 航空検索条件通常時テーブルセルスタイル */
DDP_Search.Const.AIR_SEARCH_CONDTION_NORMAL_TABLE_CELL_STYLE =
    ";";

/** 航空検索条件入力エラー時テーブルセルスタイル */
DDP_Search.Const.AIR_SEARCH_CONDTION_ERROR_TABLE_CELL_STYLE =
    "plus_search_result_error";


/** 宿泊検索結果　選択時　ボタンセル　スタイル */
DDP_Search.Const.HOTEL_RESULT_RADIO_TD_SELECTED_STYLE = "label_focus taCenter";
/** 宿泊検索結果　選択時　写真セル　スタイル */
DDP_Search.Const.HOTEL_RESULT_PHOTO_TD_SELECTED_STYLE = "photo focus tac";
/** 宿泊検索結果　選択時　コンテンツセル　スタイル */
DDP_Search.Const.HOTEL_RESULT_CONTENT_TD_SELECTED_STYLE = "content focus";

/** 宿泊検索結果　通常時　ボタンセル　スタイル */
DDP_Search.Const.HOTEL_RESULT_RADIO_TD_NORMAL_STYLE = "label taCenter";
/** 宿泊検索結果　通常時　写真セル　スタイル */
DDP_Search.Const.HOTEL_RESULT_PHOTO_TD_NORMAL_STYLE = "photo tac";
/** 宿泊検索結果　通常時　コンテンツセル　スタイル */
DDP_Search.Const.HOTEL_RESULT_CONTENT_TD_NORMAL_STYLE = "info";


/** 航空検索結果　Radioボタンテンプレート */
DDP_Search.Const.AIR_RESULT_RADIO_BUTTON_TEMPLATE =
    '<label for="public"><input id="{0}_check_{1}" type="radio" name="{0}" value="{1}" /></label>';

/** 航空検索結果　選択時　ラジオボタンセル　スタイル */
DDP_Search.Const.AIR_RESULT_RADIO_CELL_SELECTED_STYLE = "focuslabel";
/** 航空検索結果　選択時　その他セル　スタイル */
DDP_Search.Const.AIR_RESULT_OTHER_CELL_SELECTED_STYLE = "focus";

/** 航空検索結果　通常時　ラジオボタンセル　スタイル */
DDP_Search.Const.AIR_RESULT_RADIO_CELL_NORMAL_STYLE = "label";
/** 航空検索結果　通常時　その他セル　スタイル */
DDP_Search.Const.AIR_RESULT_OTHER_CELL_NORMAL_STYLE = "";

/** 選択内容確認：プラン未選択 */
DDP_Search.Const.ERROR_MSG_NON_SELECT_PLAN = "宿・ホテル／プランを再検索する場合は日程を指定ください";
/** 選択内容確認：飛び石プラン */
DDP_Search.Const.ERROR_MSG_JUMP_STAYDATE_PLAN = "選択した日程では再検索できません。連続した日程を設定してください";

/** 往路出発日を変更したときに自動で設定される復路宿泊日のn日後 **/
DDP_Search.Const.DATE_BACK_AFTER_DATE_GO = 1;

/** 検索条件補助入力 空港未選択スタイル **/
DDP_Search.Const.NO_SELECT_PULLDOWN_STYLE = "noselect";

/** 予約区分(航空＋宿・ホテル＋レンタカー) **/
DDP_Search.Const.RSV_KBN_AIR_HOTEL_CAR = 1;
/** 予約区分(航空＋宿・ホテル) **/
DDP_Search.Const.RSV_KBN_AIR_HOTEL = 0;
/** 予約区分(宿・ホテル＋レンタカー) **/
DDP_Search.Const.RSV_KBN_HOTEL_CAR = 2;
/** 貸出接頭語 */
DDP_Search.Const.RENTAL_START_PREFIX = "rental_start_";
/** 返却接頭語 */
DDP_Search.Const.RENTAL_END_PREFIX = "rental_end_";
/** レンタカー検索結果　選択時　ラジオボタンセル　スタイル */
DDP_Search.Const.CAR_RESULT_RADIO_CELL_SELECTED_STYLE = "label_focus";
/** レンタカー検索結果　選択時　その他セル　スタイル */
DDP_Search.Const.CAR_RESULT_OTHER_CELL_SELECTED_STYLE = "focus";
/** レンタカー検索結果　通常時　ラジオボタンセル　スタイル */
DDP_Search.Const.CAR_RESULT_RADIO_CELL_NORMAL_STYLE = "label";
/** レンタカー検索結果　通常時　その他セル　スタイル */
DDP_Search.Const.CAR_RESULT_OTHER_CELL_NORMAL_STYLE = "";
/** レンタカー検索条件入力エラー時テーブルセルスタイル */
DDP_Search.Const.CAR_SEARCH_CONDTION_ERROR_TABLE_CELL_STYLE =
    "plus_search_result_error";
/** 航空検索時、エラーが返ってきた場合のメッセージ */
DDP_Search.Const.CAR_SEARCH_ERROR_ALERT_MESSAGE =
    "ただいま混み合っております。恐れ入りますが、しばらくしてからお試しください。";
/** ボタン文言 航空+宿泊+レンタカー */
DDP_Search.Const.BUTTON_MSG_AIR_HOTEL_CAR = "JAL航空+宿・ホテル+レンタカーを一括検索する";
/** ボタン文言 航空+宿泊 */
DDP_Search.Const.BUTTON_MSG_AIR_HOTEL = "JAL航空+宿・ホテルを一括検索する";
/** ボタン文言 宿泊+レンタカー */
DDP_Search.Const.BUTTON_MSG_HOTEL_CAR = "レンタカー+宿・ホテルを一括検索する";
/** レンタカー会社ID 1 */
DDP_Search.Const.RENTACAR_COMPANY_ID_TOYOTA = "1"
/** 未選択リンクのスタイル */
DDP_Search.Const.UNLINK_STYLE = "unlink";


//  Day3.0 ADD
/* 検索補助画面遷移区分*/
/** 航空＋宿・ホテル*/
DDP_Search.Const.ASSIST_SEARCH_TYPE_AIR_HOTEL = "0";
/** レンタカー＋宿・ホテル*/
DDP_Search.Const.ASSIST_SEARCH_TYPE_CAR_HOTEL = "1";
/** ステップ予約 宿泊*/
DDP_Search.Const.ASSIST_SEARCH_TYPE_STEP_HOTEL = "2";
/** ステップ予約 航空*/
DDP_Search.Const.ASSIST_SEARCH_TYPE_STEP_AIR = "3";
/** ステップ予約 レンタカー*/
DDP_Search.Const.ASSIST_SEARCH_TYPE_STEP_CAR = "4";
/** ステップ予約 レンタカー*/
DDP_Search.Const.ASSIST_SEARCH_TYPE_TOUR = "5";

/** キャリアJAL*/
DDP_Search.Const.CARRIER_JAL = "JAL"; 
/** キャリアANA*/
DDP_Search.Const.CARRIER_ANA = "ANA"; 
//ANAサイト遷移用のname
DDP_Search.Const.ANA_DATA_CONNECTION_KIND = "CONNECTION_KIND"; 
DDP_Search.Const.ANA_DATA_ACTIBITY_ID = "activityId"; 
DDP_Search.Const.ANA_DATA_RETURN_URL = "returnURL"; 
DDP_Search.Const.ANA_DATA_SCREEN_ID = "screenId"; 
DDP_Search.Const.ANA_DATA_SELECTED_EMD_MONTH = "segConditionForm.selectedEmbMonth";
DDP_Search.Const.ANA_DATA_SELECTED_EMD_DAY = "segConditionForm.selectedEmbDay";
DDP_Search.Const.ANA_DATA_SELECTED_DEP_APO = "segConditionForm.selectedDepApo";
DDP_Search.Const.ANA_DATA_SELECTED_ARR_APO = "segConditionForm.selectedArrApo";
DDP_Search.Const.ANA_DATA_SELECTED_SEAT_KIND = "segConditionForm.seatKind";
DDP_Search.Const.ANA_DATA_SELECTED_DEP_TIME = "segConditionForm.selectedDepTime";
DDP_Search.Const.ANA_DATA_TTW_CAL_FLG = "segConditionForm.ttwCalFlg";
DDP_Search.Const.ANA_DATA_NOW_SEG_INDEX = "segConditionForm.nowSegIndex";
DDP_Search.Const.ANA_DATA_BUTTON = "btnSubmit:mapping=success";

// 航空TOPイメージボタン
DDP_Search.Const.AIR_TOP_SEARCH_BUTTON_PATH = "/plus/images/airtop/";
DDP_Search.Const.AIR_TOP_SEARCH_BUTTON_JAL_ENABLE = "airsearch_btn_jal.gif";
DDP_Search.Const.AIR_TOP_SEARCH_BUTTON_JAL_DISABLED = "airsearch_btn_disabled_jal.gif";
DDP_Search.Const.AIR_TOP_SEARCH_BUTTON_ANA_ENABLE = "airsearch_btn_ana.gif";
DDP_Search.Const.AIR_TOP_SEARCH_BUTTON_ANA_DISABLED = "airsearch_btn_disabled_ana.gif";

/**
 * Idを管理する連想配列オブジェクト
 */
DDP_Search.idManager = {};
/**
 * 連想配列の値からキーを取得します。取得できない場合は false を返します。
 * @param value 連想配列の値
 */
DDP_Search.idManager.findKeyByValue = function(value) {
    for (var key in DDP_Search.idManager) {
        if (DDP_Search.idManager[key] == value) {
            return key;
        }
    }
    return false;
};

////////////////////////// DDP_Search 共通クラス END //////////////////////////

//////////////////////// 共通系ユーティリティ関数 START ////////////////////////


/**
 * エラー内容をalertを使用し画面に表示します。
 */
function showErrorAlert(errorResult, errorMessage) {
    console.log("showErrorAlert", errorResult);
    if(errorMessage) {
        alert(errorMessage);
    } else {
        alert(DDP_Search.Const.DEFAULT_ERROR_ALERT_MESSAGE);
    }
    if( typeof(DEBUG_MODE) != "undefined" && DEBUG_MODE && errorResult ) {
        var alertMessageArray = [""], idx = 1;
        alertMessageArray[idx++] = "[ExceptionType]\r\n" + errorResult.get_exceptionType() + "\r\n\r\n";
        alertMessageArray[idx++] = "[Message]\r\n" + errorResult.get_message() + "\r\n\r\n";
        alertMessageArray[idx++] = "[StackTrace]\r\n" + errorResult.get_stackTrace() + "\r\n\r\n";
        alertMessageArray[idx++] = "[StatusCode]\r\n" + errorResult.get_statusCode() + "\r\n\r\n";
        alertMessageArray[idx++] = "[TimedOut]\r\n" + errorResult.get_timedOut() + "\r\n\r\n";
        var alertMessage = alertMessageArray.join("");
        console.log(alertMessage);
        alert(alertMessage);
    }
};
/**
 * 選択ボックスのインデックス0の項目の未選択時のStyleClassに設定します
 * @param selectElement 選択ボックスエレメント
 */
function setPullDownNoSelectStyleClass(selectElement) {
    selectElement.options[0].className = DDP_Search.Const.NO_SELECT_PULLDOWN_STYLE;
};
/**
 * 未選択PullDownのStyleClassに初期化します。
 * @param selectElements 選択ボックスエレメントまたはその配列
 */
function initNonSelectPullDownClass(selectElements) {
    if (!selectElements) return;
    var arr = toArray(selectElements);
    for (var i = 0, len = arr.length; i < len; i++) {
        setPullDownNoSelectStyleClass(arr[i]);
        changePullDownStyleClass(arr[i]);
    }
};
///////////////////////// 共通系ユーティリティ関数 END /////////////////////////

//////////////////////// 業務共通系ユーティリティ関数 START ////////////////////
/**
 * 往路出発日変更時に復路出発日を往路出発日+DATE_BACK_AFTER_DATE_GOに変更する
 * @param dateGo 往路出発日のIDまたはNode
 * @param dateBack 復路出発日のIDまたはNode
 */
function changeDateGo(dateGo, dateBack) {
    var goList = DDP_Framework.DOM.isNode(dateGo) ? dateGo : getNode(dateGo);
    var backList = DDP_Framework.DOM.isNode(dateBack) ? dateBack : getNode(dateBack);
    var index = goList.selectedIndex + DDP_Search.Const.DATE_BACK_AFTER_DATE_GO;
    if (index >= backList.options.length) {
        index = backList.options.length - 1;
    }
    backList.selectedIndex = index;
};
/**
 * サブエリアプルダウンの値を県プルダウンの内容にあったものに変更
 * @param kenAreaId 県プルダウンのIDまたはNode
 * @param subAreaId サブエリアプルダウンのIDまたはNode
 * @param excludeSelectedOption 「選択してください」を追加しない場合は true。それ以外は全て false 。
*/
function changeSubAreaByKenArea(kenAreaId, subAreaId, excludeSelectedOption) {
    var strArea2;
    var excluding = !!excludeSelectedOption;
    var conf = DDP_Search.SubAreaConf.setting;
    var kenList = DDP_Framework.DOM.isNode(kenAreaId) ? kenAreaId : getNode(kenAreaId);
    var subAreaList = DDP_Framework.DOM.isNode(subAreaId) ? subAreaId : getNode(subAreaId);
    // 初期値を保持
    if (subAreaList.selectedIndex == -1) {
        subAreaList.selectedIndex = 0;
    }
    var prevValue = subAreaList.options[subAreaList.selectedIndex].value;
    subAreaList.options.length = 0;
    if (kenList.selectedIndex == -1) {
        kenList.selectedIndex = 0;
    }
    strArea2 = kenList.options[kenList.selectedIndex].value;
    if(strArea2 != "") {
        for( var i = 0,confLen = conf.length; i < confLen; i++ ) {
            var tConf = conf[i];
            if( strArea2 == tConf.kenCode ) {
                subAreaList.options.length++;
                var addingOption = subAreaList.options[subAreaList.options.length -1];
                addingOption.text = tConf.subAreaName;
                addingOption.value = tConf.subAreaCode;
                if (tConf.subAreaName == "") {
                    if (!excluding) {
                        addingOption.value = "";
                        addingOption.text = DDP_Search.Const.SUB_AREA_NO_SELECTED_TEXT;
                        addingOption.className = DDP_Search.Const.SUB_AREA_NO_SELECTED_STYLE;
                        addingOption.style.color="#cc6600";
                    } else {
                        subAreaList.options.length--;
                    }
                }
            }
        }
    } else {
        if (!excluding) {
            subAreaList.options.length++;
            var addingOption = subAreaList.options[subAreaList.options.length -1];
            addingOption.value = "";
            addingOption.text = DDP_Search.Const.SUB_AREA_NO_SELECTED_TEXT;
            addingOption.className = DDP_Search.Const.SUB_AREA_NO_SELECTED_STYLE;
            addingOption.style.color="#cc6600";
        }
    }
    // 初期値以外が設定されている場合はサブエリア(宿泊地区)の1件目をデフォルト表示
    if (subAreaList.options.length == 1) {
        subAreaList.selectedIndex = 0;
    } else {
        subAreaList.selectedIndex = !excluding ? 1 : 0;
    }
    // 選択していた値が存在すれば、選択しなおす
    if (prevValue != "") {
        for(var i = 0, oLen = subAreaList.options.length; i < oLen; i++) {
            if( prevValue == subAreaList.options[i].value ) {
                subAreaList.selectedIndex = i;
                break;
            }
        }
    }
    // 前回選択Indexも現在のものを入れておく
    subAreaList.prevIndex = subAreaList.selectedIndex;
};
/**
 * 県プルダウンの値を往路到着空港が所属する県に変更する
 * @param goArvAirportId 往路到着空港プルダウンのIDまたはNode
 * @param kenAreaId 県エリアプルダウンのIDまたはNode
 */
function changeKenAreaByAirportCode(goArvAirportId, kenAreaId, supportMap) {
    // 変更された空港プルダウンの内容を取得
    var goArvAirportList = DDP_Framework.DOM.isNode(goArvAirportId) ? goArvAirportId : getNode(goArvAirportId);
    var goArvAirportCode = goArvAirportList.options[goArvAirportList.selectedIndex].value;
    // configより往路到着空港に一致する県コードを取得する
    var kenCode = "";
    var conf = ScriptResource.AirportArea.setting;
    for(var i = 0, cLen = conf.length; i < cLen; i++ ) {
        var tConf = conf[i];
        // configに一致する空港コードが存在する場合県コードの値を保持
        if (tConf.airportCode == goArvAirportCode) {
            kenCode = tConf.kenCode;
        }
    }
    // 県プルダウンの値を空港コードに対応する県に変更する
    var kenList = DDP_Framework.DOM.isNode(kenAreaId) ? kenAreaId : getNode(kenAreaId);
    for(var j=0,kLen=kenList.length; j<kLen; j++) {
        if(kenList[j].value == kenCode) {
            kenList.selectedIndex = j;
            break;
        }
    }
    if(supportMap) {
        supportMap.write();
    }
};
/**
 * 縮小写真から拡大写真へのフォーカス移動を行います。
 * @param item フォーカス移動先
 */
function Link_Large_OnClientClick(item) {
    var small = getNode('small_div');
    small.style.display = "none";
    var large = getNode('large_div');
    large.style.display = "";
    window.location.href = item;
};
/**
 * 拡大写真から縮小写真へのフォーカス移動を行います。
 * @param item フォーカス移動先
 */
function Link_Small_OnClientClick(item) {
    var small = getNode('small_div');
    small.style.display = "";
    var large = getNode('large_div');
    large.style.display = "none";
    window.location.href = item;
};
/**
 * 拡大写真:次の写真/前の写真へのフォーカス移動を行います。
 * @param item フォーカス移動先
 */
function Link_OnClientClick(item) {
    window.location.href = item;
};
/**
 * 飛び石プランの存在をチェックします。
 * @return エラーが発生している場合メッセージを返却。エラーが無い場合はnullを返却。
 * @type String
 */
function checkPlan() {
    var flag = false;
    var index = document.getElementById("plan_table").rows.length;
    // ヘッダと最終行はボタンが出力されるため終了条件を-2とする
    index = index - 2;
    var stay_checkBox = null;
    var retArray = new Array(index);
    // 結果を配列に格納
    for(var count = 0; count < index; count++){
        stay_checkBox = document.getElementById(DDP_Search.idManager["stay_checkbox_" + (count+1)]);
        retArray[count] = stay_checkBox.checked;
    }
    var firstChecked = false;
    var firstUnChecked = false;
    var secondChecked = false;
    // 飛び石プランを検索
    for(var i = 0, rLen = retArray.length; i < rLen; i ++) {
        var ret = retArray[i];
        //チェックBOXがON、OFF、ONの順番があったらNG
        if(ret && !firstChecked) {
            // 最初のチェックBOXがON
            firstChecked = true;
        }else if(!ret && firstChecked && !firstUnChecked) {
            // 最初のチェックBOXがOFF
            firstUnChecked = true;
        }else if(ret && firstChecked && firstUnChecked) {
            // 飛び石プランが発生している場合
            return DDP_Search.Const.ERROR_MSG_JUMP_STAYDATE_PLAN;
        }
    }
    // チェックBOXが選択されてない場合
    if(!firstChecked){
        return DDP_Search.Const.ERROR_MSG_NON_SELECT_PLAN;
    }
    return null;
};
/**
 * 指定した時間帯に画面を移動させる
 * @param n 移動する時間対のindex
 */
function scrollTargetFlightTime(n) {
    var index = n.selectedIndex;
    window.location.hash="time" + n.options[index].value;
};
//////////////////////// 業務共通系ユーティリティ関数 END //////////////////////

//////////////////////// DDP_Search.Element START //////////////////////
/**
 * 要素を表すクラスです。
 * @constructor
 * @param {String} id 要素のID
 */
DDP_Search.Element = function(id) {
    this.initialize.apply(this, arguments);
};
/**
 * prototypeを上書き。
 */
DDP_Search.Element.prototype = new DDP_Framework.Element();
/**
 * 初期化します。
 * @constructor
 * @param {String} id 要素のID
 */
DDP_Search.Element.prototype.initialize = function(id) {
    DDP_Framework.Element.prototype.initialize.apply(this, [id]);
};
//////////////////////// DDP_Search.Element START //////////////////////

//////////////////////// DDP_Search.PullDown START //////////////////////
/**
 * コンストラクタ
 * @class 検索パネルで使用するプルダウンを操作する為の親クラス
 * @constructor
 * @param idKey サーバ上でのコントロールID
 */
DDP_Search.PullDown = function(idKey) {
    this.idKey = idKey;
    this.uniqueId = DDP_Search.idManager[this.idKey];
};
/**
 * 初期化メソッド
 * プルダウンが変更された際のイベントを登録します。
 */
DDP_Search.PullDown.prototype.init = function() {
    this.node = getNode(this.uniqueId);
    this.node.prevIndex = this.node.selectedIndex;
    this.category = this.idKey;
    var __this = this;
    // イベントの登録 : PullDown
    addEvent(__this.node, "change", function() {
        __this.onChangeEvent();
        return false;
    });
};
/**
 * changeイベントが発生した場合の処理を記述
 * 継承したクラスによってオーバーライドされることを想定しています
 */
DDP_Search.PullDown.prototype.onChangeEvent = function() {
};
/**
 * Pull-Downで選択されている項目のValue値を取得します。
 * @return 選択されている項目のValue値
 */
DDP_Search.PullDown.prototype.getSelectedValue = function() {
    return this.getSelectedOption().value;
};
/**
 * Pull-Downで選択されている項目のOptionNodeを取得します。
 * @return 選択されている項目のOptionNode
 */
DDP_Search.PullDown.prototype.getSelectedOption = function() {
    return this.node.options[this.getSelectedIndex()];
};
/**
 * Pull-Downで選択されている項目のインデックスを取得します。
 * @return 選択されている項目のインデックス
 */
DDP_Search.PullDown.prototype.getSelectedIndex = function() {
    return this.node.selectedIndex;
};
/**
 * Pull-Downで指定したValueの項目を選択項目とします
 * @param selectValue 選択したい項目のValue
 */
DDP_Search.PullDown.prototype.select = function(selectValue) {
    this.node.selectedIndex = this.getValueIndex(selectValue);
};
/**
 * Pull-Downで指定したIndexを選択項目とします
 * @param {Number} selectIndex 選択したい項目のIndex
 */
DDP_Search.PullDown.prototype.selectIndex = function(selectIndex) {
    this.node.selectedIndex = selectIndex;
};
/**
 * Pull-Downで指定したValueの項目のIndexを取得します
 * @param value 欲しいIndexのValue
 */
DDP_Search.PullDown.prototype.getValueIndex = function(value) {
    for(var i = 0, oLen = this.node.options.length; i < oLen; i++) {
        if( this.node.options[i].value == value ) {
            return i;
        }
    }
    return 0;
};
/**
 * コントロールを使用不可に設定します
 */
DDP_Search.PullDown.prototype.disable = function() {
    this.node.disabled = true;
};
/**
 * コントロールを使用可能に設定します
 */
DDP_Search.PullDown.prototype.enable = function() {
    this.node.disabled = false;
};
///////////////////////// DDP_Search.PullDown END ///////////////////////

//////////////////////// DDP_Search.UnselectablePullDown START //////////////////////
/**
 * コンストラクタ
 * @class 未選択項目があるプルダウンを表現するクラスです。
 * @constructor
 * @param idKey サーバ上でのコントロールID
 */
DDP_Search.UnselectablePullDown = function(){
    // 親クラスとしての初期化
    DDP_Search.PullDown.apply(this, arguments);
    this.onChangeEventFuncList = [];
};
// プロトタイプをコピー 
DDP_Search.UnselectablePullDown.prototype = new DDP_Search.PullDown();
// デフォルトスタイルあり
DDP_Search.UnselectablePullDown.prototype.noSelectItemStyle = DDP_Search.Const.NO_SELECT_PULLDOWN_STYLE;
/**
 * 初期化メソッド
 * プルダウンが変更された際のイベントを登録します。
 */
DDP_Search.UnselectablePullDown.prototype.init = function() {
    var __this = this;
    // 親クラスとしての初期化
    DDP_Search.PullDown.prototype.init.apply(this, arguments);
    this.node.options[0].className = this.noSelectItemStyle;
    // スタイル設定
    this.setStyle();
    this.addOnChangeEvent(function() {
        __this.setStyle();
    });
};
/**
 * 現在の選択項目に合わせてスタイルを設定します。
 */
DDP_Search.UnselectablePullDown.prototype.setStyle = function() {
    if(this.getSelectedIndex() == 0) {
        addClass(this.node, this.noSelectItemStyle);
    } else {
        removeClass(this.node, this.noSelectItemStyle);
    }
};
/**
 * 指定したValueを持つ項目を選択します。
 * @param selectValue 選択する値
 */
DDP_Search.UnselectablePullDown.prototype.select = function(selectValue) {
    DDP_Search.PullDown.prototype.select.apply(this, arguments);
    this.setStyle();
};
/**
 * changeイベントが発生した場合の処理を記述
 * onChangeEventFuncListに保持しているfunctionを全て実行します。
 */
DDP_Search.UnselectablePullDown.prototype.onChangeEvent = function() {
    for( var key in this.onChangeEventFuncList ) {
        this.onChangeEventFuncList[key].apply(this, arguments);
    }
    return false;
};
/**
 * changeイベントで処理するfunctionを追加します。
 */
DDP_Search.UnselectablePullDown.prototype.addOnChangeEvent = function(func) {
    this.onChangeEventFuncList.push(func);
};
/**
 * 指定したlistで、プルダウンの内容を置き換えます。
 * @param list 置き換えるプルダウンの内容
 */
DDP_Search.UnselectablePullDown.prototype.shiftAll = function(list) {
    list = list || {}; // データが存在しない場合、空を設定する
    // 「選択してください」以外を削除
    this.node.options.length = 1;
    // listの中身をoptionsに設定する
    var options = this.node.options;
    for(var code in list) {
        options.length++;
        var option = options[options.length -1];
        option.text = list[code];
        option.value = code;
    }
    // デフォルト一つ目を選択
    if(this.node.options.length <= 1) {
        this.node.selectedIndex = 0;
    } else {
        this.node.selectedIndex = 1;
    }
};
//////////////////////// DDP_Search.UnselectablePullDown END //////////////////////


////////////////////// DDP_Search.RadioButton START //////////////////////
/**
 * コンストラクタ
 * @class ラジオボタンを操作する為の親クラス
 * @constructor
 * @param node 対象のノード
 */
DDP_Search.RadioButton = function (node) {
    this.node = node;
    return this;
};
/**
 * 初期化メソッド
 */
DDP_Search.RadioButton.prototype.init = function () {
    var __this = this;
    // イベントの登録 : Radioボタン
    addEvent(__this.node, "click", function() {
        __this.onClickEvent();
    });
};
/**
 * スタイル設定メソッド
 * 選択済みの場合は、選択済みスタイルを、通常時は、通常スタイルを設定します。
 */
DDP_Search.RadioButton.prototype.setStyle = function() {
    if(this.node.checked) {
        this.setSelectedStyle();
    } else {
        this.setNormalStyle();
    }
};
/**
 * ラジオボタンを選択にします。
 */
DDP_Search.RadioButton.prototype.select = function() {
    this.node.checked = true;
};
/**
 * ラジオボタンの選択解除します。
 */
DDP_Search.RadioButton.prototype.unselect = function() {
    this.node.checked = false;
};
/**
 * 選択されているかどうかを示す値を取得します。
 * @return {Boolean}
 */
DDP_Search.RadioButton.prototype.selected = function() {
    return this.node.checked;
};
/**
 * 選択済み項目 スタイル設定抽象メソッド
 * 継承したクラスによってオーバーライドされることを想定しています
 */
DDP_Search.RadioButton.prototype.setSelectedStyle = function() {
    // 実装なし
};
/**
 * 通常項目 スタイル設定抽象メソッド
 * 継承したクラスによってオーバーライドされることを想定しています
 */
DDP_Search.RadioButton.prototype.setNormalStyle = function() {
    // 実装なし
};
/**
 * クリック時イベント抽象メソッド
 * 継承したクラスによってオーバーライドされることを想定しています
 */
DDP_Search.RadioButton.prototype.onClickEvent = function() {
    // 実装なし
};
/////////////////////// DDP_Search.RadioButton END ///////////////////////

////////////////////// DDP_Search.SyncCondition START //////////////////////
/**
 * @class 同期コントロールをまとめるクラスです。
 */
DDP_Search.SyncCondition = function(config) {
    var isNotNull = !!config;
    var fnc = function(val) {
        return !!val ? val :null;
    };
    // 必要なIDを格納
    this.rentalStartArea = isNotNull ? fnc(config.rentalStartArea) : null;
    this.rentalStartSubArea = isNotNull ? fnc(config.rentalStartSubArea) : null;
    this.rentalStartOffice = isNotNull ? fnc(config.rentalStartOffice) : null;
    this.rentalEndArea = isNotNull ? fnc(config.rentalEndArea) : null;
    this.rentalEndSubArea = isNotNull ? fnc(config.rentalEndSubArea) : null;
    this.rentalEndOffice = isNotNull ? fnc(config.rentalEndOffice) : null;
    this.airportGoDeparture = isNotNull ? fnc(config.airportGoDeparture) : null;
    this.airportGoArrive = isNotNull ? fnc(config.airportGoArrive) : null;
    this.airportBackDeparture = isNotNull ? fnc(config.airportBackDeparture) : null;
    this.airportBackArrive = isNotNull ? fnc(config.airportBackArrive) : null;
    this.hotelArea = isNotNull ? fnc(config.hotelArea) : null;
    this.hotelSubArea = isNotNull ? fnc(config.hotelSubArea) : null;
    /** * 航空＋宿泊＋レンタカー */
    this.searchKbn1 = isNotNull ? fnc(config.searchKbn1) : null;
    /** * 航空＋宿泊 */
    this.searchKbn2 = isNotNull ? fnc(config.searchKbn2) : null;
    /** * 宿泊＋レンタカー */
    this.searchKbn3 = isNotNull ? fnc(config.searchKbn3) : null;
    /** 宿泊サブエリアのテーブルメニュー  @type {DDP_Framework.TableMenu} */
    this.hotelSubAreaTableMenu = isNotNull ? fnc(config.hotelSubAreaTableMenu) : null;
    return this;
};
////////////////////// DDP_Search.SyncCondition END //////////////////////


////////////////////// DDP_Search.SyncManager START //////////////////////
/**
 * コンストラクタ
 * @class 検索条件の同期処理をとりまとめるクラスです。
 * @constructor
 * @param {DDP_Search.SyncCondition} syncCondition 同期コントロール
 */
DDP_Search.SyncManager = function(syncCondition) {
    /** 同期コントロール @property @type {DDP_Search.SyncCondition} */
    this.syncCondition = syncCondition;
    return this;
};
/**
 * DDP_Search.SyncCondition オブジェクトを取得する。
 * @return {DDP_Search.SyncCondition}
 */
DDP_Search.SyncManager.prototype.getCondition = function() {
    return this.syncCondition;
};

/**
 * DDP_Search.SyncCondition オブジェクトを取得する。
 * @param {DDP_Search.SyncCondition} condition DDP_Search.SyncCondition オブジェクト
 */
DDP_Search.SyncManager.prototype.setCondition = function(condition) {
    this.syncCondition = condition;
};
/**
 * 往路到着地からレンタカー貸出条件のシンクロを行います
 */ 
DDP_Search.SyncManager.prototype.syncRentalStartOfficeByGoArriveAirport = function() {
    this.syncRentalOfficeByAirport(
        this.syncCondition.airportGoArrive,
        this.syncCondition.rentalStartArea,
        this.syncCondition.rentalStartSubArea,
        this.syncCondition.rentalStartOffice);
};
/**
 * 店舗プルダウンの値をサブエリアプルダウンの内容にあったものに変更
 * @param subAreaId サブエリアプルダウンのID
 * @param officeId 店舗プルダウンのID
 * @param excludeSelectedOption 「選択してください」を追加しない場合は true。それ以外は全て false 。
 */
DDP_Search.SyncManager.prototype.changeOfficeBySubArea= function(subAreaId, officeId, excludeSelectedOption) {
    var strOffice2;
    var excluding = !!excludeSelectedOption;
    var conf = ScriptResource.RentalOffice.setting;
    var subAreaList = getNode(subAreaId);
    var officeList = getNode(officeId);
    // 初期値を保持
    if (officeList.selectedIndex == -1) {
        officeList.selectedIndex = 0;
    }    
    var prevValue = officeList.options[officeList.selectedIndex].value;
    officeList.options.length = 0;
    if (subAreaList.selectedIndex == -1) {
        subAreaList.selectedIndex = 0;
    }
    strOffice2 = subAreaList.options[subAreaList.selectedIndex].value;
    if(strOffice2 != "") {
        if (!excluding) {
            // 1レコード目は選択してください
            officeList.options.length++;
            var addingOption = officeList.options[officeList.options.length -1];
            addingOption.value = "";
            addingOption.text = DDP_Search.Const.SUB_AREA_NO_SELECTED_TEXT;
            addingOption.className = DDP_Search.Const.SUB_AREA_NO_SELECTED_STYLE;
            addingOption.style.color="#cc6600";
        }

        for( var i = 0, cLen = conf.length; i < cLen; i++ ) {
            var tConf = conf[i];
            if( strOffice2 == tConf.subAreaCode ) {
                officeList.options.length++;
                addingOption = officeList.options[officeList.options.length -1];
                addingOption.text = tConf.officeName;
                addingOption.value = tConf.officeCode;
                addingOption.style.color="black";
            }
        }
    } else {
        if (!excluding) {
            officeList.options.length++;
            var addingOption = officeList.options[officeList.options.length -1];
            addingOption.value = "";
            addingOption.text = DDP_Search.Const.SUB_AREA_NO_SELECTED_TEXT;
            addingOption.className = DDP_Search.Const.SUB_AREA_NO_SELECTED_STYLE;
            addingOption.style.color="#cc6600";
        }
    }
    // 初期値以外が設定されている場合はサブエリア(宿泊地区)の1件目をデフォルト表示
    if (officeList.options.length == 1) {
        officeList.selectedIndex = 0;
    } else {
        officeList.selectedIndex = !excluding ? 1 : 0;
    }
    // 選択していた値が存在すれば、選択しなおす
    if (prevValue != "") {
        for(var i = 0, oLen = officeList.options.length; i < oLen; i++) {
            if( prevValue == officeList.options[i].value ) {
                officeList.selectedIndex = i;
                break;
            }
        }
    }
    // 前回選択Indexも現在のものを入れておく
    officeList.prevIndex = officeList.selectedIndex;
};
/**
 * 往路到着地からレンタカー返却条件のシンクロを行います
 */ 
DDP_Search.SyncManager.prototype.syncRentalEndOfficeByGoArriveAirport = function() {
    this.syncRentalOfficeByAirport(
        this.syncCondition.airportGoArrive,
        this.syncCondition.rentalEndArea,
        this.syncCondition.rentalEndSubArea,
        this.syncCondition.rentalEndOffice);
};
/**
 * 復路出発地からレンタカー返却条件のシンクロを行います
 */ 
DDP_Search.SyncManager.prototype.syncRentalEndOfficeByGoArriveAirport = function() {
    this.syncRentalOfficeByAirport(
        this.syncCondition.airportBackDeparture,
        this.syncCondition.rentalEndArea,
        this.syncCondition.rentalEndSubArea,
        this.syncCondition.rentalEndOffice);
};
/**
 * 空港からレンタカー条件のシンクロを行います
 * @param airportListId 空港リスト
 * @param rentalAreaId レンタカー地域
 * @param rentalSubAreaId レンタカー地区
 * @param rentalOfficeId レンタカー店舗
 */ 
DDP_Search.SyncManager.prototype.syncRentalOfficeByAirport = function(
    airportListId,
    rentalAreaId,
    rentalSubAreaId,
    rentalOfficeId) {

    var _airportList = getNode(airportListId);
    var _airportCd = _airportList.options[_airportList.selectedIndex].value;
    var _rentalAreaList = getNode(rentalAreaId);
    var _rentalSubAreaList = getNode(rentalSubAreaId);
    var _rentalOfficeList = getNode(rentalOfficeId);
    var _areaCode = "";
    var _subAreaCode = "";
    var _officeCode = "";
    // configより空港に一致する県コードを取得する
    var conf = ScriptResource.AirportRentalOffice.setting;
    for(var i = 0, cLen = conf.length; i < cLen; i++ ) {
        var tConf = conf[i];
        // configに一致する空港コードが存在する場合県コードの値を保持
        if (tConf.airPortCd == _airportCd) {
            _areaCode = tConf.areaCd;
            _subAreaCode = tConf.subAreaCd;
            _officeCode =  tConf.officeCd;
            break;
        }
    }
    // 県プルダウンの値を空港コードに対応する県に変更する
    for(var j=0, aLen=_rentalAreaList.length; j<aLen; j++) {
        if(_rentalAreaList[j].value == _areaCode) {
            _rentalAreaList.selectedIndex = j;
            // サブエリアの更新
            changeSubAreaByKenArea(
                rentalAreaId,
                rentalSubAreaId);
            break;
        }
    };
    // サブエリアプルダウンの値を空港コードに対応する県に変更する
    for(var k=0, sLen=_rentalSubAreaList.length; k<sLen; k++) {
        if(_rentalSubAreaList[k].value == _subAreaCode) {
            _rentalSubAreaList.selectedIndex = k;
            // 店舗の更新
            this.changeOfficeBySubArea(
                rentalSubAreaId,
                rentalOfficeId);
            break;
        }
    };
    for(var n=0,oLen=_rentalOfficeList.length; n<oLen; n++) {
        if(_rentalOfficeList[n].value == _officeCode) {
            _rentalOfficeList.selectedIndex = n;
            break;
        }
    }
};
/**
 * 貸出エリアと返却エリアの同期を取ります。
 */
DDP_Search.SyncManager.prototype.syncRentalEndAreaByRentalStartArea = function(){
    syncPullDownSelectedValue(
        this.syncCondition.rentalStartArea,
        this.syncCondition.rentalEndArea);
    changeSubAreaByKenArea(
        this.syncCondition.rentalEndArea,
        this.syncCondition.rentalEndSubArea);
    this.changeOfficeBySubArea(
        this.syncCondition.rentalEndSubArea,
        this.syncCondition.rentalEndOffice);
};
/**
 * 貸出エリアと地区の同期をとります。
 */
DDP_Search.SyncManager.prototype.syncRentalStartAreaConditionByKenArea = function() {
    var rsvKbn = DDP_Search.SyncManager.prototype.getRsvKbn(
            this.syncCondition.searchKbn1,
            this.syncCondition.searchKbn2,
            this.syncCondition.searchKbn3);
    if(rsvKbn == DDP_Search.Const.RSV_KBN_HOTEL_CAR) {
        syncPullDownSelectedValue(
            this.syncCondition.hotelArea,
            this.syncCondition.rentalStartArea);
        changeSubAreaByKenArea(
            this.syncCondition.rentalStartArea,
            this.syncCondition.rentalStartSubArea);
        this.changeOfficeBySubArea(
            this.syncCondition.rentalStartSubArea,
            this.syncCondition.rentalStartOffice);
    }
};
/**
 * 貸出エリアと地区の同期をとります。
 */
DDP_Search.SyncManager.prototype.syncRentalEndAreaConditionByKenArea = function() {
    var rsvKbn = DDP_Search.SyncManager.prototype.getRsvKbn(
            this.syncCondition.searchKbn1,
            this.syncCondition.searchKbn2,
            this.syncCondition.searchKbn3);
    if(rsvKbn == DDP_Search.Const.RSV_KBN_HOTEL_CAR) {
        syncPullDownSelectedValue(
            this.syncCondition.hotelArea,
            this.syncCondition.rentalEndArea);
        changeSubAreaByKenArea(
            this.syncCondition.rentalEndArea,
            this.syncCondition.rentalEndSubArea);
        this.changeOfficeBySubArea(
            this.syncCondition.rentalEndSubArea,
            this.syncCondition.rentalEndOffice);
    }
};
/**
 * 貸出エリアとレンタカー貸出地区の同期をとります。
 */
DDP_Search.SyncManager.prototype.syncRentalStartCarConditionBySubArea = function() {
    var rsvKbn = DDP_Search.SyncManager.prototype.getRsvKbn(
            this.syncCondition.searchKbn1,
            this.syncCondition.searchKbn2,
            this.syncCondition.searchKbn3);
    if(rsvKbn == DDP_Search.Const.RSV_KBN_HOTEL_CAR) {
        syncPullDownSelectedValue(
            this.syncCondition.hotelSubArea,
            this.syncCondition.rentalStartSubArea);
        this.changeOfficeBySubArea(
            this.syncCondition.rentalStartSubArea,
            this.syncCondition.rentalStartOffice);
    }
};
/**
 * 返却エリアと宿泊地区の同期をとります。
 */
DDP_Search.SyncManager.prototype.syncRentalEndCarConditionBySubArea = function() {
    var rsvKbn = DDP_Search.SyncManager.prototype.getRsvKbn(
            this.syncCondition.searchKbn1,
            this.syncCondition.searchKbn2,
            this.syncCondition.searchKbn3);
    if(rsvKbn == DDP_Search.Const.RSV_KBN_HOTEL_CAR) {
        syncPullDownSelectedValue(
            this.syncCondition.hotelSubArea,
            this.syncCondition.rentalEndSubArea);
        this.changeOfficeBySubArea(
            this.syncCondition.rentalEndSubArea,
            this.syncCondition.rentalEndOffice);
    }
};
/**
 *　貸出地区と返却地区の同期を取ります
 */
DDP_Search.SyncManager.prototype.syncRentalEndSubAreaByRentalStartArea = function() {
    syncPullDownSelectedValue(
        this.syncCondition.rentalStartSubArea,
        this.syncCondition.rentalEndSubArea);
    this.changeOfficeBySubArea(
        this.syncCondition.rentalEndSubArea,
        this.syncCondition.rentalEndOffice);
};
/**
 *　貸出店舗と返却店舗の同期を取ります
 */
DDP_Search.SyncManager.prototype.syncRentalEndOfficeByRentalStartOffice = function() {
    syncPullDownSelectedValue(
        this.syncCondition.rentalStartOffice,
        this.syncCondition.rentalEndOffice);
};
/**
 * 予約区分を取得します
 * @param {} airHotelCar 航空＋宿泊＋レンタカー
 * @param {} airHotel 航空＋宿泊
 * @param {} hotelCar 宿泊＋レンタカー
 * @return {Number} 予約区分
 */
DDP_Search.SyncManager.prototype.getRsvKbn = function(airHotelCar,airHotel,hotelCar) {
    var _airHotelCar = getNode(airHotelCar);
    var _airHotel = getNode(airHotel);
    var _hotelCar = getNode(hotelCar);
    if(_airHotelCar.checked) {
        return DDP_Search.Const.RSV_KBN_AIR_HOTEL_CAR;
    }else if(_airHotel.checked) {
        return DDP_Search.Const.RSV_KBN_AIR_HOTEL;
    }
    return DDP_Search.Const.RSV_KBN_HOTEL_CAR;
};
/**
 *　レンタカー貸出地域から貸出地区を設定します
 */
DDP_Search.SyncManager.prototype.syncRentalStartSubAreaByRentalStartArea = function(){
    changeSubAreaByKenArea(
        this.syncCondition.rentalStartArea,
        this.syncCondition.rentalStartSubArea);
};
/**
 *　レンタカー返却地域から返却地区を設定します
 */
DDP_Search.SyncManager.prototype.syncRentalEndSubAreaByRentalEndArea = function(){
    changeSubAreaByKenArea(
        this.syncCondition.rentalEndArea,
        this.syncCondition.rentalEndSubArea);
};
/**
 *　レンタカー貸出地区から貸出店舗を設定します
 */
DDP_Search.SyncManager.prototype.syncRentalStartOfficeByRentalStartSubtArea = function(){
    this.changeOfficeBySubArea(
        this.syncCondition.rentalStartSubArea,
        this.syncCondition.rentalStartOffice);
};
/**
 *　レンタカー返却地区から返却店舗を設定します
 */
DDP_Search.SyncManager.prototype.syncRentalEndOfficeByRentalEndSubtArea = function(){
    this.changeOfficeBySubArea(
        this.syncCondition.rentalEndSubArea,
        this.syncCondition.rentalEndOffice);
};

//  Day3.0 ADD START============================================================================================

/**
*   サブエリアのキーを元にメッシュ情報を取得しドロップダウンに設定する
*   @param subArea サブエリアのID
*   @param mesh サブエリアのID
*/
DDP_Search.SyncManager.prototype.syncMeshBySubArea = function(subArea, mesh, unselect){
	
	//  リストクラス作成
	var subAreaPullDown = new DDP_Search.UnselectablePullDown(subArea);
    var meshPullDown = new DDP_Search.UnselectablePullDown(mesh);
    subAreaPullDown.noSelectItemStyle = "";
    meshPullDown.noSelectItemStyle = "";
    //  初期化
    meshPullDown.init();
    subAreaPullDown.init();
    
     //  サブエリアのデータよりメッシュデータを取得しの再設定する   
	meshPullDown.shiftAll(ScriptResource.MeshList[subAreaPullDown.getSelectedValue()]);
	if (!!unselect && unselect) {
	    meshPullDown.selectIndex(0);
	}
    meshPullDown.onChangeEvent();
};

/**
*   出発日の同期を取ります
*/
DDP_Search.SyncManager.prototype.syncGoDate = function(rdo) {

    var goDate_         = getNode(this.syncCondition.goDate);
    var stepGoDate_     = getNode(this.syncCondition.stepGoDate);
    var stepAirGoDate_  = getNode(this.syncCondition.stepAirGoDate);
    var stepCarGoDate_  = getNode(this.syncCondition.stepCarGoDate);
    
    goDate_.value = stepGoDate_.value = stepAirGoDate_.value = stepCarGoDate_.value = rdo.value;
};

/**
*   出発時間の同期を取ります
*/
DDP_Search.SyncManager.prototype.syncTimeGo = function(rdo) {

    var timeGo_         = getNode(this.syncCondition.timeGo);
    var stepAirTimeGo_  = getNode(this.syncCondition.stepAirTimeGo);
    
    timeGo_.value = stepAirTimeGo_.value = rdo.value;
};

/**
*   出発空港の同期を取ります
*/
DDP_Search.SyncManager.prototype.syncAirportGoDeparture = function(rdo) {

    var airportGoDeparture_         = getNode(this.syncCondition.airportGoDeparture);
    var stepAirAirportGoDeparture_  = getNode(this.syncCondition.stepAirAirportGoDeparture);
    
    airportGoDeparture_.value = stepAirAirportGoDeparture_.value = rdo.value;
};

/**
*   到着空港の同期を取ります
*/
DDP_Search.SyncManager.prototype.syncAirportGoArrive = function(rdo) {

    var airportGoArrive_        = getNode(this.syncCondition.airportGoArrive);
    var stepAirAirportGoArrive_ = getNode(this.syncCondition.stepAirAirportGoArrive);
    
    airportGoArrive_.value = stepAirAirportGoArrive_.value = rdo.value;
};


/**
*   帰着日より泊数の同期を取ります
*/
DDP_Search.SyncManager.prototype.syncStayCountByBackDate = function() {


    var stepStayCount_              = getNode(this.syncCondition.stepStayCount);
    var stepStayCountCalcHidden_    = getNode(this.syncCondition.stepStayCountCalcHidden);
    var backDate_                   = getNode(this.syncCondition.backDate);
    var goDate_                     = getNode(this.syncCondition.goDate);
    
    //  出発日取得
    var goDateStr   = goDate_.value;
    var year        = goDateStr.substring(0, 4);
    var month       = goDateStr.substring(4, 6);
    var day         = goDateStr.substring(6, 8);
    var startDate = new Date(year,month, day);
    
    //  帰着日取得
    var backDateStr = backDate_.value;
    var bYear       = backDateStr.substring(0, 4);
    var bMonth      = backDateStr.substring(4, 6);
    var bDay        = backDateStr.substring(6, 8);
    var endDate = new Date(bYear, bMonth, bDay);
    
    //  泊数の算出
    var stayCount = getDateSpan(startDate, endDate);
    //  帰着日算出用
    var backDate;
        
    if(stayCount <= 0){
        //  泊数が0以下の場合は1泊とする
        stepStayCount_.value = "1";
        backDate = addDate(year, month, day, "1");    
    }
    else if (stayCount > 7){
        //  7泊より多い場合は7泊とする
        stepStayCount_.value = "7";
        backDate = addDate(year, month, day, "7");
    }
    else{
        //  泊数を設定する
        stepStayCount_.value = stayCount.toString();
        backDate = addDate(year, month, day, stayCount);
    }
    //  ステップ予約：宿泊の帰着日を隠し項目に設定
    stepStayCountCalcHidden_.value = backDate.getFullYear().toString() 
                                     + backDate.getMonth().toString() 
                                     + backDate.getDate().toString();

};

/**
*   開始日、終了日より 泊数を取得します。
*/
function getDateSpan(startDate, endDate){
    var spanTime = endDate.getTime() - startDate.getTime();
    var dateCount = 0;
    if (spanTime != 0){
        dateCount = spanTime / 86400000;//  差分のミリ秒÷1日のミリ秒数
    }
    return dateCount;
}

/**
*   人数、部屋定員の同期を取ります
*/
DDP_Search.SyncManager.prototype.syncCapacityRoomMax = function(rdo) {

    var capacity_       = getNode(this.syncCondition.capacity);
    var roomMax_        = getNode(this.syncCondition.roomMax);
    var stepRoomMax_    = getNode(this.syncCondition.stepRoomMax);
    
    //  6名以上の場合、人数は連動しない
    if (rdo.value > "6") {
        roomMax_.value = stepRoomMax_.value = rdo.value;
    }
    else {
        capacity_.value = roomMax_.value = stepRoomMax_.value = rdo.value;    
    }
};

/** 泊数より帰着日を計算しHidden項目へ設定します。
*
*/
DDP_Search.SyncManager.prototype.calcBackDate = function() {
    
    var stepGoDate_                 = getNode(this.syncCondition.stepGoDate);
    var stepStayCount_              = getNode(this.syncCondition.stepStayCount);
    var stepStayCountCalcHidden_    = getNode(this.syncCondition.stepStayCountCalcHidden);
    
    //  出発日取得
    var goDateStr = stepGoDate_.value;
    var year = goDateStr.substring(0, 4);
    var month = goDateStr.substring(4, 6);
    var day = goDateStr.substring(6, 8);
    var addDays = parseInt(stepStayCount_.value);
    //  帰着日の算出
    var backDate  = addDate(year, month, day, addDays);
    
    //  ステップ予約：宿泊の帰着日を隠し項目に設定
    stepStayCountCalcHidden_.value = backDate.getFullYear().toString() 
                                    + backDate.getMonth().toString() 
                                    + backDate.getDate().toString();
};

/** 
 * 泊数より帰着日を計算しHidden項目へ設定します。
 */
DDP_Search.SyncManager.prototype.syncStayCountDisable = function() {
    var stepGoDate_                 = getNode(this.syncCondition.stepGoDate);
    var stepStayCount_              = getNode(this.syncCondition.stepStayCount);
    var stepStayCountCalcHidden_    = getNode(this.syncCondition.stepStayCountCalcHidden);
    
    if(stepGoDate_.value == "") {
        stepStayCount_.disabled = true;
        stepStayCount_.selectedIndex = 0;
    } else {
        stepStayCount_.disabled = false;
    }
};

/* 日付の加算を行います */
function addDate(year, month, day, addDays) {
    var date = new Date(year, month, day);
    var baseSec = date.getTime();
    var addSec = addDays * 86400000;//日数 * 1日のミリ秒数
    var targetSec = baseSec + addSec;
    date.setTime(targetSec);
    return date;
}

/**
 * 貸出エリアと地区の同期をとります。
 */
DDP_Search.SyncManager.prototype.syncRentalStartAreaConditionByStepKenArea = function() {
    syncPullDownSelectedValue(
        this.syncCondition.hotelArea,
        this.syncCondition.rentalStartArea);
    changeSubAreaByKenArea(
        this.syncCondition.rentalStartArea,
        this.syncCondition.rentalStartSubArea);
    this.changeOfficeBySubArea(
        this.syncCondition.rentalStartSubArea,
        this.syncCondition.rentalStartOffice);
};

/**
 * 返却エリアと地区の同期をとります。
 */
DDP_Search.SyncManager.prototype.syncRentalEndAreaConditionByStepKenArea = function() {
    syncPullDownSelectedValue(
        this.syncCondition.hotelArea,
        this.syncCondition.rentalEndArea);
    changeSubAreaByKenArea(
        this.syncCondition.rentalEndArea,
        this.syncCondition.rentalEndSubArea);
    this.changeOfficeBySubArea(
        this.syncCondition.rentalEndSubArea,
        this.syncCondition.rentalEndOffice);
};

/**
 * 貸出エリアとレンタカー貸出地区の同期をとります。
 */
DDP_Search.SyncManager.prototype.syncRentalStartCarConditionByStepSubArea = function() {
    syncPullDownSelectedValue(
        this.syncCondition.hotelSubArea,
        this.syncCondition.rentalStartSubArea);
    this.changeOfficeBySubArea(
        this.syncCondition.rentalStartSubArea,
        this.syncCondition.rentalStartOffice);
};
/**
 * 返却エリアと宿泊地区の同期をとります。
 */
DDP_Search.SyncManager.prototype.syncRentalEndCarConditionByStepSubArea = function() {
    syncPullDownSelectedValue(
        this.syncCondition.hotelSubArea,
        this.syncCondition.rentalEndSubArea);
    this.changeOfficeBySubArea(
        this.syncCondition.rentalEndSubArea,
        this.syncCondition.rentalEndOffice);
};

/**
* リストで選択された空港によってキャリアによってボタンのdisabledを切り替える
* @param {Boolean} changingImg 明示的に指定された場合にsearchBttnJal,searchBttnAnaのsrc要素を変更します。
*/
DDP_Search.SyncManager.prototype.searchBttnCheck = function(
    airportDeparture,
    airportArrive,
    searchBttnJal,
    searchBttnAna,
    changingImg){

    var jalBttnFlg = true;
    var anaBttnFlg = true;
    
    //JAL検索ボタンの切り替え
    if (this.searchAiportCarrierCheck(airportDeparture.value, DDP_Search.Const.CARRIER_JAL) &&
        this.searchAiportCarrierCheck(airportArrive.value, DDP_Search.Const.CARRIER_JAL))
    {
        jalBttnFlg = false;
    }
    //ANA検索ボタンの切り替え
    if (this.searchAiportCarrierCheck(airportDeparture.value, DDP_Search.Const.CARRIER_ANA) &&
        this.searchAiportCarrierCheck(airportArrive.value, DDP_Search.Const.CARRIER_ANA))
    {
        anaBttnFlg = false;
    }
    
    searchBttnJal.disabled = jalBttnFlg;
    searchBttnAna.disabled = anaBttnFlg;
    if (!!changingImg) {
        if (searchBttnJal.src) {
            searchBttnJal.src = DDP_Search.Const.AIR_TOP_SEARCH_BUTTON_PATH + (jalBttnFlg ?
                DDP_Search.Const.AIR_TOP_SEARCH_BUTTON_JAL_DISABLED :
                DDP_Search.Const.AIR_TOP_SEARCH_BUTTON_JAL_ENABLE);
        }
        if (searchBttnAna.src) {
            searchBttnAna.src = DDP_Search.Const.AIR_TOP_SEARCH_BUTTON_PATH + (anaBttnFlg ?
                DDP_Search.Const.AIR_TOP_SEARCH_BUTTON_ANA_DISABLED :
                DDP_Search.Const.AIR_TOP_SEARCH_BUTTON_ANA_ENABLE);
        }
    }
};

/**
* 指定された空港が指定されたキャリアで使用されているかをチェックします
*/
DDP_Search.SyncManager.prototype.searchAiportCarrierCheck = function(value, carrierKbn){
    //空港とキャリアの情報の取得
    var conf = ScriptResource.AirportCarrier.setting;
    //キャリアが運航しているかどうかのフラグ
    var carrierFlg = false;
    for(var i = 0, cLen = conf.length; i < cLen; i++) {
        var tConf = conf[i];
        if(tConf.airportCode == value) {
            if(carrierKbn == DDP_Search.Const.CARRIER_JAL) {
                //JALが運航している場合、フラグを更新
                if(tConf.jal == "1") {
                    carrierFlg = true;
                }
            } else if(carrierKbn == DDP_Search.Const.CARRIER_ANA) {
                //ANAが運航している場合、フラグを更新
                if(tConf.ana == "1") {
                    carrierFlg = true;
                }
            }
        }
    }
    return carrierFlg;
};
//  Day3.0 ADD E N D============================================================================================


////////////////////// DDP_Search.SyncManager END //////////////////////

////////////////////// DDP_Search.MapSearchType START //////////////////////
DDP_Search.MapSearchType = {
    Unknown : "",
    AirGoDeparture : "00",
    AirGoArrival : "01",
    AirReturnDeparture : "02",
    AirReturnArrival : "03",
    HotelSubArea : "04",
    CarRentalStart : "05",
    CarRentalEnd : "06"
};
////////////////////// DDP_Search.MapSearchType END //////////////////////

////////////////////// DDP_Search.DefaultValuesElements START //////////////////////
/**
 * 既定値を設定する要素を格納するオブジェクト。
 * @param {DDP_Search.DefaultValuesElements.Common} common 既定値を設定する共通要素
 * @param {DDP_Search.DefaultValuesElements.Air} air 既定値を設定する航空要素
 * @param {DDP_Search.DefaultValuesElements.Hotel} hotel 既定値を設定する宿泊要素
 * @param {DDP_Search.DefaultValuesElements.Car} car 既定値を設定するレンタカー要素
 */
DDP_Search.DefaultValuesElements = function(common, air, hotel, car) {
    this.common = common;
    this.air = air;
    this.hotel = hotel;
    this.car = car;
};
/**
 * IDからPullDownのインスタンスを作成して返します。
 * IDがnullの場合は、 null を返します。
 * @param {String} id PullDownのID。
 * @return {DDP_Search.PullDown} 
 */
DDP_Search.DefaultValuesElements.getPullDownInstance = function(id) {
    var pullDown = null;
    if(id != null) {
        pullDown = new DDP_Search.PullDown(id);
        pullDown.init();
    }
    return pullDown;
};
////////////////////// DDP_Search.DefaultValuesElements END //////////////////////

////////////////////// DDP_Search.DefaultValuesElements.Common START //////////////////////
/**
 * 既定値を設定する共通要素を格納するオブジェクト。
 */
DDP_Search.DefaultValuesElements.Common = function(per, goDate, goTime, reDate, reTime) {
    this.per = DDP_Search.DefaultValuesElements.getPullDownInstance(per);
    this.goDate = DDP_Search.DefaultValuesElements.getPullDownInstance(goDate);
    this.goTime = DDP_Search.DefaultValuesElements.getPullDownInstance(goTime);
    this.reDate = DDP_Search.DefaultValuesElements.getPullDownInstance(reDate);
    this.reTime = DDP_Search.DefaultValuesElements.getPullDownInstance(reTime);
};
////////////////////// DDP_Search.DefaultValuesElements.Common END //////////////////////

////////////////////// DDP_Search.DefaultValuesElements.Air START //////////////////////
/**
 * 既定値を設定する航空要素を格納するオブジェクト。
 * @param {String} goDep 往路出発空港
 * @param {String} goArr 往路到着空港
 * @param {String} goSeat 往路座席
 * @param {String} goFee 往路運賃
 * @param {String} reDep 復路出発空港
 * @param {String} reArr 復路到着空港
 * @param {String} reSeat 復路座席
 * @param {String} reFee 復路運賃
 * @param {String} airline 航空会社
 */
DDP_Search.DefaultValuesElements.Air = function(goDep, goArr, goSeat, goFee, reDep, reArr, reSeat, reFee, airline) {
    this.goDep = DDP_Search.DefaultValuesElements.getPullDownInstance(goDep);
    this.goArr = DDP_Search.DefaultValuesElements.getPullDownInstance(goArr);
    this.goSeat = DDP_Search.DefaultValuesElements.getPullDownInstance(goSeat);
    this.goFee = DDP_Search.DefaultValuesElements.getPullDownInstance(goFee);
    this.reDep = DDP_Search.DefaultValuesElements.getPullDownInstance(reDep);
    this.reArr = DDP_Search.DefaultValuesElements.getPullDownInstance(reArr);
    this.reSeat = DDP_Search.DefaultValuesElements.getPullDownInstance(reSeat);
    this.reFee = DDP_Search.DefaultValuesElements.getPullDownInstance(reFee);
    this.airline = DDP_Search.DefaultValuesElements.getPullDownInstance(airline);
};
////////////////////// DDP_Search.DefaultValuesElements.Air END //////////////////////

////////////////////// DDP_Search.DefaultValuesElements.Hotel START //////////////////////
/**
 * 既定値を設定する宿泊要素を格納するオブジェクト。
 * @param {String} pn 
 * @param {String} feeMin 
 * @param {String} feeMax 
 * @param {String} roomType 
 * @param {String} mealType 
 * @param {String} ken 
 * @param {String} subArea 
 * @param {DDP_Framework.TableMenu} subAreaTableMenu
 */
DDP_Search.DefaultValuesElements.Hotel = function(pn,feeMin,feeMax,roomType,mealType,ken,subArea,subAreaTableMenu) {
    this.pn = DDP_Search.DefaultValuesElements.getPullDownInstance(pn);
    this.feeMin = DDP_Search.DefaultValuesElements.getPullDownInstance(feeMin);
    this.feeMax = DDP_Search.DefaultValuesElements.getPullDownInstance(feeMax);
    this.roomType = DDP_Search.DefaultValuesElements.getPullDownInstance(roomType);
    this.mealType = DDP_Search.DefaultValuesElements.getPullDownInstance(mealType);
    this.ken = DDP_Search.DefaultValuesElements.getPullDownInstance(ken);
    this.subArea = DDP_Search.DefaultValuesElements.getPullDownInstance(subArea);
    /**  @type {DDP_Framework.TableMenu} */
    this.subAreaTableMenu = subAreaTableMenu;
};
////////////////////// DDP_Search.DefaultValuesElements.Hotel END //////////////////////

////////////////////// DDP_Search.DefaultValuesElements.Car START //////////////////////
/**
 * 既定値を設定するレンタカー要素を格納するオブジェクト。
 * @param {String} carCnt
 * @param {String} carClass
 * @param {String} smoke
 * @param {String} transmission
 * @param {String} drive
 * @param {String} startArea
 * @param {String} startSubArea
 * @param {String} startOffice
 * @param {String} endArea
 * @param {String} endSubArea
 * @param {String} endOffice
 * @param {String} company
 */
DDP_Search.DefaultValuesElements.Car = function(carCnt,carClass,smoke,transmission,drive,startArea,startSubArea,startOffice,endArea,endSubArea,endOffice,company) {
    this.carCnt = DDP_Search.DefaultValuesElements.getPullDownInstance(carCnt);
    this.carClass = DDP_Search.DefaultValuesElements.getPullDownInstance(carClass);
    this.smoke = DDP_Search.DefaultValuesElements.getPullDownInstance(smoke);
    this.transmission = DDP_Search.DefaultValuesElements.getPullDownInstance(transmission);
    this.drive = DDP_Search.DefaultValuesElements.getPullDownInstance(drive);
    this.startArea = DDP_Search.DefaultValuesElements.getPullDownInstance(startArea);
    this.startSubArea = DDP_Search.DefaultValuesElements.getPullDownInstance(startSubArea);
    this.startOffice = DDP_Search.DefaultValuesElements.getPullDownInstance(startOffice);
    this.endArea = DDP_Search.DefaultValuesElements.getPullDownInstance(endArea);
    this.endSubArea = DDP_Search.DefaultValuesElements.getPullDownInstance(endSubArea);
    this.endOffice = DDP_Search.DefaultValuesElements.getPullDownInstance(endOffice);
    this.company = DDP_Search.DefaultValuesElements.getPullDownInstance(company);
};
////////////////////// DDP_Search.DefaultValuesElements.Car END //////////////////////

////////////////////// DDP_Search.DefaultValuesManager START //////////////////////
/**
 * @class 既定値を操作する為のクラスです。
 * @param {DDP_Search.DefaultValuesManager.Mode} mode 動作モード
 * @param {DDP_Search.DefaultValuesElements} 既定値を設定する要素オブジェクト
 * @param {DDP_Search.SyncManager} syncManager 同期制御オブジェクト
 */
DDP_Search.DefaultValuesManager = function(mode,elements,syncManager) {
    this.initialize.apply(this, arguments);
};
/**
 * 既定値を操作する動作モード
 * @type {Number} 既定値を操作する動作モード
 */
DDP_Search.DefaultValuesManager.Mode = {
    /**  TOP画面での動作。 @type Number */
    Top : 0
};
/**
 * コンストラクタ
 * @constructor
 * @param {DDP_Search.DefaultValuesManager.Mode} mode 動作モード
 * @param {DDP_Search.DefaultValuesElements} 既定値を設定する要素オブジェクト
 * @param {DDP_Search.SyncManager} syncManager 同期制御オブジェクト
 */
DDP_Search.DefaultValuesManager.prototype.initialize = function(mode,elements,syncManager) {
    /** 動作モード @type {DDP_Search.DefaultValuesManager.Mode} */
    this.mode = mode;
    /** 既定値を設定する要素オブジェクト @type {DDP_Search.DefaultValuesElements} */
    this.elements = elements;
    /** 同期制御オブジェクト @type {DDP_Search.SyncManager} */
    this.syncManager = syncManager;
    /** 既定値オブジェクト */
    this.settings = null;
    if (this.mode == DDP_Search.DefaultValuesManager.Mode.Top) {
        this.settings = TopConditionDefaultValues;
    }
    /** 初回かどうか @type {Boolean} */
    this.isFirst = true;
};
/**
 * 指定された予約区分で既定値を設定します。
 * @param {Number} reservationKbn 予約区分
 */
DDP_Search.DefaultValuesManager.prototype.setDefault = function(reservationKbn) {
    var setting = this.getSetting(reservationKbn);
    this.setCommonDefault(setting);
    switch(reservationKbn) {
        case DDP_Search.Const.RSV_KBN_AIR_HOTEL:
            this.setAirDefault(setting);
            this.setHotelDefault(setting);
            break;
        case DDP_Search.Const.RSV_KBN_AIR_HOTEL_CAR:
            this.setAirDefault(setting);
            this.setHotelDefault(setting);
            this.setCarDefault(setting);
            break;
        case DDP_Search.Const.RSV_KBN_HOTEL_CAR:
            this.setHotelDefault(setting);
            this.setCarDefault(setting);
            break;
    }
    this.isFirst = false;
};
/**
 * 共通の既定値を設定します。
 * @param {} setting 既定値設定。
 */
DDP_Search.DefaultValuesManager.prototype.setCommonDefault = function(setting) {
    this.setPullDownValue(this.elements.common.per, setting.Common.Per);
    this.setPullDownIndex(this.elements.common.goDate, setting.Common.GoDate);
    this.setPullDownIndex(this.elements.common.reDate, setting.Common.ReDate);
    if (this.mode != DDP_Search.DefaultValuesManager.Mode.Top) {
        this.setPullDownValue(this.elements.air.goTime, setting.Air.GoTime);
        this.setPullDownValue(this.elements.air.reTime, setting.Air.ReTime);
    }
};
/**
 * 航空の既定値を設定します。
 * @param {} setting 既定値設定。
 */
DDP_Search.DefaultValuesManager.prototype.setAirDefault = function(setting) {
    if (!this.isFirst) {
        //this.setPullDownValue(this.elements.air.goDep, setting.Air.GoDep);
        //this.setPullDownValue(this.elements.air.reArr, setting.Air.ReArr);
    }
    this.setPullDownValue(this.elements.air.goArr, setting.Air.GoArr);
    this.setPullDownValue(this.elements.air.reDep, setting.Air.ReDep);
    if (this.mode != DDP_Search.DefaultValuesManager.Mode.Top) {
        this.setPullDownValue(this.elements.air.goSeat, setting.Air.GoSeat);
        this.setPullDownIndex(this.elements.air.goFee, setting.Air.GoFeeIndex);
        this.setPullDownValue(this.elements.air.reSeat, setting.Air.ReSeat);
        this.setPullDownIndex(this.elements.air.reFee, setting.Air.ReFeeIndex);
        this.setPullDownValue(this.elements.air.airline, setting.Air.Airline);
    }
};
/**
 * 宿泊の既定値を設定します。
 * @param {} setting 既定値設定。
 */
DDP_Search.DefaultValuesManager.prototype.setHotelDefault = function(setting) {
    this.setPullDownValue(this.elements.hotel.pn, setting.Hotel.Pn);
    this.setPullDownValue(this.elements.hotel.ken, setting.Hotel.Ken);
    changeSubAreaByKenArea(this.elements.hotel.ken.uniqueId, this.elements.hotel.subArea.uniqueId);
    if (this.elements.hotel.subAreaTableMenu) {
        this.elements.hotel.subAreaTableMenu.update();
    }
    this.setPullDownValue(this.elements.hotel.subArea, setting.Hotel.SubArea);
    if (this.mode != DDP_Search.DefaultValuesManager.Mode.Top) {
        this.setPullDownValue(this.elements.hotel.feeMin, setting.Hotel.FeeMin);
        this.setPullDownValue(this.elements.hotel.feeMax, setting.Hotel.FeeMax);
        this.setPullDownValue(this.elements.hotel.roomType, setting.Hotel.RoomType);
        this.setPullDownValue(this.elements.hotel.mealType, setting.Hotel.MealType);
    }
};
/**
 * レンタカーの既定値を設定します。
 * @param {} setting 既定値設定。
 */
DDP_Search.DefaultValuesManager.prototype.setCarDefault = function(setting) {
    this.setPullDownValue(this.elements.car.carClass, setting.Car.CarClass);
    this.setPullDownValue(this.elements.car.smoke, setting.Car.Smoke);
    this.setPullDownValue(this.elements.car.startArea, setting.Car.StartArea);
    this.syncManager.syncRentalStartSubAreaByRentalStartArea();
    this.setPullDownValue(this.elements.car.startSubArea, setting.Car.StartSubArea);
    this.syncManager.syncRentalStartOfficeByRentalStartSubtArea();
    this.setPullDownValue(this.elements.car.startOffice, setting.Car.StartOffice);
    this.setPullDownValue(this.elements.car.endArea, setting.Car.EndArea);
    this.syncManager.syncRentalEndSubAreaByRentalEndArea();
    this.setPullDownValue(this.elements.car.endSubArea, setting.Car.EndSubArea);
    this.syncManager.syncRentalEndOfficeByRentalEndSubtArea();
    this.setPullDownValue(this.elements.car.endOffice, setting.Car.EndOffice);
    if (this.mode != DDP_Search.DefaultValuesManager.Mode.Top) {
        this.setPullDownValue(this.elements.car.carCnt, setting.Car.CarCnt);
        this.setPullDownValue(this.elements.car.transmission, setting.Car.Transmission);
        this.setPullDownValue(this.elements.car.drive, setting.Car.Drive);
        this.setPullDownValue(this.elements.car.dompany, setting.Car.Company);
    }
};
/**
 * 指定された予約区分の既定値設定を取得します。
 * @param {Number} reservationKbn 予約区分
 */
DDP_Search.DefaultValuesManager.prototype.getSetting = function(reservationKbn) {
    switch(reservationKbn) {
        case DDP_Search.Const.RSV_KBN_AIR_HOTEL:
            return this.settings.AirHotel;
        case DDP_Search.Const.RSV_KBN_AIR_HOTEL_CAR:
            return this.settings.AirHotelCar;
        case DDP_Search.Const.RSV_KBN_HOTEL_CAR:
            return this.settings.HotelCar;
    }
};
/**
 * 指定したプルダウンに値を設定します。
 * @param {DDP_Search.PullDown} pullDown プルダウン
 * @param {String} selectedValue 選択値
 */
DDP_Search.DefaultValuesManager.prototype.setPullDownValue = function(pullDown, selectedValue) {
    if (pullDown == null) return;
    pullDown.select(selectedValue);
};
/**
 * 指定したプルダウンに値を設定します。
 * @param {DDP_Search.PullDown} pullDown プルダウン
 * @param {Number} selectedIndex 選択Index
 */
DDP_Search.DefaultValuesManager.prototype.setPullDownIndex = function(pullDown, selectedIndex) {
    if (pullDown == null) return;
    pullDown.selectIndex(selectedIndex);
};
////////////////////// DDP_Search.DefaultValuesManager END //////////////////////

//////////////////////// DDP_Search.TopSearchPanel START //////////////////////////
/**
 * エリアの値を一時保存用の隠しフィールドに一時保存します。
 * @param stayArea サブエリアプルダウンのID
 * @param stayAreaTempValue 一時保存用隠しフィールドのID
 */
function saveArea(area,areaTempValue) {
    // エリアの値を一時保存
    var areaList = DDP_Framework.DOM.isNode(area) ? area : getNode(area);
    var areaTempValueList = DDP_Framework.DOM.isNode(areaTempValue) ? areaTempValue : getNode(areaTempValue);
    areaTempValueList.value = areaList.value;
};
/**
 * エリアを保存してある値に変更します。
 * @param stayArea サブエリアプルダウンのIDまたはNode
 * @param stayAreaTempValue 一時保存用隠しフィールドのIDまたはNode
 */
function setAreaByTempValue(area,areaTempValue) {
    // エリアの値を一時保存
    var areaList = DDP_Framework.DOM.isNode(area) ? area : getNode(area);
    var areaTempValueList = DDP_Framework.DOM.isNode(areaTempValue) ? areaTempValue : getNode(areaTempValue);
    if(areaTempValueList.value) {
        areaList.value = areaTempValueList.value;
    }
};
/**
 * 往路出発空港と復路到着空港の同期を取ります。
 * @param airportGoDeparture 往路出発空港プルダウンのID
 * @param airportBackArrive 復路到着空港プルダウンのID
 */
function syncBackArriveByGoDepature(airportGoDeparture, airportBackArrive) {
    // 変更された空港プルダウンの内容を取得
    var airportGoDepartureList = getNode(airportGoDeparture);
    var airportBackArriveList = getNode(airportBackArrive);
    airportBackArriveList.value = airportGoDepartureList.value;
};
/**
 * 往路到着空港と復路出発空港の同期を取ります。
 * @param airportGoArrive 往路到着空港プルダウンのID
 * @param airportBackDeparture 復路出発空港プルダウンのID
 */
function syncBackDepatureByGoArrive(airportGoArrive, airportBackDeparture) {
    // 変更された空港プルダウンの内容を取得
    var airportGoArriveList = getNode(airportGoArrive);
    var airportBackDepartureList = getNode(airportBackDeparture);
    airportBackDepartureList.value = airportGoArriveList.value;
};
/**
 * レンタカー店舗条件表示・非表示を切り替えます。
 */
function switchCarCondition(carConditionTr,carConditionNoTr,carConditionStartTr,carConditionEndTr,displayFlag) {
    var conditionTr = getNode(carConditionTr);
    var conditionNoTr = getNode(carConditionNoTr);
    var conditionStartTr = getNode(carConditionStartTr);
    var conditionEndTr = getNode(carConditionEndTr);
    var flag = getNode(displayFlag);
    if(flag.value != DDP_Search.Const.FLAG_TRUE) {
        conditionTr.style.display = "";
        conditionNoTr.style.display = "none";
        conditionStartTr.style.display = "none";
        conditionEndTr.style.display = "none";
        flag.value = DDP_Search.Const.FLAG_TRUE;
    } else {
        conditionTr.style.display = "none";
        conditionNoTr.style.display = "";
        conditionStartTr.style.display = "";
        conditionEndTr.style.display = "";
        flag.value = DDP_Search.Const.FLAG_FALSE;
    }
};
/**
 * レンタカー店舗情報の表示を初期化します。
 */
function initCarCondition(
    carConditionStartTr,
    carConditionEndTr,
    manager) {
    var _carConditionStartTr = getNode(carConditionStartTr);
    var _carConditionEndTr = getNode(carConditionEndTr);
    if(getNode(manager.searchKbn1).checked) {
        _carConditionStartTr.style.display = "none";
        _carConditionEndTr.style.display = "none";
    } else if(getNode(manager.searchKbn3).checked) {
        _carConditionStartTr.style.display = "";
        _carConditionEndTr.style.display = "none";
    }    
};
//////////////////////// DDP_Search.TopSearchPanel END ////////////////////////////

//////////////////////// DDP_Search.AssistSearch START //////////////////////////
/**
 * 人数の選択内容によって部屋定員の選択内容の同期をとります。
 * @param capacity 人数プルダウン
 * @param roomMax 部屋定員プルダウン
 */
function syncRoomMaxByCapacity(capacity,roomMax) {
    var capacityList = getNode(capacity);
    var roomMaxList = getNode(roomMax);
    
    roomMaxList.value = capacityList.value;
};
//////////////////////// DDP_Search.AssistSearch END   //////////////////////////

////////////////////// DDP_Search.Map START //////////////////////
/**
 * DDP_Search.Map コンストラクタの定義
 * @class 入力補助地図を操作する為のクラスです。
 * @constructor
 * @param mapElementId 地図表示エレメントID
 * @param kenListId 県リストボックスエレメントID
 * @param subAreaListId サブエリアリストボックスエレメントID
 * @param linkButtonId 地図選択リンクのエレメントID
 */
DDP_Search.Map = function ( mapElementId, kenListId, subAreaListId, linkButtonId) {
    this.mapElementId = mapElementId;
    this.kenListId = kenListId;
    this.subAreaListId = subAreaListId;
    this.linkButtonId = linkButtonId;
    this.__dispelem = null;  // 地図表示欄エレメント
    this.__listelem = null;  // サブエリアリストエレメント
    this.disabled = false;  // 無効かされているかどうか
    this.kenCd = null;
    // タグのClickイベント等から呼び出せるように、
    // ルートに参照用変数を用意
    this.globalId = "__supportMap_" + this.kenListId;
    window[this.globalId] = this;
    this.mapImageId = "__map_image_" + this.mapElementId;
    return this;
};
/** zindexの定義 */
DDP_Search.Map.prototype.zindex = 10;
/** イメージファイルのディレクトリprefix */
DDP_Search.Map.prototype.mapImageDirPrefix = "/plus/images/map";
/** 閉じるボタンイメージURL */
DDP_Search.Map.prototype.closeImage = "/plus/images/map/btn_top_favi_close.gif";
/** 地図を消すかどうかのフラグ */
DDP_Search.Map.prototype.deleteflag = false;
/**
 * ページ表示時の初期処理を行ないます。
 */
DDP_Search.Map.prototype.init = function () {
    var __this = this;
    // ページ表示時のイベント登録
    // イベントを登録する
    var mapChoiceLink = getNode(this.linkButtonId);
    addEvent( mapChoiceLink, "click", function() {
        if(!__this.disabled) {
            __this.show();
        }
    });
    var mapdiv = this.getMapElement();
    // 地図の選択できない部分のクリックの挙動①
    addEvent( mapdiv, "mouseover", function() {
        __this.deleteflag = false;
    });
    // 地図の選択できない部分のクリックの挙動②
    addEvent( mapdiv, "mouseout", function() {
        __this.deleteflag = true;
    });
    // documentにマウス押下
    addEvent(document, "mousedown", function() {
        // 地図を消してもいいよフラグがtrueならば地図を消す
        if (__this.deleteflag == true) {
            __this.hide();
        }
    });
    // 県プルダウン変更時
    var kenSelectNode = getNode(this.kenListId);
    addEvent(kenSelectNode, "change", function() {
        // 画像を読み込むために一度読み込む
        __this.write();
    });
    
    // 画面の初期表示時用処理
    this.write();
    var subAreaNode = getNode(this.subAreaListId);
    if(subAreaNode.disabled) {
        this.disable();
    }
};
/**
 * 地図表示欄のエレメントを返します。
 */
DDP_Search.Map.prototype.getMapElement = function () {
    if ( this.__dispelem ) return this.__dispelem;
    this.__dispelem = getNode( this.mapElementId );
    return this.__dispelem;
};
/**
 * サブエリアリストボックスのエレメントを返します。
 */
DDP_Search.Map.prototype.getFormElement = function () {
    if ( this.__listelem ) return this.__listelem;
    this.__listelem = getNode( this.subAreaListId );
    return this.__listelem;
};
/**
 * 地図表示欄を表示します。
 */
DDP_Search.Map.prototype.show = function () {
    this.getMapElement().style.display = "";
    this.deleteflag = true;
};
/**
 * 地図表示欄を即座に隠します。
 */
DDP_Search.Map.prototype.hide = function () {
    this.getMapElement().style.display = "none";
    // 表示フラグを"0:非表示"に変更
    this.deleteflag = false;
};
/**
 * 地図を描画します。
 */
DDP_Search.Map.prototype.write = function () {
    console.log("DDP_Search.Map.prototype.write");
    var kenSelectNode = getNode(this.kenListId);
    // 未選択の場合はwriteしない
    if(kenSelectNode.value == "") {
        return ;
    }
    this.getMapElement().innerHTML = "";
    // 県CD、サブエリアCDなどを取得する
    var conf = DDP_Search.SubAreaConf.setting;
    // 県CDを取得
    this.kenCd = kenSelectNode.options[kenSelectNode.selectedIndex].value;
    // HTML作成用変数
    var closeButtonId = '__' + this.mapElementId + '_btn_close';
    var screenId = '__' + this.mapElementId + '_screen';
    var kenImageSrc = this.mapImageDirPrefix + "/" + this.kenCd + "/" + this.kenCd + ".gif";
    var areaMapId = "__area_map_" + this.kenCd + this.mapElementId;

    // HTMLソースを生成する
    // 地図の部分の生成
    var mapHtmlArray = [""], idx = 1;
    // z-indexをデフォルトの2倍にしておく。IEの場合iframeのより上にくる必要がある為の対応
    mapHtmlArray[idx++] = '<div id="' + screenId + '" style="position:relative;z-index:'+ this.zindex * 2 +';">';
    mapHtmlArray[idx++] = '<table class="supportMap">';
    mapHtmlArray[idx++] = '<tr>';
    mapHtmlArray[idx++] = '  <td style=""><img id="' + closeButtonId + '" class="closeButton" src="' + this.closeImage +'" alt="閉じる"></td>'
    mapHtmlArray[idx++] = '</tr>';
    mapHtmlArray[idx++] = '<tr><td style="">';
    mapHtmlArray[idx++] = '<img id="' + this.mapImageId + '" class="mapImage" src="' + kenImageSrc + '" alt="入力補助地図" usemap="#' + areaMapId + '">';
    mapHtmlArray[idx++] = '<map id="' + areaMapId + '" name="' + areaMapId + '">';

    // エリア情報を設定する
    var targetKenCode = kenSelectNode.options[kenSelectNode.selectedIndex].value;
    for( var i = 0, cLen = conf.length; i < cLen; i++ ) {
        var tConf = conf[i];
        // 該当県のデータを取得 & SubArea名が空でないものを取得
        if( targetKenCode == tConf.kenCode && tConf.subAreaName != "") {
            var subCd = tConf.subAreaCode;
            var coordsArray = tConf.coords;
            // 座標データを使用し、Areaタグを作成する
            for(var j = 0, coordsLen = coordsArray.length; j < coordsLen; j++) {
                mapHtmlArray[idx++] =
                    "<area "
                    + "value=\"" + subCd + "\" "
                    + "shape=\"poly\" "
                    + "coords=\"" + coordsArray[j] + "\" "
                    + "href=\"javascript:;\" "
                    + "onClick=\"" + this.globalId + ".selectMap(\'" + subCd + "\');\" "
                    + "onMouseOver=\"" + this.globalId + ".focusMap(\'" + subCd + "\');\" "
                    + "onMouseOut=\"" + this.globalId + ".blurMap();\" "
                    + "alt=\"" + tConf.subAreaName + "\">";
            }
        }
    }
    mapHtmlArray[idx++] = '</map>';
    mapHtmlArray[idx++] = '</td></tr></table>';
    mapHtmlArray[idx++] = '</div>';
    var mapHtml = mapHtmlArray.join("");

    // 地図を書き換える
    var mapNode = this.getMapElement();
    if ( !mapNode ) return;
    mapNode.style.position = "absolute";
    mapNode.style.display = "none";
    mapNode.innerHTML = mapHtml;

    // <select>への応急処置
    // カレンダーと全く同じサイズのIFRAMEを生成し、座標を一致させて下位レイヤに描画する
    // IFRAME対応が可能なバージョンのみ処置を施す
    var ua = navigator.userAgent;
    if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0 ){
        var screenHeight = "197px"; // 縦幅固定
        var screenWidth = "334px";  // 横幅固定
        
        var mapIFrameHtml = "";
        mapIFrameHtml += '<div style="position:absolute;z-index:'+ this.zindex +';top:0px;left:0px;">';
        mapIFrameHtml += '  <iframe src="javascript:false;" frameborder="0" scrolling="no" width="'+screenWidth+'" height="'+screenHeight+'"></iframe>';
        mapIFrameHtml += '</div>\n';
        // IFrameを挿入する
        mapNode.innerHTML = mapIFrameHtml + mapHtml;
    }

    // 閉じるボタン
    var __this = this;
    var closeButton = getNode( closeButtonId );
    addEvent( closeButton, "click", function(){ __this.hide(); });
};
/**
 * 地図のクリックした際の動作を処理します。
 * 選択されたサブエリアの値でサブエリアプルダウンの値を変更し、地図を隠します。
 * @param subCd 選択したサブエリアコード
 */
DDP_Search.Map.prototype.selectMap = function (subCd) {
    var subAreaNode = getNode(this.subAreaListId);
    for(var j=0,sLen=subAreaNode.length; j<sLen; j++) {
        if(subAreaNode[j].value == subCd) {
            subAreaNode.selectedIndex = j;
            break;
        }
    }
    this.hide();
    this.onSelected();
};
/**
 * 指定されたエリアをハイライト表示します。
 * @param subAreaCd サブエリアコード
 */
DDP_Search.Map.prototype.focusMap = function (subAreaCd) {
    var mapImageNode = getNode(this.mapImageId);
    mapImageNode.src = this.mapImageDirPrefix + "/" + this.kenCd + "/" + subAreaCd + ".gif";
};
/**
 * ハイライト表示されていない状態に戻します。
 */
DDP_Search.Map.prototype.blurMap = function () {
    var mapImageNode = getNode(this.mapImageId);
    mapImageNode.src = this.mapImageDirPrefix + "/" + this.kenCd + "/" + this.kenCd + ".gif";
};
/**
 * コントロールを使用不可に設定します。
 */
DDP_Search.Map.prototype.disable = function() {
    this.hide();
    // 地図選択リンクのdisable化
    var mapSelectLinkNode = getNode(this.linkButtonId);
    addClass(mapSelectLinkNode, DDP_Search.Const.MAP_SELECT_LINK_DISABLE);
    mapSelectLinkNode.removeAttribute("href");
    this.disabled = true;
};
/**
 * コントロールを使用可能に設定します。
 */
DDP_Search.Map.prototype.enable = function() {
    // 地図選択リンクのenable化
    var mapSelectLinkNode = getNode(this.linkButtonId);
    removeClass(mapSelectLinkNode, DDP_Search.Const.MAP_SELECT_LINK_DISABLE);
    mapSelectLinkNode.setAttribute("href", "javascript:;");
    this.disabled = false;
};
/**
 * 選択後イベント抽象メソッドです。
 * <pre>
 * 継承したクラスによってオーバーライドされることを想定しています
 * exp)検索パネルで使用する場合：Ajax呼び出しを行う等
 * </pre>
 */
DDP_Search.Map.prototype.onSelected = function () {
    // デフォルトでは処理なし
};
/////////////////////// DDP_Search.Map END ///////////////////////

/**
 * ANA検索条件。
 * @class
 * @constructor
 */
DDP_Search.AnaSearchCondition = function() {
    this.anaSiteUrl = null;
    this.connectionKind = null;
    this.activityId = null;
    this.returnURL = null;
    this.screenId = null;
    this.selectedEmbMonth = null;
    this.selectedEmbDay = null;
    this.selectedDepApo = null;
    this.selectedArrApo = null;
    this.seatKind = null;
    this.selectedDepTime = null;
    this.ttwCalFlg = null;
    this.nowSegIndex = null;
};
/**
 * ANA検索クラス
 * @class
 * @constructor
 */
DDP_Search.AnaSearch = function(condition) {
    /*
     * 
     */
    this.condition = condition;
};
/**
 * ANA検索条件を取得します。
 * @return {ANA検索条件}
 * @type DDP_Search.AnaSearchCondition
 */
DDP_Search.AnaSearch.prototype.getCondition = function(){
    return this.condition;
};
DDP_Search.AnaSearch.prototype.post = function() {
    var formName = "anaSiteUrlForm";
    //ANAサイト遷移用のformを作成する
    this.createAnaSiteForm(formName);
    //ANAサイトへ遷移する
    var submitButton = getNode("anaSubmitButton");
    submitButton.click();
};
/**
* ANAサイト遷移用form作成
* @param formName フォームのid・name属性値に仕様する文字列
*/
DDP_Search.AnaSearch.prototype.createAnaSiteForm = function(formName) {
    //formを作成
    var __this = this;
    var cond = this.getCondition();
    var form = document.createElement("form");
    form.action = cond.anaSiteUrl;
    form.method = "post";
    form.id = formName;
    form.name = formName;
    document.getElementsByTagName("body").item(0).appendChild(form);
    
    // 各パラメータ設定
    //接続識別子を作成
    this.createAnaSiteFormElement(
        form, "hidden", "",
        DDP_Search.Const.ANA_DATA_CONNECTION_KIND,
        cond.connectionKind);
    //アクティビティIDを作成
    this.createAnaSiteFormElement(
        form, "hidden", "",
        DDP_Search.Const.ANA_DATA_ACTIBITY_ID,
        cond.activityId);
    //戻りURLを作成
    this.createAnaSiteFormElement(
        form, "hidden", "",
        DDP_Search.Const.ANA_DATA_RETURN_URL,
        cond.returnURL);
    //遷移元画面IDを作成
    this.createAnaSiteFormElement(
        form, "hidden", "",
        DDP_Search.Const.ANA_DATA_SCREEN_ID,
        cond.screenId);
    //搭乗月を作成
    this.createAnaSiteFormElement(
        form, "hidden", "",
        DDP_Search.Const.ANA_DATA_SELECTED_EMD_MONTH,
        cond.selectedEmbMonth);
    //搭乗日を作成
    this.createAnaSiteFormElement(
        form, "hidden", "",
        DDP_Search.Const.ANA_DATA_SELECTED_EMD_DAY,
        cond.selectedEmbDay);
    //出発空港コードを作成
    this.createAnaSiteFormElement(
        form, "hidden", "",
        DDP_Search.Const.ANA_DATA_SELECTED_DEP_APO,
        cond.selectedDepApo);
    //到着空港コードを作成
    this.createAnaSiteFormElement(
        form, "hidden", "",
        DDP_Search.Const.ANA_DATA_SELECTED_ARR_APO,
        cond.selectedArrApo);
    //搭乗クラスを作成
    this.createAnaSiteFormElement(
        form, "hidden", "",
        DDP_Search.Const.ANA_DATA_SELECTED_SEAT_KIND,
        cond.seatKind);
    //出発時刻指定を作成
    this.createAnaSiteFormElement(
        form, "hidden", "",
        DDP_Search.Const.ANA_DATA_SELECTED_DEP_TIME,
        cond.selectedDepTime == "" ? "-" : cond.selectedDepTime);
    //照会種別を作成
    this.createAnaSiteFormElement(
        form, "hidden", "",
        DDP_Search.Const.ANA_DATA_TTW_CAL_FLG,
        cond.ttwCalFlg);
    //AW結果表示用インデックスを作成
    this.createAnaSiteFormElement(
        form, "hidden", "",
        DDP_Search.Const.ANA_DATA_NOW_SEG_INDEX,
        cond.nowSegIndex);
    //検索ボタン用inputを作成
    this.createAnaSiteFormElement(
        form, "submit", "anaSubmitButton", 
        DDP_Search.Const.ANA_DATA_BUTTON,
        "");
};
/**
* ANAサイト遷移用FormにPOSTデータを設定する
*/
DDP_Search.AnaSearch.prototype.createAnaSiteFormElement = function(form, type, id, name, value){
    var element = document.createElement("input");
    element.type = type;
    if(type.toLowerCase() == "submit") {
        element.style.display = "none";
    }
    if(id != "")
    {
        element.id = id;
    }
    if(name != "")
    {
        element.name = name;
    }
    element.value = value;
    form.appendChild(element);
};

