var delay = 16;
var divide = 8;

var timer;

// ページ先頭にスクロール
function scrollToTop() {
	var move;
	var nowY = 0;
	var targetY = 0;
	
	if( timer ){ clearTimeout( timer ); }
	
	if ( document.all ) {
		
		var bodyElement;
		if ( document.body ) {
			bodyElement = document.body;
		}
		if ( document.compatMode && document.compatMode == "CSS1Compat" ) {
			bodyElement = document.documentElement;
		}
		
		if ( bodyElement ) {
			move = nowY = bodyElement.scrollTop;
		} else {
			move = nowY = 0;
		}
		
		//move = nowY = document.body.scrollTop;
		//move = nowY = document.documentElement.scrollTop;
	} else if (window.pageYOffset) {
		move = nowY = window.pageYOffset;
	} else {
		move = nowY = 0;
	}
	
	move += (targetY - nowY) / divide;
	if(move < 0){
		move = 0;
	}
	
	window.scrollTo(0,Math.floor(move));
	
	if(nowY != targetY){
		timer = setTimeout('scrollToTop()',delay);
	}
}

function scrollToAnchor( anchorName, workNowY ) {
	var move;
	var nowY = 0;
	
	if ( document.layers ) {
		targetY = document.layers[ anchorName ].pageY;
	} else if ( document.all ) {
		targetY = document.all.item( anchorName ).offsetTop;
	} else if ( document.getElementById ) {
		targetY = document.getElementById( anchorName ).offsetTop;
	}
	
	if( timer ) { clearTimeout(timer); }
	
	if ( document.all ) {
		
		var bodyElement;
		if ( document.body ) {
			bodyElement = document.body;
		}
		if ( document.compatMode && document.compatMode == "CSS1Compat" ) {
			bodyElement = document.documentElement;
		}
		
		if ( bodyElement ) {
			move = nowY = bodyElement.scrollTop;
		} else {
			move = nowY = 0;
		}
		
		//move = nowY = document.body.scrollTop;
	} else if ( window.pageYOffset ) {
		move = nowY = window.pageYOffset;
	} else {
		move = nowY = 0;
	}
	
	if ( nowY == workNowY ) {
		clearTimeout( timer );
		return;
	}
	
	movedivide = targetY - nowY;
	if ( movedivide < 0 ) {
		move += Math.floor( ( movedivide ) / divide );
	} else {
		move += Math.ceil( ( movedivide ) / divide );
	}

	if( move < 1 ) {
		move = 0;
	}

	window.scrollTo( 0, move );

	if ( nowY != targetY ) {
		timer = setTimeout( "scrollToAnchor('" + anchorName + "'," + nowY + ")", delay );
	} else {
		clearTimeout( timer );
	}
}

var message = "";
function clickIE() {
	if (document.all) {
		return false;
	}
}
function clickNS(e) {
	if (document.layers||(document.getElementById&&!document.all)) {
		if (e.which==2||e.which==3) {
			return false;
		}
	}
}

if (document.layers) {
	document.captureEvents(Event.MOUSEDOWN);
	document.onmousedown=clickNS;
} else {
	document.onmouseup=clickNS;
	document.oncontextmenu=clickIE;
}

var MD5_T = new Array(0x00000000,0xd76aa478,0xe8c7b756,0x242070db,0xc1bdceee,0xf57c0faf,0x4787c62a,0xa8304613,0xfd469501,0x698098d8,0x8b44f7af,0xffff5bb1,0x895cd7be,0x6b901122,0xfd987193,0xa679438e,0x49b40821,0xf61e2562,0xc040b340,0x265e5a51,0xe9b6c7aa,0xd62f105d,0x02441453,0xd8a1e681,0xe7d3fbc8,0x21e1cde6,0xc33707d6,0xf4d50d87,0x455a14ed,0xa9e3e905,0xfcefa3f8,0x676f02d9,0x8d2a4c8a,0xfffa3942,0x8771f681,0x6d9d6122,0xfde5380c,0xa4beea44,0x4bdecfa9,0xf6bb4b60,0xbebfbc70,0x289b7ec6,0xeaa127fa,0xd4ef3085,0x04881d05,0xd9d4d039,0xe6db99e5,0x1fa27cf8,0xc4ac5665,0xf4292244,0x432aff97,0xab9423a7,0xfc93a039,0x655b59c3,0x8f0ccc92,0xffeff47d,0x85845dd1,0x6fa87e4f,0xfe2ce6e0,0xa3014314,0x4e0811a1,0xf7537e82,0xbd3af235,0x2ad7d2bb,0xeb86d391);

