/////////////////// 設定項目 /////////////////////
function AjaxZipLoader() {
	// InputName設定(正規表現)
	this.AddressNames = [
		{
			azip1 : "zip1*|zipcode1*|postal1*|yu*bin1*",
			azip2 : "zip2|zipcode2|postal2|yu*bin2",
			apref : "pref|todou*[fh]uken",
			aaddr : "addr|ju+s[yh]o",
			azbtn : "ajaxzip"
		},
		{
			azip1 : "szip1*|szipcode1*|spostal1*|syu*bin1*",
			azip2 : "szip2|szipcode2|spostal2|syu*bin2",
			apref : "spref|stodou*[fh]uken",
			aaddr : "saddr|sju+s[yh]o",
			azbtn : "sajaxzip"
		}
	];
	
	this.init();
}
//////////////////////////////////////////////////

AjaxZipLoader.prototype.init = function() {
	AddEventListener(window, 'load', function() { AjaxZipLoader.setAjaxZip(); });
}

AjaxZipLoader.prototype.setAjaxZip = function() {
	for (var i=0; i<document.forms.length; i++) {
		// 一時関数
		document.forms[i].getElementByNameRegex = function(reg) {
			// var elements = this.elements; (type="image"が含まれない)
			var elements1 = this.getElementsByTagName('input');
			var elements2 = this.getElementsByTagName('select');
			var elements3 = this.getElementsByTagName('textarea');
			for (var i=0; i<elements1.length; i++) {
				var element = elements1[i];
				if (element.name && element.name.match(reg)) return element;
			}
			for (var i=0; i<elements2.length; i++) {
				var element = elements2[i];
				if (element.name && element.name.match(reg)) return element;
			}
			for (var i=0; i<elements3.length; i++) {
				var element = elements3[i];
				if (element.name && element.name.match(reg)) return element;
			}
			return null;
		};

		var form = document.forms[i];
		for (var j=0; j<this.AddressNames.length; j++) {
			var ehash = {};
			for (var key in this.AddressNames[j]) {
				ehash[key] = form.getElementByNameRegex(this.AddressNames[j][key]);
			}
			
			// 調整
			if (!ehash['azip1']) continue;
			if (!ehash['apref']) ehash['apref'] = ehash['aaddr'];
			
			// イベント関数
			eval(
				"var func = function() {" +
				"	AjaxZip2.zip2addr(" +
				"		'" + (ehash['azip1'] ? ehash['azip1'].name : '') + "'," +
				"		'" + (ehash['apref'] ? ehash['apref'].name : '') + "'," +
				"		'" + (ehash['aaddr'] ? ehash['aaddr'].name : '') + "'," +
				"		'" + (ehash['azip2'] ? ehash['azip2'].name : '') + "' " +
				"	);" +
				"};"
			);
			
			// イベントセット
			if (ehash['azbtn']) {
				ehash['azbtn'].onclick = function() { return false; };
				AddEventListener(ehash['azbtn'], 'click', func);
			} else {
				if (ehash['azip1']) {
					AddEventListener(ehash['azip1'], 'keyup', func);
				}
				if (ehash['azip2']) {
					AddEventListener(ehash['azip2'], 'keyup', func);
				}
			}
		}
	}
}

AjaxZipLoader = new AjaxZipLoader();

