﻿/// #----------------------------------------------------------------
/// # ◆ＩＮＤＥＸ◆
/// # ・コメント投稿機能拡張用（commentButton.js）
/// # ・コメントプレビュー用（CommentPreview.js）
/// # ・夢小説用（NameChange.js）
/// # ・外部サイトの別窓表示用（external.js）
/// # ・リアルタイム時刻表示用（clock.js）
/// # ・閲覧回数に応じた挨拶用（cookie_greeting.js）
/// # ・検索エンジンからの来訪者用（keyword.js）
/// # ・同画面にオーバーフローして画像を開く（lightbox.js）
/// # ・シグネチャ取得用
/// # ・ソースコード表示の拡張用（dpSyntaxHighlighter）
/// #----------------------------------------------------------------

/// 【解説】JavaScriptファイルをhtml/phpファイルに追加する度に
///         リビルドを行わなくても済むように一元的にまとめています。
///         フォルダ構成が異なる為、ArekorePopupは別管理。
///         あくまでMovableTypeの個別エントリー記事用のjsです。




/// #----------------------------------------------------------------
/// # ▼コメント投稿機能拡張用（commentButton.js）
/// #----------------------------------------------------------------
var canFormat = 0;
if (document.selection)
    canFormat = 1;
var ua = navigator.userAgent;
if (ua.indexOf('Gecko') >= 0 && ua.indexOf('Safari') < 0)
    canFormat = 1;

function getSelection (e) {
    if (document.selection)
        return document.selection.createRange().text;
    else {
        var length = e.textLength;
        var start = e.selectionStart;
        var end = e.selectionEnd;
        if (end == 1 || end == 2) end = length;
        return e.value.substring(start, end);
    }
}

function setSelection (e, v) {
    if (document.selection)
        document.selection.createRange().text = v;
    else {
        var length = e.textLength;
        var start = e.selectionStart;
        var end = e.selectionEnd;
        if (end == 1 || end == 2) end = length;
        e.value = e.value.substring(0, start) + v + e.value.substr(end, length);
    }
}

function formatStr (e, v) {
    if (!canFormat) return;
    var str = getSelection(e);
    if (!str) return;
    setSelection(e, '<' + v + '>' + str + '</' + v + '>');
    return false;
}

function formatStr2 (e, v, v2) {
    if (!canFormat) return;
    var str = getSelection(e);
    if (!str) return;
    setSelection(e, '<' + v + ' color="' + v2 + '">' + str + '</' + v + '>');
    return false;
}

function formatStr3 (e, v, v2) {
    if (!canFormat) return;
    var str = getSelection(e);
    if (!str) return;
    setSelection(e, '<' + v + '><' + v2 + '>' + str + '</' + v2 + '></' + v + '>');
    return false;
}

function insertLink (e, isMail) {
    if (!canFormat) return;
    var str = getSelection(e);
    if (!str) return;
    var my_link = isMail ? prompt('Enter email address:') : prompt('Enter URL:', 'http://');
    if (isMail) my_link = 'mailto:' + my_link;
    if (my_link != null)
        setSelection(e, '<a href="' + my_link + '">' + str + '</a>');
    return false;
}


/// #----------------------------------------------------------------
/// # ▼コメントプレビュー用（CommentPreview.js）
/// #----------------------------------------------------------------
// コメントプレビュー機能のスクリプトです
function doCommentPreview(mode) {

// コメント入力テキストエリアのidを指定します
var textAreaId = 'comment-text';

// プレビューを表示するタグのid属性
var previewAreaId = 'comment_preview';

// コメントプレビュー欄初期表示文字 または、画像タグ
// コメントが何も入力されていない時に表示される文字になります。現在は空白。
var initString = '';

if (!isDoCommentPreview()) return;

if (!getElementCommentPreview(textAreaId) || !getElementCommentPreview(previewAreaId)) {
return;
} else if (null != mode && mode == 'init') {
getElementCommentPreview(previewAreaId).innerHTML = initString;
return;
}

var s = getStringCommentPreview(textAreaId);
if (null == s || '' == s || '<br />' == s) {
s = initString;
}

if (getElementCommentPreview(previewAreaId)) {
getElementCommentPreview(previewAreaId).innerHTML = s;
}
}

function getStringCommentPreview(e) {
var s = '';
s = getElementCommentPreview(e).value;
s = s.split('&').join('&');
s = s.split('<').join('<');
s = s.split('>').join('>');
s = s.split('\'').join('"');
s = s.split('\n').join('<br />');
return s;
}

function getElementCommentPreview(e, f) {
var l = (document.layers) ? 1 : 0;
if(l) {
f=(f) ? f : self;
var a = f.document.layers;
if (a[e]) return a[e];
for (var w = 0; w < a.length;) {
return getElementCommentPreview(e, a[w++]);
}
}
if (document.all) return document.all[e];
return document.getElementById(e);
}

function isDoCommentPreview() {
var ua = navigator.userAgent;
var doNotAgentList = [
ua.indexOf('Opera/6') != -1,
ua.indexOf('Mac') != -1 && ua.indexOf('MSIE 5') != -1
]
for (var i = 0; i < doNotAgentList.length; i++) {
if (doNotAgentList[i]) return false;
}
return true;
}
doCommentPreview('init');


/// #----------------------------------------------------------------
/// # ▼夢小説用（NameChange.js）
/// #----------------------------------------------------------------
//指定されたidを持つタグ内の表示を一括で置き換える
//引数
//str	:置換文字列
//idName:置換対象タグのid(複数設置可能)
//～苗字～
function ins1(str1,idName1){
  if(document.all.item(idName1).length && idName1!=''){
    for (i=0;i<document.all.item(idName1).length;i++){
      if(str1!="") document.all.item(idName1,i).innerHTML = str1;
      else document.all.item(idName1,i).innerHTML = '綾崎';
    }
  }
}
//～名前～
function ins2(str2,idName2){
  if(document.all.item(idName2).length && idName2!=''){
    for (i=0;i<document.all.item(idName2).length;i++){
      if(str2!="") document.all.item(idName2,i).innerHTML = str2;
      else document.all.item(idName2,i).innerHTML = 'ハヤテ';
    }
  }
}


/// #----------------------------------------------------------------
/// # ▼外部サイトの別窓表示用（external.js）
/// #----------------------------------------------------------------
//external.js (http://hori-uchi.com/archives/000424.html)
//仕様　：target属性をJavaScriptにて付加する。
//記述例：<a rel="external" href="http://www.google.com/">別ウィンドウで開く。</a>
//@author hori-uchi氏 <http://hori-uchi.com/>
function externalLinks() {
    if (! document.getElementsByTagName ) return;
    var anchors = document.getElementsByTagName("a");
    for (var i=0; i<anchors.length; i++) {
        var anchor = anchors[i];
        if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") {
            anchor.onclick    = function(event){return popupWindow(this, event);}
            anchor.onkeypress = function(event){return popupWindow(this, event);}
        }
    }
}

function popupWindow(anchor, event){
    var keyCode;
    if (event && event.type == 'keypress') {
        if (event.keyCode)
            keyCode = event.keyCode;
        else if (event.which)
            keyCode = event.which;
        // 13 == Return key. 32 == space key
        if (keyCode != 13 && keyCode != 32)
            return true;
    }
    return !window.open(anchor);
}

Event.observe(window,'load', externalLinks, false);



/// #----------------------------------------------------------------
/// # ▼検索エンジンからの来訪者用（keyword.js）
/// #----------------------------------------------------------------
/*latest update : 08.08.28 (http://staryasi.usamimi.info/blog/archives/2008/05/29-224235.php)
* based on Search Engine Keyword Highlight version 1.5 (http://scott.yang.id.au/code/se-hilite/)
*/
var doc = document;
doc.write('<style type="text/css">');
doc.write('.hilite1 { background-color: #99ffff;color:#000;font-weight:bold;}');
doc.write('.hilite2 { background-color: #99ff99;color:#000;font-weight:bold;}');
doc.write('.hilite3 { background-color: #ff99ff;color:#000;font-weight:bold;}');
doc.write('.hilite4 { background-color: #99ffff;color:#000;font-weight:bold;}');
doc.write('.hilite5 { background-color: #ff9999;color:#000;font-weight:bold;}');
doc.write('</style>');
Hilite = {
	elementid: 'container',
	max_nodes: 1000,
	style_name: 'hilite',
	style_name_suffix: true
};
Hilite.search_engines = [
	[".*google\\.","q"],// Google
	[".*search\\.yahoo\\.","p"],// Yahoo
	["search\\.msn\\.","q"],// MSN
	["search\\.live\\.com","q"],// live search
	["ask\\.jp.*","q"],// Ask.jp
	[".*goo\\.ne\\.jp","MT"],// goo & ocn
	[".*baido\\.jp","wd"],// baido.jp
	["cgi\\.search\\.biglobe\\.","q"],// Biglobe
	["search\\.nifty\\.com\\/(websearch|webapp|videosearch|blogsearch)","q"],// nifty blog etc
	["search\\.jp\\.aol\\.com","query"],// aol
	[".*livedoor\\.com\\/search","q"],// livedoor
	[".*\\.auone\\.jp","q"],// au one
	["excite\\.co\\.jp","search"],// excite
	['technorati\\.jp\\/search\\/([^\\?/]+)', 1]// Technorati
];

/*
 * Decode the referrer string and return a list of search keywords.
 */
