function AddressLoader() {
	var p_pref_name;
	var p_city_name;
	var p_block_name;

    AddressLoader.prototype.deleteList = function(elm_nm) {
		var elm_obj = $(elm_nm);

		if ( elm_obj ) {
			for ( i = elm_obj.length ; i > 0 ; i-- ) {
	            elm_obj[i - 1] = null;
	        }
		}
	};

	AddressLoader.prototype.setValue = function(elm_nm, val) {
		var elm_obj = $(elm_nm)
		var	idx     = -1;

		if ( elm_obj ) {
			for ( i = 0 ; i < elm_obj.length ; i++ ) {
				if ( elm_obj[i].value == val ) {
					idx = i;
				}
			}
			elm_obj.selectedIndex = idx;
		}
	}

    AddressLoader.prototype.initPref = function(pref_nm, emptyflg) {
		p_pref_name = pref_nm;

		var json_txt = "";

        new Ajax.Request("../util/address/pref.php", {
            method     : 'post',
			asynchronous : false,
            onComplete : function(request) {
				json_txt = request.responseText;
			}
        });

		if ( json_txt ) {
			var elm_obj = $(p_pref_name);
			var opts    = elm_obj.options;
    
			var jlst = eval(json_txt);

			if ( emptyflg ) {
				var eopt = document.createElement('option');
		        elm_obj.appendChild(eopt);
		        eopt.innerHTML = "指定しない";
		        eopt.value     = "";
			}

			for ( var i = 0 ; i < jlst.length ; i++ ) {
				if ( !jlst[i].prefcd ) continue;
				var eopt = document.createElement('option');
		        elm_obj.appendChild(eopt);
		        eopt.innerHTML = jlst[i].prefname;
		        eopt.value     = jlst[i].prefcd;
		    }
		}
	};

    AddressLoader.prototype.initCity = function(pref_nm, city_nm, emptyflg) {
		p_pref_name = pref_nm;
		p_city_name = city_nm;

        this.deleteList(p_city_name);

		var pref_cd  = $(p_pref_name).value;

		if ( !pref_cd ) {
			return;
		}

		var json_txt  = "";
		var parameter = "pref_cd=" + encodeURIComponent(pref_cd);

        new Ajax.Request("../util/address/city.php", {
            method       : 'post',
            postBody     : parameter,
			asynchronous : false,
            onComplete : function(request) {
				json_txt = request.responseText;
			}
        });

		if ( json_txt ) {
			var elm_obj = $(p_city_name);
			var opts    = elm_obj.options;
    
			var jlst = eval(json_txt);

			if ( emptyflg ) {
				var eopt = document.createElement('option');
		        elm_obj.appendChild(eopt);
		        eopt.innerHTML = "指定しない";
		        eopt.value     = "";
			}

			for ( var i = 0 ; i < jlst.length ; i++ ) {
				if ( !jlst[i].citycd ) continue;
				var eopt = document.createElement('option');
		        elm_obj.appendChild(eopt);
		        eopt.innerHTML = jlst[i].cityname;
		        eopt.value     = jlst[i].citycd;
		    }
		}
	};

    AddressLoader.prototype.initBlock = function(pref_nm, block_nm, emptyflg) {
		p_pref_name  = pref_nm;
		p_block_name = block_nm;

        this.deleteList(p_block_name);

		var pref_cd  = $(p_pref_name).value;

		if ( !pref_cd ) {
			return;
		}

		var json_txt  = "";
		var parameter = "pref_cd=" + encodeURIComponent(pref_cd);

        new Ajax.Request("../util/address/block.php", {
            method       : 'post',
            postBody     : parameter,
			asynchronous : false,
            onComplete : function(request) {
				json_txt = request.responseText;
			}
        });

		if ( json_txt ) {
			var elm_obj = $(p_block_name);
			var opts    = elm_obj.options;
    
			var jlst = eval(json_txt);

			if ( emptyflg ) {
				var eopt = document.createElement('option');
		        elm_obj.appendChild(eopt);
		        eopt.innerHTML = "指定しない";
		        eopt.value     = "";
			}

			for ( var i = 0 ; i < jlst.length ; i++ ) {
				if ( !jlst[i].blocknum ) continue;
				var eopt = document.createElement('option');
		        elm_obj.appendChild(eopt);
		        eopt.innerHTML = jlst[i].blockname;
		        eopt.value     = jlst[i].blocknum;
		    }
		}
	};
}
