// JScript ファイル
//目的地WebService関連するjavascript

//「目的地一」、「目的地二」元の値を戻す。
function resetDestTwoAndThree(state)
{
    //画面モードを取る
    var conditionMode= $get("conditionMode").value;
    //トップページではない場合なら。
    if(conditionMode!="0")
    {
        //stateはdestinationOneの場合なら。
        if(state=="destinationOne")
        {
            //目的地Aresetする
            document.getElementById('areadestinationTwo').options[0].selected="selected";
            resetDestination("countrydestinationTwo","国（地域）を指定");  
            resetDestination("citydestinationTwo","都市を指定");
            //目的地Bresetする
            document.getElementById('areadestinationThree').options[0].selected="selected";
            resetDestination("countrydestinationThree","国（地域）を指定");  
            resetDestination("citydestinationThree","都市を指定");
            //検索結果画面なら
            if(conditionMode=="2")
            {
                //目的地Aとも目的地BのDIVをresetする。
                $("#countrySpandestinationTwo").hide();
                $("#citySpandestinationTwo").hide();
                $("#countrySpandestinationThree").hide();
                $("#citySpandestinationThree").hide();
            }
        }
    }
}

//エリア条件が変わる時行うファクション。
function areaOnChange(countryid,cityid,areaSelect,id)
{
    //show背景用div、二回submitを防ぐ。
    showShadow();
    //国selectをresetする。
    $("option[@value='']",$get(countryid)).attr("selected", "selected");
    //都市selectをresetする。
    $("option[@value='']",$get(cityid)).attr("selected", "selected");
    //目的地@が変わる時
    if(id=="destinationOne")
    {
        //「この都市のみに行く」をresetする。
        document.getElementById('thisCity').checked=false;
    }
    //ページスタイルを取る。
    var style= $get("conditionStyle").value;
    //どのアリアselectがこのファクションが読み出すのか、記録しているhidden;
    var state=document.getElementById('destination_State_Hidden').value;
    //Arrayを宣言する。
    var array=new Array();
    //画面すべての条件の値を取る。
    var pageValues=getValus();  
    var value=areaSelect.value;
    //「目的地一」、「目的地二」元の値を戻す。
    resetDestTwoAndThree(state);
    //Array値を設定する。
    array["countryid"]=countryid;
    array["cityid"]=cityid;
    array["id"]=id;
    array["selectValue"]=areaSelect.value;
    //画面チェックを行う。
    pageCheck();
    //WebServiceを呼び出す。画面更新する。
    DestinationWebService.SetDestinationValue("area",value,style,state,pageValues,areaOnChangeSucceeded,onFailed,array);
    //検索結果画面なら。
    if($get("conditionMode").value=="2")
    {
        //在庫カレンダー移動カウントを設定する。
        document.getElementById("arrowCnt").value="0";
        //flash移動カウントを設定する。
        document.getElementById("flashCnt").value="0";
        //目的地@が選択するなら
        if(id=="destinationOne")
        {
            //画面ロード待つ表示部分を表示させる。 
            $get("searchResultDiv").innerHTML="<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\" class=\"tourListTbl first\" summary=\"ツアー検索結果一覧\">"+
                                              "<tr><td><p class=\"mt10\"><img src=\""+document.getElementById("clientUrl").value+
                                              "/base/images/base/wait/ajax-loader2.gif\" alt=\"loading\" /></p><p class=\"mt10\">読み込み中</p></td></tr></table>";
            //ページ表示件数選択部分を隠す
            changeArea('baseCommend','none');
            changeArea('viewCommend','none');
        }
    }
}

