// $Id: header.js,v 3.6 2008/10/18 06:58:36 Sakaguchi Exp Sakaguchi $

// 特集ページ
var SPECIALS = false
if (document.location.pathname.match(/specials/)) {
  SPECIALS = true
}

// NOSCRIPTモード
var NOSCRIPT = false
if (document.location.search.match(/nos/i)) {
  // 自身
  NOSCRIPT = true
} else if (window.parent) {
  if (window.parent.document.location.search.match(/nos/i)) {
    // 親ウィンドウ
    NOSCRIPT = true
  }
}

// ベース相対位置
var BASE = ""

// ページの収録字数
var Nchars = 0

// コード名称/表示範囲
var Fonts = new Array()
Fonts.push(new Array('', 'ブラウザに従う'))
Fonts.push(new Array('MS Mincho', 'ＭＳ 明朝'))
Fonts.push(new Array('Meiryo', 'メイリオ'))
Fonts.push(new Array('MingLiU', 'MingLiU'))
Fonts.push(new Array('SimSun', 'SimSun'))

// コード名称/表示範囲
var Codes = new Array()
Codes.push('UCS')
Codes.push('UTF8')
Codes.push('JIS X 0208')
Codes.push('JIS X 0212')
Codes.push('SJIS X 0213')
Codes.push('CP932')
Codes.push('Big5')
Codes.push('HKSCS')
Codes.push('CNS')
Codes.push('CCCII')
Codes.push('EACC')
Codes.push('GB')
Codes.push('KS')
//Codes.push('音読み')
//Codes.push('訓読み')

// ページ内容バッファ
var Content, Content_org = ""

// 表示コントロールの挿入
function
control()
{
  if (NOSCRIPT) return false
  var i, l

  // フォーム開始
  document.writeln("<TABLE CLASS=\"Control\"><TR>")
  document.writeln("<TD CLASS=\"Control\" COLSPAN=2>")
  document.writeln("<FORM ID=\"Control\" NAME=\"Control\" onSubmit=\"return showf(this.Ufont.value)\">")

  // フォント選択
  document.writeln("<DIV CLASS=\"Control\" TITLE=\"漢字フォントを選択するか、フォント名を入力してEnterを押します。\">")
  document.writeln("<B>【フォント】</B>")
  document.writeln("<INPUT  ID=\"F0\" NAME=\"Font\" TYPE=\"RADIO\" onClick=\"showf('')\" CHECKED />")
  document.writeln("<LABEL FOR=\"F0\">ブラウザに従う</LABEL>")
  for (i = 1; i < Fonts.length; ++i) {
    l = "F" + i
    document.write("<INPUT ID=\"" + l + "\" NAME=\"Font\" TYPE=\"RADIO\"")
    document.write(" onClick=\"showf('" + Fonts[i][0] + "')\"")
    if (i == 0) document.write(" CHECKED") 
    document.write(" />")
    document.write("<LABEL FOR=\"" + l + "\">" + Fonts[i][1] + "</LABEL>")
  }
  document.writeln("&#x3000; 直接指定: <INPUT NAME=\"Ufont\" TYPE=\"TEXT\" SIZE=8 />")
  document.writeln("</DIV>")

  // コード選択
  if (Codes.length > 0) {
    document.writeln("<DIV CLASS=\"Control\" TITLE=\"ルビ表示するコード体系・エンコーディングを選択します。\">")
    document.writeln("<B>【コード】</B>")
    document.writeln("<INPUT ID=\"C0\" NAME=\"Code\" TYPE=\"RADIO\" onClick=\"showc(0)\" CHECKED />")
    document.writeln("<LABEL FOR=\"C0\">UCS</LABEL>")
    for (i = 1; i < Codes.length; ++i) {
      if (i == 7) document.write("<BR />")
      l = "C" + i
      document.write("<INPUT ID=\"" + l + "\" NAME=\"Code\" TYPE=\"RADIO\"")
      document.write(" onClick=\"showc(" + i +")\"");
      if (i == 0) document.write(" CHECKED")
      document.write(" />")
      document.write("<LABEL FOR=\"" + l + "\">" + Codes[i] + "</LABEL>")
    }
    document.writeln("</DIV>")
  }

  // フォーム終了
  document.writeln("</FORM>")
  document.writeln("</TD>")
  document.writeln("</TR></TABLE>")
}

