/****************************************************************************************************/
/*	Javascript library for VII.WHOpPERL version 3.03												*/
/*		(c) 2001-2010 by FAR/RAKUDA All Rights Reserved Last Modified at 2010-07-26					*/
/****************************************************************************************************/
/**********/
/* Grobal */
/**********/
Node.prototype.insertAfter = function(node, referenceNode)
{
	this.insertBefore(node, referenceNode.nextSibling);
	return node;
};
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
var WSO = WSO || {};
//起動時に実行する関数のリストに関数を追加する
//	WSO.loadFunc = new Array();		//起動時に実行する関数のリスト
	WSO.Onload = function(func)
	{
//		WSO.loadFunc.push(func);
//		window.addEventListener('load',func,false);
		document.addEventListener('DOMContentLoaded',func,false);
	}
//	window.onload = function()
//	{
//		for(var i = 0;WSO.loadFunc[i];i++)
//		{
//			WSO.loadFunc[i]();
//		}
//	};
	// クッキーを設定する
	WSO.SetCookie = function(name,value,days)
	{
		var value = escape(value);
		var expires = new Date();
		if(value != '')
		{ 
			expires.setTime(expires.getTime() + 1000 * 60 * 60 * 24 * days);
		}
		else
		{
			expires.setTime(expires.getTime() - 1000 * 60 * 60 * 24);//値がないときはマイナスの日付
		}
		var path = location.pathname.replace(/\/[^\/]*$/,"");
		document.cookie = name + '=' + value + ((path!='')?('; path=' + path):'') + ((days!=0)?('; expires=' + expires.toGMTString()):';') ;
	}
	// クッキーを取得する
	WSO.GetCookie = function(name)
	{
		var c=document.cookie, a, b;
		if(c.indexOf(name + '=')!=-1)
		{
			a=c.indexOf(name + '=');
			b=c.indexOf(';',a+name.length+1);
			if(b==-1) b=c.length;
			return unescape(c.substring(a+name.length+1,b));
		}
		return '';
	}
	// Query string を取得する
	WSO.GetQueryString = function(name)
	{
		var c=location.search.substr(1), a, b;
		if(c.indexOf(name + '=')!=-1)
		{
			a=c.indexOf(name + '=');
			b=c.indexOf('&',a+name.length+1);
			if(b==-1) b=c.length;
			return unescape(c.substring(a+name.length+1,b));
		}
		return '';
	}
