////// ▼ allPages.globalVariable var psnCurrentURL = "02/0204.html"; var scnCurrentURL = "doc/03.html"; var GTS = false, NCF = false, EXC = false; //Marking level var envs; //Environment information storage object var brws; //Browser information storage class var navs; //Navigator information storage class var sakura; //DHTML controlled class var suzuna; //CSS controlled class var nazuna; //Page source controlled class ////// ▲ allPages.globalVariable ////// ▼ class.Navs ■navs ////// function Navs(l) { if (!l) return; var Local = false; var Root = "/"; if (l.host != "cts.velvet.jp") { if (l.host == "127.0.0.1") Local = true; else if (l.host == "pine.zero.ad.jp") Root += "cts/"; else if (l.host == "www.globetown.net") Root += "~piroaki/"; else if (l.protocol == "file:") Local = true; } this.local = Local; this.root = Root; var Dir, path = l.href; var cutS = l.protocol == "http:" ? path.indexOf(l.host) + l.host.length +1: path.indexOf(this.root) + this.root.length +1; var cutE = path.lastIndexOf("/"); path = path.substring(cutS, cutE); //"xxx/yyy/zzz" // navs.dir ディレクトリ配列 // if (path.split) Dir = path.split("/"); else { Dir = new Array(); if (!strSearch(path, "/")) Dir[0] = path; else { cutS = 0; for (var i = 0; i < 10; i++) { cutE = path.indexOf("/", cutS); if (cutE == -1) cutE = path.length; Dir[i] = path.substring(cutS, cutE); if (cutE == path.length) break; cutS = path.indexOf("/", cutE) +1; } } } this.dir = Dir; path = l.href; cutS = path.lastIndexOf("/") +1; cutE = path.lastIndexOf(".") this.file = cutS > cutE ? "index" : path.substring(cutS, cutE); } new Navs(); // navs.replace() 履歴なしジャンプ // Navs.prototype.replace = function (p, t) { if (!t) setTimeout("navs.replace('" + p + "')", 500); else { if (location.replace || brws.IE40 || brws.NN30) top.location.replace(p); else setTimeout("top.location.href='" + p + "'", 500); } return false; } Navs.prototype.blank = function (aThis) { if (envs.nwo) { window.open(typeof aThis == "object" ? aThis.href : aThis); return false; } return true; } ////// ▲ class.Navs ////// ▼ class.Sakura ■さくら ////// function Sakura(obj) { //さくら this.d = obj; return this; } new Sakura(document); Sakura.prototype.id = function (i) { return typeof i == "object" ? i : this.d.getElementById(i); } Sakura.prototype.cls = function (i, c) { if (c) this.id(i).className = c; else return this.id(i).className; } // sakura.css() CSSコントロール // Sakura.prototype.css = function (i, p, v) { if (v) this.id(i).style[p] = v; else if (p) return this.id(i).style[p]; else return this.id(i).style; } Sakura.prototype.tags = function (t) { return this.d.getElementsByTagName(t); } Sakura.prototype.html = function (i, s) { if (s) this.id(i).innerHTML = s; else return this.id(i).innerHTML; } Sakura.prototype.ohtml = function (i, s) { if (s) this.id(i).outerHTML = s; else return this.id(i).outerHTML; } Sakura.prototype.text = function (i, s) { if (s) this.id(i).innerText = s; else return this.id(i).innerText; } // sakura.display() ディスプレイ // Sakura.prototype.display = function (i, f) { with (this.css(i)) { switch (f) { case 0: display = "none"; break; case 1: display = "block"; break; case 2: display = "inline"; break; default: display = display == "block" ? "none" : "block"; } } } Sakura.prototype.visibility = function (i, f) { with (this.css(i)) { switch (f) { case 0: visibility = "hidden"; break; case 1: visibility = "visible"; break; default: visibility = visibility == "hidden" ? "visible" : "hidden"; } } } // sakura.windowSize() ウィンドウサイズ // Sakura.prototype.windowSize = function () { if (brws.IE40) { this.width = document.body.clientWidth; this.height = document.body.clientHeight; } else if (brws.NN30 || brws.OP50) { this.width = window.innerWidth; this.height = window.innerHeight; } else { this.width = screen.availWidth; this.height = screen.availHeight; } return this; } // sakura.scroll() スクロール // Sakura.prototype.scroll = function (f, i, y, x) { if (f == "set") { if (i && brws.IE50) { this.id(i).scrollTop = y ? y : 0; this.id(i).scrollLeft = x ? x : 0; } else window.scrollTo(x, y); } else { if (brws.IE50 && i) { this.scrollLeft = this.id(i).scrollLeft; this.scrollTop = this.id(i).scrollTop; } else if (brws.IE50) { this.scrollLeft = this.d.body.scrollLeft; this.scrollTop = this.d.body.scrollTop; } else if (brws.NN40) { this.scrollLeft = window.pageXOffset; this.scrollTop = window.pageYOffset; } return this; } } // sakura.mouse() マウス // Sakura.prototype.mouse = function (e) { if (brws.IE40 || brws.OP60) { this.screenX = event.screenX; this.screenY = event.screenY; this.pageX = event.x; this.pageY = event.y; } else if (brws.NN30) { this.screenX = e.screenX; this.screenY = e.screenY; this.pageX = e.pageX; this.pageY = e.pageY; } return this; } ////// ▲ class.Sakura ////// ▼ class.Suzuna ■すずな ////// function Suzuna(obj) { //すずな if (!obj) return; this.d = obj; this.c = obj.styleSheets; this.p = navs.root + "css/"; return this; } new Suzuna(); Suzuna.prototype.write = function (s, f) { s = "\n"; if (f) return s; else this.d.write(s); } Suzuna.prototype.load = function (s, f) { s = "\n"; if (f) return s; else this.d.write(s); } // suzuna.change() シートチェンジ // Suzuna.prototype.change = function (n, b, sel) { if (!GTS) return; if (sel) { //selbox var val = sel.options[sel.selectedIndex].value; sel.selectedIndex = 0; if (val == "cookie") { if (!document.cookie && !confirm("今のスキン設定をcookieに保存しますか?")) return; setCookie("sheet", envs.sheet ? envs.sheet : "basic"); sel.options[sel.length -1].text = "保存しました"; } else if (val) { if (document.cookie) setCookie("sheet", val); setName("sheet", val); location.reload(); } } else { switch (n) { case "toggle": //全反転 for (var i = 0; i < this.c.length; i++) this.c[i].disabled = this.c[0].disabled ? false : true; break; case "all": //統一 for (var i = 0; i < this.c.length; i++) this.c[i].disabled = !b; break; default: this.c[n].disabled = !b; } } } ////// ▲ class.Suzuna ////// ▼ class.Nazuna ■なずな ////// function Nazuna(d) { //なずな if (!d) return; this.d = d; return this; } new Nazuna(); // nazuna.setNavFrm() ナビゲーションフレーム書き出し // Nazuna.prototype.setNavFrm = function () { if (!navs.local) { wri(""); return; } var i, s = ""; s = s.replace(/%nav%/g, envs.nav ? " href='#pagetop' onclick='return toPagetop()' title='ページの一番上へ'" : ""); s = s.replace(/%ffcg%/g, GTS ? " class='ffcg'" : ""); s = s.replace(/%root%/g, navs.root); if (brws.mlv == 2) s = s.replace(/title='サイトマップ'/g, "title='サイトマップ&サイト設定'"); wri(s); } Nazuna.prototype.setBasefont = function (f) { alert("nazuna.setBasefont()が呼び出されました"); } // nazuna.getSheetSelectorSrc() シートセレクタ // Nazuna.prototype.getSheetSelectorSrc = function nzSkinSrc() { if (!GTS) return ""; var F = function (n) { return envs.sheet == n ? ' selected' : '';} var s = ""; return s; } Nazuna.prototype.cutBracket = function (n) { if (!GTS) return; var i, tag = sakura.tags(n); for (i = 0; i < tag.length; i++) sakura.html(tag[i], sakura.html(tag[i]).charAt(1)); } ////// ▲ class.Nazuna ////// ▼ coreFunctions ■中央関数群 ////// // initialize() スタートセッティング // function initialize(obj) { /* if (top.frames.length) { alert("あれ?なんでフレームがついてんの?\n変なリンクはお断りよ。"); top.location.href = location.href; } else if (location.host == "216.239.33.100") alert("これgoogleのキャッシュ?\nスクリプトエラーが起きると思うけど勘弁ね。\n最新版は http:/\/www2.to/cts/ から行けるよ"); else */if (!strSearch(top.name, "EQL")) top.name = ""; var Ver, IE, NN, OP; var navAge = navigator.userAgent.toLowerCase(); if (window.opera) { Ver = navAge.substr(navAge.indexOf("opera") +6, 3) *10; OP = Ver; } else if (navigator.appName == "Microsoft Internet Explorer") { if (strSearch(navAge, "msie 3")) //substr().undefined Ver = 30; else Ver = navAge.substr(navAge.indexOf("msie ") +5, 3) *10; IE = Ver; } else if (navigator.appName == "Netscape") { Ver = navigator.appVersion.substr(0, 3) *10; if (Ver >= 50) Ver += 10; NN = Ver; } // class.Brws ■brws // function Brws(V, I, N, O) { if (!V) return; // this.IE30 = I >= 30; this.IE40 = I >= 40; this.IE50 = I >= 50; this.IE55 = I >= 55; this.IE60 = I >= 60; // this.NN20 = N >= 20; this.NN30 = N >= 30; this.NN40 = N >= 40; this.NN47 = N >= 47; this.NN60 = N >= 60; this.NN70 = N >= 70; // this.OP50 = window.opera; this.OP60 = O >= 60; this.IE = I; this.NN = N; this.OP = O; this.ver = V; this.win = strSearch(navigator.userAgent, "Win"); this.check = false; this.mlv = (this.win && (this.IE55 || this.NN60) ? 2 : (this.IE40 || this.NN47 || this.OP60 ? 1 : 0)); return this; } new Brws(); brws = new Brws(Ver, IE, NN, OP); if (brws.mlv == 2 && brws.win) GTS = true; else if (brws.mlv == 1) NCF = true; else { EXC = true; return obj; } var getEnvs = function GetEnvs(line, E, A, o) { if (line) { var ary = line.split(A); var i, a, e, v; for (i = 0; i < ary.length ; i++) { a = ary[i]; e = a.indexOf(E); v = a.substring(e +E.length); o[a.substring(0, e)] = v == "0" ? 0 : v; } } return o; } obj = navigator.cookieEnabled ? getEnvs(unescape(document.cookie), "=", "; ", obj) : obj; obj = getEnvs(top.name, "EQL", "AND", obj); obj = getEnvs(location.search.substring(1), "=", ";", obj); if (obj.envs) { var a = obj.envs.split(","); for (var i = 0; i < a.length; i++) { v = a[i].substr(4); obj[a[i].substr(0, 3)] = v == "0" ? 0 : v; } switch (obj.mlv) { case 0: GTS = false; NCF = false; EXC = true; break; case 1: GTS = false; NCF = true; EXC = false; break; case 2: GTS = true; NCF = false; EXC = false; break; } } // 環境設定適用 // if (GTS) { var s = ""; if (obj.sheet) { suzuna.change(1, false); suzuna.load(obj.sheet); } if (obj.nav && !obj.popup) suzuna.load(brws.IE55 ? "navFrmIE" : "navFrmNN"); if (obj.bfc) s += "BODY, TD, TH, DIV#contents { font-family:'" + obj.bff + "';}"; if (obj.lmp) s += "BODY { background-attachment:scroll;}"; if (s) suzuna.write(s); } if (navs.local) { document.ondblclick = function () { var file = location.href; if (location.host == "127.0.0.1") { file = location.href.replace("http://127.0.0.1", "file:///F:"); if (strSearch(file, "#")) file = file.substring(0, file.indexOf("#")); if (strSearch(file, "?")) file = file.substring(0, file.substring("?")); if (file.charAt(file.length -1) == "/") file += "index.html"; } location.href = "view-source:" + file; } } return obj; } //modeSelect: 0=normal, 1=replace, 2=open, 3=opener.normal, 4=opener.replace // conlnk() 中央リンク制御装置 // function conlnk(toDir, mode) { var p = navs.root, anc = "", hashPos = toDir.indexOf("#"); if (hashPos != -1) { anc = toDir.substring(hashPos); toDir = toDir.substring(0, hashPos); } if (toDir == "ind" || toDir == "top") p += ""; else if (toDir == "dia") p += "cgi/dia/dia.cgi"; else if (toDir == "bbs") p += "cgi/bbs/bbs.cgi"; else if (toDir == "cav") p += "cav/cav.html"; else if (toDir == "wmp") p += "wmp/wmp.html"; else if (toDir == "wMM") p += "wmp/wMM.html"; else if (toDir == "wPV") p += "wmp/wPV.html"; else if (toDir == "wPC") p += "wmp/wPC.html"; else if (toDir == "wBK") p += "wmp/wBK.html"; else if (toDir == "wSC") p += "wmp/wSC.html"; else if (toDir == "cts") p += "cav/cts.html"; else if (toDir == "nts") p += "nts/nts.html"; else if (toDir == "scn") p += "nts/scn/" + scnCurrentURL; else if (toDir == "psn") p += "nts/psn/" + psnCurrentURL; else if (toDir == "ysr") p += "ysr/ysr.html"; else if (toDir == "pjs") p += "ysr/pjs/pjs.html"; else if (toDir == "fht") p += "ysr/fht/fht.html"; else if (toDir == "sss") p += "ysr/sss/sss.html"; else if (toDir == "scg") p += "scg/scg.htm" + (GTS ? "l" : ""); else if (toDir == "exh") p += "exh/exh.html"; else if (toDir == "cha") p += "cha/cha.html"; else p = toDir; //ファイル直指定の時 p += anc; if (!mode) location.href = p; else if (mode == 1) navs.replace(p); else if (mode == 2) window.open(p); else if (mode == 3) window.opener.location.href = p; else if (mode == 4) window.opener.navs.replace(p); return false; } // consel() コンテンツ移動セレクトボックス // function consel(cThis) { var val = cThis.options[cThis.selectedIndex].value; cThis.selectedIndex = 0; if (val == "par" || val == "new") { cThis.options[1].text = val == "par" ? "[ 新しく開きます ]" : "[ このまま飛ぶよ ]"; cThis.options[1].value = val == "par" ? "new" : "par"; } else if (val == navs.dir[0]) cThis.options[0].text = "このページです"; else if (val && val != navs.dir[0]) conlnk(val, cThis.options[1].value == "new" ? 2 : 0); } // siteMap() サイトマップ // function siteMap(code) { if (code != "envset" && (EXC || brws.OP)) return true; var saw = screen.availWidth, sah = screen.availHeight; var mapW = saw < 600 ? saw : 600; var mapH = sah < 500 ? sah : 500; var mapX = screen.width - saw; var mapY = screen.height - sah; var opt = "width=" + mapW + ",height=" + mapH + ",top=" + mapY + ",left=" + mapX + ",scrollbars=1,status=1,resizable=1"; var path = navs.root; var popup = "?popup=1"; //envset if (code == "envset" && brws.mlv == 2) { path += "exc/envset.html"; if (window.opener || envs.tbu) location.href = path; else window.open(path + popup, "siteWindow", opt); //siteMap } else { //path += "siteMap.htm?openerDir=" + code + (file ? ";openerFile=" + file : ""); path += "map.htm"; if (envs.tbu || brws.OP || EXC) location.href = path + (window.opener && envs.popup ? popup : ""); else if (brws.mlv == 2 && envs.map > 0) window.open(path + "l" + popup, "popup", opt); else window.open(path + popup, "popup", opt); } return false; } // setCookie() クッキー書込 // function setCookie() { if (navigator.cookieEnabled) { if (!document.cookie && !confirm("設定をcookieに保存しようとしています。\n\nsiteCTSのcookieはまだ作られていませんが、作っちゃっていいですか?\n「キャンセル」を押すとcookieは作りません。もちろん設定も保存されません。")) return false; var dir = "path=", lh = location.host; if (lh == "cts.velvet.jp" || navs.local) dir += "/; "; else if (lh == "pine.zero.ad.jp") dir += "/cts/; "; else if (lh == "www.globetown.ne.jp") dir += "/~piroaki/; "; else dir = ""; var ex = new Date(); ex.setTime(2 *24 *60 *60 *1000 +ex.getTime()); // ex.setTime(60 *24 *60 *60 *1000 +ex.getTime()); dir += "expires=" + ex.toGMTString(); var i; if (arguments[0] == "envs") { var envsValue = "npu:" + envs.npu + //NoPopUp ",nwo:" + envs.nwo + //NewWindowOpen ",lmp:" + envs.lmp + //LowMachinePower ",bbm:" + envs.bbm + //BroadBandMode ",nfl:" + envs.nfl + //NavigationFrameLock ",dsk:" + envs.dsk + //DirectShortcutKey ",bfs:" + envs.bfs + //BaseFontSet ",bff:" + envs.bff + //BaseFontFamily ",mlv:" + envs.mlv + //MarkLeVel ",ssn:" + envs.ssn; //SelectedSheetName document.cookie = "envs=" + escape(envsValue) + "; " + dir; } else if (typeof arguments[0] == "object") { //Array for (i = 0; i < arguments[0].length; i++) document.cookie = arguments[0][i] + "=" + escape(arguments[0][++i]) + "; " + dir; } else { for (i = 0; i < arguments.length; i++) document.cookie = arguments[i] + "=" + escape(arguments[++i]) + "; " + dir; } return true; } else { alert("cookieの設定がOFFになっています"); return false; } } function strSearch(c, f) { return c.indexOf(f) != -1; } // strReplace() 文字列置換 // function strReplace() { var i, r; for (i = 1; i < arguments.length; i++) { r = new RegExp(arguments[i], "gi"); arguments[0] = arguments[0].replace(r, arguments[++i]); } return arguments[0]; } function wri(w) { document.write(w); } function makeCdup(l) { var i, s = ""; for (i = 0; i < l; i++) s += "../"; return s; } // mekeLud() 最終更新日 // function makeLud(type, yerSel) { var obj = new Date(document.lastModified), yer = ""; if (yerSel) { yer = obj.getFullYear(); if (yer < 1900) yer += 1900; yer += type ? "年" : "."; } return type ? yer + (obj.getMonth() +1) + "月" + obj.getDate() + "日": yer + (obj.getMonth() +1) + "." + obj.getDate(); } // toPagetop() 一番上に戻る // var pageScrollTimer; function toPagetop(cuX, cuY) { if (!brws.IE55 || !envs.nav) return true; else if (envs.lmp) sakura.scroll("set", "contents"); else { var scr = sakura.scroll("get", "contents"); if (pageScrollTimer) clearTimeout(pageScrollTimer); if (!cuX) cuX = scr.scrollLeft; if (!cuY) cuY = scr.scrollTop; cuX += (0 - scr.scrollLeft) /6; if (cuX < 0) cuX = 0; cuY += (0 - scr.scrollTop) /6; if (cuY < 0) cuY = 0; posX = Math.floor(cuX); posY = Math.floor(cuY); sakura.scroll("set", "contents", posY, posX); if (posY < 1){ sakura.scroll("set", "contents"); } else if (posX != 0 || posY != 0) { pageScrollTimer = setTimeout("toPagetop(" + cuX + "," + cuY + ")", 16); } else { clearTimeout(pageScrollTimer); } } return false; } // setName() ネームセット // function setName(n, v) { if (brws.mlv > 0) { clearName(n); top.name += n + "EQL" + v + "AND"; } } function clearName(n) { if (envs[n] == undefined || brws.mlv == 0) return; var i, rezult = "", nameAry = top.name.split("AND"); for (i = 0; i < nameAry.length; i++) { if (nameAry[i].substring(0, nameAry[i].indexOf("EQL")) == n || !nameAry[i]) continue; rezult += nameAry[i] + "AND"; } top.name = rezult; } // bodyLoad() bodyオンロード // function bodyLoad() { nazuna.cutBracket("kbd"); if (!envs.tms) { var s = "", i = 0, iS = 0, iE = arguments.length; if (arguments[0] == "info") i = ++iS, iE--; for (i; i < iE; i++) s += " / " + arguments[i]; window.defaultStatus = " < siteCTS / Top" + s + " > " + (iS ? arguments[iE] : "Ready."); } else window.defaultStatus = "n: " + top.name + " / c: " + unescape(document.cookie); //IE5.5以降でナビゲーションフレームを固定している時にリロードでスクロールが戻されることへの対策 if (envs.scrollRecovery && envs.nav) { if (envs.scrollRecoveryURL == location.href) sakura.scroll("set", "contents", envs.scrollRecovery); clearName("scrollRecovery"); clearName("scrollRecoveryURL"); } if (brws.IE55 && envs.nav && !envs.popup) { window.onunload = function () { setName("scrollRecovery", sakura.id("contents").scrollTop); setName("scrollRecoveryURL", location.href); } } } ////// ▲ coreFunctions ////// ▼ initialize ■クラス作成 ////// navs = new Navs(location); sakura = new Sakura(document); suzuna = new Suzuna(document); nazuna = new Nazuna(); envs = initialize(new Object());