Hilite.decodeReferrer = function(referrer) {
	var query = null;
	var regex = new RegExp('');
	for (var i = 0; i < Hilite.search_engines.length; i ++) {
		var se = Hilite.search_engines[i];
		regex.compile('^http://(www\\.)?' + se[0], 'i');
		var match = referrer.match(regex);
		if (match) {
			var result;
			if (isNaN(se[1])) {
				result = Hilite.decodeReferrerQS(referrer, se[1]);
			} else {
				result = match[se[1] + 1];
			}
			if (result) {
				result = window["Unescape"+GetEscapeCodeType(result)](result);
				result = result.replace(/[\'|"]/g, '');
				result = result.split(/[\s,\+\.　]+/);
				return result;
			}
			break;
		}
	}
	return null;
};

Hilite.decodeReferrerQS = function(referrer, match) {
	var idx = referrer.indexOf('?');
	var idx2;
	if(referrer.indexOf(match+'=') < 0){return;}
	if (idx >= 0) {
		var qs = new String(referrer.substring(idx + 1));
		idx  = 0;
		idx2 = 0;
		while ((idx >= 0) && ((idx2 = qs.indexOf('=', idx)) >= 0)) {
			var key, val;
			key = qs.substring(idx, idx2);
			idx = qs.indexOf('&', idx2) + 1;
			if (key == match) {
				if (idx <= 0) {
					return qs.substring(idx2+1);
				} else {
					return qs.substring(idx2+1, idx - 1);
				}
			}
		}
	}
	return null;
};

/**
 * Highlight a DOM element with a list of keywords.
 */
Hilite.hiliteElement = function(elm, query) {
	if (!query || elm.childNodes.length == 0)
		return;
	var qre = new Array();
	for (var i = 0; i < query.length; i ++) {
		query[i] = query[i].toLowerCase();
		qre.push(query[i]);
	}
	qre = new RegExp(qre.join("|"), "i");
	var stylemapper = {};
	for (var i = 0; i < query.length; i ++) {
		if (Hilite.style_name_suffix)
			stylemapper[query[i]] = Hilite.style_name+(i+1);
		else
			stylemapper[query[i]] = Hilite.style_name;
	}

	var textproc = function(node) {
		var match = qre.exec(node.data);
		if (match) {
			var val = match[0];
			var k = '';
			var node2 = node.splitText(match.index);
			var node3 = node2.splitText(val.length);
			var span = node.ownerDocument.createElement('span');
			node.parentNode.replaceChild(span, node2);
			span.className = stylemapper[val.toLowerCase()];
			span.appendChild(node2);
			return span;
		} else {
			return node;
		}
	};
	Hilite.walkElements(elm.childNodes[0], 1, textproc);
};
Hilite.hilite = function() {
	var q = doc.referrer;
	var e = null;
	q = Hilite.decodeReferrer(q);
	if (q && ((Hilite.elementid && (e = doc.getElementById(Hilite.elementid))) || (e = doc.body))){
		Hilite.hiliteElement(e, q);
	}
};

Hilite.walkElements = function(node, depth, textproc) {
	var skipre = /^(script|style|textarea)/i;
	var count = 0;
	while (node && depth > 0) {
		count ++;
		if (count >= Hilite.max_nodes) {
			var handler = function() {
				Hilite.walkElements(node, depth, textproc);
			};
			setTimeout(handler, 50);
			return;
		}
		if (node.nodeType == 1) { // ELEMENT_NODE
			if (!skipre.test(node.tagName) && node.childNodes.length > 0) {
				node = node.childNodes[0];
				depth ++;
				continue;
			}
		} else if (node.nodeType == 3) { // TEXT_NODE
			node = textproc(node);
		}

		if (node.nextSibling) {
			node = node.nextSibling;
		} else {
			while (depth > 0) {
				node = node.parentNode;
				depth --;
				if (node.nextSibling) {
					node = node.nextSibling;
					break;
				}
			}
		}
	}
};

// for Firefox Opera safari latest ver.
if (doc.addEventListener) {
	doc.addEventListener("DOMContentLoaded", Hilite.hilite, false);
}
// for IE
/*@cc_on @*/
/*@if (@_win32)
doc.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
var script = doc.getElementById("__ie_onload");
script.onreadystatechange = function() {
	if (this.readyState == "complete") {
		Hilite.hilite(); // call the onload handler
	}
};
/*@end @*/


// Escape Codec Library: ecl.js (Ver.041208)
// Copyright (C) http://nurucom-archives.hp.infoseek.co.jp/digital/
GetEscapeCodeType=function(str){
	if(/%E[0-9A-F]%[8A]0%[8A]0|%[CD][0-9A-F]%[8A]0/i.test(str))return "UTF8";
	if(/%F[DE]/i.test(str))return /%8[0-9A-D]|%9[0-9A-F]|%A0/i.test(str)?"":"EUCJP";
	var S=str.substring(0,6143).replace(/%[0-9A-F]{2}|[^ ]| /ig,function(s){return s.length<3?"40":s.substring(1)}),c,C,i=0,T;
	while(0<=(c=parseInt(S.substring(i,i+=2),16))&&i<4092)if(128<=c){
		if((C=parseInt(S.substring(i,i+2),16))<128)i+=2;
		else if(194<=c&&c<240&&C<192){
			if(c<224){T="UTF8";i+=2;continue}
			if(2==parseInt(S.charAt(i+2),16)>>2){T="UTF8";i+=4;continue}
		}
		if(142==c&&161<=C&&C<224){if(!T)T="EUCJP";if("EUCJP"==T)continue}
		if(c<161)return "SJIS";
		if(c<224&&!T)
			if((164==c&&C<244||165==c&&C<247)&&161<=C)i+=2;
			else T=224<=C?"EUCJP":"SJIS";
		else T="EUCJP"
	}
	return T?T:"EUCJP"
};
UnescapeSJIS=function(str){
	return str.replace(/%(8[1-9A-F]|[9E][0-9A-F]|F[0-9A-C])(%[4-689A-F][0-9A-F]|%7[0-9A-E]|[@-~])|%([0-7][0-9A-F]|A[1-9A-F]|[B-D][0-9A-F])/ig,function(s){
		var c=parseInt(s.substring(1,3),16),l=s.length;
		return 3==l?String.fromCharCode(c<160?c:c+65216):JCT11280.charAt((c<160?c-129:c-193)*188+(4==l?s.charCodeAt(3)-64:(c=parseInt(s.substring(4),16))<127?c-64:c-65))
	})
};
UnescapeEUCJP=function(str){
JCT8836=JCT11280.substring(0,8836);
	return str.replace(/(%A[1-9A-F]|%[B-E][0-9A-F]|%F[0-9A-E]){2}|%8E%(A[1-9A-F]|[B-D][0-9A-F])|%[0-7][0-9A-F]/ig,function(s){
		var c=parseInt(s.substring(1),16);
		return c<161?String.fromCharCode(c<128?c:parseInt(s.substring(4),16)+65216):JCT8836.charAt((c-161)*94+parseInt(s.substring(4),16)-161)
	})
};
UnescapeUTF8=function(str){
	return str.replace(/%(E(0%[AB]|[1-CEF]%[89AB]|D%[89])[0-9A-F]|C[2-9A-F]|D[0-9A-F])%[89AB][0-9A-F]|%[0-7][0-9A-F]/ig,function(s){
		var c=parseInt(s.substring(1),16);
		return String.fromCharCode(c<128?c:c<224?(c&31)<<6|parseInt(s.substring(4),16)&63:((c&15)<<6|parseInt(s.substring(4),16)&63)<<6|parseInt(s.substring(7),16)&63)
	})
};
JCT11280=Function('var a="zKV33~jZ4zN=~ji36XazM93y!{~k2y!o~k0ZlW6zN?3Wz3W?{EKzK[33[`y|;-~j^YOTz$!~kNy|L1$353~jV3zKk3~k-4P4zK_2+~jY4y!xYHR~jlz$_~jk4z$e3X5He<0y!wy|X3[:~l|VU[F3VZ056Hy!nz/m1XD61+1XY1E1=1y|bzKiz!H034zKj~mEz#c5ZA3-3X$1~mBz$$3~lyz#,4YN5~mEz#{ZKZ3V%7Y}!J3X-YEX_J(3~mAz =V;kE0/y|F3y!}~m>z/U~mI~j_2+~mA~jp2;~m@~k32;~m>V}2u~mEX#2x~mBy+x2242(~mBy,;2242(~may->2&XkG2;~mIy-_2&NXd2;~mGz,{4<6:.:B*B:XC4>6:.>B*BBXSA+A:X]E&E<~r#z+625z s2+zN=`HXI@YMXIAXZYUM8X4K/:Q!Z&33 3YWX[~mB`{zKt4z (zV/z 3zRw2%Wd39]S11z$PAXH5Xb;ZQWU1ZgWP%3~o@{Dgl#gd}T){Uo{y5_d{e@}C(} WU9|cB{w}bzvV|)[} H|zT}d||0~{]Q|(l{|x{iv{dw}(5}[Z|kuZ }cq{{y|ij}.I{idbof%cu^d}Rj^y|-M{ESYGYfYsZslS`?ZdYO__gLYRZ&fvb4oKfhSf^d<Yeasc1f&a=hnYG{QY{D`Bsa|u,}Dl|_Q{C%xK|Aq}C>|c#ryW=}eY{L+`)][YF_Ub^h4}[X|?r|u_ex}TL@YR]j{SrXgo*|Gv|rK}B#mu{R1}hs|dP{C7|^Qt3|@P{YVV |8&}#D}ef{e/{Rl|>Hni}R1{Z#{D[}CQlQ||E}[s{SG_+i8eplY[=[|ec[$YXn#`hcm}YR|{Ci(_[ql|?8p3]-}^t{wy}4la&pc|3e{Rp{LqiJ],] `kc(]@chYnrM`O^,ZLYhZB]ywyfGY~aex!_Qww{a!|)*lHrM{N+n&YYj~Z b c#e_[hZSon|rOt`}hBXa^i{lh|<0||r{KJ{kni)|x,|0auY{D!^Sce{w;|@S|cA}Xn{C1h${E]Z-XgZ*XPbp]^_qbH^e[`YM|a||+=]!Lc}]vdBc=j-YSZD]YmyYLYKZ9Z>Xcczc2{Yh}9Fc#Z.l{}(D{G{{mRhC|L3b#|xK[Bepj#ut`H[,{E9Yr}1b{[e]{ZFk7[ZYbZ0XL]}Ye[(`d}c!|*y`Dg=b;gR]Hm=hJho}R-[n}9;{N![7k_{UbmN]rf#pTe[x8}!Qcs_rs[m`|>N}^V})7{^r|/E}),}HH{OYe2{Skx)e<_.cj.cjoMhc^d}0uYZd!^J_@g,[[[?{i@][|3S}Yl3|!1|eZ|5IYw|1D}e7|Cv{OHbnx-`wvb[6[4} =g+k:{C:}ed{S]|2M]-}WZ|/q{LF|dYu^}Gs^c{Z=}h>|/i|{W]:|ip{N:|zt|S<{DH[p_tvD{N<[8Axo{X4a.^o^X>Yfa59`#ZBYgY~_t^9`jZHZn`>G[oajZ;X,i)Z.^~YJe ZiZF^{][[#Zt^|]Fjx]&_5dddW]P0C[-]}]d|y {C_jUql] |OpaA[Z{lp|rz}:Mu#]_Yf6{Ep?f5`$[6^D][^u[$[6^.Z8]]ePc2U/=]K^_+^M{q*|9tYuZ,s(dS{i=|bNbB{uG}0jZOa:[-]dYtu3]:]<{DJ_SZIqr_`l=Yt`gkTnXb3d@kiq0a`Z{|!B|}e}Ww{Sp,^Z|0>_Z}36|]A|-t}lt{R6pi|v8hPu#{C>YOZHYmg/Z4nicK[}hF_Bg|YRZ7c|crkzYZY}_iXcZ.|)U|L5{R~qi^Uga@Y[xb}&qdbd6h5|Btw[}c<{Ds53[Y7]?Z<|e0{L[ZK]mXKZ#Z2^tavf0`PE[OSOaP`4gi`qjdYMgys/?[nc,}EEb,eL]g[n{E_b/vcvgb.{kcwi`~v%|0:|iK{Jh_vf5lb}KL|(oi=LrzhhY_^@`zgf[~g)[J_0fk_V{T)}I_{D&_/d9W/|MU[)f$xW}?$xr4<{Lb{y4}&u{XJ|cm{Iu{jQ}CMkD{CX|7A}G~{kt)nB|d5|<-}WJ}@||d@|Iy}Ts|iL|/^|no|0;}L6{Pm]7}$zf:|r2}?C_k{R(}-w|`G{Gy[g]bVje=_0|PT{^Y^yjtT[[[l!Ye_`ZN]@[n_)j3nEgMa]YtYpZy].d-Y_cjb~Y~[nc~sCi3|zg}B0}do{O^{|$`_|D{}U&|0+{J3|8*]iayx{a{xJ_9|,c{Ee]QXlYb]$[%YMc*]w[aafe]aVYi[fZEii[xq2YQZHg]Y~h#|Y:thre^@^|_F^CbTbG_1^qf7{L-`VFx Zr|@EZ;gkZ@slgko`[e}T:{Cu^pddZ_`yav^Ea+[#ZBbSbO`elQfLui}.F|txYcbQ`XehcGe~fc^RlV{D_0ZAej[l&jShxG[ipB_=u:eU}3e8[=j|{D(}dO{Do[BYUZ0/]AYE]ALYhZcYlYP/^-^{Yt_1_-;YT`P4BZG=IOZ&]H[e]YYd[9^F[1YdZxZ?Z{Z<]Ba2[5Yb[0Z4l?]d_;_)a?YGEYiYv`_XmZs4ZjY^Zb]6gqGaX^9Y}dXZr[g|]Y}K aFZp^k^F]M`^{O1Ys]ZCgCv4|E>}8eb7}l`{L5[Z_faQ|c2}Fj}hw^#|Ng|B||w2|Sh{v+[G}aB|MY}A{|8o}X~{E8paZ:]i^Njq]new)`-Z>haounWhN}c#{DfZ|fK]KqGZ=:u|fqoqcv}2ssm}.r{]{nIfV{JW)[K|,Z{Uxc|]l_KdCb%]cfobya3`p}G^|LZiSC]U|(X|kBlVg[kNo({O:g:|-N|qT}9?{MBiL}Sq{`P|3a|u.{Uaq:{_o|^S}jX{Fob0`;|#y_@[V[K|cw[<_ }KU|0F}d3|et{Q7{LuZttsmf^kYZ`Af`}$x}U`|Ww}d]| >}K,r&|XI|*e{C/a-bmr1fId4[;b>tQ_:]hk{b-pMge]gfpo.|(w[jgV{EC1Z,YhaY^q,_G[c_g[J0YX]`[h^hYK^_Yib,` {i6vf@YM^hdOKZZn(jgZ>bzSDc^Z%[[o9[2=/YHZ(_/Gu_`*|8z{DUZxYt^vuvZjhi^lc&gUd4|<UiA`z]$b/Z?l}YI^jaHxe|;F}l${sQ}5g}hA|e4}?o{ih}Uz{C)jPe4]H^J[Eg[|AMZMlc}:,{iz}#*|gc{Iq|/:|zK{l&}#u|myd{{M&v~nV};L|(g|I]ogddb0xsd7^V})$uQ{HzazsgxtsO^l}F>ZB]r|{7{j@cU^{{CbiYoHlng]f+nQ[bkTn/}<-d9q {KXadZYo+n|l[|lc}V2{[a{S4Zam~Za^`{HH{xx_SvF|ak=c^[v^7_rYT`ld@]:_ub%[$[m](Shu}G2{E.ZU_L_R{tz`vj(f?^}hswz}GdZ}{S:h`aD|?W|`dgG|if{a8|J1{N,}-Ao3{H#{mfsP|[ bzn+}_Q{MT{u4kHcj_q`eZj[8o0jy{p7}C|[}l){MuYY{|Ff!Ykn3{rT|m,^R|,R}$~Ykgx{P!]>iXh6[l[/}Jgcg{JYZ.^qYfYIZl[gZ#Xj[Pc7YyZD^+Yt;4;`e8YyZVbQ7YzZxXja.7SYl[s]2^/Ha$[6ZGYrb%XiYdf2]H]kZkZ*ZQ[ZYS^HZXcCc%Z|[(bVZ]]:OJQ_DZCg<[,]%Zaa [g{C00HY[c%[ChyZ,Z_`PbXa+eh`^&jPi0a[ggvhlekL]w{Yp^v}[e{~;k%a&k^|nR_z_Qng}[E}*Wq:{k^{FJZpXRhmh3^p>de^=_7`|ZbaAZtdhZ?n4ZL]u`9ZNc3g%[6b=e.ZVfC[ZZ^^^hD{E(9c(kyZ=bb|Sq{k`|vmr>izlH[u|e`}49}Y%}FT{[z{Rk}Bz{TCc/lMiAqkf(m$hDc;qooi[}^o:c^|Qm}a_{mrZ(pA`,}<2sY| adf_%|}`}Y5U;}/4|D>|$X{jw{C<|F.hK|*A{MRZ8Zsm?imZm_?brYWZrYx`yVZc3a@f?aK^ojEd {bN}/3ZH]/$YZhm^&j 9|(S|b]mF}UI{q&aM]LcrZ5^.|[j`T_V_Gak}9J[ ZCZD|^h{N9{~&[6Zd{}B}2O|cv]K}3s}Uy|l,fihW{EG`j_QOp~Z$F^zexS`dcISfhZBXP|.vn|_HYQ|)9|cr]<`&Z6]m_(ZhPcSg>`Z]5`~1`0Xcb4k1{O!bz|CN_T{LR|a/gFcD|j<{Z._[f)mPc:1`WtIaT1cgYkZOaVZOYFrEe[}T$}Ch}mk{K-^@]fH{Hdi`c*Z&|Kt{if[C{Q;{xYB`dYIX:ZB[}]*[{{p9|4GYRh2ao{DS|V+[zd$`F[ZXKadb*A] Ys]Maif~a/Z2bmclb8{Jro_rz|x9cHojbZ{GzZx_)]:{wAayeDlx}<=`g{H1{l#}9i|)=|lP{Qq}.({La|!Y{i2EZfp=c*}Cc{EDvVB|;g}2t{W4av^Bn=]ri,|y?|3+}T*ckZ*{Ffr5e%|sB{lx^0]eZb]9[SgAjS_D|uHZx]dive[c.YPkcq/}db{EQh&hQ|eg}G!ljil|BO]X{Qr_GkGl~YiYWu=c3eb}29v3|D|}4i||.{Mv})V{SP1{FX}CZW6{cm|vO{pS|e#}A~|1i}81|Mw}es|5[}3w{C`h9aL]o{}p[G`>i%a1Z@`Ln2bD[$_h`}ZOjhdTrH{[j_:k~kv[Sdu]CtL}41{I |[[{]Zp$]XjxjHt_eThoa#h>sSt8|gK|TVi[Y{t=}Bs|b7Zpr%{gt|Yo{CS[/{iteva|cf^hgn}($_c^wmb^Wm+|55jrbF|{9^ q6{C&c+ZKdJkq_xOYqZYSYXYl`8]-cxZAq/b%b*_Vsa[/Ybjac/OaGZ4fza|a)gY{P?| I|Y |,pi1n7}9bm9ad|=d{aV|2@[(}B`d&|Uz}B}{`q|/H|!JkM{FU|CB|.{}Az}#P|lk}K{|2rk7{^8^?`/|k>|Ka{Sq}Gz}io{DxZh[yK_#}9<{TRdgc]`~Z>JYmYJ]|`!ZKZ]gUcx|^E[rZCd`f9oQ[NcD_$ZlZ;Zr}mX|=!|$6ZPZYtIo%fj}CpcN|B,{VDw~gb}@hZg`Q{LcmA[(bo`<|@$|o1|Ss}9Z_}tC|G`{F/|9nd}i=}V-{L8aaeST]daRbujh^xlpq8|}zs4bj[S`J|]?G{P#{rD{]I`OlH{Hm]VYuSYUbRc*6[j`8]pZ[bt_/^Jc*[<Z?YE|Xb|?_Z^Vcas]h{t9|Uwd)_(=0^6Zb{Nc} E[qZAeX[a]P^|_J>e8`W^j_Y}R{{Jp__]Ee#e:iWb9q_wKbujrbR}CY`,{mJ}gz{Q^{t~N|? gSga`V_||:#mi}3t|/I`X{N*|ct|2g{km}gi|{={jC}F;|E}{ZZjYf*frmu}8Tdroi{T[|+~}HG{cJ}DM{Lp{Ctd&}$hi3|FZ| m}Kr|38}^c|m_|Tr{Qv|36}?Up>|;S{DV{k_as}BK{P}}9p|t`jR{sAm4{D=b4pWa[}Xi{EjwEkI}3S|E?u=X0{jf} S|NM|JC{qo^3cm]-|JUx/{Cj{s>{Crt[UXuv|D~|j|d{YXZR}Aq}0r}(_{pJfi_z}0b|-vi)Z mFe,{f4|q`b{}^Z{HM{rbeHZ|^x_o|XM|L%|uFXm}@C_{{Hhp%a7|0p[Xp+^K}9U{bP}: tT}B|}+$|b2|[^|~h{FAby[`{}xgygrt~h1[li`c4vz|,7p~b(|mviN}^pg[{N/|g3|^0c,gE|f%|7N{q[|tc|TKA{LU}I@|AZp(}G-sz{F |qZ{}F|f-}RGn6{Z]_5})B}UJ{FFb2]4ZI@v=k,]t_Dg5Bj]Z-]L]vrpdvdGlk|gF}G]|IW}Y0[G| /bo|Te^,_B}#n^^{QHYI[?hxg{[`]D^IYRYTb&kJ[cri[g_9]Ud~^_]<p@_e_XdNm-^/|5)|h_{J;{kacVopf!q;asqd}n)|.m|bf{QW|U)}b+{tL|w``N|to{t ZO|T]jF}CB|0Q{e5Zw|k |We}5:{HO{tPwf_uajjBfX}-V_C_{{r~gg|Ude;s+}KNXH}! `K}eW{Upwbk%ogaW}9EYN}YY|&v|SL{C3[5s.]Y]I]u{M6{pYZ`^,`ZbCYR[1mNg>rsk0Ym[jrE]RYiZTr*YJ{Ge|%-lf|y(`=[t}E6{k!|3)}Zk} ][G{E~cF{u3U.rJ|a9p#o#ZE|?|{sYc#vv{E=|LC}cu{N8`/`3`9rt[4|He{cq|iSYxY`}V |(Q|t4{C?]k_Vlvk)BZ^r<{CL}#h}R+[<|i=}X|{KAo]|W<`K{NW|Zx}#;|fe{IMr<|K~tJ_x}AyLZ?{GvbLnRgN}X&{H7|x~}Jm{]-| GpNu0}.ok>|c4{PYisrDZ|fwh9|hfo@{H~XSbO]Odv]%`N]b1Y]]|eIZ}_-ZA]aj,>eFn+j[aQ_+]h[J_m_g]%_wf.`%k1e#Z?{CvYu_B^|gk`Xfh^M3`afGZ-Z|[m{L}|k3cp[it ^>YUi~d>{T*}YJ{Q5{Jxa$hg|%4`}|LAgvb }G}{P=|<;Ux{_skR{cV|-*|s-{Mp|XP|$G|_J}c6cM{_=_D|*9^$ec{V;|4S{qO|w_|.7}d0|/D}e}|0G{Dq]Kdp{}dfDi>}B%{Gd|nl}lf{C-{y}|ANZr}#={T~|-(}c&{pI|ft{lsVP}){|@u}!W|bcmB{d?|iW|:dxj{PSkO|Hl]Li:}VYk@|2={fnWt{M3`cZ6|)}|Xj}BYa?vo{e4|L7|B7{L7|1W|lvYO}W8nJ|$Vih|{T{d*_1|:-n2dblk``fT{Ky|-%}m!|Xy|-a{Pz}[l{kFjz|iH}9N{WE{x,|jz}R {P|{D)c=nX|Kq|si}Ge{sh|[X{RF{t`|jsr*fYf,rK|/9}$}}Nf{y!1|<Std}4Wez{W${Fd_/^O[ooqaw_z[L`Nbv[;l7V[ii3_PeM}.h^viqYjZ*j1}+3{bt{DR[;UG}3Og,rS{JO{qw{d<_zbAh<R[1_r`iZTbv^^a}c{iEgQZ<exZFg.^Rb+`Uj{a+{z<[~r!]`[[|rZYR|?F|qppp]L|-d|}K}YZUM|=Y|ktm*}F]{D;g{uI|7kg^}%?Z%ca{N[_<q4xC]i|PqZC]n}.bDrnh0Wq{tr|OMn6tM|!6|T`{O`|>!]ji+]_bTeU}Tq|ds}n|{Gm{z,f)}&s{DPYJ`%{CGd5v4tvb*hUh~bf]z`jajiFqAii]bfy^U{Or|m+{I)cS|.9k:e3`^|xN}@Dnlis`B|Qo{`W|>||kA}Y}{ERYuYx`%[exd`]|OyiHtb}HofUYbFo![5|+]gD{NIZR|Go}.T{rh^4]S|C9_}xO^i`vfQ}C)bK{TL}cQ|79iu}9a];sj{P.o!f[Y]pM``Jda^Wc9ZarteBZClxtM{LW}l9|a.mU}KX}4@{I+f1}37|8u}9c|v${xGlz}jP{Dd1}e:}31}%3X$|22i<v+r@~mf{sN{C67G97855F4YL5}8f{DT|xy{sO{DXB334@55J1)4.G9A#JDYtXTYM4, YQD9;XbXm9SX]IB^4UN=Xn<5(;(F3YW@XkH-X_VM[DYM:5XP!T&Y`6|,^{IS-*D.H>:LXjYQ0I3XhAF:9:(==.F*3F1189K/7163D,:@|e2{LS36D4hq{Lw/84443@4.933:0307::6D7}&l{Mx657;89;,K5678H&93D(H<&<>0B90X^I;}Ag1{P%3A+>><975}[S{PZE453?4|T2{Q+5187;>447:81{C=hL6{Me^:=7ii{R=.=F<81;48?|h8}Uh{SE|,VxL{ST,7?9Y_5Xk3A#:$%YSYdXeKXOD8+TXh7(@>(YdXYHXl9J6X_5IXaL0N?3YK7Xh!1?XgYz9YEXhXaYPXhC3X`-YLY_XfVf[EGXZ5L8BXL9YHX]SYTXjLXdJ: YcXbQXg1PX]Yx4|Jr{Ys4.8YU+XIY`0N,<H%-H;:0@,74/:8546I=9177154870UC]d<C3HXl7ALYzXFXWP<<?E!88E5@03YYXJ?YJ@6YxX-YdXhYG|9o{`iXjY_>YVXe>AYFX[/(I@0841?):-B=14337:8=|14{c&93788|di{cW-0>0<097/A;N{FqYpugAFT%X/Yo3Yn,#=XlCYHYNX[Xk3YN:YRT4?)-YH%A5XlYF3C1=NWyY}>:74-C673<69545v {iT85YED=64=.F4..9878/D4378?48B3:7:7/1VX[f4{D,{l<5E75{dAbRB-8-@+;DBF/$ZfW8S<4YhXA.(5@*11YV8./S95C/0R-A4AXQYI7?68167B95HA1*<M3?1/@;/=54XbYP36}lc{qzSS38:19?,/39193574/66878Yw1X-87E6=;964X`T734:>86>1/=0;(I-1::7ALYGXhF+Xk[@W%TYbX7)KXdYEXi,H-XhYMRXfYK?XgXj.9HX_SX]YL1XmYJ>Y}WwIXiI-3-GXcYyXUYJ$X`Vs[7;XnYEZ;XF! 3;%8;PXX(N3Y[)Xi1YE&/ :;74YQ6X`33C;-(>Xm0(TYF/!YGXg8 9L5P01YPXO-5%C|qd{{/K/E6,=0144:361:955;6443@?B7*7:F89&F35YaX-CYf,XiFYRXE_e{}sF 0*7XRYPYfXa5YXXY8Xf8Y~XmA[9VjYj*#YMXIYOXk,HHX40YxYMXU8OXe;YFXLYuPXP?EB[QV0CXfY{:9XV[FWE0D6X^YVP*$4%OXiYQ(|xp|%c3{}V`1>Y`XH00:8/M6XhQ1:;3414|TE|&o@1*=81G8<3}6<|(f6>>>5-5:8;093B^3U*+*^*UT30XgYU&7*O1953)5@E78--F7YF*B&0:%P68W9Zn5974J9::3}Vk|-,C)=)1AJ4+<3YGXfY[XQXmT1M-XcYTYZXCYZXEYXXMYN,17>XIG*SaS|/eYJXbI?XdNZ+WRYP<F:R PXf;0Xg`$|1GX9YdXjLYxWX!ZIXGYaXNYm6X9YMX?9EXmZ&XZ#XQ>YeXRXfAY[4 ;0X!Zz0XdN$XhYL XIY^XGNXUYS/1YFXhYk.TXn4DXjB{jg|4DEX]:XcZMW=A.+QYL<LKXc[vV$+&PX*Z3XMYIXUQ:ZvW< YSXFZ,XBYeXMM)?Xa XiZ4/EXcP3%}&-|6~:1(-+YT$@XIYRBC<}&,|7aJ6}bp|8)K1|Xg|8C}[T|8Q.89;-964I38361<=/;883651467<7:>?1:.}le|:Z=39;1Y^)?:J=?XfLXbXi=Q0YVYOXaXiLXmJXO5?.SFXiCYW}-;|=u&D-X`N0X^,YzYRXO(QX_YW9`I|>hZ:N&X)DQXP@YH#XmNXi$YWX^=!G6YbYdX>XjY|XlX^XdYkX>YnXUXPYF)FXT[EVTMYmYJXmYSXmNXi#GXmT3X8HOX[ZiXN]IU2>8YdX1YbX<YfWuZ8XSXcZU%0;1XnXkZ_WTG,XZYX5YSX Yp 05G?XcYW(IXg6K/XlYP4XnI @XnO1W4Zp-9C@%QDYX+OYeX9>--YSXkD.YR%Q/Yo YUX].Xi<HYEZ2WdCE6YMXa7F)=,D>-@9/8@5=?7164;35387?N<618=6>7D+C50<6B03J0{Hj|N9$D,9I-,.KB3}m |NzE0::/81YqXjMXl7YG; [.W=Z0X4XQY]:MXiR,XgM?9$9>:?E;YE77VS[Y564760391?14941:0=:8B:;/1DXjFA-564=0B3XlH1+D85:0Q!B#:-6&N/:9<-R3/7Xn<*3J4.H:+334B.=>30H.;3833/76464665755:/83H6633:=;.>5645}&E|Y)?1/YG-,93&N3AE@5 <L1-G/8A0D858/30>8<549=@B8] V0[uVQYlXeD(P#ID&7T&7;Xi0;7T-$YE)E=1:E1GR):--0YI7=E<}n9|aT6783A>D7&4YG7=391W;Zx<5+>F#J39}o/|cc;6=A050EQXg8A1-}D-|d^5548083563695D?-.YOXd37I$@LYLWeYlX<Yd+YR A$;3-4YQ-9XmA0!9/XLY_YT(=5XdDI>YJ5XP1ZAW{9>X_6R(XhYO65&J%DA)C-!B:97#A9;@?F;&;(9=11/=657/H,<8}bz|j^5446>.L+&Y^8Xb6?(CYOXb*YF(8X`FYR(XPYVXmPQ%&DD(XmZXW??YOXZXfCYJ79,O)XnYF7K0!QXmXi4IYFRXS,6<%-:YO(+:-3Q!1E1:W,Zo}Am|n~;3580534*?3Zc4=9334361693:30C<6/717:<1/;>59&:4}6!|rS36=1?75<8}[B|s809983579I.A.>84758=108564741H*9E{L{|u%YQ<%6XfH.YUXe4YL@,>N}Tv|ve*G0X)Z;/)3@A74(4P&A1X:YVH97;,754*A66:1 D739E3553545558E4?-?K17/770843XAYf838A7K%N!YW4.$T19Z`WJ*0XdYJXTYOXNZ 1XaN1A+I&Xi.Xk3Z3GB&5%WhZ1+5#Y[X<4YMXhQYoQXVXbYQ8XSYUX4YXBXWDMG0WxZA[8V+Z8X;D],Va$%YeX?FXfX[XeYf<X:Z[WsYz8X_Y]%XmQ(!7BXIZFX]&YE3F$(1XgYgYE& +[+W!<YMYFXc;+PXCYI9YrWxGXY9DY[!GXiI7::)OC;*$.>N*HA@{C|}&k=:<TB83X`3YL+G4XiK]i}(fYK<=5$.FYE%4*5*H*6XkCYL=*6Xi6!Yi1KXR4YHXbC8Xj,B9ZbWx/XbYON#5B}Ue}+QKXnF1&YV5XmYQ0!*3IXBYb71?1B75XmF;0B976;H/RXU:YZX;BG-NXj;XjI>A#D3B636N;,*%<D:0;YRXY973H5)-4FXOYf0:0;/7759774;7;:/855:543L43<?6=E,.A4:C=L)%4YV!1(YE/4YF+ F3%;S;&JC:%/?YEXJ4GXf/YS-EXEYW,9;E}X$}547EXiK=51-?71C%?57;5>463553Zg90;6447?<>4:9.7538XgN{|!}9K/E&3-:D+YE1)YE/3;37/:05}n<}:UX8Yj4Yt864@JYK..G=.(A Q3%6K>3(P3#AYE$-6H/456*C=.XHY[#S.<780191;057C)=6HXj?955B:K1 E>-B/9,;5.!L?:0>/.@//:;7833YZ56<4:YE=/:7Z_WGC%3I6>XkC*&NA16X=Yz2$X:Y^&J48<99k8}CyB-61<18K946YO4{|N}E)YIB9K0L>4=46<1K0+R;6-=1883:478;4,S+3YJX`GJXh.Yp+Xm6MXcYpX(>7Yo,/:X=Z;Xi0YTYHXjYmXiXj;*;I-8S6N#XgY}.3XfYGO3C/$XjL$*NYX,1 6;YH&<XkK9C#I74.>}Hd`A748X[T450[n75<4439:18A107>|ET}Rf<1;14876/Yb983E<5.YNXd4149>,S=/4E/<306443G/06}0&}UkYSXFYF=44=-5095=88;63844,9E6644{PL}WA8:>)7+>763>>0/B3A545CCnT}Xm|dv}Xq1L/YNXk/H8;;.R63351YY747@15YE4J8;46;.38.>4A369.=-83,;Ye3?:3@YE.4-+N353;/;@(X[YYD>@/05-I*@.:551741Yf5>6A443<3535;.58/86=D4753442$635D1>0359NQ @73:3:>><Xn?;43C14 ?Y|X611YG1&<+,4<*,YLXl<1/AIXjF*N89A4Z576K1XbJ5YF.ZOWN.YGXO/YQ01:4G38Xl1;KI0YFXB=R<7;D/,/4>;$I,YGXm94@O35Yz66695385.>:6A#5}W7n^4336:4157597434433<3|XA}m`>=D>:4A.337370?-6Q96{`E|4A}C`|Qs{Mk|J+~r>|o,wHv>Vw}!c{H!|Gb|*Ca5}J||,U{t+{CN[!M65YXOY_*B,Y[Z9XaX[QYJYLXPYuZ%XcZ8LY[SYPYKZM<LMYG9OYqSQYM~[e{UJXmQYyZM_)>YjN1~[f3{aXFY|Yk:48YdH^NZ0|T){jVFYTZNFY^YTYN~[h{nPYMYn3I]`EYUYsYIZEYJ7Yw)YnXPQYH+Z.ZAZY]^Z1Y`YSZFZyGYHXLYG 8Yd#4~[i|+)YH9D?Y^F~Y7|-eYxZ^WHYdYfZQ~[j|3>~[k|3oYmYqY^XYYO=Z*4[]Z/OYLXhZ1YLZIXgYIHYEYK,<Y`YEXIGZI[3YOYcB4SZ!YHZ*&Y{Xi3~[l|JSY`Zz?Z,~[m|O=Yi>??XnYWXmYS617YVYIHZ(Z4[~L4/=~[n|Yu{P)|];YOHHZ}~[o33|a>~[r|aE]DH~[s|e$Zz~[t|kZFY~XhYXZB[`Y}~[u|{SZ&OYkYQYuZ2Zf8D~[v}% ~[w3},Q[X]+YGYeYPIS~[y}4aZ!YN^!6PZ*~[z}?E~[{3}CnZ=~[}}EdDZz/9A3(3S<,YR8.D=*XgYPYcXN3Z5 4)~[~}JW=$Yu.XX~] }KDX`PXdZ4XfYpTJLY[F5]X~[2Yp}U+DZJ::<446[m@~]#3}]1~]%}^LZwZQ5Z`/OT<Yh^ -~]&}jx[ ~m<z!%2+~ly4VY-~o>}p62yz!%2+Xf2+~ly4VY-zQ`z (=] 2z~o2",C={" ":0,"!":1},c=34,i=2,p,s="",u=String.fromCharCode,t=u(12539);while(++c<127)C[u(c)]=c^39&&c^92?i++:0;i=0;while(0<=(c=C[a.charAt(i++)]))if(16==c)if((c=C[a.charAt(i++)])<87){if(86==c)c=1879;while(c--)s+=u(++p)}else s+=s.substr(8272,360);else if(c<86)s+=u(p+=c<51?c-16:(c-55)*92+C[a.charAt(i++)]);else if((c=((c-86)*92+C[a.charAt(i++)])*92+C[a.charAt(i++)])<49152)s+=u(p=c<40960?c:c|57344);else{c&=511;while(c--)s+=t;p=12539}return s')();


/// #----------------------------------------------------------------
/// # ▼閲覧回数に応じた挨拶用（cookie_greeting.js）
/// #----------------------------------------------------------------
// 閲覧回数に応じた挨拶用のスクリプトです
// 名前を入力していただく機能はコメントアウトし、一部書き換えています。
// 重複するルールは上位の行が優先されます。
//
// 元スクリプト：H.Yamashita様
// スクリプト提供サイト様（http://www2s.biglobe.ne.jp/~Hiro/js/cookie_greeting_source.html）

	//////////////////////////////////////////
	// ※ユーザー設定箇所は 2 箇所あります。//
	//////////////////////////////////////////
	//
	// cookie_greeting() : 訪問回数に応じた挨拶を返す
	// Version 0.01b	2005.12.31.
	//
	function cookie_greeting() {
		var	who	= "";
		var	c_value;
		var	cnt	= 0;
		var	name	= "C_GRT=";
		var	limit	= ";expires=Fri, 31-Dec-2100 00:00:00 GMT;"
		var	msg	= "";

		// cnt <- "...;...;C_GRT=counter,who;...;...;"
		c_value = document.cookie;

		if (c_value.indexOf(name) == -1) {
			///////////////////////////////////////////////////
			// ***** ここからユーザーの設定箇所 (1) *****
			//
			// １．名前入力欄の問いかけの文字列設定
			//     最初にアクセスした人に、呼びかけてもらいたい
			//     名前を入力してもらう時に表示される文字列を
			//     prompt_msg に設定する。
//			var	prompt_msg = "cookie greeting() : 呼ばれたい名前を入力してください。"
			//
			// ***** ここまでユーザーの設定箇所 (1) *****
			///////////////////////////////////////////////////
//			who = prompt(prompt_msg, "");
//			if ((who == "") || (who == null)) {
//				who = "anybody";
//			}
//			cnt = 0;
		}
		else {
			// c_value <- "C_GRT=counter,who;...;...;"
			c_value = c_value.substring(c_value.indexOf(name), c_value.length);
			// c_value <- "counter,who"
			if ((tm = c_value.indexOf(";")) == -1) {
				tm = c_value.length;
			}
			c_value = c_value.substring(name.length, tm);

			// cnt <- "counter"
			cnt = c_value.substring(0, c_value.indexOf(","));
			cnt = eval(cnt);

			// who <- "who"
			who = c_value.substring(c_value.indexOf(",")+1, c_value.length);
			who = unescape(who);
		}

		// cnt <- counter + 1
		cnt++;

		// new cnt value -> cookie
		document.cookie = name + cnt + "," + escape(who) + limit;

		//////////////////////////////////////////////////////////
		// ***** ここからユーザーの設定箇所 (2) *****
		//
		// １．アクセス数ごとの挨拶設定
		//     ここで、アクセスした回数によって表示されるメッセージ
		//     を設定します。 cnt がアクセスした回数。
		//     if 文がわからない場合、
		//         http://www2s.biglobe.ne.jp/~Hiro/
		//     にある「初心者のための JavaScript 講座」を参考に
		//     して下さい。
		//
		if (cnt > 200) {
			// 200回以上アクセス用
			msg = "常連さま専用隠しリンク" + "<br />" + '<a href="http://fullpa.net/NextGeneration/index.html" title="ふるぱ-しゃるNG">' + "ふるぱ-しゃるNG" + "</a>";
		}
		else if (cnt == 200) {
			// 200回アクセス用
			msg = "200ページビュー達成っ！！" + "<br />" + "貴方は紛れも無く常連様！" + "<br />" + "サイトが続くのは" + "<br />" + "貴方のおかげです。";
		}
		else if (cnt == 190) {
			// 190回アクセス用
			msg = "・・・190ＰＶ。" + "<br />" + "高みっ！！" + "<br />" + "至高の高みにっ！！";
		}
		else if (cnt == 180) {
			// 180回アクセス用
			msg = "・・・180ＰＶ。" + "<br />" + "貴方なら･･･" + "<br />" + "辿り着くかもしれませんね。";
		}
		else if (cnt == 170) {
			// 170回アクセス用
			msg = "・・・170ＰＶ。" + "<br />" + "凄いです。" + "<br />" + "凄いのであります。";
		}
		else if (cnt == 160) {
			// 160回アクセス用
			msg = "・・・160ＰＶ。" + "<br />" + "流石です。" + "<br />" + "流石なのであります。";
		}
		else if (cnt == 150) {
			// 150回アクセス用
			msg = "150ＰＶです。" + "<br />" + "べ、別に嬉しくなんか･･･" + "<br />" + "でも、ありがとっ。";
		}
		else if (cnt == 140) {
			// 140回アクセス用
			msg = "・・・140ＰＶ。" + "<br />" + "へぇー。" + "<br />" + "ふふ。何でもないです。";
		}
		else if (cnt == 130) {
			// 130回アクセス用
			msg = "・・・130ＰＶ。" + "<br />" + "大佐殿。" + "<br />" + "素晴らしい記録です。";
		}
		else if (cnt == 120) {
			// 120回アクセス用
			msg = "・・・120ＰＶ。" + "<br />" + "また来てくれたんだ？" + "<br />" + "来て･･･くれたんだ。";
		}
		else if (cnt == 110) {
			// 110回アクセス用
			msg = "110ＰＶですよ。" + "<br />" + "そろそろ飽きない？" + "<br />" + "本当は飽きたんでしょ？";
		}
		else if (cnt == 100) {
			// 100回アクセス用
			msg = "100ＰＶです。" + "<br />" + "うわぁ、凄く感謝です！" + "<br />" + "いつもありがとうございます。";
		}
		else if (cnt == 99) {
			// 99回アクセス用
			msg = "じ、実はあと一回で。" + "<br />" + "あっという間でしたね。";
		}
		else if (cnt == 90) {
			// 90回アクセス用
			msg = "やっぱり「笑って健康」が" + "<br />" + "最高だと思います。";
		}
		else if (cnt == 80) {
			// 80回アクセス用
			msg = "見てて楽しい気分になれる" + "<br />" + "そんなサイトが理想です。";
		}
		else if (cnt == 70) {
			// 70回アクセス用
			msg = "ツンデレ以外にも" + "<br />" + "興味はあるんですよ。" + "<br />" + "色々ね。･･･たぶん。";
		}
		else if (cnt == 60) {
			// 60回アクセス用
			msg = "べ、別に貴方の為の" + "<br />" + "サイトじゃないからね！？" + "<br />" + "でも･･･ありがと。";
		}
		else if (cnt == 50) {
			// 50回アクセス用
			msg = "50ページビューだとっ！？" + "<br />" + "連邦の閲覧者は化け物か";
		}
		else if (cnt == 40) {
			// 40回アクセス用
			msg = "40ページビュー？" + "<br />" + "ふぅん。別に。嬉しくなんかないよ。";
		}
		else if (cnt == 30) {
			// 30回アクセス用
			msg = "30ページビュー？" + "<br />" + "もうそんなに来たんだ。。。";
		}
		else if (cnt == 20) {
			// 20回アクセス用
			msg = "20ページビュー？" + "<br />" + "意外と早いものですね？";
		}
		else if ((cnt > 0) && (cnt%5 == 0)) {
			// 5回、10回、15回・・・と、5回アクセス毎に表示
			msg = "いつの間にか " + "<br />" + cnt + " ページビューです。" + "<br />" + "いつもごひいき感謝です。";
		}
		else if (cnt == 15) {
			// １５回アクセス用
			msg = "何だかんだで" + "<br />" + "結構お越し頂いていますね。";
		}
		else if (cnt == 5) {
			// ５回アクセス用
			msg = "またお越しいただけて" + "<br />" + "･･･嬉しいです！";
		}
		else if (cnt == 2) {
			// ２回アクセス用
			msg = "また来られたんですか？" + "<br />" + "その･･･よろしくです";
		}
		else if (cnt == 1) {
			// 初回アクセス用
			msg = "初めてのご訪問・・・かな？" + "<br />" + "ごゆっくりご覧下さい。";
		}
		else {
			// その他の回数の処理
			msg = "・・・いらっしゃいませ。" + "<br />" + "朝晩は冷え込みますね～。";
		}
		//
		// ***** ここまでユーザーの設定箇所 (2) *****
		//////////////////////////////////////////////////////////
		document.write(msg + "<br />");
	}


  	//
  	// この cookie_clear() は、記録した訪問回数と名前を消去します。
  	// 名前の入力ミスを考えて、<body> 中で、リンクを張るのと同じように、
  	//
  	//	リセットは<a href=javascript:cookie_clear()>ここ</a>をクリック
  	//
  	// のような形で実行できるようにしておくと親切かもしれません。
  	//
  	function cookie_clear() {
		document.cookie="C_GRT=; expires=Tue, 01-Jul-1997 00:00:00 GMT;"
  	}


/// #----------------------------------------------------------------
/// # ▼同画面にオーバーフローして画像を開く（lightbox.js）
/// #----------------------------------------------------------------
// -----------------------------------------------------------------------------------
//
//	Lightbox v2.03.3
//	by Lokesh Dhakar - http://www.huddletogether.com
//	5/21/06
//
//	For more information on this script, visit:
//	http://huddletogether.com/projects/lightbox2/
//
//	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
//	
//	Credit also due to those who have helped, inspired, and made their code available to the public.
//	Including: Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.com), Thomas Fuchs(mir.aculo.us), and others.
//
//
// -----------------------------------------------------------------------------------
/*

	Table of Contents
	-----------------
	Configuration
	Global Variables

	Extending Built-in Objects	
	- Object.extend(Element)
	- Array.prototype.removeDuplicates()
	- Array.prototype.empty()

	Lightbox Class Declaration
	- initialize()
	- updateImageList()
	- start()
	- changeImage()
	- resizeImageContainer()
	- showImage()
	- updateDetails()
	- updateNav()
	- enableKeyboardNav()
	- disableKeyboardNav()
	- keyboardAction()
	- preloadNeighborImages()
	- end()
	
	Miscellaneous Functions
	- getPageScroll()
	- getPageSize()
	- getKey()
	- listenKey()
	- showSelectBoxes()
	- hideSelectBoxes()
	- showFlash()
	- hideFlash()
	- pause()
	- initLightbox()
	
	Function Calls
	- addLoadEvent(initLightbox)
	
*/
// -----------------------------------------------------------------------------------

//
//	Configuration
//
var fileLoadingImage = "http://fullpa.net/blog/common/img/loading.gif";		
var fileBottomNavCloseImage = "http://fullpa.net/blog/common/img/closelabel.gif";

var overlayOpacity = 0.8;	// controls transparency of shadow overlay

var animate = true;			// toggles resizing animations
var resizeSpeed = 7;		// controls the speed of the image resizing animations (1=slowest and 10=fastest)

var borderSize = 10;		//if you adjust the padding in the CSS, you will need to update this variable

// -----------------------------------------------------------------------------------

//
//	Global Variables
//
var imageArray = new Array;
var activeImage;

if(animate == true){
	overlayDuration = 0.2;	// shadow fade in/out duration
	if(resizeSpeed > 10){ resizeSpeed = 10;}
	if(resizeSpeed < 1){ resizeSpeed = 1;}
	resizeDuration = (11 - resizeSpeed) * 0.15;
} else { 
	overlayDuration = 0;
	resizeDuration = 0;
}

// -----------------------------------------------------------------------------------

//
//	Additional methods for Element added by SU, Couloir
//	- further additions by Lokesh Dhakar (huddletogether.com)
//
Object.extend(Element, {
	getWidth: function(element) {
	   	element = $(element);
	   	return element.offsetWidth; 
	},
	setWidth: function(element,w) {
	   	element = $(element);
    	element.style.width = w +"px";
	},
	setHeight: function(element,h) {
   		element = $(element);
    	element.style.height = h +"px";
	},
	setTop: function(element,t) {
	   	element = $(element);
    	element.style.top = t +"px";
	},
	setLeft: function(element,l) {
	   	element = $(element);
    	element.style.left = l +"px";
	},
	setSrc: function(element,src) {
    	element = $(element);
    	element.src = src; 
	},
	setHref: function(element,href) {
    	element = $(element);
    	element.href = href; 
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	}
});

// -----------------------------------------------------------------------------------

//
//	Extending built-in Array object
//	- array.removeDuplicates()
//	- array.empty()
//
Array.prototype.removeDuplicates = function () {
    for(i = 0; i < this.length; i++){
        for(j = this.length-1; j>i; j--){        
            if(this[i][0] == this[j][0]){
                this.splice(j,1);
            }
        }
    }
}

// -----------------------------------------------------------------------------------

Array.prototype.empty = function () {
	for(i = 0; i <= this.length; i++){
		this.shift();
	}
}

// -----------------------------------------------------------------------------------

//
//	Lightbox Class Declaration
//	- initialize()
//	- start()
//	- changeImage()
//	- resizeImageContainer()
//	- showImage()
//	- updateDetails()
//	- updateNav()
//	- enableKeyboardNav()
//	- disableKeyboardNav()
//	- keyboardNavAction()
//	- preloadNeighborImages()
//	- end()
//
//	Structuring of code inspired by Scott Upton (http://www.uptonic.com/)
//
var Lightbox = Class.create();

Lightbox.prototype = {
	
	// initialize()
	// Constructor runs on completion of the DOM loading. Calls updateImageList and then
	// the function inserts html at the bottom of the page which is used to display the shadow 
	// overlay and the image container.
	//
	initialize: function() {	
		
		this.updateImageList();

		// Code inserts html at the bottom of the page that looks similar to this:
		//
		//	<div id="overlay"></div>
		//	<div id="lightbox">
		//		<div id="outerImageContainer">
		//			<div id="imageContainer">
		//				<img id="lightboxImage">
		//				<div style="" id="hoverNav">
		//					<a href="#" id="prevLink"></a>
		//					<a href="#" id="nextLink"></a>
		//				</div>
		//				<div id="loading">
		//					<a href="#" id="loadingLink">
		//						<img src="http://fullpa.net/blog/common/img/loading.gif">
		//					</a>
		//				</div>
		//			</div>
		//		</div>
		//		<div id="imageDataContainer">
		//			<div id="imageData">
		//				<div id="imageDetails">
		//					<span id="caption"></span>
		//					<span id="numberDisplay"></span>
		//				</div>
		//				<div id="bottomNav">
		//					<a href="#" id="bottomNavClose">
		//						<img src="http://fullpa.net/blog/common/img/close.gif">
		//					</a>
		//				</div>
		//			</div>
		//		</div>
		//	</div>


		var objBody = document.getElementsByTagName("body").item(0);
		
		var objOverlay = document.createElement("div");
		objOverlay.setAttribute('id','overlay');
		objOverlay.style.display = 'none';
		objOverlay.onclick = function() { myLightbox.end(); }
		objBody.appendChild(objOverlay);
		
		var objLightbox = document.createElement("div");
		objLightbox.setAttribute('id','lightbox');
		objLightbox.style.display = 'none';
		objLightbox.onclick = function(e) {	// close Lightbox is user clicks shadow overlay
			if (!e) var e = window.event;
			var clickObj = Event.element(e).id;
			if ( clickObj == 'lightbox') {
				myLightbox.end();
			}
		};
		objBody.appendChild(objLightbox);
			
		var objOuterImageContainer = document.createElement("div");
		objOuterImageContainer.setAttribute('id','outerImageContainer');
		objLightbox.appendChild(objOuterImageContainer);

		// When Lightbox starts it will resize itself from 250 by 250 to the current image dimension.
		// If animations are turned off, it will be hidden as to prevent a flicker of a
		// white 250 by 250 box.
		if(animate){
			Element.setWidth('outerImageContainer', 250);
			Element.setHeight('outerImageContainer', 250);			
		} else {
			Element.setWidth('outerImageContainer', 1);
			Element.setHeight('outerImageContainer', 1);			
		}

		var objImageContainer = document.createElement("div");
		objImageContainer.setAttribute('id','imageContainer');
		objOuterImageContainer.appendChild(objImageContainer);
	
		var objLightboxImage = document.createElement("img");
		objLightboxImage.setAttribute('id','lightboxImage');
		objImageContainer.appendChild(objLightboxImage);
	
		var objHoverNav = document.createElement("div");
		objHoverNav.setAttribute('id','hoverNav');
		objImageContainer.appendChild(objHoverNav);
	
		var objPrevLink = document.createElement("a");
		objPrevLink.setAttribute('id','prevLink');
		objPrevLink.setAttribute('href','#');
		objHoverNav.appendChild(objPrevLink);
		
		var objNextLink = document.createElement("a");
		objNextLink.setAttribute('id','nextLink');
		objNextLink.setAttribute('href','#');
		objHoverNav.appendChild(objNextLink);
	
		var objLoading = document.createElement("div");
		objLoading.setAttribute('id','loading');
		objImageContainer.appendChild(objLoading);
	
		var objLoadingLink = document.createElement("a");
		objLoadingLink.setAttribute('id','loadingLink');
		objLoadingLink.setAttribute('href','#');
		objLoadingLink.onclick = function() { myLightbox.end(); return false; }
		objLoading.appendChild(objLoadingLink);
	
		var objLoadingImage = document.createElement("img");
		objLoadingImage.setAttribute('src', fileLoadingImage);
		objLoadingLink.appendChild(objLoadingImage);

		var objImageDataContainer = document.createElement("div");
		objImageDataContainer.setAttribute('id','imageDataContainer');
		objLightbox.appendChild(objImageDataContainer);

		var objImageData = document.createElement("div");
		objImageData.setAttribute('id','imageData');
		objImageDataContainer.appendChild(objImageData);
	
		var objImageDetails = document.createElement("div");
		objImageDetails.setAttribute('id','imageDetails');
		objImageData.appendChild(objImageDetails);
	
		var objCaption = document.createElement("span");
		objCaption.setAttribute('id','caption');
		objImageDetails.appendChild(objCaption);
	
		var objNumberDisplay = document.createElement("span");
		objNumberDisplay.setAttribute('id','numberDisplay');
		objImageDetails.appendChild(objNumberDisplay);
		
		var objBottomNav = document.createElement("div");
		objBottomNav.setAttribute('id','bottomNav');
		objImageData.appendChild(objBottomNav);
	
		var objBottomNavCloseLink = document.createElement("a");
		objBottomNavCloseLink.setAttribute('id','bottomNavClose');
		objBottomNavCloseLink.setAttribute('href','#');
		objBottomNavCloseLink.onclick = function() { myLightbox.end(); return false; }
		objBottomNav.appendChild(objBottomNavCloseLink);
	
		var objBottomNavCloseImage = document.createElement("img");
		objBottomNavCloseImage.setAttribute('src', fileBottomNavCloseImage);
		objBottomNavCloseLink.appendChild(objBottomNavCloseImage);
	},


	//
	// updateImageList()
	// Loops through anchor tags looking for 'lightbox' references and applies onclick
	// events to appropriate links. You can rerun after dynamically adding images w/ajax.
	//
	updateImageList: function() {	
		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName('a');
		var areas = document.getElementsByTagName('area');

		// loop through all anchor tags
		for (var i=0; i<anchors.length; i++){
			var anchor = anchors[i];
			
			var relAttribute = String(anchor.getAttribute('rel'));
			
			// use the string.match() method to catch 'lightbox' references in the rel attribute
			if (anchor.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
				anchor.onclick = function () {myLightbox.start(this); return false;}
			}
		}

		// loop through all area tags
		// todo: combine anchor & area tag loops
		for (var i=0; i< areas.length; i++){
			var area = areas[i];
			
			var relAttribute = String(area.getAttribute('rel'));
			
			// use the string.match() method to catch 'lightbox' references in the rel attribute
			if (area.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
				area.onclick = function () {myLightbox.start(this); return false;}
			}
		}
	},
	
	
	//
	//	start()
	//	Display overlay and lightbox. If image is part of a set, add siblings to imageArray.
	//
	start: function(imageLink) {	

		hideSelectBoxes();
		hideFlash();

		// stretch overlay to fill page and fade in
		var arrayPageSize = getPageSize();
		Element.setWidth('overlay', arrayPageSize[0]);
		Element.setHeight('overlay', arrayPageSize[1]);

		new Effect.Appear('overlay', { duration: overlayDuration, from: 0.0, to: overlayOpacity });

		imageArray = [];
		imageNum = 0;		

		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName( imageLink.tagName);

		// if image is NOT part of a set..
		if((imageLink.getAttribute('rel') == 'lightbox')){
			// add single image to imageArray
			imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title')));			
		} else {
		// if image is part of a set..

			// loop through anchors, find other images in set, and add them to imageArray
			for (var i=0; i<anchors.length; i++){
				var anchor = anchors[i];
				if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))){
					imageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title')));
				}
			}
			imageArray.removeDuplicates();
			while(imageArray[imageNum][0] != imageLink.getAttribute('href')) { imageNum++;}
		}

		// calculate top and left offset for the lightbox 
		var arrayPageScroll = getPageScroll();
		var lightboxTop = arrayPageScroll[1] + (arrayPageSize[3] / 10);
		var lightboxLeft = arrayPageScroll[0];
		Element.setTop('lightbox', lightboxTop);
		Element.setLeft('lightbox', lightboxLeft);
		
		Element.show('lightbox');
		
		this.changeImage(imageNum);
	},

	//
	//	changeImage()
	//	Hide most elements and preload image in preparation for resizing image container.
	//
	changeImage: function(imageNum) {	
		
		activeImage = imageNum;	// update global var

		// hide elements during transition
		if(animate){ Element.show('loading');}
		Element.hide('lightboxImage');
		Element.hide('hoverNav');
		Element.hide('prevLink');
		Element.hide('nextLink');
		Element.hide('imageDataContainer');
		Element.hide('numberDisplay');		
		
		imgPreloader = new Image();
		
		// once image is preloaded, resize image container
		imgPreloader.onload=function(){
			Element.setSrc('lightboxImage', imageArray[activeImage][0]);
			myLightbox.resizeImageContainer(imgPreloader.width, imgPreloader.height);
			
			imgPreloader.onload=function(){};	//	clear onLoad, IE behaves irratically with animated gifs otherwise 
		}
		imgPreloader.src = imageArray[activeImage][0];
	},

	//
	//	resizeImageContainer()
	//
	resizeImageContainer: function( imgWidth, imgHeight) {

		// get curren width and height
		this.widthCurrent = Element.getWidth('outerImageContainer');
		this.heightCurrent = Element.getHeight('outerImageContainer');

		// get new width and height
		var widthNew = (imgWidth  + (borderSize * 2));
		var heightNew = (imgHeight  + (borderSize * 2));

		// scalars based on change from old to new
		this.xScale = ( widthNew / this.widthCurrent) * 100;
		this.yScale = ( heightNew / this.heightCurrent) * 100;

		// calculate size difference between new and old image, and resize if necessary
		wDiff = this.widthCurrent - widthNew;
		hDiff = this.heightCurrent - heightNew;

		if(!( hDiff == 0)){ new Effect.Scale('outerImageContainer', this.yScale, {scaleX: false, duration: resizeDuration, queue: 'front'}); }
		if(!( wDiff == 0)){ new Effect.Scale('outerImageContainer', this.xScale, {scaleY: false, delay: resizeDuration, duration: resizeDuration}); }

		// if new and old image are same size and no scaling transition is necessary, 
		// do a quick pause to prevent image flicker.
		if((hDiff == 0) && (wDiff == 0)){
			if (navigator.appVersion.indexOf("MSIE")!=-1){ pause(250); } else { pause(100);} 
		}

		Element.setHeight('prevLink', imgHeight);
		Element.setHeight('nextLink', imgHeight);
		Element.setWidth( 'imageDataContainer', widthNew);

		this.showImage();
	},
	
	//
	//	showImage()
	//	Display image and begin preloading neighbors.
	//
	showImage: function(){
		Element.hide('loading');
		new Effect.Appear('lightboxImage', { duration: resizeDuration, queue: 'end', afterFinish: function(){	myLightbox.updateDetails(); } });
		this.preloadNeighborImages();
	},

	//
	//	updateDetails()
	//	Display caption, image number, and bottom nav.
	//
	updateDetails: function() {
	
		// if caption is not null
		if(imageArray[activeImage][1]){
			Element.show('caption');
			Element.setInnerHTML( 'caption', imageArray[activeImage][1]);
		}
		
		// if image is part of set display 'Image x of x' 
		if(imageArray.length > 1){
			Element.show('numberDisplay');
			Element.setInnerHTML( 'numberDisplay', "Image " + eval(activeImage + 1) + " of " + imageArray.length);
		}

		new Effect.Parallel(
			[ new Effect.SlideDown( 'imageDataContainer', { sync: true, duration: resizeDuration, from: 0.0, to: 1.0 }), 
			  new Effect.Appear('imageDataContainer', { sync: true, duration: resizeDuration }) ], 
			{ duration: resizeDuration, afterFinish: function() {
				// update overlay size and update nav
				var arrayPageSize = getPageSize();
				Element.setHeight('overlay', arrayPageSize[1]);
				myLightbox.updateNav();
				}
			} 
		);
	},

	//
	//	updateNav()
	//	Display appropriate previous and next hover navigation.
	//
	updateNav: function() {

		Element.show('hoverNav');				

		// if not first image in set, display prev image button
		if(activeImage != 0){
			Element.show('prevLink');
			document.getElementById('prevLink').onclick = function() {
				myLightbox.changeImage(activeImage - 1); return false;
			}
		}

		// if not last image in set, display next image button
		if(activeImage != (imageArray.length - 1)){
			Element.show('nextLink');
			document.getElementById('nextLink').onclick = function() {
				myLightbox.changeImage(activeImage + 1); return false;
			}
		}
		
		this.enableKeyboardNav();
	},

	//
	//	enableKeyboardNav()
	//
	enableKeyboardNav: function() {
		document.onkeydown = this.keyboardAction; 
	},

	//
	//	disableKeyboardNav()
	//
	disableKeyboardNav: function() {
		document.onkeydown = '';
	},

	//
	//	keyboardAction()
	//
	keyboardAction: function(e) {
		if (e == null) { // ie
			keycode = event.keyCode;
			escapeKey = 27;
		} else { // mozilla
			keycode = e.keyCode;
			escapeKey = e.DOM_VK_ESCAPE;
		}

		key = String.fromCharCode(keycode).toLowerCase();
		
		if((key == 'x') || (key == 'o') || (key == 'c') || (keycode == escapeKey)){	// close lightbox
			myLightbox.end();
		} else if((key == 'p') || (keycode == 37)){	// display previous image
			if(activeImage != 0){
				myLightbox.disableKeyboardNav();
				myLightbox.changeImage(activeImage - 1);
			}
		} else if((key == 'n') || (keycode == 39)){	// display next image
			if(activeImage != (imageArray.length - 1)){
				myLightbox.disableKeyboardNav();
				myLightbox.changeImage(activeImage + 1);
			}
		}

	},

	//
	//	preloadNeighborImages()
	//	Preload previous and next images.
	//
	preloadNeighborImages: function(){

		if((imageArray.length - 1) > activeImage){
			preloadNextImage = new Image();
			preloadNextImage.src = imageArray[activeImage + 1][0];
		}
		if(activeImage > 0){
			preloadPrevImage = new Image();
			preloadPrevImage.src = imageArray[activeImage - 1][0];
		}
	
	},

	//
	//	end()
	//
	end: function() {
		this.disableKeyboardNav();
		Element.hide('lightbox');
		new Effect.Fade('overlay', { duration: overlayDuration});
		showSelectBoxes();
		showFlash();
	}
}