/*__________________________________________________________________________________________*/

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/* WSO Tag を挿入するオプションフォーム生成用クラス                                         */
WSO.TagForm = function(formTitle,formID,formClass,buttonName)
{
	//生成したフォームを追加する
	WSO.TagForm.prototype.setToAll = function(name)
	{
		var formFunction	= (function(myForm){return function(event){myForm.formFunction(event);}})(this);
		this.insertButton	= WSO.CreateTagForm.input('button',this.formID+'StartButton',name);
		this.insertButton.addEventListener('click',formFunction,false);
		this.myForm			= this.myForm || WSO.CreateTagForm.baseFieldset(this.formTitle,this.formID,this.formClass);
		this.myForm.appendChild(this.insertButton);
		this.addButton();
		this.addForm();
	}
	//ボタンを追加する
	WSO.TagForm.prototype.addButton = function()
	{
		var buttonFunction	= (function(myForm){return function(event){myForm.buttonFunction(event);}})(this);
		this.myButton.addEventListener('click',buttonFunction,false);
		WSO.TagForm.addElementToTextarea(this.myButton);
	}
	//フォームを追加する
	WSO.TagForm.prototype.addForm = function()
	{
		this.myForm			= this.myForm || WSO.CreateTagForm.baseFieldset(this.formTitle,this.formID,this.formClass);
		//Enter キー入力時のイベントを追加
		this.myForm.addEventListener('keypress',(function(myForm){return function(event)
		{
			var myTarget = myForm.myForm;
			if(event.keyCode == 13)
			{
				myForm.formFunction(event);	//コマンドを実行
				event.preventDefault();				//Enter キー入力をキャンセル
				return false;
			}
		}})(this),false);
		//コマンドフォームを追加
		WSO.TagForm.addElementToTextarea(this.myForm);
	};
	//ボタンコマンドを変更する
	WSO.TagForm.prototype.setButtonFunction	= function(myFunction)
	{
		this.buttonFunction	= myFunction;
	}
	//フォームコマンドを変更する
	WSO.TagForm.prototype.setFormFunction	= function(myFunction)
	{
		this.formFunction	= myFunction;
	}

	//ベースフォームに要素を追加する
	WSO.TagForm.prototype.appendChild = function(newForm)
	{
		this.myForm			= this.myForm || WSO.CreateTagForm.baseFieldset(this.formTitle,this.formID,this.formClass);
		this.myForm.appendChild(newForm);
	}
	/*----------------------------------------------------------*/
	/* プロパティの設定                                         */
	this.formTitle		= formTitle;		//Form のタイトル
	this.formID			= formID;			//Form の ID
	this.formClass		= formClass;		//Form の class
	this.buttonName		= buttonName;		//ボタン名

	//実行ボタンクリック時の処理
	this.formFunction	= function(){};
	//表示ボタンをクリックした時の処理
	this.buttonFunction	= function(e)
	{
//		if(this.myForm.style.display == 'block') return;
		if(this.myForm.style.visibility == 'visible') return;

		//ベースフォームを表示する
//		this.myForm.style.display="block";
		this.myForm.style.visibility="visible";
		//はじめの input 要素に選択中の文字を代入する
		var inputs =  this.myForm.getElementsByTagName('input');
		for(var i = 0,input;input = inputs[i];i++)
		{
			if(input.getAttribute('type') == 'text')
			{
				input.value = WSO.EditPoint.getSelectText(this.myForm);
				break;
			}
		}

		//他のボタンを押した時の処理
		var buttons = document.getElementsByName('OpenFormButton');
		//フォームを閉じて、別のボタンを押した時のイベントを削除する
		var closeFunc = (function(myForm){return function()
		{
//			myForm.myForm.style.display='none';
			myForm.myForm.style.visibility='hidden';
			for(var i = 0,button;button = buttons[i];i++)
			{
				button.removeEventListener('click',arguments.callee,false);
			}
			myForm.myForm.form.text.focus();
		}})(this);
		//別のボタンをクリックした時
		for(var i = 0,button;button = buttons[i];i++)
		{
			button.addEventListener('click',closeFunc,false);
			//決定ボタンを押した時にクローズ関数を削除する
			this.insertButton.addEventListener('click',closeFunc,false);
			//Enter キーを入力した時にクローズ関数を削除する
			this.myForm.addEventListener('keypress',function(event)
			{
				if(event.keyCode == 13)
				{
					closeFunc();
					return false;
				}
			},true);
		}
	};
//	this.myForm		= WSO.CreateTagForm.baseFieldset(formTitle,formID,formClass);
	this.myButton	= document.createElement('button');
		this.myButton.setAttribute('name','OpenFormButton');
		this.myButton.setAttribute('class','button');
		this.myButton.setAttribute('type','button');
		this.myButton.setAttribute('title',this.formTitle);
//		this.myButton.addEventListener('click',buttonFunction,false);

		var newImage	= document.createElement('img');
		newImage.setAttribute('src',WSO.imagesFolder + this.buttonName + '.png');//画像ファイルの位置はどうする
		newImage.setAttribute('alt','<' + this.buttonName + '>');
		newImage.setAttribute('width','16');
		newImage.setAttribute('height','16');
		this.myButton.appendChild(newImage);

	if(!WSO.TagForm.baseForm)
	{
//		var baseForm = document.createElement('div');
//		WSO.TagForm.baseForm = new Array();
		WSO.TagForm.baseForm = document.createElement('div');;
		var textareas	= document.getElementsByTagName('textarea');
		for(var i = 0,textarea;textarea = textareas[i];i++)
		{
			if(textarea.getAttribute('name') == 'text' && textarea.getAttribute('class') == 'text')
			{
//				textarea.parentNode.insertBefore(baseForm,textarea);
//				WSO.TagForm.baseForm.push(baseForm);
				textarea.addEventListener('focus',(function(textarea)
				{
					return function()
					{
						textarea.parentNode.insertBefore(WSO.TagForm.baseForm,textarea);
					}
				})(textarea),false);
			}
		}
	}

	return this;
}

	/******************/
	/* クラスメソッド */
	/******************/
	/*----------------------------------------------------------*/
	/* テキストエリアの下に要素を追加する                       */
	WSO.TagForm.addElementToTextarea = function(newElement)
	{
//		var baseForms = WSO.TagForm.baseForm;
//		for(var i = 0;baseForms[i];i++)
//		{
//			baseForms[i].appendChild(newElement);
//		}
		WSO.TagForm.baseForm.appendChild(newElement);
//		var textareas	= document.getElementsByTagName('textarea');
//		for(var i = 0,textarea;textarea = textareas[i];i++)
//		{
//			if(textarea.getAttribute('name') == 'text' && textarea.getAttribute('class') == 'text')
//			{
//				textarea.parentNode.appendChild(newElement);
//			}
//		}
	}
