function make_index(tag_name, lang, get_text_recursive)
{
	if (document.getElementsByTagName) {
		var elems = document.getElementsByTagName(tag_name);
		var ul = document.createElement("ul");
		var i;
		for (i = 0; i < elems.length; i++) {
			var id = tag_name + i.toString(10);

			if (tag_name == "a") {
				var id_value = elems.item(i).getAttribute("id");
				if (id_value == null || id_value == "") {
					elems.item(i).setAttribute("id", id);
					elems.item(i).setAttribute("name", id);
				} else {
					id = id_value;
				}
			} else {
				elems.item(i).setAttribute("id", id);
				elems.item(i).setAttribute("name", id);
			}
	
			var a = document.createElement("a");
			a.setAttribute("href", "#" + id);
			var text;
			if (get_text_recursive) {
				text = get_textdata(elems.item(i));
			} else {
				text = elems.item(i).firstChild.data;
			}
			a.appendChild(document.createTextNode(text));
			var li = document.createElement("li");
			li.appendChild(a);
			ul.appendChild(li);
		}

		var hr = document.body.getElementsByTagName("hr").item(0);

		document.body.insertBefore(ul, hr.nextSibling);

		if (lang != null) {
			var h2 = document.createElement("h2");
			var text = lang;
			switch (lang) {
			case "ja":
				text = "目次";
				break;
			case "en":
				text = "Contents";
				break;
			}
			h2.appendChild(document.createTextNode(text));
			document.body.insertBefore(h2, hr.nextSibling);
		}

	}
}

function get_textdata(node) 
{
	var text = "";
	var children = node.childNodes;
	var i;
	for (i = 0; i < children.length; i++) {
		if (children.item(i).hasChildNodes()) {
			text += get_textdata(children.item(i));
		} else {
			text += children.item(i).data;
		}
	}
	return(text);
}

function add_counter(gif)
{
	if (document.getElementById) {
		var replaced_by_counter = document.getElementById("counter.replace");
		var counter = document.getElementById("counter");
		var src;
		if (counter) {
			src = counter.src;
		} else {
			counter = document.getElementById("counter.dummy");
			counter.setAttribute("id", "counter");
			var first_child = replaced_by_counter.firstChild;
			if (!first_child) {
				// For IE
				src = "/~kou/counter.rb"
					} else {
						first_child.data.match(/src=(["'])(\S*)\1/);
				src = RegExp.$2;
			}
		}
		src += "?";
		if (gif) src += "gif=true;";
		src += "ref=" + document.referrer;
		counter.setAttribute("src", src);
		replaced_by_counter.parentNode.replaceChild(counter, replaced_by_counter);
	}
}
