function T(str) { return document.createTextNode(str); }
function E(nm, attr, chi) {
  var e,i;
  with (e=document.createElement(nm)) {
    for (i in attr) e[i]=attr[i];
    if (chi) for (i=0; i<chi.length; i++) e.appendChild(chi[i]);
  }
  return e;
}
//var defaultOpts = "width=850,height=800,resizable=1,scrollbars=1,menubar=1,toolbar=1,location=1";
//var defaultOpts = "width=850,height=800,scrollbars=1,menubar=0";
var defaultOpts; (defaultOpts=function(){}).prototype
  = { resizable:1, scrollbars:1, menubar:1, toolbar:1, location:1 };
var Contents;

function o2f(obj) {
  var f = [];
  for (var x in obj) if (obj[x]&&x!="target") f.push(x + "=" + obj[x]);
  return f.join(",");
}

function myInit(e) {

  // newWin linking
  // USAGE: class="newWin"
  //        class="newWin(800x600)"
  //        class="newWin(targetName)"
  //        class="newWin(resizable=0,menubar=0, ...)"
  //        class="newWin(800x600,targetNmae,resizable=0,menubar=0, ...)"
  var i, ln=document.getElementsByTagName("a");
  for (i=0; i<ln.length; i++) if (ln[i].className.match(/\bnewWin(\(([^)]*)\))?/)) {
    var args = RegExp.$2.split(",");
    ln[i].opts = new defaultOpts;
    for (var j=0; j<args.length; j++) {
      if (args[j].match(/(.+)=(.+)/)) ln[i].opts[RegExp.$1] = RegExp.$2;
      else if (args[j].match(/(\d+)x(\d+)/)) {
        ln[i].opts.width  = RegExp.$1;
        ln[i].opts.height = RegExp.$2;
      } else if (args[j].match(/(.+)/)) ln[i].opts.target = RegExp.$1;
    }
    //console.log(ln[i].opts.target+":"+o2f(ln[i].opts));
    ln[i].onclick = function (e) {
      window.open(this.href, this.opts.target, o2f(this.opts)).focus();
      return false;
    }; 
  }

  // footnote
  // ToDo: 必要なときのみ div#footer の手前に div#footnote を挿入するようにする?
  //       fn || (fn = ....) 
  var fn = document.getElementById("footnote");
  if (fn) {
    fn.appendChild(E("h2",{},[T("脚註")]));
    fn = fn.appendChild(E("dl"));
    var fnc = 0, span = document.getElementsByTagName("span");
    for (i=0; i<span.length; i++) {
      if (span[i].className.match(/\bfootnote\b/)) {
        with (fni=span[i]) { style.display="none"; className=""; }
		fni.parentNode.insertBefore(
		  E("span", {className:"fn"}, [
		    E("a", {href:"#fn"+(++fnc)}, [T("[註"+fnc+"]")])
		  ]),
		  fni
		);
		fn.appendChild(E("dt", {id:"fn"+fnc}, [T("[註"+fnc+"]")]));
		fn.appendChild(E("dd"))
		  .appendChild(fni.cloneNode(true)).style.display = "inline";
      }
    }
  }

/*
  // HTML including
  var inc = document.getElementsByClassName("include");
  for (i=0; i<inc.length; i++) if (inc[i].id) {
    inc[i].innerHTML = getFile(fileRoot+inc[i].id);
  }
*/

  // contents inserting
  switch (Contents) {
  case "normal":
    var anchors = document.body.childNodes;
        root = E('div', {className:"contents"}, [E("h2", {}, [T("目次：")]), E("ul")]);
    with (root.lastChild) {
      for (var i=0; i<anchors.length; i++) if (/h./i.test(anchors[i].tagName) && anchors[i].id) {
        appendChild(E("li", {className:anchors[i].tagName}, [
                      E("a", {href:"#"+anchors[i].id}, [anchors[i].firstChild.cloneNode(false)])
                    ]));
      }
    }
    var h1 = document.getElementsByTagName('h1')[0];
    h1.parentNode.insertBefore(root, h1.nextSibling);
    break;
/*
  case "dropdown":
    var anchors = document.getElementsByTagName('a'),
        root = document.createElement('select');
    break;
*/
  }
}
if (window.addEventListener){
  window.addEventListener('load', myInit, false);
} else if (window.attachEvent){
  window.attachEvent('onload', myInit);
}