/*__________________________________________________________________________________________*/

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/* フォーム要素の生成                                                                       */
WSO.CreateTagForm = WSO.CreateTagForm || {};
	/* fieldset */
	WSO.CreateTagForm.fieldset	= function(legend,id)
	{
		var newFieldset	= document.createElement('fieldset');
		newFieldset.setAttribute('id',id);

		var newLegend	= document.createElement('legend');
		newLegend.appendChild(document.createTextNode(legend));
		newFieldset.appendChild(newLegend);

		return(newFieldset);
	}
	/* ベースとなるフィールドセット */
	WSO.CreateTagForm.baseFieldset	= function(legend,id,myClass)
	{
		var newFieldset	= WSO.CreateTagForm.fieldset(legend,id);
		newFieldset.setAttribute('class',myClass);
		newFieldset.style.background='white';
		newFieldset.style.position='absolute';
//		newFieldset.style.display='none';
		newFieldset.style.visibility='hidden';

		return(newFieldset);
	}
	/* チェックボックス */
	WSO.CreateTagForm.checkbox	=function(legend,id,start,end,labels)
	{
		var newFieldset	= WSO.CreateTagForm.fieldset(legend,id);

		for(var i = start ; i <= end ; i++)
		{
			var newLabel	= document.createElement('label');
			var newInput	= WSO.CreateTagForm.input('checkbox',id,i);
			newLabel.appendChild(newInput);
			if(labels)
			{
				newLabel.appendChild(document.createTextNode(labels[i - start]));
			}
			else
			{
				newLabel.appendChild(document.createTextNode(i));
			}
			newFieldset.appendChild(newLabel);
		}

		return(newFieldset);
	}
	/* 数値セレクトメニュー(name,選択中項目,開始番号,終了番号,[ラベル]) */
	WSO.CreateTagForm.select	= function(name,selected,start,end,labels)
	{
		var newSelect	= document.createElement('select');
		newSelect.setAttribute('name',name);

		for(var i = start ; i <= end ; i++)
		{
			var newOption	= document.createElement('option');
			newOption.setAttribute('value',i);
			if(i==selected)
			{
				newOption.setAttribute('selected','selected');
			}
			if(labels)
			{
				newOption.appendChild(document.createTextNode(labels[i - start]));
			}
			else
			{
				newOption.appendChild(document.createTextNode(i));
			}
			newSelect.appendChild(newOption);
		}

		return(newSelect);
	}
	/* 文字セレクトメニュー(ラベル,name,選択中項目,[データ]) */
	WSO.CreateTagForm.selectText	= function(label,name,selected,labels)
	{
		var newLabel	= document.createElement('label');
		newLabel.setAttribute('id',name);
		newLabel.appendChild(document.createTextNode(label));

		var newSelect	= document.createElement('select');
		newSelect.setAttribute('name',name);

		for(var i = 0 ; i < labels.length ; i++)
		{
			var newOption	= document.createElement('option');
			newOption.setAttribute('value',labels[i]);
			if(labels[i]==selected)
			{
				newOption.setAttribute('selected','selected');
			}
			newOption.appendChild(document.createTextNode(labels[i]));
			newSelect.appendChild(newOption);
		}

		newLabel.appendChild(newSelect);
		return(newLabel);
	}
	/* 日付のフォーム */
	//日時選択
	WSO.CreateTagForm.selectDatetime	= function(legend,id,myDate)
	{
		var newFieldset	= WSO.CreateTagForm.fieldset(legend,id);

		newFieldset.appendChild(WSO.CreateTagForm.selectDateEach('年',	id+'Year',		myDate.getFullYear(),	1973,	2030));
		newFieldset.appendChild(WSO.CreateTagForm.selectDateEach('月',	id+'Month',		myDate.getMonth() + 1,	1,		12	));
		newFieldset.appendChild(WSO.CreateTagForm.selectDateEach('日',	id+'Date',		myDate.getDate(),		1,		31	));
		newFieldset.appendChild(WSO.CreateTagForm.selectDateEach('時',	id+'Hours',		myDate.getHours(),		0,		23	));
		newFieldset.appendChild(WSO.CreateTagForm.selectDateEach('分',	id+'Minutes',	myDate.getMinutes(),	0,		59	));

		return(newFieldset);
	}
	//日付選択
	WSO.CreateTagForm.selectDate	= function(legend,id,myDate)
	{
		var newFieldset	= WSO.CreateTagForm.fieldset(legend,id);

		newFieldset.appendChild(WSO.CreateTagForm.selectDateEach('年',	id+'Year',	myDate.getFullYear(),	1973,	2030));
		newFieldset.appendChild(WSO.CreateTagForm.selectDateEach('月',	id+'Month',	myDate.getMonth() + 1,	1,		12	));
		newFieldset.appendChild(WSO.CreateTagForm.selectDateEach('日',	id+'Date',	myDate.getDate(),		1,		31	));

		return(newFieldset);
	}
	//年月日の選択
	WSO.CreateTagForm.selectDateEach	= function(label,name,selected,start,end)
	{
		var newLabel	= document.createElement('label');
		newLabel.setAttribute('id',name);
		newLabel.appendChild(WSO.CreateTagForm.select(name,selected,start,end));
		newLabel.appendChild(document.createTextNode(label));

		return(newLabel);
	}
	/* 文字に対応する数値選択 */
	WSO.CreateTagForm.selectNumberText	= function(label,name,selected,start,labels)
	{
		var newLabel	= document.createElement('label');
		newLabel.setAttribute('id',name);
		newLabel.appendChild(document.createTextNode(label));
		newLabel.appendChild(WSO.CreateTagForm.select(name,selected,start,start + labels.length - 1,labels));

		return(newLabel);
	}
	/* input */
	WSO.CreateTagForm.input	= function(type,name,value,size)
	{
		var newInput	= document.createElement('input');
		newInput.setAttribute('type',type);
		newInput.setAttribute('name',name);
		newInput.setAttribute('value',value);
		if(size)	{	newInput.size=size;	}

		return(newInput);
	}
	/* input(text) */
	WSO.CreateTagForm.inputText	= function(label,name,value,size,type)
	{
		var newLabel	= document.createElement('label');
		newLabel.appendChild(document.createTextNode(label));
		newLabel.appendChild(WSO.CreateTagForm.input(type||'text',name,value,size));

		var newDiv		= document.createElement('div');
		newDiv.appendChild(newLabel);
		newDiv.setAttribute('id',name);

		return(newDiv);
	}