// ページ内容のリセット
function
reset()
{
  if (NOSCRIPT) return false
  var e
  resetUnderGoing = true

  // 表示コントロール
  e = document.forms
  if (e.length == 1
      && e[0].name == "Control") {
    e[0].Font[0].click()
    e[0].Ufont.value = ""
    if (e[0].Code) e[0].Code[0].click()
  }

  // ページ内容
  e = document.getElementsByName("Content")
  if (e.length == 1) {
    Content = e[0]
    Content_org = Content.innerHTML
    // コメント・アウト(非表示)操作
    var c = "--C:0--"
    Content_org = Content_org.replace(new RegExp(c + ">", "g"), c + "-")
  }

  resetUnderGoing = false
}
var resetUnderGoing = false

// 指定フォントの表示
function
showf(font)
{
  if (NOSCRIPT) return false
  if (resetUnderGoing) return
  var e, i

  e = document.getElementsByName("Images")
  for (i = 0; i < e.length; ++i) {
    e[i].style.fontFamily = font
  }
  FontFamily = font

  return false
}
var FontFamily = ""

// 文字コードの表示
function
showc(code)
{
  if (NOSCRIPT) return false
  if (resetUnderGoing) return
  if (Content_org == "") return
//var stime = new Date().getTime()

  // コメント・イン(表示)操作
  var c = "--C:" + code + "--"
  Content.innerHTML = Content_org.replace(new RegExp(c + "-", "g"), c + ">")

//var etime = new Date().getTime()
//alert((etime - stime) / 1000 + "秒")
  if (FontFamily != "") showf(FontFamily)

  return false
}
var lastcode = 0