// -----------------------------------------------------------------------------------

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.com
//
function getPageScroll(){

	var xScroll, yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;	
	}

	arrayPageScroll = new Array(xScroll,yScroll) 
	return arrayPageScroll;
}

// -----------------------------------------------------------------------------------

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.com
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	
//	console.log(self.innerWidth);
//	console.log(document.documentElement.clientWidth);

	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

//	console.log("xScroll " + xScroll)
//	console.log("windowWidth " + windowWidth)

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}
//	console.log("pageWidth " + pageWidth)

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

// -----------------------------------------------------------------------------------

//
// getKey(key)
// Gets keycode. If 'x' is pressed then it hides the lightbox.
//
function getKey(e){
	if (e == null) { // ie
		keycode = event.keyCode;
	} else { // mozilla
		keycode = e.which;
	}
	key = String.fromCharCode(keycode).toLowerCase();
	
	if(key == 'x'){
	}
}

// -----------------------------------------------------------------------------------

//
// listenKey()
//
function listenKey () {	document.onkeypress = getKey; }
	
// ---------------------------------------------------

function showSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------

function hideSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
}

// ---------------------------------------------------

function showFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "visible";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------

function hideFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "hidden";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "hidden";
	}

}


// ---------------------------------------------------

//
// pause(numberMillis)
// Pauses code execution for specified time. Uses busy code, not good.
// Help from Ran Bar-On [ran2103@gmail.com]
//