var MD5_round1 = new Array(new Array( 0, 7, 1), new Array( 1,12, 2),new Array( 2,17, 3), new Array( 3,22, 4),new Array( 4, 7, 5), new Array( 5,12, 6),new Array( 6,17, 7), new Array( 7,22, 8),new Array( 8, 7, 9), new Array( 9,12,10),new Array(10,17,11), new Array(11,22,12),new Array(12, 7,13), new Array(13,12,14),new Array(14,17,15), new Array(15,22,16));

var MD5_round2 = new Array(new Array( 1, 5,17), new Array( 6, 9,18),new Array(11,14,19), new Array( 0,20,20),new Array( 5, 5,21), new Array(10, 9,22),new Array(15,14,23), new Array( 4,20,24),new Array( 9, 5,25), new Array(14, 9,26),new Array( 3,14,27), new Array( 8,20,28),new Array(13, 5,29), new Array( 2, 9,30),new Array( 7,14,31), new Array(12,20,32));

var MD5_round3 = new Array(new Array( 5, 4,33), new Array( 8,11,34),new Array(11,16,35), new Array(14,23,36),new Array( 1, 4,37), new Array( 4,11,38),new Array( 7,16,39), new Array(10,23,40),new Array(13, 4,41), new Array( 0,11,42),new Array( 3,16,43), new Array( 6,23,44),new Array( 9, 4,45), new Array(12,11,46),new Array(15,16,47), new Array( 2,23,48));

var MD5_round4 = new Array(new Array( 0, 6,49), new Array( 7,10,50),new Array(14,15,51), new Array( 5,21,52),new Array(12, 6,53), new Array( 3,10,54),new Array(10,15,55), new Array( 1,21,56),new Array( 8, 6,57), new Array(15,10,58),new Array( 6,15,59), new Array(13,21,60),new Array( 4, 6,61), new Array(11,10,62),new Array( 2,15,63), new Array( 9,21,64));

function MD5_F(x, y, z) { return (x & y) | (~x & z); }
function MD5_G(x, y, z) { return (x & z) | (y & ~z); }
function MD5_H(x, y, z) { return x ^ y ^ z;          }
function MD5_I(x, y, z) { return y ^ (x | ~z);       }

var MD5_round = new Array(new Array(MD5_F, MD5_round1),new Array(MD5_G, MD5_round2),new Array(MD5_H, MD5_round3),new Array(MD5_I, MD5_round4));

function MD5_pack(n32) {
	return String.fromCharCode(n32 & 0xff) + String.fromCharCode((n32 >>> 8) & 0xff) + String.fromCharCode((n32 >>> 16) & 0xff) + String.fromCharCode((n32 >>> 24) & 0xff);
}

function MD5_unpack(s4) {
	return  s4.charCodeAt(0) | (s4.charCodeAt(1) <<  8) | (s4.charCodeAt(2) << 16) | (s4.charCodeAt(3) << 24);
}

function MD5_number(n) {
	while (n < 0) {
		n += 4294967296;
	}
	while (n > 4294967295) {
		n -= 4294967296;
	}
	return n;
}

