////////////////////////////////////////////////////////////
// Module Name : Javascript For Ajax
// Author : Tanaka
// $Id$
// Production   : Okushin System Ltd.
////////////////////////////////////////////////////////////

// XMLHttpRequestオブジェクト生成
function createHttpRequest()
{
    var xmlhttp = null;

    if(window.ActiveXObject){
        try {
        // MSXML2以降用
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP") ;
        } catch (e) {
            try {
                // 旧MSXML用
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP") ;
            } catch (e2) {

            }
        }
    } else if(window.XMLHttpRequest){
        // Win Mac Linux m1,f1,o8 Mac s1 Linux k3用
        xmlhttp = new XMLHttpRequest() ;

        // Mozilla対応（バージョンにより、サーバーからXML mime-type のヘッダが
        //              帰ってこない場合、正常に動作しないことがある）
//        xmlhttp.overrideMimeType('text/xml');
    } else {

    }
    if (xmlhttp == null) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
    }

    return xmlhttp;
}

// 送信処理
function sendRequest (xmlhttp, method, url, async, data, callback)
{
    //ブラウザ判定
    var ua = navigator.userAgent;
    var safari  = ua.indexOf("Safari")!=-1;
    var konqueror = ua.indexOf("Konqueror")!=-1;
    var mozes = ((a = navigator.userAgent.split("Gecko/")[1] )
                   ? a.split(" ")[0] : 0) >= 20011128 ;

    // サーバーからの受信処理
    // opera       : onreadystatechangeに多重レスバグがあるのでonloadが安全
    // Moz,FireFox : readyState==3でも受信するので通常はonloadが安全
    // Win ie      : onloadは動作しない
    // Konqueror   : onloadが不安定
    if(window.opera || safari || mozes){
        xmlhttp.onload = function ()
        {
            callback(xmlhttp);
        }
    } else {
        xmlhttp.onreadystatechange = function ()
        {
            // サーバーからの応答判定
            //   0 : 初期化されていません
            //   1 : 読み込み中です
            //   2 : 読み込み完了
            //   3 : 双方向に扱えます
            //   4 : すべて完了しました
            if (xmlhttp.readyState == 4) {

                // サーバーの応答コード判定
                //   200 : OK
                if (xmlhttp.status == 200) {
                    callback(xmlhttp);
                } else {
                    alert("There was a problem with the request.");
                }
            }
        }
    }

    xmlhttp.open(method, url, async);
    xmlhttp.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
    xmlhttp.send(data);
}


 // 検索結果画面初期表示用
function setList() {
    var chiku  = "0";
    var ken    = "0";

    setKenOption(chiku);
    setCityOption(chiku, ken);

    document.form1.selChiku.selectedIndex = 0;
    document.form1.selKen.selectedIndex   = 0;
    document.form1.selCity.selectedIndex  = 0;
}

// 地区選択時
function changeChiku(selChiku)
{
    var selKen  = "0";
    var selCity = "0";

    setKenOption(selChiku.value);
    setCityOption(selChiku.value, selKen);

    getResult(selChiku.value, selKen, selCity);
}

// 都道府県選択時
function changeKen(selChiku, selKen)
{
    var selCity = "0";

    setCiryOption(selChiku.value, selKen.value);

    if (selChiku.value == "0") {
        document.form1.selKen.selectedIndex = 0;
    }

    getResult(selChiku.value, selKen.value, selCity);
}

// 市区町村選択時
function changeCity(selChiku, selKen, selCity)
{
    if (selChiku.value == "0" || selKen.value == "0") {
        document.form1.selCity.selectedIndex = 0;
    }

    getResult(selChiku.value, selKen.value, selCity.value);
}

