/** prototype.js が必要 */
function setTownList(transfarUrl, safariAction) {
    var pref_id = $F(document.getElementsByName('search_pref').item(0));
    var pars = 'action=GetTownList&pref_id=' + pref_id;

    /** Safari ver.1だったらページリロード */
    //もしsafariのバージョン1ならリロードで対応
    //Safariでmatchメソッドが使えないのでprototype.jsのgsubで代用
    var match = navigator.userAgent.gsub(/Safari\/([\.\d]+)/, function(matches){
    //safariなら2番目にバージョンを表す数字が入る。
        if (parseFloat(matches[1]) < 412) {
            location.href = transfarUrl + '?action='+ safariAction +'&search_pref=' + pref_id;
        }
    });

    //読み込みが完了した時点でupdateListを呼び出す
    var res = new Ajax.Request(
        transfarUrl,
        {
            method: 'get',
            parameters: pars,
            onComplete: updateList
        });

}

/**
市町村リストを都道府県の選択にしたがって更新
prototype.js が必要
*/
function updateList(Request) {
    var xmlitem = Request.responseXML.getElementsByTagName("town");
    var towns = $A(xmlitem);
    //ieではselect要素のinnerHTMLを書き換えられないため、
    //select要素ごと書き換えてしまう
    options = '';

    towns.each(function(town) {
        name = town.getElementsByTagName("name").item(0).firstChild.data;
        options += '<option value="'+ name +'" label="'+name +'">'+ name +'</option>\n';
    });
    select = '<select id="search_city" name="search_city">\n'+ options +'</select>\n';
    Element.replace('search_city', select);
    setMenus();
}

/** Google Maps APIが必要 */
function showAddress(address) {
    if (geocoder) {
        geocoder.getLatLng(
            address,
            function(point) {
                if (!point) {
                    console.log("\"" + address + "\"は見つかりませんでした");
                } else {
                    map = document.getElementById("map");
                    map.setCenter(point, 13);
                    var marker = new GMarker(point);
                    map.addOverlay(marker);
                    marker.openInfoWindowHTML(address);
                }
            } 
        );
    }
}

/** メニューの状態をデコレーション */
function setMenus() {
    $('search_pref').item(0).style.color="#999999";
    $('search_city').item(0).style.color="#999999";
}

/** 空白のときは灰色で説明が出て、フォーカスすると説明が消えて入力できるようになる
 * 気の利いたテキストフィールド用ツール
 * @see prototype.jsのドキュメント
 */
var CuteTextField = Class.create();

CuteTextField.prototype = {
    /**
     * コンストラクタ
     * target DOMのテキストフィールド
     * exposition 空白の時に入れる説明文
     * value テキストフィールドの内容
     */
    initialize: function(target, exposition) {
        this.target = target; //DOMのテキストフィールド
        this.exposition = exposition; //説明文

        if (this.target.value == "") {
            this.target.style.color = "#999999";
            this.target.value = this.exposition;

            //概要を表示しているのか
            this.isDisplayExposition = true;
        } else {
            this.target.style.color = "#000000";

            this.isDisplayExposition = false;
        }
    },
    //最初の入力のときに説明があったら消す
    clearIfFirstInput: function() {
        if (this.isDisplayExposition) {
            this.target.style.color = "#000000";
            this.target.value = "";
            this.isDisplayExposition = false;
        }
    }

}