//エリアwebService操作が成功して、画面更新する。
function areaOnChangeSucceeded(result,array)
{
    //conditionMode(ツアー詳細条件検索用とか通用検査条件として使うとか判断する変数)
    var conditionMode= $get("conditionMode").value;
    //目的地の表示状態をコントロール（検査結果画面　目的地２，３の時つかう）
    if(array["selectValue"]=="")
    {
        //国selectを隠す
        $("#countrySpan"+array["id"]).hide();
        //都市selectを隠す
        $("#citySpan"+array["id"]).hide();
    }
    //ほかの場合
    else
    {
        //国selectを表示
        $("#countrySpan"+array["id"]).show();
        //都市selectを表示
        $("#citySpan"+array["id"]).hide();
    }
    //変わる必要の国、町selectエレメントID。
    var countryid=array["countryid"];
    var cityid=array["cityid"];
    //国selectエレメント更新する。
    $get("testSpan").innerHTML="<select>"+result["destinationHTML"]+"</select>";
    var obArr=$("option",$("#testSpan"));
    addOptionForUpdate(countryid,obArr,array["selectValue"]);
    $get("testSpan").innerHTML="";
     //町selectエレメント更新する
     var ob=document.getElementById(cityid);
     ob.length=0;
     opt=new Option();   
     opt.value="";   
     opt.text="都市を指定";   
     ob.options.add(opt);
    //画面スタイルを取る。
    var style= $get("conditionStyle").value;
    //トップページの時なら。
    if(conditionMode=="0")
    {
        //該当ツアー件数を設定する
        $get("has_course_cnt").innerHTML= result["courseCnt"];
        //出発地をupdate
        updateDeparture(result,style);
        //曜日をupdate
        updateDayOfWeek(result);
        //こだわりをupdate
        $get("simpleKodawariUL").innerHTML=result["simpleKodawariHTML"];
        resetLinkBtnState("kodawariValues_Hidden"); 
        var tempArr=$("a[@class='cur']",$("#simpleKodawariUL"));
        $get("kodawariValues_Hidden").value=getHiddenString(tempArr);
    }
    //検査結果なら。
    else if(conditionMode=="2")
    {
        //目的地@が選択する場合
        if(array["id"]=="destinationOne")
        {
            //該当ツアー件数を設定する
            $get("has_course_cnt").innerHTML= result["courseCnt"];
            //フライトをupdate
            updateFlight(result,style);
            //ホテルをupdate
            updateHotel(result,style);
            //こだわりをupdate
            updateKodawari(result,style);
            //出発地をupdate
            updateDeparture(result,style);
        }
        changeImage();
    }
    //ツアー詳細画面なら。
    else if(conditionMode=="3")
    {
        //目的地@が選択する場合
        if(array["id"]=="destinationOne")
        {   
            //該当ツアー件数を設定する
            $get("has_course_cnt").innerHTML= result["courseCnt"];
            //フライトをupdate
            updateFlight(result,style);
            //ホテルをupdate
            updateHotel(result,style);
            //こだわりをupdate
            updateKodawari(result,style);
            //出発地をupdate
            updateDeparture(result,style);
        }
    }
    
    //事件設定。エリア目的地が連動成功後,行う。
      try{   
         destinationOnChanged();
      }catch(e){
         //事件が宣言が無い場合なら。背景が隠れる。
         hiddenShadow();
         //ランディング画面ではない場合なら
         if(conditionMode!="1")
         {
             //目的地部分をチェックし、resetする。
             checkDestinationOne();
         }
      } 
}

//国条件が変わる時行うファクション。
function countryOnChange(cityid,countrySelect,id)
{
    //show背景用div、二回submitを防ぐ。
    showShadow();
    //目的地都市をresetする。
    $("option[@value='']",$get(cityid)).attr("selected", "selected");
    //目的地@が選択する場合なら
    if(id=="destinationOne")
    {
        //「この都市のみに行く」をresetする。
        document.getElementById('thisCity').checked=false;
    }
    //ページスタイルを取る。
    var style= $get("conditionStyle").value;
    //どの国selectがこのファクションが読み出すのか、記録しているhidden;
    var state=$get('destination_State_Hidden').value;
     //「目的地一」、「目的地二」元の値を戻す。
    resetDestTwoAndThree(state);
    //画面すべての条件の値を取る。
    var pageValues=getValus();
    //国が変わる時、町が変更がある。町のデータ取るは。エリアコードが必要になる。ここでこのエリアコート取って。
    var temp="area"+id;
    pageValues=pageValues+"$"+"areaCode:"+$get(temp).value;
    //国selectの値がdefault時。""に設定する。
    if(countrySelect.value=="default")
    {
        var value="";
    }
    else
    {
        var value=countrySelect.value;
    }
    //Array値を設定する。
    var array=new Array();
    array["cityid"]=cityid;
    array["id"]=id;
    array["selectValue"]=countrySelect.value;
    //画面チェックを行います
    pageCheck();
    //WebServiceを呼び出す。画面更新する。
    DestinationWebService.SetDestinationValue("country",value,style,state,pageValues,countryOnChangeSucceeded,onFailed,array);
    //検索結果画面なら
    if($get("conditionMode").value=="2")
    {
        //在庫カレンダー移動カウントを設定する。
        document.getElementById("arrowCnt").value="0";
        //flash移動カウントを設定する。
        document.getElementById("flashCnt").value="0";
        //目的地@が選択された場合なら
        if(id=="destinationOne")
        {
            //画面ロード待つ表示部分を表示させる。
            $get("searchResultDiv").innerHTML="<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\" class=\"tourListTbl first\" summary=\"ツアー検索結果一覧\">"+
                                         　　　"<tr><td><p class=\"mt10\"><img src=\""+document.getElementById("clientUrl").value+
                                         　　　"/base/images/base/wait/ajax-loader2.gif\" alt=\"loading\" /></p><p class=\"mt10\">読み込み中</p></td></tr></table>";
            //ページ表示件数選択部分を隠す。
            changeArea('baseCommend','none');
        changeArea('viewCommend','none');
        }
    }
}

