// ---------------------------------------------------------------- //
//  ajax でプラン検索の画面操作を行う
//  1.チェックアウト日の決定
//  2.地域でホテルを絞り込む
//  3.カテゴリの全て選択
// ---------------------------------------------------------------- //

var old_areacd = '';
//-------------------------------------------------
// チェックアウト日を取得する
//-------------------------------------------------
function getOutDate( formid , in_yy , in_mm , in_dd , out_yy , out_mm , out_dd) {

	var jklform = new JKL.Form(formid);

	var c_in_yy = jklform.getValue( in_yy );
	var c_in_mm = jklform.getValue( in_mm );
	var c_in_dd = jklform.getValue( in_dd );
	var c_out_yy = jklform.getValue( out_yy);
	var c_out_mm = jklform.getValue( out_mm);
	var c_out_dd = jklform.getValue( out_dd);

	//送信用オブジェクトの生成
	var http1 = newXMLHttpRequest();

	if (!http1) return false;
	var url = '/cgi-bin/ihonex/ajax/ajax_ch_out.cgi?chkin_yy=' + escape(c_in_yy) + '&chkin_mm=' + escape(c_in_mm) + '&chkin_dd=' + escape(c_in_dd) + '&chkout_yy='+ escape(c_out_yy) +'&chkout_mm='+ escape(c_out_mm) +'&chkout_dd='+ escape(c_out_dd);
	// GET メソッド　URL指定、非同期 = true
	http1.open('GET' , url , true);

	http1.onreadystatechange = function () {
		//画面の操作
		handle_setOutDate( http1, jklform , out_yy , out_mm , out_dd);
	};
	http1.send(null);

	return true;
	
}

//--------------------------------------------------
// カテゴリに全てチェックをつける
//---------------------------------------------------
function checkCategoryALL( formid , code , cid ) {

	var jklform = new JKL.Form(formid);
	
	var click_code = jklform.getValue( code );

	//送信用オブジェクトの生成
	var http1 = newXMLHttpRequest();
	if (!http1) return false;
	var url = '/cgi-bin/ihonex/ajax/ajax_category.cgi?category_ALL=' + escape(click_code) + '&cid=' + cid;
	// GET メソッド　URL指定、非同期 = true
	http1.open('GET' , url , true);

	http1.onreadystatechange = function () {
		//画面の操作
		handle_setCategory( http1, jklform, code);
	};
	http1.send(null);
	
	return true;
}

//------------------------------------------------------------
// 地域の選択状況に応じてホテル一覧をフィルタリングする
//------------------------------------------------------------
function hotelFilter( formid , listid , priceid_f , priceid_t , areacd , lang , hotel) {

	var jklform = new JKL.Form(formid);
	var area    = jklform.getValue( areacd );
	var hotel_area = area;
	var search_hid = jklform.getValue( listid );
	
	if (!area){
		if (search_hid){
			//検索hidから地域を取得
			area = hotelArray[search_hid];
		}else{
			area = hotelArray[hotel];
		}
	}

			
	//送信用オブジェクトの生成
	var http1 = newXMLHttpRequest();
	var http2 = newXMLHttpRequest();
	var http3 = newXMLHttpRequest();

	if (!http1 || !http2 || !http3){
		return false;
	}

	//ホテル絞込み
	var url = '/cgi-bin/ihonex/ajax/ajax_hotel.cgi?areacd=' + escape(hotel_area) + '&hid=' + escape(hotel);
	//料金範囲from
	var url2 = '/cgi-bin/ihonex/ajax/ajax_price.cgi?areacd=' + escape(area) + '&hid=' + escape(hotel) + '&search_hid=' + escape(search_hid) + '&type=from';
	//料金範囲to
	var url3 = '/cgi-bin/ihonex/ajax/ajax_price.cgi?areacd=' + escape(area) + '&hid=' + escape(hotel) + '&search_hid=' + escape(search_hid) + '&type=to';

	// GET メソッド　URL指定、非同期 = true
	http1.open('GET' , url , true);
	http2.open('GET' , url2 , true);
	http3.open('GET' , url3 , true);
	
	//レスポンス待機
	http1.onreadystatechange = function () {
		//画面の操作
		handle_listHotel( http1, jklform , listid , lang);
	};
	http2.onreadystatechange = function () {
		//画面の操作
		handle_listHotel( http2, jklform , priceid_f , lang);
	};
	http3.onreadystatechange = function () {
		//画面の操作
		handle_listHotel( http3, jklform , priceid_t , lang);
	};
	
	http1.send(null);
	http2.send(null);
	http3.send(null);
	
	//前回の検索結果を保存
	old_areacd = area;
	
	return true;
}



