//-----------------------------------------------------
// CSS 切り替えスクリプト（ head 用） Ver.2.03
//  Piro / outsider reflex (http://www.cc-net.or.jp/~piro/)
//
//  使用方法は http://www.cc-net.or.jp/~piro/tips/page/p0024.html を参照のこと
//
//  発想の基本は Dicros! の切り替えスクリプト、
//  Cookie はとほほの WWW 入門と検索で見つけたサンプル（ URI 失念）を
//  参考にしました。
//  三日坊主＋＋の部屋の情報もかなり参考にしてます。
//-----------------------------------------------------
function Setting() {
//-----------------------------------------------------
// 基本設定
//-----------------------------------------------------

StyleRt = 'http://www13.xdsl.ne.jp/~techle/'; // 規準ディレクトリ

// シートの指定
Sheet('all','level0.css');
Sheet('1star','level1.css');
Sheet('2star','level2.css');
Sheet('3star','level3.css');
Sheet('6star','level6.css');

NN4Style = 'none'; // NN4.x 専用のシート（複数指定可）
Xhtml = true; // XHTML の場合は「 true 」、それ以外は「 false 」
Fg.Alt = true; // 選択されなかったシートを代替シートとして出力する場合は「 true 」、出力しない場合は「 false 」

//-----------------------------------------------------
//-----------------------------------------------------
}

// イニシャライズ
var n, m, StyleRt, NN4Style, Xhtml, St = new Array(), Fg = new Array(),
	N = 0, DefN = 1, Param = unescape(location.search),
	N6 = (navigator.userAgent.indexOf('Netscape6') > -1);
function Sheet(Name, Pth, Mda, DefFg, HideFg) {
	if (DefFg) DefN = N;
	St[N] = new Array();
	St[N].name = Name; St[N].path = Pth; St[N].group = ''; St[N].label = Name;
	St[N].media = false; if (Mda) St[N].media = Mda;
	St[N].hidden = HideFg;
	if (Name.indexOf('@') > -1) {
		St[N].group = Name.split('@')[1]; St[N].label = Name.split('@')[0];
	}
	N++;
}
Sheet('Non');
Setting();

var LastN = N, NN4n = N+1, XCls = ''; if (Xhtml) XCls = ' /';
N++; Sheet('With-Style',NN4Style);
for (n = 0; n != N; n++) { Fg[n] = false; }

// Cookie 取得（汎用：CkData['名前'] で各々の値を取得できる）
var Ck = document.cookie, CkDat = new Array(), CkTmp = new Array();
CkTmp = Ck.split(';');
for (n = 0; n != CkTmp.length; n++) {
	CkDat[CkTmp[n].split('=')[0].match(/[^ ].*/)] = CkTmp[n].split('=')[1];
}
function WrtCk(Name, Data, Days) {
	var CkDate = '', Today = new Date();;
	if (Days) {
		Today.setTime(Today.getTime()+1000*60*60*24*Days);
		CkDate = ';expires='+Today.toGMTString();
	}
	document.cookie = Name+'='+Data+';path=/'+CkDate;
}

// 要素の生成（汎用：MkNode('要素名|attr1|value1|attr2|value2...','内容')）
function MkNode(WParam, Content) { if (WParam == '') return(Content);
	var EName = WParam.split('|')[0], AttsStr = '';
	if (WParam.indexOf('|') > -1) {
		var Atts = new Array(); Atts = WParam.split('|');
		for (var AN = 1; AN < Atts.length; AN = AN+2) {
			AttsStr = AttsStr+' '+Atts[AN]+'="'+Atts[AN+1]+'"';
		}
	}
	if (!Content) return('<'+EName+AttsStr+XCls+'>\n');
	return('<'+EName+AttsStr+'>'+Content+'</'+EName+'>\n');
}

// 選択スタイル情報の取得
var Sel = CkDat.Selected; if (!Sel || (!document.layers && Sel == St[NN4n].name)) Sel = St[DefN].name;
for (n = 0; n != LastN; n++) {
	if (Param == '?'+St[n].name) { Sel = St[n].name; break; }
	if (Param == '?'+St[n].name+'-FORCE') { Sel = St[n].name; WrtCk('Selected',Sel,30); break; }
}

// link 要素の生成処理
function MLink(Cur, Name, Pths, Mda) { if (!Pths || Pths == '') return;
	var NameStr = ''; if (Name) NameStr = '|title|'+Name;
	if (!Mda) { Mda = 'all'; if (document.layers) Mda = 'screen'; }
	var LPth, Alt = 'alternate ', SplPths = new Array();
	if (Cur) Alt = ''; SplPths = Pths.split(',');
	for (m = 0; m != SplPths.length; m++) {
		LPth = StyleRt+SplPths[m];
		if (!(!Fg.Alt && !Cur))
			document.write(MkNode('link|type|text/css|rel|'+Alt+'stylesheet|href|'+LPth+'|media|'+Mda+NameStr));
	}
}

// 選択スタイルの判別処理
var NN4Mode = false; if (NN4Style && document.layers) { NN4Mode = true;
	if (NN4Style != 'none' && Sel != St[0].name) {
		Fg[NN4n] = true; MLink(true,St[NN4n].name,NN4Style);
	} else Fg[0] = true;
} else {
	for (n = 0; Sel != St[n].name; n++) { if (!St[n].name || n == NN4n) { n = DefN; break; } }
	Fg[n] = true;
	for (n = 1; n != LastN; n++) { MLink(Fg[n],St[n].name,St[n].path,St[n].media); }
}