/*__________________________________________________________________________________________*/

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/* textarea の編集点を操作する                                                              */
WSO.EditPoint = WSO.EditPoint || {};
	/* 編集点に要素を挿入する */
	WSO.EditPoint.insertTag	= function(obj,tag)
	{
		var value	= obj.form.text.value; // textarea 内の内容を変数に
		var start;
		var end	;
		if(value)
		{
			start	= obj.form.text.selectionStart; // textarea 内での選択開始位置
			end		= obj.form.text.selectionEnd; // textarea 内での選択終了位置
			var select	= value.slice(start,end); // 選択範囲を textarea の内容から抜き出す
			obj.form.text.value = value.slice(0,start) + tag + value.slice(end);
		}
		else
		{
			obj.form.text.value = tag;
		}
		obj.form.text.focus();
		if(start)
		{
			//Opera では、 \n 入力後、 \r が検出されてしまうためずれる。
			obj.form.text.setSelectionRange(start+tag.length,start+tag.length);
		}
	};
	/* 選択中のテキストを取得する */
	WSO.EditPoint.getSelectText	= function(obj)
	{
		var start	= obj.form.text.selectionStart; // textarea 内での選択開始位置
		var end		= obj.form.text.selectionEnd; // textarea 内での選択終了位置
		var value	= obj.form.text.value; // textarea 内の内容を変数に
		var select	= value.slice(start,end); // 選択範囲を textarea の内容から抜き出す
		return select;
	};
