/////////////////// 設定項目 /////////////////////

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();