//国webService操作が成功して、画面更新する。
function countryOnChangeSucceeded(result,array)
{
    //目的地の表示状態をコントロール（検査結果画面　目的地２，３の時つかう）
    if(array["selectValue"]=="")
    {
        //目的地都市表示部分を隠す
        $("#citySpan"+array["id"]).hide();
    }
    //ほかの場合なら
    else
    {
        //目的地都市表示部分を表示させる。
        $("#citySpan"+array["id"]).show();
    }
    //変わる必要な町selectエレメントID。
    var cityid=array["cityid"];
    //町selectエレメント更新する。
    $get("testSpan").innerHTML="<select>"+result["destinationHTML"]+"</select>";
    var obArr=$("option",$("#testSpan"));
    addOptionForUpdate(cityid,obArr,array["selectValue"]);
    $get("testSpan").innerHTML="";
    //ページスタイルを取る。
    var style= $get("conditionStyle").value;
    //conditionMode(ツアー詳細条件検索用とか通用検査条件として使うとか判断する変数)
    var conditionMode= $get("conditionMode").value;
    //トップページの時なら。
    if(conditionMode=="0")
    {
        //該当ツアー件数を設定する
        $get("has_course_cnt").innerHTML= result["courseCnt"];
        //出発地をupdate
        updateDeparture(result,style);
        //曜日をupdate
        updateDayOfWeek(result);
        //こだわりをupdate
        $get("simpleKodawariUL").innerHTML=result["simpleKodawariHTML"];
        resetLinkBtnState("kodawariValues_Hidden"); 
        var tempArr=$("a[@class='cur']",$("#simpleKodawariUL"));
        $get("kodawariValues_Hidden").value=getHiddenString(tempArr);
    }
    //検査結果なら。
    else if(conditionMode=="2")
    {
        //目的地@が選択する場合なら
        if(array["id"]=="destinationOne")
        {
            //該当ツアー件数を設定する
            $get("has_course_cnt").innerHTML= result["courseCnt"];
            //フライトをupdate
            updateFlight(result,style);
            //ホテルをupdate
            updateHotel(result,style);
            //こだわりをupdate
            updateKodawari(result,style);
            //出発地をupdate
            updateDeparture(result,style);
        }
        changeImage();
    }
    //検査結果とツアー詳細画面なら。
    else if(conditionMode=="3")
    {
        //目的地@が選択する場合なら
        if(array["id"]=="destinationOne")
        {
            //該当ツアー件数を設定する
            $get("has_course_cnt").innerHTML= result["courseCnt"];
            //フライトをupdate
            updateFlight(result,style);
            //ホテルをupdate
            updateHotel(result,style);
            //こだわりをupdate
            updateKodawari(result,style);
            //出発地をupdate
            updateDeparture(result,style);
        }
    }
    
     //事件設定。国目的地が連動成功後,行う。
      try{   
         destinationOnChanged();
      }catch(e){
      　//事件が宣言が無い場合なら。背景が隠れる。
         hiddenShadow();
         //ランディング画面ではない場合なら
         if(conditionMode!="1")
         {
             //目的地部分をチェックし、resetする。
             checkDestinationOne();
         }
      } 
}