//------------------------------------------------------------
// ホテル選択変更時に料金範囲を参照
//------------------------------------------------------------
function hotelChange( formid , listid , priceid_f , priceid_t , areacd , lang , hotel) {

	var jklform = new JKL.Form(formid);
	var area    = jklform.getValue( areacd );
	var search_hid = jklform.getValue( listid );
	
	if (!area){
		if (search_hid){
			//検索hidから地域を取得
			area = hotelArray[search_hid];
		}else{
			area = hotelArray[hotel];
		}
	}
	//直前に検索した地域と同じ場合は再検索しない
	if (area == old_areacd){
		return false;
	}
	
	//送信用オブジェクトの生成
	var http2 = newXMLHttpRequest();
	var http3 = newXMLHttpRequest();

	if (!http2 || !http3){
		return false;
	}

	//料金範囲from
	var url2 = '/cgi-bin/ihonex/ajax/ajax_price.cgi?areacd=' + escape(area) + '&hid=' + escape(hotel) + '&search_hid=' + escape(search_hid) + '&type=from';
	//料金範囲to
	var url3 = '/cgi-bin/ihonex/ajax/ajax_price.cgi?areacd=' + escape(area) + '&hid=' + escape(hotel) + '&search_hid=' + escape(search_hid) + '&type=to'

	// GET メソッド　URL指定、非同期 = true
	http2.open('GET' , url2 , true);
	http3.open('GET' , url3 , true);
	
	//レスポンス待機
	http2.onreadystatechange = function () {
		//画面の操作
		handle_listHotel( http2, jklform , priceid_f , lang);
	};
	http3.onreadystatechange = function () {
		//画面の操作
		handle_listHotel( http3, jklform , priceid_t , lang);
	};
	
	http2.send(null);
	http3.send(null);
	
	//前回の検索結果を保存
	old_areacd = area;
	
	return true;
}



//---------------------------------------------------------------------
// 料金範囲のリストを表示する
//---------------------------------------------------------------------
function select_price( formid , listid , areacd ,  lang , hotel ,tp) {

	var jklform = new JKL.Form(formid);
	var area    = jklform.getValue( areacd );

	//送信用オブジェクトの生成
	var http1 = newXMLHttpRequest();
	if (!http1) return false;
	
	var url = '/cgi-bin/ihonex/ajax/ajax_price.cgi?areacd=' + escape(area) + '&hid=' + escape(hotel) + '&type=' + escape(tp);
	// GET メソッド　URL指定、非同期 = true
	http1.open('GET' , url , true);

	http1.onreadystatechange = function () {
		//画面の操作
		handle_listHotel( http1, jklform , listid , lang);
	};
	http1.send(null);
	
	return true;
}


// ---------------------------------------------------------------- //
//  newXMLHttpRequest ---- XMLHttpRequest オブジェクトの生成
// ---------------------------------------------------------------- //

function newXMLHttpRequest () {
    if ( typeof ActiveXObject!="undefined" ) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else if ( typeof XMLHttpRequest!="undefined" ) {
        return new XMLHttpRequest();
    } else{
        return null;
    }
}