function pause(ms){
	var date = new Date();
	curDate = null;
	do{var curDate = new Date();}
	while( curDate - date < ms);
}
/*
function pause(numberMillis) {
	var curently = new Date().getTime() + sender;
	while (new Date().getTime();	
}
*/
// ---------------------------------------------------



function initLightbox() { myLightbox = new Lightbox(); }
Event.observe(window, 'load', initLightbox, false);


/// #----------------------------------------------------------------
/// # ▼シグネチャ取得用
/// #----------------------------------------------------------------
//指定されたidを持つタグ内の表示を一括で置き換える
//引数
//str	:置換文字列
//idName:置換対象タグのid(複数設置可能)
//～[Group]～
function ins3(str3,idName3){
  if(document.all.item(idName3).length && idName3!=''){
    for (i=0;i<document.all.item(idName3).length;i++){
      if(str3!="") document.all.item(idName3,i).innerHTML = str3;
      else document.all.item(idName3,i).innerHTML = '[Group]';
    }
  }
}
//～[Group2]～
function ins4(str4,idName4){
  if(document.all.item(idName4).length && idName4!=''){
    for (i=0;i<document.all.item(idName4).length;i++){
      if(str4!="") document.all.item(idName4,i).innerHTML = str4;
      else document.all.item(idName4,i).innerHTML = '[Group2]';
    }
  }
}
//～[Name]～
function ins5(str5,idName5){
  if(document.all.item(idName5).length && idName5!=''){
    for (i=0;i<document.all.item(idName5).length;i++){
      if(str5!="") document.all.item(idName5,i).innerHTML = str5;
      else document.all.item(idName5,i).innerHTML = '[Name]';
    }
  }
}
//～[Email]～
function ins6(str6,idName6){
  if(document.all.item(idName6).length && idName6!=''){
    for (i=0;i<document.all.item(idName6).length;i++){
      if(str6!="") document.all.item(idName6,i).innerHTML = str6;
      else document.all.item(idName6,i).innerHTML = '[Email]';
    }
  }
}