//町条件が変わる時行うファクション。
function cityOnChange(citySelect)
{
    //show背景用div、二回submitを防ぐ
    showShadow();
    //目的地@が選択する場合なら
    if($get('destination_State_Hidden').value=="destinationOne")
    {
        //「この都市のみに行く」をresetする。
        document.getElementById('thisCity').checked=false;
    }
    //画面スタイル取る
    var style= $get("conditionStyle").value;
    //どの町selectがこのファクションが読み出すのか、記録しているhidden;
    var state=$get('destination_State_Hidden').value;
    //「目的地一」、「目的地二」元の値を戻す。
    resetDestTwoAndThree(state);
    //画面すべての条件の値を取る。
    var pageValues=getValus();
    var array=new Array();
    array["id"]=state;
    //画面チェックを行います
    pageCheck();
    //WebServiceを呼び出す。画面更新する。
    DestinationWebService.SetDestinationValue("city",citySelect.value,style,state,pageValues,cityOnChangeSucceeded,onFailed,array);
    //検索結果画面なら
    if($get("conditionMode").value=="2")
    {
        //在庫カレンダー移動カウントを設定する。
        document.getElementById("arrowCnt").value="0";
        //flash移動カウントを設定する。
        document.getElementById("flashCnt").value="0";
        //目的地@が選択された場合なら
        if(state=="destinationOne")
        {
            //画面ロード待つ表示部分を表示させる。
            $get("searchResultDiv").innerHTML="<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\" class=\"tourListTbl first\" summary=\"ツアー検索結果一覧\">"+
                                              "<tr><td><p class=\"mt10\"><img src=\""+document.getElementById("clientUrl").value+
                                              "/base/images/base/wait/ajax-loader2.gif\" alt=\"loading\" /></p><p class=\"mt10\">読み込み中</p></td></tr></table>";
            //ページ表示件数選択部分を隠す。
            changeArea('baseCommend','none');
        changeArea('viewCommend','none');
        }
    }
}

//町webService操作が成功して、画面更新する。
function cityOnChangeSucceeded(result,array)
{
    //画面スタイルを取る
    var style= $get("conditionStyle").value;
    //conditionMode(ツアー詳細条件検索用とか通用検査条件として使うとか判断する変数)
    var conditionMode= $get("conditionMode").value;
    //トップページの時なら。
    if(conditionMode=="0")
    {
        //該当ツアー件数を設定する
        $get("has_course_cnt").innerHTML= result["courseCnt"];
        //出発地をupdate
        updateDeparture(result,style);
        //曜日をupdate
        updateDayOfWeek(result);
        //こだわりをupdate
        $get("simpleKodawariUL").innerHTML=result["simpleKodawariHTML"];
        resetLinkBtnState("kodawariValues_Hidden"); 
        var tempArr=$("a[@class='cur']",$("#simpleKodawariUL"));
        $get("kodawariValues_Hidden").value=getHiddenString(tempArr);
    }
    //検査結果なら。
    else if(conditionMode=="2")
    {
        //目的地@が選択された場合なら
        if(array["id"]=="destinationOne")
        {
            //該当ツアー件数を設定する
            $get("has_course_cnt").innerHTML= result["courseCnt"];
            //フライトをupdate
            updateFlight(result,style);
            //ホテルをupdate
            updateHotel(result,style);
            //こだわりをupdate
            updateKodawari(result,style);
            //出発地をupdate
            updateDeparture(result,style);
        } 
        changeImage();
    }
    //ツアー詳細画面なら。
    else if(conditionMode=="3")
    {
        //目的地@が選択された場合なら
        if(array["id"]=="destinationOne")
        {
            //該当ツアー件数を設定する
            $get("has_course_cnt").innerHTML= result["courseCnt"];
            //フライトをupdate
            updateFlight(result,style);
            //ホテルをupdate
            updateHotel(result,style);
            //こだわりをupdate
            updateKodawari(result,style);
            //出発地をupdate
            updateDeparture(result,style);
        }
    }
   
      //事件設定。町目的地が連動成功後,行う。
      try{   
         destinationOnChanged();
      }catch(e){
         //事件が宣言が無い場合なら。背景が隠れる。
         hiddenShadow();
         //ランディング画面ではない場合なら
         if(conditionMode!="1")
         {
             //目的地部分をチェックし、resetする。
             checkDestinationOne();
         }
      } 
}