// 漢字情報のポップアップ
function
popup(e, idx)
{
  if (NOSCRIPT) return false
  var w = 320, h = 680
  var x = 0, y = 0
  var c, i

  // ポップアップ座標を求める
  if (e) {
    x = e.screenX - w/2
    if (x < 0) x = 0;
    if (x + w > window.screen.width) x = window.screen.width - w
    y = e.screenY - h/2
    if (y < 0) y = 0;
    if (y + h + 16 > window.screen.height) y = window.screen.height - h - 16
  }

  if (arguments.length > 2) {
    // 引数のママ
    c = new Array()
    for (i = 1; i < arguments.length; ++i) {
      c.push(arguments[i])
    }

  } else {
    // 漢字情報コメント抽出
    var k

    k = "--#" + idx + "---"
    i = Content_org.indexOf(k)
    if (i >= 0) {
      // 情報抽出
      var s
      i += k.length
      s = Content_org.substr(i, Content_org.indexOf("-->", i) - i)
      c = s.split("---")
      c.shift()
      for (i = 0; i < c.length; ++i) {
	c[i] = c[i].substr(0, c[i].indexOf("\x3C"))
//	alert("[" + i + "]=" + c[i])
      }
    } else {
      // 抽出失敗
      alert("漢字情報コメント抽出失敗")
      return false;
    }

  }

  // ポップアップ表示
  var p = window.open("", "", "width=" + w + ",height=" + h + ",left=" + x + ",top=" + y + ",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes")
  p.document.clear()

  p.document.writeln("<HTML>")
  p.document.writeln("<HEAD>")
  p.document.writeln("<TITLE>UCS: U+"+ c[0] + "</TITLE>")
  p.document.writeln("<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\"" + BASE +  "scripts/style.css\" />")
  p.document.writeln("</HEAD>")
  p.document.writeln("<BODY CLASS=\"Popup\">")
  if (FontFamily != "") p.document.writeln("<SPAN CLASS=\"Footer\">フォント: " + FontFamily + "</SPAN>")
  p.document.write  ("<DIV CLASS=\"Ps\" STYLE=\"font-family:" + FontFamily + ";\">")
  p.document.write  ("&#x" + c[0] + ";")
  p.document.writeln("</DIV>");
  p.document.writeln("<TABLE CLASS=\"Popup\">")
  p.document.writeln("<TR><TD CLASS=\"Pk\">UCS</TD><TD CLASS=\"Pc\">U+" +      c[0] + "</TD></TR>")
  p.document.writeln("<TR><TD CLASS=\"Pk\">UTF-8</TD><TD CLASS=\"Pc\">" +      c[1] + "</TD></TR>")
  p.document.writeln("<TR><TD CLASS=\"Pk\">JIS X 0208</TD><TD CLASS=\"Pc\">" + c[2] + "</TD></TR>")
  p.document.writeln("<TR><TD CLASS=\"Pk\">JIS X 0212</TD><TD CLASS=\"Pc\">" + c[3] + "</TD></TR>")
  p.document.writeln("<TR><TD CLASS=\"Pk\">SJIS X 0213</TD><TD CLASS=\"Pc\">" +c[4] + "</TD></TR>")
  p.document.writeln("<TR><TD CLASS=\"Pk\">CP932</TD><TD CLASS=\"Pc\">" +      c[5] + "</TD></TR>")
  p.document.writeln("<TR><TD CLASS=\"Pk\">Big5</TD><TD CLASS=\"Pc\">" +       c[6] + "</TD></TR>")
  p.document.writeln("<TR><TD CLASS=\"Pk\">HKSCS</TD><TD CLASS=\"Pc\">" +      c[7] + "</TD></TR>")
  p.document.writeln("<TR><TD CLASS=\"Pk\">CNS</TD><TD CLASS=\"Pc\">" +        c[8] + "</TD></TR>")
  p.document.writeln("<TR><TD CLASS=\"Pk\">CCCII</TD><TD CLASS=\"Pc\">" +      c[9] + "</TD></TR>")
  p.document.writeln("<TR><TD CLASS=\"Pk\">EACC</TD><TD CLASS=\"Pc\">" +       c[10]+ "</TD></TR>")
  p.document.writeln("<TR><TD CLASS=\"Pk\">GB</TD><TD CLASS=\"Pc\">" +         c[11]+ "</TD></TR>")
  p.document.writeln("<TR><TD CLASS=\"Pk\">KS</TD><TD CLASS=\"Pc\">" +         c[12]+ "</TD></TR>")
  if (c.length > 17) {
    p.document.write("<TR><TD CLASS=\"Pk\">部首画数</TD>")
    p.document.writeln("<TD CLASS=\"Pi\">" +showRS(c[17]) + "</TD></TR>")
  }
  if (c.length > 18) {
    p.document.write("<TR><TD CLASS=\"Pk\">総画数</TD>")
    p.document.writeln("<TD CLASS=\"Pi\">" + c[18] + "</TD></TR>")
  }
  if (c.length > 13) {
    p.document.write("<TR><TD CLASS=\"Pk\">音読み</TD>")
    p.document.writeln("<TD CLASS=\"Pi\">" + c[13]+ "</TD></TR>")
  }
  if (c.length > 14) {
    p.document.write("<TR><TD CLASS=\"Pk\">訓読み</TD>")
    p.document.writeln("<TD CLASS=\"Pi\">" + c[14]+ "</TD></TR>")
  }
  if (c.length > 15) {
    p.document.write("<TR><TD CLASS=\"Pk\">MS明朝<BR /><SPAN CLASS=\"Footer\">(XP以前)</SPAN></TD>")
    p.document.writeln("<TD CLASS=\"Pi\">" + (c[15] == "1" ? "○" : "×") + "</TD></TR>")
  }
  if (c.length > 16) {
    p.document.write("<TR><TD CLASS=\"Pk\">MingLiU<BR /><SPAN CLASS=\"Footer\">(XP以前)</SPAN></TD>")
    p.document.writeln("<TD CLASS=\"Pi\">" + (c[16] == "1" ? "○" : "×") + "</TD></TR>")
  }
  if (c.length > 19 && c[19] > 0) {
    p.document.write("<TR><TD CLASS=\"Pk\"><SPAN CLASS=\"Footer\">JIS2004</SPAN><BR />字形変更</TD>")
    p.document.writeln("<TD CLASS=\"Pi\">あり</TD></TR>")
  }
  p.document.writeln("</TABLE>")
  p.document.writeln("<INPUT CLASS=\"Popup\" TYPE=\"BUTTON\" VALUE=\"　閉じる　\" onClick=\"window.close()\" />")
  p.document.writeln("</BODY>")
  p.document.writeln("</HTML>")
  return false;
}

// 部首画数の展開表示
function
showRS(rs)
{
  var s = ""
  var c, d, i

  c = rs.split(",")
  for (i = 0; i < c.length; ++i) {
    d = c[i].split("-")
    if (s != "") s += ", "
    s += "&#x" + d[0] + ";" + d[2]
  }
  return s
}

// Spambot対策Mailto
function
antispam(escaped)
{
  var crypt = unescape(escaped)
  var mailto = ""
  var c, i

  for (i = 0; i < crypt.length; ++i) {
    c = crypt.charCodeAt(i) ^ (1 << (i % 7))
    mailto = mailto + String.fromCharCode(c & 0xff)
  }
  document.write("<A HREF=\"mailto:" + mailto + "\" TITLE=\"作成者にメールします。\">" + mailto + "</A>")
}

// 《三國演義》互換用
function header() {
  NOSCRIPT = true
}
function homenavi() {
}

// --BEGIN ONLINE_ONLY--
// SEO分析用
function
SEO(doc, ref)
{
  var seo = new Image(0, 0)
  seo.src = "/cgi-bin/seo.cgi?doc=" + escape(doc) + "&ref=" + escape(ref)
  return true
}

// ここで記録
SEO(document.URL, document.referrer)
