function getElementsByClassName(_a,_b){
	var c=[],d=document.getElementsByTagName(_a);
	for(var i=0;i<d.length;i++)
		if(d[i].className==_b) c[c.length]=d[i];
	return c;
}
//
function CSSS(){
	if(!document.styleSheets[0].title) return false;
	var
		ss=document.styleSheets,
		cookie=new function(){
			if(document.domain && document.cookie){
				var fCookie=document.cookie.split("; ");
				for(var i=0;i<fCookie.length;i++){
					var nAd=fCookie[i].split("=");
					this[nAd[0]]=unescape(nAd[1]);
				}
			}
		},
		target="h1",
		dstyle="monotone", // 最初に適用されるスタイルの名前
		Cday="10", // クッキーの有効期限（日）
		path="/"; // クッキーが適用されるパス
	function saveCookie(name,data){
		var Cdays=new Date();
		Cdays.setTime(Cdays.getTime() + 1000*60*60*24*Cday);
		Cdays=Cdays.toGMTString();
		var domain=(document.domain.indexOf("www")!=-1) ? document.domain.replace("www.","") : document.domain;
		document.cookie=name+"="+escape(data)+"; domain="+domain+"; expires="+Cdays+"; path="+path+";";
	}
	this.change=function(style){
		if(style=="load") var style=(cookie["style"]) ? cookie["style"] : dstyle;
		else saveCookie("style",style);
		for(var i=0;i<ss.length;i++){
			if(ss[i].title==style) ss[i].disabled=false;
			else if(ss[i].title) ss[i].disabled=true;
		}
	}
	this.Form=function(){
		var
			target=getElementsByClassName("div","header")[0],
			select=document.createElement("select"),
			p=document.createElement("p");
		p.id="cForm";
		p.style.position="absolute";
		p.style.right="1em";
		p.style.top="0.5em";
		for(var i=0;i<ss.length;i++){
			if(!ss[i].title) continue;
			var option=document.createElement("option");
			option.value=ss[i].title;
			option.insertBefore(document.createTextNode(ss[i].title),option.firstChild);
			if(ss[i].title==cookie["style"]) option.selected="selected";
			else if(!cookie["style"]&& ss[i].title==dstyle) option.selected="selected";
			select.appendChild(option);
		}
		select.onchange=function(){
			CSSS.change(this.value);
		}
		p.appendChild(select);
		target.parentNode.insertBefore(p,target.nextSibling); 
	}
	this.change("load");
}
//引用元を明示するよ
function blockquote(){
	var a=document.getElementsByTagName("blockquote");
	for(var i=0;i<a.length;i++){
		var b=new Array(a[i].getAttribute("cite"),a[i].getAttribute("title"));
		if(!b[0]&&!b[1]) continue;
		else if(b[0] && !b[1]) b[1]=b[0];
		var c=new Array(document.createElement("p"),document.createElement("a"));
		c[0].className="cutation";
		c[0].appendChild(document.createTextNode("引用元："));
		a[i].appendChild(c[0]);
		if(b[0]){
			c[1].href=b[0];
			c[1].appendChild(document.createTextNode(b[1]));
			c[0].appendChild(c[1]);
		}
		else c[0].appendChild(document.createTextNode(b[1]));
	}
}
//ページナビを入れるよ
function makePageNavi(){
	var
		div=document.createElement("div"),
		h2=document.createElement("h2"),
		ul=document.createElement("ul"),
		target=document.getElementsByTagName("h2"),
		flg=false,
		obj=getElementsByClassName("div","section intro")[0];
	h2.appendChild(document.createTextNode("解説一覧"));
	div.appendChild(h2);
	div.className="pageNavi";
	for(var i=0;i<target.length;i++){
		if(target[i].parentNode.parentNode.className=="body"){
			if(i==0) continue;
			var
				li=document.createElement("li"),
				a=document.createElement("a"),
				id=(target[i].id) ? "#"+target[i].id : "#PageNavi"+i;
			if(!target[i].id) target[i].id="PageNavi"+i;
			a.href=id;
			var text="";
			if(!flg){text="の解説"; flg=true;}
			else text="までの解説";
			a.appendChild(document.createTextNode(target[i].firstChild.nodeValue+text));
			li.appendChild(a);
			ul.appendChild(li);
		}
	}
	div.appendChild(ul);
	obj.parentNode.insertBefore(div,obj.nextSibling); 
}
//ページトップへのリンクを挿入するよ
function insertPageTop(){
	var
		obj=getElementsByClassName("div","section");
	obj=obj.concat(getElementsByClassName("div","section deck"));
	for(var i in obj){
		if(obj[i].parentNode.className=="body"){
//			if(i==0) continue;
			var
				a=document.createElement("a"),
				p=document.createElement("p");
			a.href="#top";
			a.appendChild(document.createTextNode("▲Page Top"));
			p.appendChild(a);
			p.className="totop";
			obj[i].appendChild(p);
		}
	}
	document.getElementsByTagName("h1")[0].id="top";
}
function main(){
	CSSS=new CSSS();
	window.onload=function(){
		if(!document.getElementById("index")){
			blockquote();
			insertPageTop();
			if(document.getElementById("deckp")){
//				makePageNavi();
//				insertLinkWiki();
			}
		}
		if(document.styleSheets[0].title) CSSS.Form();
	}
}
main();