//他のボタンをクリックする時、目的地グルプが更新する必要がある時、この方法呼び出す。
function updateDestinationGroup(result)
{
    //画面モードを取る。
    var conditionMode= $get("conditionMode").value;
    //destinationOne
    //areadestinationOne更新
    var currentValue=$get("areadestinationOne").value;
    $get("testSpan").innerHTML="<select>"+result["destinationOne_Area"]+"</select>";
    var obArr=$("option",$("#testSpan"));
    addOptionForUpdate("areadestinationOne",obArr,"notDefault");
    $("option[@value='"+currentValue+"']",$("#areadestinationOne")).attr("selected", "selected");
    //countrydestinationOne更新
    currentValue=$get("countrydestinationOne").value;
    if(result["destinationOne_Country"]=="notValue"||$get("areadestinationOne").value=="")
    {
         setSelect("countrydestinationOne","国（地域）を指定")
         //---(ASN蛭子井 検索結果一覧にホテル・フライトの絞込みを復活 2009/12/24 Start)---//
         //地域のプルダウンが「指定無し」しか無ければ、ホテルランキングを消して、選択状態も初期化する。
         if($get("hotelListDl"))
         {
            hotelListArr=new Array();
            $get("hotelListDl").innerHTML="";
            $get("hotelListDl").style.display = "none";
         }
         //---(ASN蛭子井 検索結果一覧にホテル・フライトの絞込みを復活 2009/12/24 End)---//
         //---(ASN蛭子井 ブランド・商品カテゴリ・部屋種別の絞込対応 2009/12/24 Start)---//
         //地域のプルダウンが「指定無し」しか無ければ、部屋種別のプルダウンを消す。
         if($get("hotelRoomtypeDl"))
         {
            $get("hotelRoomtypeDl").innerHTML="";
            $get("hotelRoomtypeDl").style.display = "none";
         }
         //---(ASN蛭子井 ブランド・商品カテゴリ・部屋種別の絞込対応 2009/12/24 End)---//
         
    }
    else
    {
        $get("testSpan").innerHTML="<select>"+result["destinationOne_Country"]+"</select>";
        obArr=$("option",$("#testSpan"));
        addOptionForUpdate("countrydestinationOne",obArr,"notDefault");
        $("option[@value='"+currentValue+"']",$("#countrydestinationOne")).attr("selected", "selected");
    }
    //citydestinationOne更新
    currentValue=$get("citydestinationOne").value;
    if(result["destinationOne_City"]=="notValue"||$get("countrydestinationOne").value=="")
    {
         setSelect("citydestinationOne","都市を指定")
         //---(ASN蛭子井 検索結果一覧にホテル・フライトの絞込みを復活 2009/12/24 Start)---//
         //地域のプルダウンが「指定無し」しか無ければ、ホテルランキングを消して、選択状態も初期化する。
         if($get("hotelListDl"))
         {
            hotelListArr=new Array();
            $get("hotelListDl").innerHTML="";
            $get("hotelListDl").style.display = "none";
         }
         //---(ASN蛭子井 検索結果一覧にホテル・フライトの絞込みを復活 2009/12/24 End)---//
    }
    else
    {
        $get("testSpan").innerHTML="<select>"+result["destinationOne_City"]+"</select>";
        obArr=$("option",$("#testSpan"));
        addOptionForUpdate("citydestinationOne",obArr,"notDefault");
        $("option[@value='"+currentValue+"']",$("#citydestinationOne")).attr("selected", "selected");
    }
}

//select設定する。
function setSelect(selectid,str)
{
    //Selectエレメントを取る
    var ob=document.getElementById(selectid);
    //SelectエレメントにOptionを加える
    ob.length=0;
    opt=new Option();   
    opt.value="";   
    opt.text=str;   
    ob.options.add(opt);
}