/*
if (window.onload==undefined) {
  window.onload = myInit;
} else {
  var preload = window.onload;
  window.onload = function (e) { preload(e); myInit(e); };
}
*/

/**********************************************************************/
function GoBack() {
  document.write(history.length > 1
    ? '<a href="javascript:history.back();" target="_self">戻る</a>'
    : '<a href="javascript:window.close();" target="_self">閉じる</a>'
  );
}

function LastModified() {
  with (document) {
    var d = new Date(lastModified);
    var yy = d.getYear(); if (yy < 2000) { yy += 1900; }
    var mm = d.getMonth() + 1; if (mm < 10) { mm = "0" + mm; }
    var dd = d.getDate(); if (dd < 10) { dd = "0" + dd; }
    var h = d.getHours(); if (h < 10) { h = "0" + h; }
    var m = d.getMinutes(); if (m < 10) { m = "0" + m; }
    var s = d.getSeconds(); if (s < 10) { s = "0" + s; }
    write(yy + "/" + mm + "/" + dd + " " + h + ":" + m + ":" +s);
  }
}
function part(n) {
  return 'part' + (n<10 ? "0" + n : n) + '.html'
}
function NavBar(m) {
  with(document.URL){
	var f = substring(1+lastIndexOf('/')) || 'index.html';
	var n = f.match(/^part(\d\d).html/) ? RegExp.$1-0
			: (f == 'index.html') ? 0 : -1;
  }
  with (document) {
	write('<div class="NavBar"><table><tr>');
	write(f == 'index.html'
		? '<td style="background-color:#ffff99;"><b>表紙</b></td>'
		: '<td style="background-color:#ffff99;"><a href="index.html">表紙</a></td>');
	write('<td style="background-color:#ffff99;"><a href="index.html#contents">目次</a></td>');
	write('<td></td>');
	write(n > 1
		? '<td style="background-color:#cccccc;"><a href="' + part(n-1) + '">&lt;前&lt;</a></td>'
		: '<td style="background-color:#cccccc;">&lt;前&lt;</td>');
	write('<td style="background-color:#cccccc;">');
	for (var i=1; i<=m; i++) {
	  write(i == n
		? '&nbsp;<b>' + i + '</b>'
		: '&nbsp;<a href="' + part(i) + '">' + i + '</a>');
	}
	write('</td>');
	write(0 <= n && n < m
		? '<td style="background-color:#cccccc;"><a href="' + part(n+1) + '">&gt;次&gt;</a></td>'
		: '<td style="background-color:#cccccc;">&gt;次&gt;</td>');
	write('<td></td>');
	write('<td style="background-color:#ffff99;"><a href="../enshu.html">演習ホーム</a></td>');
	write('<td></td>');
	write('<td style="background-color:#ccffcc;"><a href="http://find.kobe-c.ac.jp/">検索</a></td>');
	write('</tr></table></div>');
  }
}
function include(f,attr) {
  document.write('<iframe src="' + f + '" ' + attr + '>'
	+ 'この部分は iframe 対応のブラウザで見てください。</iframe>');
}
function PWProtect(pw) {
  if (pw != prompt("パスワードを入力してください．"))
	document.write('<meta http-equiv="Refresh" content="0;URL=../unauthorized.html;">');
}

AppVersion = "5.0 (Windows; ja)";
function viewSource(url) {
	if(navigator.appVersion != AppVersion) {
		alert('navigator.appVersion == "' + AppVersion + '" only.');
		return;
	}
	window.open("view-source:http://usir.kobe-c.ac.jp" + url, "", "menubar=no,scrollbars=yes");
}

function newWin(url, target, opts) {
  if (target==undefined) target="_blank";
  if (opts==undefined) opts="width=850,height=800,"+newWinOptions;
  window.open(url, target, opts);
}

// for backward compativility
function windowOpen(url, target) {
  window.open(url, target, "menubar=no,scrollbars=yes");
}