/// #----------------------------------------------------------------
/// # ▼ソースコード表示の拡張用
/// #----------------------------------------------------------------
/*
 * JsMin
 * Javascript Compressor
 * http://www.crockford.com/
 * http://www.smallsharptools.com/
 *
 *
 * 追記：2009/03/11 ふるぱ-しゃる＠秋月らせん
 * このスクプトはオリジナルの「shCore.js」に「shBrushJava.js」「shBrushCss.js」「shBrushPhp.js」「shBrushVb.js」「shBrushXml.js」と
 * 自作の「shBrushBat.js」を追記して結合しています。また表示用に用いる「SyntaxHighlighter.css」は「_common.css」に結合しています。
 */


/// #shCore.js
/*
 * JsMin
 * Javascript Compressor
 * http://www.crockford.com/
 * http://www.smallsharptools.com/
*/

var dp = {
	sh:{
		Toolbar:{},
		Utils:{},
		RegexLib:{},
		Brushes:{},
		Strings:{AboutDialog:'<html><head><title>About...</title></head><body class="dp-about"><table cellspacing="0"><tr><td class="copy"><p class="title">dp.SyntaxHighlighter</div><div class="para">Version: {V}</p><p><a href="http://www.dreamprojections.com/syntaxhighlighter/?ref=about" target="_blank">http://www.dreamprojections.com/syntaxhighlighter</a></p>&copy;2004-2007 Alex Gorbatchev.</td></tr><tr><td class="footer"><input type="button" class="close" value="OK" onClick="window.close()"/></td></tr></table></body></html>'},
		ClipboardSwf:null,
		Version:'1.5.1'
	}
};
dp.SyntaxHighlighter=dp.sh;
dp.sh.Toolbar.Commands={
	ExpandSource:{
		label:'+ expand source',
		check:function(highlighter){
			return highlighter.collapse;
		},
		func:function(sender,highlighter){
			sender.parentNode.removeChild(sender);
			highlighter.div.className = highlighter.div.className.replace('collapsed','');
		}
	},
	ViewSource:{
		label:'プレーン表示',
		func:function(sender,highlighter){
			var code = dp.sh.Utils.FixForBlogger(highlighter.originalCode).replace(/</g,'&lt;');
			var wnd = window.open('','_blank','width=750, height=400, location=0, resizable=1, menubar=0, scrollbars=0');
			wnd.document.write('<textarea style="width:99%;height:99%">'+code+'</textarea>');
			wnd.document.close();
		}
	},
	CopyToClipboard:{
		label:'クリップボードにコピー',
		check:function(){
			return window.clipboardData!=null||dp.sh.ClipboardSwf!=null;
		},
		func:function(sender,highlighter){
			var code = dp.sh.Utils.FixForBlogger(highlighter.originalCode).replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');
			if(window.clipboardData){
				window.clipboardData.setData('text',code);
			}else if(dp.sh.ClipboardSwf!=null){
				var flashcopier = highlighter.flashCopier;
				if(flashcopier==null){
					flashcopier = document.createElement('div');
					highlighter.flashCopier = flashcopier;highlighter.div.appendChild(flashcopier);
				}
				flashcopier.innerHTML = '<embed src="'+dp.sh.ClipboardSwf+'" FlashVars="clipboard='+encodeURIComponent(code)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
			}
			alert('クリップボードにコピーしました');
		}
	},
	PrintSource:{
		label:'印刷',
		func:function(sender,highlighter){
			var iframe = document.createElement('IFRAME');
			var doc = null;
			iframe.style.cssText = 'position:absolute;width:0px;height:0px;left:-500px;top:-500px;';
			document.body.appendChild(iframe);
			doc = iframe.contentWindow.document;
			dp.sh.Utils.CopyStyles(doc,window.document);
			doc.write('<div class="'+highlighter.div.className.replace('collapsed','')+' printing">'+highlighter.div.innerHTML+'</div>');
			doc.close();
			iframe.contentWindow.focus();
			iframe.contentWindow.print();
			alert('印刷中...');
			document.body.removeChild(iframe);
		}
	},
	About:{
		label:'これ何？',func:
		function(highlighter){
			var wnd = window.open('','_blank','dialog,width=300,height=150,scrollbars=0');
			var doc = wnd.document;
			dp.sh.Utils.CopyStyles(doc,window.document);
			doc.write(dp.sh.Strings.AboutDialog.replace('{V}',dp.sh.Version));
			doc.close();
			wnd.focus();
		}
	}
};
dp.sh.Toolbar.Create=function(highlighter){
	var div = document.createElement('DIV');
	div.className = 'tools';
	for(var name in dp.sh.Toolbar.Commands){
		var cmd = dp.sh.Toolbar.Commands[name];
		if(cmd.check!=null&&!cmd.check(highlighter)){
			continue;
		}
		div.innerHTML += '<a href="#" onclick="dp.sh.Toolbar.Command(\''+name+'\',this);return false;">'+cmd.label+'</a>';
	}
	return div;
}
dp.sh.Toolbar.Command=function(name,sender){
	var n = sender;
	while(n!=null&&n.className.indexOf('dp-highlighter')==-1){
		n=n.parentNode;
	}
	if(n!=null){
		dp.sh.Toolbar.Commands[name].func(sender,n.highlighter);
	}
}
dp.sh.Utils.CopyStyles=function(destDoc,sourceDoc){
	var links = sourceDoc.getElementsByTagName('link');
	for(var i=0;i<links.length;i++){
		if(links[i].rel.toLowerCase()=='stylesheet'){
			destDoc.write('<link type="text/css" rel="stylesheet" href="'+links[i].href+'"></link>');
		}
	}
}
dp.sh.Utils.FixForBlogger = function(str){
	return(dp.sh.isBloggerMode==true)?str.replace(/<br\s*\/?>|&lt;br\s*\/?&gt;/gi,'\n'):str;
}
dp.sh.RegexLib={
	MultiLineCComments:
	new RegExp('/\\*[\\s\\S]*?\\*/','gm'),SingleLineCComments:
	new RegExp('//.*$','gm'),SingleLinePerlComments:
	new RegExp('#.*$','gm'),DoubleQuotedString:
	new RegExp('"(?:\\.|(\\\\\\")|[^\\""\\n])*"','g'),SingleQuotedString:
	new RegExp("'(?:\\.|(\\\\\\')|[^\\''\\n])*'",'g')
};
dp.sh.Match=function(value,index,css){
	this.value=value;
	this.index=index;
	this.length=value.length;
	this.css=css;
}
dp.sh.Highlighter=function(){
	this.noGutter=false;
	this.addControls=true;
	this.collapse=false;
	this.tabsToSpaces=true;
	this.wrapColumn=80;
	this.showColumns=true;
}
dp.sh.Highlighter.SortCallback=function(m1,m2){
	if(m1.index<m2.index){
		return -1;
	}else if(m1.index>m2.index){
		return 1;
	}else{
		if(m1.length<m2.length){
			return -1;
		}else if(m1.length>m2.length){
			return 1;
		}
	}
	return 0;
}
dp.sh.Highlighter.prototype.CreateElement=function(name){
	var result = document.createElement(name);
	result.highlighter=this;
	return result;
}
dp.sh.Highlighter.prototype.GetMatches=function(regex,css){
	var index=0;
	var match=null;
	while((match=regex.exec(this.code))!=null){
		this.matches[this.matches.length]=new dp.sh.Match(match[0],match.index,css);
	}
}
dp.sh.Highlighter.prototype.AddBit=function(str,css){
	if(str==null||str.length==0){
		return;
	}
	var span = this.CreateElement('SPAN');
	str=str.replace(/ /g,'&nbsp;');
	str=str.replace(/</g,'&lt;');
	str=str.replace(/\n/gm,'&nbsp;<br>');
	if(css!=null){
		if((/br/gi).test(str)){
			var lines=str.split('&nbsp;<br>');
			for(var i=0;i<lines.length;i++){
				span=this.CreateElement('SPAN');
				span.className=css;
				span.innerHTML=lines[i];
				this.div.appendChild(span);
				if(i+1<lines.length){
					this.div.appendChild(this.CreateElement('BR'));
				}
			}
		}else{
			span.className=css;
			span.innerHTML=str;
			this.div.appendChild(span);
		}
	}else{
		span.innerHTML=str;
		this.div.appendChild(span);
	}
}
dp.sh.Highlighter.prototype.IsInside=function(match){
	if(match==null||match.length==0){
		return false;
	}
	for(var i=0;i<this.matches.length;i++){
		var c=this.matches[i];
		if(c==null){
			continue;
		}
		if((match.index>c.index)&&(match.index<c.index+c.length)){
			return true;
		}
	}
	return false;
}
dp.sh.Highlighter.prototype.ProcessRegexList=function(){
	for(var i=0;i<this.regexList.length;i++){
		this.GetMatches(this.regexList[i].regex,this.regexList[i].css);
	}
}
dp.sh.Highlighter.prototype.ProcessSmartTabs=function(code){
	var lines=code.split('\n');
	var result='';
	var tabSize=4;
	var tab='\t';
	function InsertSpaces(line,pos,count){
		var left=line.substr(0,pos);
		var right=line.substr(pos+1,line.length);
		var spaces='';
		for(var i=0;i<count;i++){
			spaces+=' ';
		}
		return left+spaces+right;
	}
	function ProcessLine(line,tabSize){
		if(line.indexOf(tab)==-1){
			return line;
		}
		var pos=0;
		while((pos=line.indexOf(tab))!=-1){
			var spaces=tabSize-pos%tabSize;
			line=InsertSpaces(line,pos,spaces);
		}
		return line;
	}
	for(var i=0;i<lines.length;i++){
		result+=ProcessLine(lines[i],tabSize)+'\n';
	}
	return result;
}
dp.sh.Highlighter.prototype.SwitchToList=function(){
	var html=this.div.innerHTML.replace(/<(br)\/?>/gi,'\n');
	var lines=html.split('\n');
	if(this.addControls==true){
		this.bar.appendChild(dp.sh.Toolbar.Create(this));
	}
	if(this.showColumns){
		var div=this.CreateElement('div');
		var columns=this.CreateElement('div');
		var showEvery=10;
		var i=1;
		while(i<=150){
			if(i%showEvery==0){
				div.innerHTML+=i;i+=(i+'').length;
			}else{
				div.innerHTML+='&middot;';i++;
			}
		}
		columns.className='columns';
		columns.appendChild(div);
		this.bar.appendChild(columns);
	}
	for(var i=0,lineIndex=this.firstLine;i<lines.length-1;i++,lineIndex++){
		var li=this.CreateElement('LI');
		var span=this.CreateElement('SPAN');
		li.className=(i%2==0)?'alt':'';
		span.innerHTML=lines[i]+'&nbsp;';
		li.appendChild(span);
		this.ol.appendChild(li);
	}
	this.div.innerHTML='';
}
dp.sh.Highlighter.prototype.Highlight=function(code){
	function Trim(str){
		return str.replace(/^\s*(.*?)[\s\n]*$/g,'$1');
	}
	function Chop(str){
		return str.replace(/\n*$/,'').replace(/^\n*/,'');
	}
	function Unindent(str){
		var lines=dp.sh.Utils.FixForBlogger(str).split('\n');
		var indents=new Array();
		var regex=new RegExp('^\\s*','g');
		var min=1000;
		for(var i=0;i<lines.length&&min>0;i++){
			if(Trim(lines[i]).length==0){
				continue;
			}
			var matches=regex.exec(lines[i]);
			if(matches!=null&&matches.length>0){
				min=Math.min(matches[0].length,min);
			}
		}
		if(min>0){
			for(var i=0;i<lines.length;i++){
				lines[i]=lines[i].substr(min);
			}
		}
		return lines.join('\n');
	}
	function Copy(string,pos1,pos2){
		return string.substr(pos1,pos2-pos1);
	}
	var pos=0;
	if(code==null){
		code='';
	}
	this.originalCode=code;
	this.code=Chop(Unindent(code));
	this.div=this.CreateElement('DIV');
	this.bar=this.CreateElement('DIV');
	this.ol=this.CreateElement('OL');
	this.matches=new Array();
	this.div.className='dp-highlighter';
	this.div.highlighter=this;
	this.bar.className='bar';
	this.ol.start=this.firstLine;
	if(this.CssClass!=null){
		this.ol.className=this.CssClass;
	}
	if(this.collapse){
		this.div.className+=' collapsed';
	}
	if(this.noGutter){
		this.div.className+=' nogutter';
	}
	if(this.tabsToSpaces==true){
		this.code=this.ProcessSmartTabs(this.code);
	}
	this.ProcessRegexList();
	if(this.matches.length==0){
		this.AddBit(this.code,null);
		this.SwitchToList();
		this.div.appendChild(this.bar);
		this.div.appendChild(this.ol);
		return;
	}
	this.matches=this.matches.sort(dp.sh.Highlighter.SortCallback);
	for(var i=0;i<this.matches.length;i++){
		if(this.IsInside(this.matches[i])){
			this.matches[i]=null;
		}
	}
	for(var i=0;i<this.matches.length;i++){
		var match=this.matches[i];
		if(match==null||match.length==0){
			continue;
		}
		this.AddBit(Copy(this.code,pos,match.index),null);
		this.AddBit(match.value,match.css);
		pos=match.index+match.length;
	}
	this.AddBit(this.code.substr(pos),null);
	this.SwitchToList();
	this.div.appendChild(this.bar);
	this.div.appendChild(this.ol);
}
dp.sh.Highlighter.prototype.GetKeywords=function(str){
	return'\\b'+str.replace(/ /g,'\\b|\\b')+'\\b';
}
dp.sh.BloggerMode=function(){
	dp.sh.isBloggerMode=true;
}
dp.sh.HighlightAll=function(name,showGutter,showControls,collapseAll,firstLine,showColumns){
	function FindValue(){
		var a=arguments;
		for(var i=0;i<a.length;i++){
			if(a[i]==null){
				continue;
			}
			if(typeof(a[i])=='string'&&a[i]!=''){
				return a[i]+'';
			}
			if(typeof(a[i])=='object'&&a[i].value!=''){
				return a[i].value+'';
			}
		}
		return null;
	}
	function IsOptionSet(value,list){
		for(var i=0;i<list.length;i++){
			if(list[i]==value){
				return true;
			}
		}
		return false;
	}
	function GetOptionValue(name,list,defaultValue){
		var regex=new RegExp('^'+name+'\\[(\\w+)\\]$','gi');
		var matches=null;
		for(var i=0;i<list.length;i++){
			if((matches=regex.exec(list[i]))!=null){
				return matches[1];
			}
		}
		return defaultValue;
	}
	function FindTagsByName(list,name,tagName){
		var tags=document.getElementsByTagName(tagName);
		for(var i=0;i<tags.length;i++){
			if(tags[i].getAttribute('name')==name){
				list.push(tags[i]);
			}
		}
	}
	var elements=[];
	var highlighter=null;
	var registered={};
	var propertyName='innerHTML';
	FindTagsByName(elements,name,'pre');
	FindTagsByName(elements,name,'textarea');
	if(elements.length==0){
		return;
	}
	for(var brush in dp.sh.Brushes){
		var aliases=dp.sh.Brushes[brush].Aliases;
		if(aliases==null){
			continue;
		}
		for(var i=0;i<aliases.length;i++){
			registered[aliases[i]]=brush;
		}
	}
	for(var i=0;i<elements.length;i++){
		var element=elements[i];
		var options=FindValue(element.attributes['class'],element.className,element.attributes['language'],element.language);
		var language='';
		if(options==null){
			continue;
		}
		options=options.split(':');
		language=options[0].toLowerCase();
		if(registered[language]==null){
			continue;
		}
		highlighter=new dp.sh.Brushes[registered[language]]();
		element.style.display='none';
		highlighter.noGutter=(showGutter==null)?IsOptionSet('nogutter',options):!showGutter;
		highlighter.addControls=(showControls==null)?!IsOptionSet('nocontrols',options):showControls;
		highlighter.collapse=(collapseAll==null)?IsOptionSet('collapse',options):collapseAll;
		highlighter.showColumns=(showColumns==null)?IsOptionSet('showcolumns',options):showColumns;
		var headNode=document.getElementsByTagName('head')[0];
		if(highlighter.Style&&headNode){
			var styleNode=document.createElement('style');
			styleNode.setAttribute('type','text/css');
			if(styleNode.styleSheet){
				styleNode.styleSheet.cssText=highlighter.Style;
			}else{
				var textNode=document.createTextNode(highlighter.Style);
				styleNode.appendChild(textNode);
			}
			headNode.appendChild(styleNode);
		}
		highlighter.firstLine=(firstLine==null)?parseInt(GetOptionValue('firstline',options,1)):firstLine;
		highlighter.Highlight(element[propertyName]);
		highlighter.source=element;
		element.parentNode.insertBefore(highlighter.div,element);
	}
}