//目的地グルプをチェックする
function checkDestinationOne()
{
    //画面モードを取る
    var conditionMode= $get("conditionMode").value;
    //トップページの時なら。
    if(conditionMode=="0")
    {
        //目的地@都市の値は""の場合なら
        if(document.getElementById("citydestinationOne").value=="")
        {
            //---(BJB黄 2009/10/19 Q000252対応 Start)---//
            document.getElementById('thisCity').checked = false;
            //if(document.getElementById('thisCity').checked!=true)
            //{
            //「この都市のみにいく」チェックボックスを使用不可に設定する。
            document.getElementById('thisCity').disabled="disabled";
            //}
            //---(BJB黄 2009/10/19 Q000252対応 End)---//
        }
        //目的地@都市の値は""ではないの場合なら
        else
        {
            //「この都市のみにいく」チェックボックスを使用可能に設定する。
            document.getElementById('thisCity').disabled="";
        }
    }
    //ほかの画面なら
    else
    {
        //ツアー検索画面なら
        if(conditionMode=="3")
        {
            //「出発日がお決まりの方（出発日指定）」は選択された場合なら
            if($get("fix").checked==true)
            {
                　//出発期間From年月Selectを使用不可に設定する。   
               　document.getElementById('CalendarTwoCalYearSele').disabled="disabled";
               　//出発期間From日Selectを使用不可に設定する。   
               　document.getElementById('CalendarTwoCalDaySele').disabled="disabled";
               　//出発期間To年月Selectを使用不可に設定する。  
               　document.getElementById('CalendarThreeCalYearSele').disabled="disabled";
               　//出発期間To日Selectを使用不可に設定する。
               　document.getElementById('CalendarThreeCalDaySele').disabled="disabled";
               　//出発期間曜日Selectを使用不可に設定する
               　document.getElementById('week').disabled="disabled";
            }
            //「出発日がお決まりでない方（期間・出発曜日を指定）」は選択された場合なら
            else
            {
                //出発日の年月Selectを使用不可に設定する。
               　document.getElementById('CalendarOneCalYearSele').disabled="disabled";
               　//出発日の日付Selectを使用不可に設定する。
               　document.getElementById('CalendarOneCalDaySele').disabled="disabled";
            }
        }
        //トップページとランディング画面ではない場合なら
        if(conditionMode!="0"&&conditionMode!="1")
        {   
            //目的地@都市の値は""の場合なら
            if(document.getElementById("citydestinationOne").value=="")
            {
                //目的地AエリアSelectを使用不可に設定する。
                document.getElementById('areadestinationTwo').disabled="disabled";
                //目的地A国Selectを使用不可に設定する。
                document.getElementById('countrydestinationTwo').disabled="disabled";
                //目的地A都市Selectを使用不可に設定する。
                document.getElementById('citydestinationTwo').disabled="disabled";
                //目的地BエリアSelectを使用不可に設定する。
                document.getElementById('areadestinationThree').disabled="disabled";
                //目的地B国Selectを使用不可に設定する。
                document.getElementById('countrydestinationThree').disabled="disabled";
                //目的地B都市Selectを使用不可に設定する。
                document.getElementById('citydestinationThree').disabled="disabled";
                //---(BJB黄 2009/10/19 Q000252対応 Start)---//
                document.getElementById('thisCity').checked = false;
                //「この都市のみにいく」チェックボックスを使用不可に設定する。
                //if (document.getElementById('thisCity').checked == false)
                //{
                document.getElementById('thisCity').disabled="disabled";
                //}
                //---(BJB黄 2009/10/19 Q000252対応 End)---//
                //目的地Aと目的地Bは再設定する。
                resetDestTwoAndThree("destinationOne");
            }
            //目的地@都市の値は""ではない場合なら
            else
            {
                //「この都市のみにいく」チェックボックスを使用可能に設定する。
                 document.getElementById('thisCity').disabled="";
            }
        }
    }
    if($get("conditionMode").value==2)
    {
        if(document.getElementById("citydestinationOne").value=="")
        {
            document.getElementById('slideBtn01').disabled=''; 
        }
    }
}

//Selectをresetする
function resetDestination(selectid,showText)
{
    //Selectエレメントを取る
     var ob=document.getElementById(selectid);
     //SelectのOptionを削除する
     ob.length=0;
     //Selectをresetする。
     opt=new Option();   
     opt.value="";   
     opt.text=showText;   
     ob.options.add(opt);
}