/*__________________________________________________________________________________________*/

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/* WSO Tag のオプションフォームを簡易なコードで生成する                                     */
WSO.SimpleTagForm = WSO.SimpleTagForm || {};
	/* シンプルフォームを作成する */
	WSO.SimpleTagForm.setForm = function(formName,formID,buttonName,tag,formItems,okButton)
	{
		var newForm	= new WSO.TagForm(formName,formID,'optionform',buttonName);
		newForm.setFormFunction(WSO.SimpleTagForm.makeFunction(tag));
		for(var i = 0;formItems[i];i++)
		{
			newForm.appendChild(WSO.CreateTagForm.inputText(formItems[i][0],'','',formItems[i][1],formItems[i][2]));
		}
		newForm.setToAll(okButton);
		return newForm;
	};
	/* シンプルボタンを追加する */
	WSO.SimpleTagForm.setButton = function(formName,buttonName,tag)
	{
		var newForm	= new WSO.TagForm(formName,'','',buttonName);
		newForm.setButtonFunction
		(
			function(e)
			{
				var value = WSO.EditPoint.getSelectText(newForm.myButton);
				var myTag = tag;
				myTag = myTag.replace(/<<(.+)>>/,value || "$1");
				WSO.EditPoint.insertTag(newForm.myButton,myTag);
			}
		);
		newForm.addButton();
		return newForm;
	};
	/* シンプルフォーム関数 */
	WSO.SimpleTagForm.makeFunction	= function(tag)
	{
		return function(e)
		{
			var myForm = this.myForm;
			var myTag = tag;
			var vars = myTag.match(/<<(.+?)>>/g) || new Array();
			var inputs = myForm.getElementsByTagName('input');
			for(var i = 0;inputs[i];i++)
			{
				myTag = myTag.replace(/<<(.+?)>>/,inputs[i].value || "$1");
				inputs[i]='';
			}

			WSO.EditPoint.insertTag(myForm,myTag);
		};
	}
