//Go to RoadSearchPage
function toRoad(code) {
    var frm = document.frm;
    frm.action = "/service_parking/search_road.php" + "?area_code=" + code;
    frm.target = "_self";
    frm.submit();
}

//地域を選択する処理
function changeArea(obj) {
	var frm = document.frm;
	waitList(frm.road_list);

	var area = new AjaxAction();
	area.url = "/service_parking/ajax.php";
	// ２バイト文字をパラメータに渡す場合は encode を行う！
	area.params = {"area_code" : obj.value ,
                     "key"     :  "area"
                 };
	// イベント処理をオーバーライドする
	// Ajax通信が終わった際にコールされます
	area.doAction = function(res) {
		createList(res, frm.road_list, "road");
		frm.road_list.selectedIndex = 0;
		changeRoad(frm.road_list);
	};
	execAjax(area);
}

//道路名を選択する処理
function changeRoad(obj) {
	var frm = document.frm;
	var ac = "";

	//道路名を選択した後、hidden road_idの値を更新する
	frm.road_id.value = frm.road_list.value;

	waitList(frm.sapa_list);
	ac = frm.area_code.value;

	var road = new AjaxAction();
	road.url = "/service_parking/ajax.php";
	// ２バイト文字をパラメータに渡す場合は encode を行う！
	road.params = {"area_code" : ac ,
                   "road_id"   : obj.value ,
                   "key"       : "road"
                  };
	// イベント処理をオーバーライドする
	// Ajax通信が終わった際にコールされます
	road.doAction = function(res) {
		createList(res, frm.sapa_list, "sapa");
		frm.sapa_list.selectedIndex = 0;
	};
	execAjax(road);
}

//SAPAを選択する処理
function changeSAPA() {
	var frm = document.frm;

	//SAPAを選択した後、hidden sp_idの値を更新する
    frm.sp_id.value = frm.sapa_list.value;
}

//検索待ち状態の選択欄の表示
function waitList(obj) {
	if (obj != null) {
		obj.disabled = true;
		var listcnt = obj.length;
		// 既存リスト削除
		for(i = listcnt - 1;i >= 0;i--) {
			obj.options[i] = null;
		}
		obj.options[0] = new Option("- Searching -", -1);
	}
}

//AJAXの戻り値により、選択欄の表示リストを作る
function createList(res, obj, flg) {
	obj.disabled = false;
	var listcnt = obj.length;
	// 既存リスト削除
	for(i = listcnt - 1;i >= 0;i--) {
		obj.options[i] = null;
	}
	if(res == "") {
		return;
	}
	var work = res.substring(38).split("\n");
	for(j = 1;j <= work.length; j++) {
		var tmp = work[j-1].split("\t");
		id  = tmp[0];
		txt = tmp[1];
		if(id != "") {
			obj.options[j-1] = new Option(txt, id);
		}
		if (j == 1) {
			if (flg == "road") {
				document.frm.road_id.value = id;
			} else if (flg == "sapa") {
				document.frm.sp_id.value = id;
			}
		}
	}
}

//SAPAを検索する
function searchSAPA() {
	var frm = document.frm;
	var road_id = frm.road_id.value;
	var sp_id = frm.sp_id.value;

	if (road_id == "-999" || sp_id == "-999") {
		alert("サービスエリア・パーキングエリアの情報は存在しません。");
		return;
	}

	var url = "/highway/sapa_detail.php?road_id=" + road_id + "&sp_id=" + sp_id + "&d_id=0";
	frm.action = url;
	frm.target = "_self";
	frm.submit();
}

//IEの戻るボタン処理
function load_back() {
	var frm = document.frm;

	changeArea(frm.area_code);
}

//ICから検索
function toSearch() {
	var frm = document.frm;
	var from = "";
	var to = "";
	var txt = "";
	var errp = 0;

	from = trim(frm.from_area.value);
	to = trim(frm.to_area.value);

	if (from == "") {
		txt = "出発インターチェンジ\n";
		errp = 1;
	}

	if (to == "") {
        txt = txt + "到着インターチェンジ\n";
		if (errp == 0) {
			errp = 2;
		}
    }

	if (txt != "") {
		alert(txt + "を入力してください。");
		if (errp == 1) {
			frm.from_area.focus();
		} else if (errp == 2) {
			frm.to_area.focus();
		}

		return;
	} else if (from == to) {
		alert("経路がありません。");
		frm.to_area.focus();
	} else {
		jump();
	}
}

function jump() {
	var frm = document.frm;
	var rep = new AjaxAction();

	rep.url = "/service_parking/re_ajax.php";
	rep.params = {"ic_from" : frm.from_area.value,
				  "ic_to" : frm.to_area.value
				};
	rep.doAction = function(res) {
		var flg = res.substring(38);
		if (flg != "0") {
			frm.action = "/service_parking/search_repeat.php";
			frm.target = "_self";
			frm.submit();
		} else {
			frm.action = "/service_parking/search_result.php";
            frm.target = "_self";
            frm.submit();
		}
	};

	execAjax(rep);
}

function ltrim(str) {
        var pattern = new RegExp("^[\\s]+","gi");
        return str.replace(pattern,"");
}

function rtrim(str) {
        var pattern = new RegExp("[\\s]+$","gi");
        return str.replace(pattern,"");
}

function trim(str) {
        return rtrim(ltrim(str));
}

function changeIC(flag) {
    var frm = document.frm;
    if (flag == "from") {
        frm.from_area.value = frm.from_ic.options[frm.from_ic.selectedIndex].text;
        frm.from_area_id.value = frm.from_ic.value;
    } else if (flag == "to") {
        frm.to_area.value = frm.to_ic.options[frm.to_ic.selectedIndex].text;
        frm.to_area_id.value = frm.to_ic.value;
    }
}

function search() {
	var errMsg = "";
	var frm = document.frm;

	if (frm.from_ic.value == "-999") {
		alert("出発インターチェンジがないので、\nエリアを変えて、もう一度検索をお願いします。");
		return;
	} else if (frm.to_ic.value == "-999") {
		alert ("到着インターチェンジがないので、\nエリアを変えて、もう一度検索をお願いします。");
		return;
	}

	if(frm.from_ic.value == frm.to_ic.value){
        alert("経路がありません。");
        return;
    }

	if (frm.from_ic.value == "-999") {
		errMsg = "出発インターチェンジ\n";
	}

	if (frm.to_ic.value == "-999") {
        errMsg = errMsg + "到着インターチェンジ\n";
    }

	if (errMsg == "") {
		frm.action = "/service_parking/search_result.php";
		frm.target = "_self";
		frm.submit();
	} else {
		alert(errMsg + "を入力してください。");
		return;
	}
}

function all_route_display(count) {
    for (i=5; i<count; i++) {
        var list_tr_id = "list_tr_" + i;
        var sapa_content_id = "sapa_content_" + i;

        obj_list_tr_id = document.getElementById(list_tr_id);
        obj_sapa_content_id = document.getElementById(sapa_content_id);

        obj_list_tr_id.style.display = "";
        obj_sapa_content_id.style.display = "";
    }
    obj_current_cnt = document.getElementById("current_cnt");
    document.getElementById("current_cnt").innerHTML = count;
}

function changeDID(d_id) {
	var frm = document.frm;
	frm.d_id.value = d_id;
	frm.action = "/service_parking/search_result.php";
	frm.target = "_self";
	frm.submit();
}