window.onload = function () {
	dp.SyntaxHighlighter.HighlightAll('code');
}


/// #shBrushJScript.js
dp.sh.Brushes.JScript=function()
{var keywords='abstract boolean break byte case catch char class const continue debugger '+'default delete do double else enum export extends false final finally float '+'for function goto if implements import in instanceof int interface long native '+'new null package private protected public return short static super switch '+'synchronized this throw throws transient true try typeof var void volatile while with';this.regexList=[{regex:dp.sh.RegexLib.SingleLineCComments,css:'comment'},{regex:dp.sh.RegexLib.MultiLineCComments,css:'comment'},{regex:dp.sh.RegexLib.DoubleQuotedString,css:'string'},{regex:dp.sh.RegexLib.SingleQuotedString,css:'string'},{regex:new RegExp('^\\s*#.*','gm'),css:'preprocessor'},{regex:new RegExp(this.GetKeywords(keywords),'gm'),css:'keyword'}];this.CssClass='dp-c';}
dp.sh.Brushes.JScript.prototype=new dp.sh.Highlighter();dp.sh.Brushes.JScript.Aliases=['js','jscript','javascript'];


/// #shBrushJava.js
dp.sh.Brushes.Java=function()
{var keywords='abstract assert boolean break byte case catch char class const '+'continue default do double else enum extends '+'false final finally float for goto if implements import '+'instanceof int interface long native new null '+'package private protected public return '+'short static strictfp super switch synchronized this throw throws true '+'transient try void volatile while';this.regexList=[{regex:dp.sh.RegexLib.SingleLineCComments,css:'comment'},{regex:dp.sh.RegexLib.MultiLineCComments,css:'comment'},{regex:dp.sh.RegexLib.DoubleQuotedString,css:'string'},{regex:dp.sh.RegexLib.SingleQuotedString,css:'string'},{regex:new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b','gi'),css:'number'},{regex:new RegExp('(?!\\@interface\\b)\\@[\\$\\w]+\\b','g'),css:'annotation'},{regex:new RegExp('\\@interface\\b','g'),css:'keyword'},{regex:new RegExp(this.GetKeywords(keywords),'gm'),css:'keyword'}];this.CssClass='dp-j';this.Style='.dp-j .annotation { color: #646464; }'+'.dp-j .number { color: #C00000; }';}
dp.sh.Brushes.Java.prototype=new dp.sh.Highlighter();dp.sh.Brushes.Java.Aliases=['java'];


/// #shBrushCss.js
dp.sh.Brushes.CSS=function()
{var keywords='ascent azimuth background-attachment background-color background-image background-position '+'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top '+'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color '+'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width '+'border-bottom-width border-left-width border-width border cap-height caption-side centerline clear clip color '+'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display '+'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font '+'height letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top '+'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans '+'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page '+'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position '+'quotes richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress '+'table-layout text-align text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em '+'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index';var values='above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double '+'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';var fonts='[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif';this.regexList=[{regex:dp.sh.RegexLib.MultiLineCComments,css:'comment'},{regex:dp.sh.RegexLib.DoubleQuotedString,css:'string'},{regex:dp.sh.RegexLib.SingleQuotedString,css:'string'},{regex:new RegExp('\\#[a-zA-Z0-9]{3,6}','g'),css:'value'},{regex:new RegExp('(-?\\d+)(\.\\d+)?(px|em|pt|\:|\%|)','g'),css:'value'},{regex:new RegExp('!important','g'),css:'important'},{regex:new RegExp(this.GetKeywordsCSS(keywords),'gm'),css:'keyword'},{regex:new RegExp(this.GetValuesCSS(values),'g'),css:'value'},{regex:new RegExp(this.GetValuesCSS(fonts),'g'),css:'value'}];this.CssClass='dp-css';this.Style='.dp-css .value { color: black; }'+'.dp-css .important { color: red; }';}
dp.sh.Highlighter.prototype.GetKeywordsCSS=function(str)
{return'\\b([a-z_]|)'+str.replace(/ /g,'(?=:)\\b|\\b([a-z_\\*]|\\*|)')+'(?=:)\\b';}
dp.sh.Highlighter.prototype.GetValuesCSS=function(str)
{return'\\b'+str.replace(/ /g,'(?!-)(?!:)\\b|\\b()')+'\:\\b';}
dp.sh.Brushes.CSS.prototype=new dp.sh.Highlighter();dp.sh.Brushes.CSS.Aliases=['css'];


/// #shBrushPhp.js
dp.sh.Brushes.Php=function()
{var funcs='abs acos acosh addcslashes addslashes '+'array_change_key_case array_chunk array_combine array_count_values array_diff '+'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+'array_push array_rand array_reduce array_reverse array_search array_shift '+'array_slice array_splice array_sum array_udiff array_udiff_assoc '+'array_udiff_uassoc array_uintersect array_uintersect_assoc '+'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+'parse_ini_file parse_str parse_url passthru pathinfo readlink realpath rewind rewinddir rmdir '+'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+'strtoupper strtr strval substr substr_compare';var keywords='and or xor __FILE__ __LINE__ array as break case '+'cfunction class const continue declare default die do else '+'elseif empty enddeclare endfor endforeach endif endswitch endwhile '+'extends for foreach function include include_once global if '+'new old_function return static switch use require require_once '+'var while __FUNCTION__ __CLASS__ '+'__METHOD__ abstract interface public implements extends private protected throw';this.regexList=[{regex:dp.sh.RegexLib.SingleLineCComments,css:'comment'},{regex:dp.sh.RegexLib.MultiLineCComments,css:'comment'},{regex:dp.sh.RegexLib.DoubleQuotedString,css:'string'},{regex:dp.sh.RegexLib.SingleQuotedString,css:'string'},{regex:new RegExp('\\$\\w+','g'),css:'vars'},{regex:new RegExp(this.GetKeywords(funcs),'gmi'),css:'func'},{regex:new RegExp(this.GetKeywords(keywords),'gm'),css:'keyword'}];this.CssClass='dp-c';}
dp.sh.Brushes.Php.prototype=new dp.sh.Highlighter();dp.sh.Brushes.Php.Aliases=['php'];


/// #shBrushVb.js
dp.sh.Brushes.Vb=function()
{var keywords='AddHandler AddressOf AndAlso Alias And Ansi As Assembly Auto '+'Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate '+'CDec CDbl Char CInt Class CLng CObj Const CShort CSng CStr CType '+'Date Decimal Declare Default Delegate Dim DirectCast Do Double Each '+'Else ElseIf End Enum Erase Error Event Exit False Finally For Friend '+'Function Get GetType GoSub GoTo Handles If Implements Imports In '+'Inherits Integer Interface Is Let Lib Like Long Loop Me Mod Module '+'MustInherit MustOverride MyBase MyClass Namespace New Next Not Nothing '+'NotInheritable NotOverridable Object On Option Optional Or OrElse '+'Overloads Overridable Overrides ParamArray Preserve Private Property '+'Protected Public RaiseEvent ReadOnly ReDim REM RemoveHandler Resume '+'Return Select Set Shadows Shared Short Single Static Step Stop String '+'Structure Sub SyncLock Then Throw To True Try TypeOf Unicode Until '+'Variant When While With WithEvents WriteOnly Xor';this.regexList=[{regex:new RegExp('\'.*$','gm'),css:'comment'},{regex:dp.sh.RegexLib.DoubleQuotedString,css:'string'},{regex:new RegExp('^\\s*#.*','gm'),css:'preprocessor'},{regex:new RegExp(this.GetKeywords(keywords),'gm'),css:'keyword'}];this.CssClass='dp-vb';}
dp.sh.Brushes.Vb.prototype=new dp.sh.Highlighter();dp.sh.Brushes.Vb.Aliases=['vb','vb.net'];


/// #shBrushXml.js
dp.sh.Brushes.Xml=function()
{this.CssClass='dp-xml';this.Style='.dp-xml .cdata { color: #ff1493; }'+'.dp-xml .tag, .dp-xml .tag-name { color: #069; font-weight: bold; }'+'.dp-xml .attribute { color: red; }'+'.dp-xml .attribute-value { color: blue; }';}
dp.sh.Brushes.Xml.prototype=new dp.sh.Highlighter();dp.sh.Brushes.Xml.Aliases=['xml','xhtml','xslt','html','xhtml'];dp.sh.Brushes.Xml.prototype.ProcessRegexList=function()
{function push(array,value)
{array[array.length]=value;}
var index=0;var match=null;var regex=null;this.GetMatches(new RegExp('(\&lt;|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\&gt;|>)','gm'),'cdata');this.GetMatches(new RegExp('(\&lt;|<)!--\\s*.*?\\s*--(\&gt;|>)','gm'),'comments');regex=new RegExp('([:\\w-\.]+)\\s*=\\s*(".*?"|\'.*?\'|\\w+)*|(\\w+)','gm');while((match=regex.exec(this.code))!=null)
{if(match[1]==null)
{continue;}
push(this.matches,new dp.sh.Match(match[1],match.index,'attribute'));if(match[2]!=undefined)
{push(this.matches,new dp.sh.Match(match[2],match.index+match[0].indexOf(match[2]),'attribute-value'));}}
this.GetMatches(new RegExp('(\&lt;|<)/*\\?*(?!\\!)|/*\\?*(\&gt;|>)','gm'),'tag');regex=new RegExp('(?:\&lt;|<)/*\\?*\\s*([:\\w-\.]+)','gm');while((match=regex.exec(this.code))!=null)
{push(this.matches,new dp.sh.Match(match[1],match.index+match[0].indexOf(match[1]),'tag-name'));}}


/// #shBrushBat.js
dp.sh.Brushes.Bat = function()
{
	var keywords =	'ASSOC AT ATTRIB BREAK ' +
				'CACLS CALL CD CHCP CHDIR CHKDSK CHKNTFS CLS ' +
				'CMD COLOR COMP COMPACT CONVERT COPY ' +
				'DATE DEL DIR DISKCOMP DISKCOPY DOSKEY ' +
				'ECHO OFF ENDLOCAL ERASE EXIT ' +
				'FC FIND FINDSTR FOR FORMAT FTYPE ' +
				'GOTO GRAFTABL HELP IF LABEL ' +
				'MD MKDIR MODE MORE MOVE ' +
				'PATH PAUSE POPD PRINT PROMPT PUSHD ' +
				'RD RECOVER REM REN RENAME REPLACE RMDIR ' +
				'SET SETLOCAL SHIFT SORT START SUBST ' +
				'TIME TITLE TREE TYPE ' +
				'VER VERIFY VOL XCOPY';
	this.regexList = [
		{ regex: new RegExp('\'.*$', 'gm'),					css: 'comment' },	// one line comments
		{ regex: dp.sh.RegexLib.DoubleQuotedString,			css: 'string' },	// strings
		{ regex: new RegExp('^\\s*#.*', 'gm'),				css: 'preprocessor' },	// preprocessor tags like #region and #endregion
		{ regex: new RegExp(this.GetKeywords(keywords), 'gm'),	css: 'keyword' }	// c# keyword
		];
	this.CssClass = 'dp-bat';
}
dp.sh.Brushes.Bat.prototype	= new dp.sh.Highlighter();
dp.sh.Brushes.Bat.Aliases	= ['bat', 'BAT','cmd','CMD'];