// 都道府県オプション設定
function setKenOption(chiku)
{
    len = document.form1.selKen.options.length;
    for (i=len-1; i>=0; i--){
        document.form1.selKen.options[i] = null;
    }

    //XMLHttpRequestオブジェクト生成
    var xmlhttp = createHttpRequest();
    if (xmlhttp == null) {
        return null;
    }

    var data = "selChiku=" + chiku;

    sendRequest(xmlhttp, "POST", "optionKen.php", false, data, callBack1);

    document.form1.selKen.selectedIndex = 0;
}
function callBack1(xmlhttp)
{
    var result = xmlhttp.responseText;

    var resArray = result.split(",");
    for (i=0; i<resArray.length; i++) {
        var kenArray = resArray[i].split("/");

        document.form1.selKen.options[i] =
             new Option(kenArray[1], kenArray[0]);
    }
}

// 市区町村オプション設定
function setCityOption(chiku, ken)
{
    len = document.form1.selCity.options.length;
    for (i=len-1; i>=0; i--){
        document.form1.selCity.options[i] = null;
    }

    //XMLHttpRequestオブジェクト生成
    var xmlhttp = createHttpRequest();
    if (xmlhttp == null) {
        return null;
    }

    var data = "";
    data += "selChiku=" + chiku;
    data += "&selKen=" + ken;

    sendRequest(xmlhttp, "POST", "optionKen.php", false, data, callBack2);

    document.form1.selCity.selectedIndex = 0;
}
function callBack2(xmlhttp)
{
    var result = xmlhttp.responseText;

    var resArray = result.split(",");
    for (i=0; i<resArray.length; i++) {
        var cityArray = resArray[i].split("/");

        document.form1.selCity.options[i] =
             new Option(cityArray[1], cityArray[0]);
    }
}

// データ検索
function getResult(chiku, ken, city)
{
    //XMLHttpRequestオブジェクト生成
    var xmlhttp = createHttpRequest();
    if (xmlhttp == null) {
        return null;
    }

    var data = "";
    data += "selChiku=" + chiku;
    data += "&selKen="  + ken;
    data += "&selCity=" + city;

    sendRequest(xmlhttp, "POST", "result.php", false, data, callBack);
}
function callBack(xmlhttp)
{
    var result = document.getElementById("result");
    result.innerHTML = xmlhttp.responseText;
}



 // 検索結果画面初期表示用
function setList() {
    var Line  = "0";
    var Eki    = "0";

    setEkiOption(Line);

    document.Kensen.selLine.selectedIndex = 0;
    document.Kensen.selEki.selectedIndex   = 0;
}

// 地区選択時
function changeLine(selLine)
{
    var selEki  = "0";

    setEkiOption(selLine.value);
}
// 地区選択時2
function changeLine2(selLine)
{
    var selEki  = "0";

    setEkiOption2(selLine.value);
}

// 沿線オプション設定
function setEkiOption(line)
{
//alert(line);
    len = document.Kensen.selEki.options.length;
    for (i=len-1; i>=0; i--){
        document.Kensen.selEki.options[i] = null;
    }

    //XMLHttpRequestオブジェクト生成
    var xmlhttp = createHttpRequest();
    if (xmlhttp == null) {
        return null;
    }

    var data = "selLine=" + line;

    sendRequest(xmlhttp, "POST", "lib/optionEki.php", false, data, callBack1);

    document.Kensen.selEki.selectedIndex = 0;
}

// 沿線オプション設定2
function setEkiOption2(line)
{
//alert(line);
    len = document.Kensen.selEki.options.length;
    for (i=len-1; i>=0; i--){
        document.Kensen.selEki.options[i] = null;
    }

    //XMLHttpRequestオブジェクト生成
    var xmlhttp = createHttpRequest();
    if (xmlhttp == null) {
        return null;
    }

    var data = "selLine=" + line;

    sendRequest(xmlhttp, "POST", "../lib/optionEki.php", false, data, callBack1);

    document.Kensen.selEki.selectedIndex = 0;
}

function callBack1(xmlhttp)
{
    var result = xmlhttp.responseText;

    var resArray = result.split(",");
    for (i=0; i<resArray.length; i++) {
        var ekiArray = resArray[i].split("/");
        document.Kensen.selEki.options[i] =
             new Option(ekiArray[1], ekiArray[0]);
    }
}