function MD5_apply_round(x, s, f, abcd, r) {
	var a, b, c, d;
	var kk, ss, ii;
	var t, u;

	a = abcd[0];
	b = abcd[1];
	c = abcd[2];
	d = abcd[3];
	kk = r[0];
	ss = r[1];
	ii = r[2];

	u = f(s[b], s[c], s[d]);
	t = s[a] + u + x[kk] + MD5_T[ii];
	t = MD5_number(t);
	t = ((t<<ss) | (t>>>(32-ss)));
	t += s[b];
	s[a] = MD5_number(t);
}

function MD5_hash(data) {
	var abcd, x, state, s;
	var len, index, padLen, f, r;
	var i, j, k;
	var tmp;

	state = new Array(0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476);
	len = data.length;
	index = len & 0x3f;
	padLen = (index < 56) ? (56 - index) : (120 - index);
	if (padLen > 0) {
		data += "\x80";
		for (i = 0; i < padLen - 1; i++) {
			data += "\x00";
		}
	}
	data += MD5_pack(len * 8);
	data += MD5_pack(0);
	len  += padLen + 8;
	abcd = new Array(0, 1, 2, 3);
	x = new Array(16);
	s = new Array(4);

	for (k = 0; k < len; k += 64) {
		for (i = 0, j = k; i < 16; i++, j += 4) {
			x[i] = data.charCodeAt(j) |
			(data.charCodeAt(j + 1) <<  8) |
			(data.charCodeAt(j + 2) << 16) |
			(data.charCodeAt(j + 3) << 24);
		}
		for (i = 0; i < 4; i++) {
			s[i] = state[i];
		}
		for (i = 0; i < 4; i++) {
			f = MD5_round[i][0];
			r = MD5_round[i][1];
			for (j = 0; j < 16; j++) {
				MD5_apply_round(x, s, f, abcd, r[j]);
				tmp = abcd[0];
				abcd[0] = abcd[3];
				abcd[3] = abcd[2];
				abcd[2] = abcd[1];
				abcd[1] = tmp;
			}
		}

		for(i = 0; i < 4; i++) {
			state[i] += s[i];
			state[i] = MD5_number(state[i]);
		}
	}

	return MD5_pack(state[0]) + MD5_pack(state[1]) + MD5_pack(state[2]) + MD5_pack(state[3]);
}

function MD5_hexhash(data) {
	var i, out, c;
	var bit128;

	bit128 = MD5_hash(data);
	out = "";
	for (i = 0; i < 16; i++) {
		c = bit128.charCodeAt(i);
		out += "0123456789abcdef".charAt((c>>4) & 0xf);
		out += "0123456789abcdef".charAt(c & 0xf);
	}
	return out;
}

function utf16to8(str) {
	var out, i, len, c;

	out = "";
	len = str.length;
	for(i = 0; i < len; i++) {
		c = str.charCodeAt(i);
		if ((c >= 0x0001) && (c <= 0x007F)) {
			out += str.charAt(i);
		} else if (c > 0x07FF) {
			out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
			out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));
			out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
		} else {
			out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));
			out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));
		}
	}
	return out;
}

function utf8to16(str) {
	var out, i, len, c;
	var char2, char3;

	out = "";
	len = str.length;
	i = 0;
	while(i < len) {
		c = str.charCodeAt(i++);
		switch(c >> 4) { 
		case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
			out += str.charAt(i-1);
			break;
		case 12: case 13:
			char2 = str.charCodeAt(i++);
			out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
			break;
		case 14:
			char2 = str.charCodeAt(i++);
			char3 = str.charCodeAt(i++);
			out += String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0));
			break;
		}
	}

	return out;
}

var md5pwd = 'b569aa91597f1d0a7c400b2d915e2a26';
function auth(pwd) {
	pwd = pwd.toLowerCase();
    pwd = utf16to8(pwd);
    pwd = MD5_hexhash(pwd);
    if(pwd == md5pwd) {
		return true;
    } else {
		alert("パスワードが違います。");
		return false;
	}
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