// ---------------------------------------------------------------- //
//  ajax 通信完了後に呼び出されるハンドラ
//  0 = uninitialized
//  1 = loading
//  2 = loaded
//  3 = interactive
//  4 = complete
// ---------------------------------------------------------------- //


//---------------------------------------------
// チェックアウト日
//---------------------------------------------
function handle_setOutDate( http1, jklform, out_yy , out_mm , out_dd ) {


    if (http1.readyState == 4 && http1.status == 200) {
		//戻り値用変数
		var newYY = "";
		var newMM = "";
		var newDD = "";

        var resXML = http1.responseXML;
       if ( resXML.documentElement ) {
            var items = resXML.documentElement.getElementsByTagName('item');
            if ( items && items.length > 0 ) {
            	var item1 = items[0];
                    
                var yy = item1.getElementsByTagName('chkout_yy');
                var mm = item1.getElementsByTagName('chkout_mm');
                var dd = item1.getElementsByTagName('chkout_dd');
                    
                if ( yy[0].firstChild != null ) newYY = yy[0].firstChild.data;
                if ( mm[0].firstChild != null ) newMM  = mm[0].firstChild.data;
                if ( dd[0].firstChild  != null ) newDD = dd[0].firstChild.data;
			}
		}

		//チェックアウト日を設定
		jklform.setValue( out_yy , newYY);
		jklform.setValue( out_mm , newMM);
		jklform.setValue( out_dd , newDD);
    }
}

//----------------------------------------------
// カテゴリ
//----------------------------------------------
function handle_setCategory(http1 , jklform, code) {
	
	if (http1.readyState == 4 && http1.status == 200) {
        var resXML = http1.responseXML;
       if ( resXML.documentElement ) {
            var items = resXML.documentElement.getElementsByTagName('item');
            if ( items && items.length > 0 ) {
            	for(var i=0; i< items.length; i++){
		            var cate  = items[i].getElementsByTagName('category');
            		var name = cate[0].firstChild.nodeValue;
					if (jklform.getValue( code ) == 'ALL'){
	            		//チェックボックスにチェックをつける。
	            		jklform.selectAllOptions('category',true);
					}else{
	            		//チェックボックスのチェックを外す。
	            		jklform.selectAllOptions('category',false);
					}
            	}
            }
		}
	}
}

//-----------------------------------------------
// ホテル一覧
//-----------------------------------------------
function handle_listHotel( http1, jklform , listid , lang) {

	if (http1.readyState == 4 && http1.status == 200) {
        var resXML = http1.responseXML;
       if ( resXML.documentElement ) {
            var items   = resXML.getElementsByTagName('item');
            var hid     = resXML.getElementsByTagName('hid');
            var name    = resXML.getElementsByTagName('name');
            var name_en = resXML.getElementsByTagName('name_en');
            var selected = resXML.getElementsByTagName('select');
            //まず、選択肢を全て消去する
            jklform.deleteAllOptions( listid );
            	
            if ( items && items.length > 0 ) {
            	
            	//次に必要な選択肢を追加する
            	for(var i=0; i< items.length; i++){
            		//言語により分岐
            		var hotel_name;
            		if (lang == 'jp'){
            			if (name[i].firstChild == null){
            				hotel_name= "";
            			}else{
	            			hotel_name = name[i].firstChild.nodeValue;
	            		}
            		}else{
            			if (name_en[i].firstChild == null){
            				hotel_name = "";
            			}else{
	            			hotel_name = name_en[i].firstChild.nodeValue;
	            		}
            		}
            		if (hid[i].firstChild == null){
	            		jklform.addOption(listid , '' , hotel_name);
	            	}else{
	            		jklform.addOption(listid , hid[i].firstChild.nodeValue , hotel_name);
	            	}
	            	//自動選択
	            	if (selected[i].firstChild != null){
						jklform.selectOptionsByValue(listid,hid[i].firstChild.nodeValue);
					}

            	}
			}
		}
	}
}


