All pastes #911079 Raw Edit

寄せ集め

public javascript v1 · immutable
·published 2008-02-20 13:51 UTC
rendered paste body
<SCRIPT type="text/javascript">var bbsid = location.search.replace( /^\?/, "" ) || "bbs";var datapath = "http://ashocan2.hp.infoseek.co.jp/data/" +  bbsid + ".dat";var logpath = "http://ashocan2.hp.infoseek.co.jp/cgi-bin/bbs.cgi";var postpath = "http://ashocan2.hp.infoseek.co.jp/cgi-bin/bbs.cgi";var template ='\<DIV id="a%(id)" class="article">\  <SPAN id="s%(id)" class="subject">%(subject)</SPAN>\  投稿者:<SPAN id="n%(id)" class="name">%(name)</SPAN>\  投稿日:<SPAN id="d%(id)" class="date" onClick="return setMark(%(id));">%(date)</SPAN>\  <SPAN class="button">\    <A href="#" onClick="return openPost(%(id));">■</A>\  </SPAN>\  <SPAN id="r%(id)" style="display:none;">%(rootid)</SPAN>\  <DIV id="m%(id)" class="message" onClick="return setView(%(id));">%(message)</DIV>\</DIV>\';var autoReloadInterval = 10000;var d = document;var last  = "";var auto  = null;var page  = 0;var view  = 0;var mark  = 0;var onform = 0;var log     = new Array();var id_top  = 0;var id_last = 0;var defaultTitle = d.title;//////// 汎用関数function $( id ){	return d.getElementById( id );}function T( t, n ){	return t.replace( /%\((\w+)\)/g, function( w, g ) { return n[g]; } );}function createXmlHttp(){	if ( window.XMLHttpRequest )	{		return new XMLHttpRequest();	}	else	{		try         { return new ActiveXObject( "Msxml2.XMLHTTP" ); }		catch ( e ) { return new ActiveXObject( "Microsoft.XMLHTTP" ); }	}}function windowEvent(){	if ( window.event ) return window.event;	var caller = arguments.callee.caller;	while ( caller )	{		if (			caller.arguments[0] == '[object MouseEvent]' ||			caller.arguments[0] == '[object KeyboardEvent]'		)		return caller.arguments[0];		caller = caller.caller;	}	return null;}function getMouseX(){	var e = windowEvent();	return d.all ? e.clientX + ( d.body.scrollLeft || d.documentElement.scrollLeft ) : e.pageX;}function getMouseY(){	var e = windowEvent();	return d.all ? e.clientY + ( d.body.scrollTop  || d.documentElement.scrollTop  ) : e.pageY;}//////// ポップアップウィンドウfunction openPost( id ){	if ( ! id )	{		if ( $("wPost").msg.value.search( /(^|\n)[^>\s]/ ) == -1 || confirm( "編集中の記事があります。\n破棄してもよろしいですか?" ) )		{			$("wPost").sbj.value = "";			$("wPost").msg.value = "";			$("wPost").fid.value = "";			$("wPost").rid.value = "";			$("wPost").ref.value = "";		}		if ( ! $("sticky").checked )		{			$("wPost").style.top  = getMouseY();			$("wPost").style.left = getMouseX();		}	}	else	{		var sbj = $( "s" + id ).innerHTML;		var nam = $( "n" + id ).innerHTML;		var dat = $( "d" + id ).innerHTML;		var msg = $( "m" + id ).innerHTML;		var rid = $( "r" + id ).innerHTML;		msg = msg.replace( /<A[^<]*参考[^>]*A>/i, "" );		msg = msg.replace( /\n/g, "" );		msg = msg.replace( /<BR>/gi, "\n" );		msg = msg.replace( /<.*?>/g, "" );		msg = msg.replace( /&lt;/g, "<" );		msg = msg.replace( /&gt;/g, ">" );		msg = msg.replace( /^(?:> *){2}.*$/gm, "" );		msg = msg.replace( /\n+/g, "\n" );		msg = msg.replace( /^\n+|\n+$/g, "" );		msg = "> " + msg;		msg = msg.replace( /\n/g, "\n> " ) + "\n\n";		if ( $("wPost").msg.value.search( /(^|\n)[^>\s]/ ) == -1 || confirm( "編集中の記事があります。\n破棄してもよろしいですか?" ) )		{			$("wPost").sbj.value = ">" + nam;			$("wPost").msg.value = msg;			$("wPost").fid.value = id;			$("wPost").rid.value = rid || id;			$("wPost").ref.value = dat;		}		if ( ! $("sticky").checked )		{			$("wPost").style.top  = getMouseY();			$("wPost").style.left = getMouseX() - 200 < 10 ? 10 : getMouseX() - 200;		}	}	$("wPost").style.visibility = "visible";	$("wPost").msg.focus();	if ( $("wPost").msg.createTextRange )	{	  	var tr = $("wPost").msg.createTextRange();	  	tr.move( 'character', $("wPost").msg.value.length );	  	tr.select();	}	else if ( $("wPost").msg.setSelectionRange )	{		$("wPost").msg.setSelectionRange( $("wPost").msg.value.length, $("wPost").msg.value.length );	}	return false;}function closePost(){	$("wPost").blur();	$("wPost").style.visibility = "hidden";	return false;}function openConfig(){	$("wConfig").style.top  = getMouseY();	$("wConfig").style.left = getMouseX() - 100;	$("wConfig").style.visibility = "visible";	return false;}function closeConfig(){	$("wConfig").blur();	$("wConfig").style.visibility = "hidden";	bakeCookie();	applyStyle();	render();	return false;}function openSearch(){	$("wSearch").style.top  = getMouseY();	$("wSearch").style.left = getMouseX() - 100;	$("wSearch").style.visibility = "visible";	$("search").focus();	return false;}function closeSearch(){	$("wSearch").blur();	$("wSearch").style.visibility = "hidden";	$("search").value = "";	render();	return false;}function openLog(){	$("wLog").style.top  = getMouseY();	$("wLog").style.left = getMouseX() - 100;	$("wLog").style.visibility = "visible";	$("log").focus();	return false;}function closeLog(){	$("wLog").blur();	$("wLog").style.visibility = "hidden";	render();	return false;}function resetForm(){	if ( confirm( "本当によろしいですか?" ) )	{		$("wPost").sbj.value = "";		$("wPost").msg.value = "";		$("wPost").fid.value = "";		$("wPost").rid.value = "";		$("wPost").ref.value = "";	}}//////// HTTPfunction reload(){	if ( page > 0 )	{		page = 0;		render();	}	checkUpdate();}function checkUpdate(){	var xmlhttp = createXmlHttp();	xmlhttp.onreadystatechange = function()	{		if ( xmlhttp.readyState == 4 )		{			if ( xmlhttp.status > 10000 ) serverError();			if ( xmlhttp.status == 200 && last != xmlhttp.getResponseHeader( "Last-Modified" ) )			{				getData();			}			xmlhttp = null;		}	}	xmlhttp.open( "HEAD", datapath + "?" + new Date().getTime(), true );	xmlhttp.send( null );	return false;}function getData(){	var xmlhttp = createXmlHttp();	xmlhttp.onreadystatechange = function()	{		if ( xmlhttp.readyState == 4 )		{			if ( xmlhttp.status > 10000 ) serverError();			if ( xmlhttp.status == 200 )			{				var raw = xmlhttp.responseText.split( "\n" );				log = new Array();				for ( var n = 0; n < raw.length; n++ )				{					if ( raw[n].search( /<SYS_TITLE:(.*)>/ ) != -1 )									defaultTitle = RegExp.$1;					if ( raw[n].indexOf( "<>" ) != -1 ) log.push( raw[n] );				}				if ( log.length )				{					d.title = "[!] " + defaultTitle;					last = xmlhttp.getResponseHeader( "Last-Modified" );					id_top  = ( log[ 0 ]             .split( "<>" ) )[1];					id_last = ( log[ log.length - 1 ].split( "<>" ) )[1];					render();				}			}			xmlhttp = null;		}	}	xmlhttp.open( "GET", datapath + "?" + new Date().getTime(), true );	xmlhttp.send( null );	return false;}function getLog(){	var xmlhttp = createXmlHttp();	xmlhttp.onreadystatechange = function()	{		if ( xmlhttp.readyState == 4 )		{			if ( xmlhttp.status > 10000 ) serverError();			if ( xmlhttp.status == 200 )			{				var raw = xmlhttp.responseText.split( "\n" );				log = new Array();				for ( var n = 0; n < raw.length; n++ )				{					if ( raw[n].search( /<SYS_TITLE:(.*)>/ ) != -1 )									defaultTitle = RegExp.$1;					if ( raw[n].indexOf( "<>" ) != -1 ) log.push( raw[n] );				}				if ( log.length )				{					d.title = "[!] " + defaultTitle;					last = xmlhttp.getResponseHeader( "Last-Modified" );					id_top  = ( log[ 0 ]             .split( "<>" ) )[1];					id_last = ( log[ log.length - 1 ].split( "<>" ) )[1];					render();				}				else				{					render();					alert("ありませんでした。");				}			}			xmlhttp = null;			clearInterval( auto );			$("autoreload").checked = false;		}	}	xmlhttp.open( "GET", logpath + "?bbs=bbs&m=l&num=" + $("num").value + "&frmy=" + $("frmy").value + "&frmm=" + $("frmm").value + "&frmd=" + $("frmd").value + "&frmh=" + $("frmh").value + "&frmn=" + $("frmn").value + "&" + new Date().getTime(), true );	xmlhttp.send( null );	return false;}function postData(){	var xmlhttp = createXmlHttp();	xmlhttp.onreadystatechange = function()	{		if ( xmlhttp.readyState == 4 )		{			if ( xmlhttp.status > 10000 ) serverError();			if ( xmlhttp.status == 200 )			{				var res = xmlhttp.responseText;				res.replace( /<ERROR>(.*)<\/ERROR>/g, function( w, g ) { alert( g ); } );				if ( res.indexOf( "<OK>" ) != -1 )				{					getData();					if ( ! $("sticky").checked ) closePost();					$("wPost").sbj.value = "";					$("wPost").msg.value = "";					$("wPost").fid.value = "";					$("wPost").rid.value = "";					$("wPost").ref.value = "";				}				$("submitButton").value = "投稿";				$("submitButton").disabled = false;			}			xmlhttp = null;		}	}	if ( ! checkForm() ) return false;	$("submitButton").value = "処理中...";	$("submitButton").disabled = true;	var query_hash =	{		"bbs" : bbsid,		"nam" : $("wPost").nam.value,		"sbj" : $("wPost").sbj.value,		"msg" : $("wPost").msg.value,		"fid" : $("wPost").fid.value,		"rid" : $("wPost").rid.value,		"ref" : $("wPost").ref.value	};	var query = "m=p";	for ( var key in query_hash )		query += "&" + key + "=" + encodeURIComponent( query_hash[key] );	xmlhttp.open( "POST", postpath, true );	xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );	xmlhttp.send( query );	return false;}function serverError(){	$("info").innerHTML = "サーバーに接続できませんでした。";}function checkForm(){	var r = true;	if ( countByte( $("wPost").nam.value ) > 30 )	{		r = false; alert( "投稿者名が長すぎます。" );	}	if ( countByte( $("wPost").sbj.value ) > 40 )	{		r = false; alert( "題名が長すぎます。" );	}	if ( countByte( $("wPost").msg.value ) > 2000 )	{		r = false; alert( "内容が長すぎます。" );	}	var line = $("wPost").msg.value.split( "\n" );	if ( line.length > 20 )	{		r = false; alert( "内容の行数が多すぎます。" );	}	for ( var i = 0; i < line.length; i++ )	{		if ( countByte( line[i] ) > 160 )		{			r = false; alert( "一行が長すぎます。" ); break;		}	}	if ( $("wPost").msg.value.length == 0 )	{		r = false;	}	return r;}function countByte( str ){	var len = 0;	str = escape( str );	for ( var i = 0; i < str.length; i++, len++ )	{		if ( str.charAt( i ) == "%" )		{			if ( str.charAt( ++i ) == "u" )			{				i += 3; len++;			}			i++;		}	}	return len;}//////// レンダリングfunction render(){	if ( page < 0 ) page = 0;	$("page").innerHTML = page + 1 + "ページ";	var newHtml = "";	var i = 0;	for ( var n = 0; log[i] && n < ( page + 1 ) * $("disp").value; n++, i++ )	{		if ( $("search").value &&			log[i].indexOf( $("search").value ) == -1 )		{			n--; continue;		}		if ( $("filter").value &&			log[i].indexOf( $("filter").value ) != -1 )		{			n--; continue;		}		if ( n >= page * $("disp").value )		{			var logitem = log[i].split( "<>" );			var l =			{				"id"		: logitem[1],				"followid"	: logitem[2],				"rootid"	: logitem[3],				"date"		: logitem[4],				"name"		: logitem[5],				"subject"	: logitem[6],				"message"	: logitem[7],				"reference"	: logitem[8]			};			if ( $("aftermark").checked && l["id"] < mark ) break;			if ( view == 0 ) view = l["id"];			l["message"] = l["message"].replace( /(^|<BR>)(&gt;[^<]*)/ig, '$1<SPAN class="quote">$2</SPAN>' );			l["message"] = l["message"].replace( /(http:\/\/[\w\.\-\/\:\~\#\?\&\;\=\%]*)/g, '<A href="$1" class="url">$1</A>' );			if ( l["reference"] )				l["message"] += '<BR><BR><A href="#" onClick="return jump(' + l["followid"] + ')" class="reference">参考:' + l["reference"] + '</A>';			newHtml += T( template, l );		}	}	if ( ! newHtml.length && page > 0 )	{		page--; render();	}	else	{		$("bbs").innerHTML = newHtml;		if ( $( "a" + view ) )			$( "a" + view ).style.backgroundColor = "#303c6d";		if ( $( "a" + mark ) )			$( "a" + mark ).style.backgroundColor = "#007f7f";	}}function setMark( id ){	mark = ( mark != id ) ? id : 0;	render();}function setView( id ){	view = id;	render();}function page_b(){	page--;	view = 0;	render();	return false;}function page_f(){	page++;	view = 0;	render();	return false;}function article_p(){	if ( view < id_top ) view++;	jump( view );	return false;}function article_n(){	if ( view > id_last ) view--;	jump( view );	return false;}function jump( id ){	$("search").value = "";	page = Math.floor( ( id_top - id ) / $("disp").value );	view = id;	render();	scrollTo( 0, $( "a" + id ).offsetTop - 120 );	return false;}//////// キーボード及びマウスイベントd.onkeydown = function(){	if ( getMouseY() < 0 ) return;	var e = windowEvent();	var s = 1024;	var c = 2048;	var k = e.keyCode + ( e.shiftKey ? s : 0 ) + ( e.ctrlKey ? c : 0 );	if ( ! onform )	{		if      ( k == 37 + c ) { page = 0;                            view = 0; render(); cancel( e ); }		else if ( k == 39 + c ) { page = log.length / $("disp").value; view = 0; render(); cancel( e ); }		else if ( k == 38 || k == 104 || k == 75 || k == 13 + s ) { article_p(); cancel( e ); }		else if ( k == 40 || k ==  98 || k == 74 || k == 13     ) { article_n(); cancel( e ); }		else if ( k == 37 || k == 100 || k == 65 ) { page_b(); cancel( e ); }		else if ( k == 39 || k == 102 || k == 83 ) { page_f(); cancel( e ); }		else if ( k == 70 ) { openSearch(); cancel( e ); }		else if ( k == 77 + c || k == 105 ) {    jump( mark ); cancel( e ); }		else if ( k == 77     || k == 101 ) { setMark( view ); cancel( e ); }		else if ( k == 90 + c ) { openPost( 0    ); cancel( e ); }		else if ( k == 90     ) { openPost( view ); cancel( e ); }	}	else	{		if      ( k == 13 + c || k == 13 + s ) { postData(); cancel( e ); }		else if ( k == 90 + c || k == 19 ) { closePost(); closeSearch(); cancel( e ); }		var focus = d.activeElement || e.target;		if      ( k == 9 + s )		{			if      ( focus.name == "msg" ) $("wPost").sbj.focus();			else if ( focus.name == "sbj" ) $("wPost").nam.focus();			else if ( focus.name == "nam" ) $("wPost").msg.focus();			cancel( e );		}		else if ( k == 9 )		{			if      ( focus.name == "msg" ) $("wPost").nam.focus();			else if ( focus.name == "nam" ) $("wPost").sbj.focus();			else if ( focus.name == "sbj" ) $("wPost").msg.focus();			cancel( e );		}	}	if ( page == 0 ) d.title = defaultTitle;}function cancel( e ){	if ( d.all )	{		e.returnValue = false;		e.cancelBubble = true;	}	else	{		e.preventDefault();		e.stopPropagation();	}}var input = d.getElementsByTagName( 'INPUT' );for ( var i = 0; i < input.length; i++ ){	if ( input[i].type )	{		input[i].onfocus = function() { onform = 1; }		input[i].onblur  = function() { onform = 0; }	}}var input = d.getElementsByTagName( 'TEXTAREA' );for ( var i = 0; i < input.length; i++ ){	input[i].onfocus = function() { onform = 1; }	input[i].onblur  = function() { onform = 0; }}$("wSearch").onmousedown = function(){	var drag_offsetX;	var drag_offsetY;	var e = windowEvent();	if ( e.srcElement != $("wSearch") && e.target != $("wSearch") ) return true;	if ( d.all )	{		drag_offsetX = e.offsetX + 2;		drag_offsetY = e.offsetY + 2;	}	else	{		drag_offsetX = e.pageX - $("wSearch").offsetLeft;		drag_offsetY = e.pageY - $("wSearch").offsetTop;	}	if ( drag_offsetX < $("wSearch").offsetWidth - 40 && drag_offsetY < 30 )	{		d.onmousemove = function()		{			$("wSearch").style.left = getMouseX() - drag_offsetX;			$("wSearch").style.top  = getMouseY() - drag_offsetY;			return false;		}		d.onmouseup   = function() { d.onmousemove = null; }		return false;	}}$("wSearch").onmousemove = function(){	var drag_offsetX;	var drag_offsetY;	var e = windowEvent();	if ( e.srcElement != $("wSearch") && e.target != $("wSearch") ) return true;	if ( d.all )	{		drag_offsetX = e.offsetX + 2;		drag_offsetY = e.offsetY + 2;	}	else	{		drag_offsetX = e.pageX - $("wSearch").offsetLeft;		drag_offsetY = e.pageY - $("wSearch").offsetTop;	}	if ( drag_offsetX < $("wSearch").offsetWidth - 40 && drag_offsetY < 30 )	{		$("wSearch").style.cursor = "move";	}	else	{		$("wSearch").style.cursor = "auto";	}}$("wPost").onmousedown = function(){	var drag_offsetX;	var drag_offsetY;	var e = windowEvent();	if ( e.srcElement != $("wPost") && e.target != $("wPost") ) return true;	if ( d.all )	{		drag_offsetX = e.offsetX + 2;		drag_offsetY = e.offsetY + 2;	}	else	{		drag_offsetX = e.pageX - $("wPost").offsetLeft;		drag_offsetY = e.pageY - $("wPost").offsetTop;	}	if ( drag_offsetX < $("wPost").offsetWidth - 40 && drag_offsetY < 30 )	{		d.onmousemove = function()		{			$("wPost").style.left = getMouseX() - drag_offsetX;			$("wPost").style.top  = getMouseY() - drag_offsetY;			return false;		}		d.onmouseup = function() { d.onmousemove = null; }		return false;	}	if ( drag_offsetX > $("wPost").offsetWidth - 20 && drag_offsetY > $("wPost").offsetHeight - 20 )	{		var resize_offsetX = getMouseX();		var resize_offsetY = getMouseY();		var resize_startX = $("fMessage").offsetWidth;		var resize_startY = $("fMessage").offsetHeight;		var func_mousemove = d.onmousemove;		d.onmousemove = function()		{			var windowWidth  = Math.max( 110, resize_startX + getMouseX() - resize_offsetX );			var windowHeight = Math.max(  60, resize_startY + getMouseY() - resize_offsetY );			resizeForm( windowWidth, windowHeight );			return false;		};		d.onmouseup = function() { d.onmousemove = func_mousemove; }		return false;	}}$("wPost").onmousemove = function(){	var drag_offsetX;	var drag_offsetY;	var e = windowEvent();	if ( e.srcElement != $("wPost") && e.target != $("wPost") ) return true;	if ( d.all )	{		drag_offsetX = e.offsetX + 2;		drag_offsetY = e.offsetY + 2;	}	else	{		drag_offsetX = e.pageX - $("wPost").offsetLeft;		drag_offsetY = e.pageY - $("wPost").offsetTop;	}	if ( drag_offsetX < $("wPost").offsetWidth - 40 && drag_offsetY < 30 )	{		$("wPost").style.cursor = "move";	}	else if ( drag_offsetX > $("wPost").offsetWidth - 20 && drag_offsetY > $("wPost").offsetHeight - 20 )	{		$("wPost").style.cursor = "se-resize";	}	else	{		$("wPost").style.cursor = "auto";	}}d.onmouseover = function(){	if ( page == 0 ) d.title = defaultTitle;}//////// クッキーfunction bakeCookie(){	var hash =	{		"mark"		: mark,		"disp"		: $("disp").value,		"name"		: $("wPost").nam.value,		"formX"		: $("wPost").offsetLeft,		"formY"		: $("wPost").offsetTop,		"formW"		: $("fMessage").offsetWidth,		"formH"		: $("fMessage").offsetHeight,		"sticky"	: $("sticky").checked,		"linkUL"	: $("linkunderline").checked,		"transparent"	: $("transparent").value	};	var query = ""	for ( var key in hash )		query += key + "=" + escape( hash[key] ) + "&";	document.cookie = "kuzuna=" + encodeURIComponent( query ) + "; expires=Thu, 31-Dec-2099 23:59:59 GMT;";}function haveCookie(){	var param = new Object();	document.cookie.search( /kuzuna=([^;]*);?/ );	var query = unescape( RegExp.$1 ).split( "&" );	for ( var i = 0; i < query.length; i++ )	{		query[i].search( /^(.*)=(.*)$/ );		param[ RegExp.$1 ] = unescape( RegExp.$2 );	}	mark = param["mark"] || 0;	$("disp").value = param["disp"] || 10;	$("wPost").nam.value = param["name"] || "";	$("wPost").style.left = param["formX"] || 0;	$("wPost").style.top  = param["formY"] || 0;	$("sticky").checked = param["sticky"] == "true" ? true : false;	$("linkunderline").checked = param["linkUL"] == "true" ? true : false;	$("transparent").value = param["transparent"] || 80;	applyStyle();	resizeForm	(		parseInt( param["formW"] ) || 400,		parseInt( param["formH"] ) || 100	);}function applyStyle(){	$("wPost").style.filter     = "Alpha(opacity=" + $("transparent").value + ")";	$("wPost").style.opacity    = $("transparent").value / 100;	$("wPost").style.MozOpacity = $("transparent").value / 100;	var rule = d.styleSheets[0].rules || d.styleSheets[0].cssRules;	for ( var i = 0; i < rule.length; i++ )	{		if ( rule[i].selectorText == 'A' )		{			rule[i].style.textDecoration = $("linkunderline").checked ? "underline" : "none";		}	}}function resizeForm( w, h ){	$("fName")   .style.width = Math.min( 200, w );	$("fSubject").style.width = Math.min( 200, w );	$("fMessage").style.width  = w;	$("fMessage").style.height = h;	$("wPost").style.width = w + 10;	$("formText").style.display = w < 200 ? "none" : "block";}function setAutoReload(){	if ( $("autoreload").checked )	{		auto = setInterval( checkUpdate, autoReloadInterval );	}	else	{		clearInterval( auto );	}}haveCookie();setInterval( bakeCookie, 5000 );checkUpdate();setAutoReload();</SCRIPT>