// for dynamic ad
// history:
//     2005/08/09 makiloan
//
// copyright 2005 makiloan.gozaru.jp.
//
function showAd(url) {

	var nodes = new Array();
	for (var i = 1, n = showAd.arguments.length; i < n; i++) {
		if (showAd.arguments[i]) {
			nodes.push(showAd.arguments[i]);
		}
	}
	var request = createXMLHttpRequest();
	var callback = new adCallback();
	var handler = new ReadyStateChangeHandler(nodes, request, callback);
	request.onreadystatechange = handler.onReadyStateChange;
	request.open("GET", url, true);
	request.setRequestHeader('User-Agent', 'XMLHttpRequest');
	request.send(null);

	return true;
}

function adCallback() {
	this.onCallback = function(nodes, element) {
		var ads = element.getElementsByTagName("ad");
		if (ads && (ads.length > 0)) {
			for (var i = 0, n = nodes.length; i < n; i++) {
				var p = Math.floor(Math.random() * ads.length);
				nodes[i].innerHTML = ads[p].firstChild.nodeValue;
			}
		}
	}
}

function ReadyStateChangeHandler(nodes, request, callback) {

	var _nodes = nodes;
	var _request = request;
	var _callback = callback;

	this.onReadyStateChange = function() {
		if (_request.readyState == 4) {
			if (_request.status == 200) {
				var rootNode = _request.responseXML.documentElement;
				if (rootNode) {
					_callback.onCallback(_nodes, rootNode);
				}
			} else {
//				alert("リソースの取得に失敗しました\n" + _request.status + " " + _request.statusText);
			}
			_nodes = null;
			_request = null;
			_callback = null;
		}
	}
}

function createXMLHttpRequest() {
	return this.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
}