/*__________________________________________________________________________________________*/

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*	images フォルダの検出	*/
WSO.Onload(function()
{
	var links = document.getElementsByTagName('link');
	for(var i = 0,link;link = links[i];i++)
	{
		if(link.getAttribute('rel') == 'appendix' && link.getAttribute('title') == 'images')
		{
			WSO.imagesFolder = link.getAttribute('href');
		}
	}
});
/*__________________________________________________________________________________________*/

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
WSO.Onload(function()
{
	WSO.SimpleTagForm.setForm('リンク','AnchorForm','anchor','[<<http://far.whochan.com>> <<リンク>>]',[['アドレス',50,'url'],['リンク文字',30]],'挿入');
	WSO.SimpleTagForm.setForm('画像','ImageForm','img','{<<http://far.whochan.com/far.png>>|<<タイトル>>><<代替文字列>>}',[['画像のアドレス',50,'url'],['説明',30],['代替文字',30]],'挿入');

		WSO.SimpleTagForm.setButton('概要区切り'			,'introduction'	,'\n====\n');
		WSO.SimpleTagForm.setButton('水平線'				,'hr'			,'\n----\n');
		WSO.SimpleTagForm.setButton('見出し'				,'h1'			,'\n=<<見出し>>');
		WSO.SimpleTagForm.setButton('中見出し'				,'h2'			,'\n==<<中見出し>>');
		WSO.SimpleTagForm.setButton('小見出し'				,'h3'			,'\n===<<小見出し>>');
		WSO.SimpleTagForm.setButton('リスト要素'			,'ul'			,'\n*<<リスト要素>>');
		WSO.SimpleTagForm.setButton('番号付きリスト要素'	,'ol'			,'\n#<<リスト要素>>');

	WSO.SimpleTagForm.setForm('定義リスト要素','DListForm','dl','\n;<<定義語>> :<<説明>>',[['定義語',30],['説明',50]],'挿入');

		WSO.SimpleTagForm.setButton('引用文'				,'blockquote'	,'\n&gt;<<引用文>>'					);
		WSO.SimpleTagForm.setButton('整形済みテキスト'		,'pre'			,'\n\n\n<<整形済みテキスト>>\n\n\n'	);
		WSO.SimpleTagForm.setButton('語句の強調'			,'em'			,'[!<<語句の強調>>!]'				);
		WSO.SimpleTagForm.setButton('重要な語句'			,'strong'		,'[$<<重要な語句>>$]'				);
		WSO.SimpleTagForm.setButton('特殊な語句'			,'i'			,'[/<<特殊な語句>>/]'		);
		WSO.SimpleTagForm.setButton('語意の区別'			,'b'			,'[%<<語意の区別>>%]'					);
		WSO.SimpleTagForm.setButton('注目語句'				,'mark'			,'[`<<注目語句>>`]'					);
	WSO.SimpleTagForm.setForm('引用語','QuoteForm','q','[\'=<<引用元名>>=|<<引用元アドレス>>|<<引用語>>\']',[['引用元名',30],['URI',50],['引用語',30]],'挿入');
		WSO.SimpleTagForm.setButton('内容の追加'			,'ins'			,'[+<<追加内容>>+]'					);
		WSO.SimpleTagForm.setButton('内容の削除'			,'del'			,'[-<<削除内容>>-]'					);
		WSO.SimpleTagForm.setButton('引用元'				,'cite'			,'[|<<引用元>>|]'					);
		WSO.SimpleTagForm.setButton('定義語'				,'dfn'			,'[;<<定義語>>;]'					);
		WSO.SimpleTagForm.setButton('プログラムコード'		,'code'			,'[,<<プログラムコード>>,]'			);
		WSO.SimpleTagForm.setButton('変数'					,'var'			,'[#<<変数名>>#]'					);
		WSO.SimpleTagForm.setButton('キーボード入力文字'	,'kbd'			,'[*<<キーボード入力文字>>*]'		);
		WSO.SimpleTagForm.setButton('出力サンプル'			,'samp'			,'[:<<出力サンプル>>:]'				);
	WSO.SimpleTagForm.setForm('略語','AbbrFrom','abbr'	,'[==<<元の言葉>>=<<略語>>=]',[['元の言葉',50],['略語',30]],'挿入');
		WSO.SimpleTagForm.setButton('上付き文字'			,'sup'			,'[^<<上付き文字>>^]'				);
		WSO.SimpleTagForm.setButton('下付き文字'			,'sub'			,'[_<<下付き文字>>_]'				);
		WSO.SimpleTagForm.setButton('注釈・余談'			,'small'		,'[.<<注釈・余談>>.]'				);
	WSO.SimpleTagForm.setForm('汎用要素','SpanForm','span','[?.<<クラス名>>.<<内容>>?]',[['クラス名',30],['内容',30]],'挿入');
});
/*__________________________________________________________________________________________*/

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/* cite属性をリンクに変換する                                                               */
WSO.Onload(function()
{
	function make_link_by_cite(tag)
	{
		var element = document.getElementsByTagName(tag);
		for(var i = 0; i < element.length; i++)
		{
			if(element[i].getAttribute('cite'))
			{
				var cite	= element[i].getAttribute('cite');
				var title	= element[i].getAttribute('title') || cite;
				var a		= document.createElement('a');
				a.setAttribute('href',cite);
				a.setAttribute('title',title);
				a.appendChild(document.createTextNode(title));
				element[i].appendChild(document.createTextNode(' by '));
				element[i].appendChild(a);
			}
		}
	}
	make_link_by_cite('blockquote');
	make_link_by_cite('q');
	make_link_by_cite('ins');
	make_link_by_cite('del');
});
/*__________________________________________________________________________________________*/
