// CSS-Change-Script @ snow-materia version. last-update : '04.06.09.


// 設定
var ccs = new Array();	// ←設定の連想配列のグローバル変数. 消すこと禁止.

// スタイルシートを自動で追加する？ 1:する. 0:しない.
ccs['create'] = 1;

// スタイルシートの名前. 下とあわせる. (名前はたぶん日本語でも○)
ccs['title'] = new Array(
	'default','Simple','Green','NewOrleans','no'
);
// スタイルシートのファイル名. 階層が色々なら絶対パス(http://～)で. 空白)ならCSS無し.
ccs['file'] = new Array(
	'http://emptyclub.com/common/default/style.css','http://emptyclub.com/common/brown/style.css','http://emptyclub.com/common/green/style.css','http://emptyclub.com/common/orleans/style.css',''
);


// クッキーの名前
ccs['cname'] = 'emptycss';

// cookieの有効日数. 期限なしなら 0.
ccs['days'] = 60;

// cookieの保存は、0:両方. 1:スタイルを選択したとき保存. 2:ページを切り替えたとき保存.
ccs['unload'] = 1;

// サイトURLのパス部分. (※//www.babu.jp/~useyan/s/ なら /~useyan/s/)
ccs['path'] = '/';

// サイトURLのドメイン部分. (※//www.babu.jp/~useyan/s/ なら www.babu.jp)
ccs['domain'] = 'emptyclub.com';
	// ※空白可. パスあり、ドメイン='auto'なら自動でドメイン取得.


// CSS選択フォームを自動で挿入するときの位置.  0:挿入しない.(手動)
	// 最初にマッチしたキーワードの、1:前に挿入. 2:後に挿入.
	// 最後にマッチしたキーワードの、3:前に挿入. 4:後に挿入.
ccs['posi'] = 4;

// CSS選択フォームを挿入するキーワード(↓ccs['obj']参照). ↑の位置に入ります.
ccs['key'] = 'Menu_Column';
	// →2:タグなら <> は除いてください. (※<address> なら address)

// ↑のキーワードは、 1:id属性. 2:タグ要素. 3:テキスト文字列. 0:指定なし.
ccs['obj'] = 1;
	// ※挿入される選択フォームの位置.
	//   1:その id 要素の中の一番前か後. →idは唯一なのでマッチが最初か最後かは関係なし.
	//   2:そのタグの中の最初か最後.
	//   3:そのテキストの直前か直後.
	//   0:ページ最上部か最下部.(<body>後or</body>前) →キーワード,マッチの前後は関係なし.

// CSS選択フォームの造り.
ccs['tag'] = 'div';	// 選択フォームの前後を挟むタグ. (※<p>なら p. 必ず指定すること)
ccs['id'] = 'styleselect';	// ↑のタグのID. (※<p id="styleselect">なら styleselect)
ccs['class'] = '';	// ↑のタグのクラス. (※<p class="box"> なら box)

ccs['type'] = 'select';	// 選択フォームは select:セレクト, radio:ラジオBOX, ○:inline要素.
ccs['before'] = 'Style:';	// 選択フォームのタグの直前に入れるテキスト.
ccs['after'] = '';	// 同じく、直後に.
ccs['text'] = ' * ';	// type=○のとき、入れるテキスト. '■'とか. 空白ならスタイル名に.
ccs['empty'] = '';	// type=radioのとき、タグ終端に入れる文字. '/'とか.(IE+XHTML+空要素用)

// CSS選択フォームの各スタイルの要素に指定する、style|class. ( : が入るとstyleと認識)
ccs['style'] = new Array(
	'color:#333;background-color:#ddd;','color:#333;','color:#333;background-color:#ddd;','color:#333;'
);


//--> SCRIPT -----------------------------------------------
var d = document;


// main-script
function ccs_main(){
	// css-cookie-get
	ccs['save'] = ccs_getcookie();

	// create-stylesheets
	if(ccs['create']) ccs_create();

	// css-change?
	if(ccs['save'] && navigator.product){	// NN6,7
		d.write('<meta http-equiv="Default-Style" content="'+ccs['save']+'">');
	}else if(ccs['save']){
		ccs_change(ccs['save']);
	}
	// uncss
	if(ccs['save'] && ccs['save'] == ccs['uncss']){
		addEvents(ccs_uncss);
	}
	// css-select-form-insert?
	if(ccs['posi'] > 0){
		if(ccs['ie'] || ccs['obj']==3){
			addEvents(ccs_insert_html);
		}else{
			addEvents(ccs_insert);
		}
	}
	if(ccs['unload'] != 1){ addEvents(ccs_setcookie,'unload',window); }
}


// add-event
function addEvents(func,etype,obj){
	if(!func) return;	if(!etype) etype='load';	if(!obj) obj=window;
	var di = d.implementation;
	if(di && di.hasFeature('HTMLEvents','2.0') && obj.addEventListener){
		obj.addEventListener(etype,func,false);	// DOM2 HTMLEvents OK?
	}else if(obj.attachEvent){
		obj.attachEvent('on'+etype,func);	// WinIE5-6?
	}else{
		var prev = obj['on'+etype];
		obj['on'+etype] = prev ? function(){ func(); prev(); } : func;
	}
}


// stylesheet?
function ccs_true(s){
	var di = d.implementation;
	if(s.title && (s.title == ccs['none'] || s.title == ccs['uncss'])){	// no-css
		return true;
	}else if(di && di.hasFeature('StyleSheets','2.0')){
		var so = s.ownerNode;	// stylesheet-owner
		if(so && so.href && so.type && so.type == 'text/css'){ return true; }
		else{ return false; }
	}else{
		if((s.type && s.type == 'text/css') || 
		   (s.rel && s.rel.match(/stylesheet/i))){ return true; }
		else{ return false; }
	}
}


// css-cookie-get
function ccs_getcookie(){
	var re = new RegExp(ccs['cname']+'=([^;]+)');
	var r = d.cookie.match(re);
	return (r && r[1]) ? unescape(r[1]) : '';
}


// create-stylesheets
function ccs_create(){
	// recognize
	var cls = ccs['ie'] ? d.styleSheets : d.getElementsByTagName('link');
	ccs['css'] = new Array();

	for(var i=0; i<cls.length; i++){
		if(!ccs['ie'] && !ccs_true(cls[i])) continue;	// stylesheet?
		if(cls[i].title) ccs['css'][cls[i].title] = true;
	}

	// create
	if(!ccs['file'] || !ccs['file'].length) return;
	var ccs1 = ccs['title'];
	var ccs2 = ccs['file'];
	for(var i=0; i<ccs1.length; i++){	// set-css
		if(ccs['css'][ccs1[i]]) continue;
		ccs['css'][ccs1[i]] = true;
		if(!ccs2[i] || ccs2[i] == 'un') continue;
		if(ccs['ie']){
			var dc = d.createStyleSheet(ccs2[i]);
			dc.title = ccs1[i];
			dc.disabled = true;
		}else{
			var dc = d.createElement('link');
			dc.rel = (ccs1[i] == ccs['save']) ? 'stylesheet' : 'alternate stylesheet';
			dc.type = 'text/css';
			dc.href = ccs2[i];
			dc.title = ccs1[i];
			d.getElementsByTagName('head').item(0).appendChild(dc);
		}
	}
	if(ccs['ie']) ccs['sss'] = d.styleSheets;
	if(!ccs['css'][ccs['save']]) ccs['save'] = '';
}


// css-change
function ccs_change(ct,csl){
	d = document;
	var cst='';
	if(!ccs['sss'] && (csl==1 || ccs['ie'])) ccs['sss'] = d.styleSheets;

	if(ccs['sss'] && ccs['sss'].length){	// d.styleSheets
		for(var i=0; i<ccs['sss'].length; i++){
			var dis = true;  var ls = ccs['sss'][i];
			if(!ls.title || ls.title == ct){
				dis = false;  if(ls.title) cst = ct;	// on
			}
			ls.disabled = dis;
		}
	}else{	// Gecko-first, opera
		var cls = d.getElementsByTagName('link');
		for(var i=0; i<cls.length; i++){
			var dis = true;  var ls = cls[i];
			if(!ccs_true(ls)) continue;	// stylesheet?
			if(!ls.title || ls.title == ct){
				dis = false;  if(ls.title) cst = ct;	// on
			}
			ls.disabled = dis;
			if(csl != 1 && window.opera && ls.title){
				ccs['opera'][i] = ls;
				var oas = "ccs['opera']["+i+"].rel = 'alternate stylesheet';";
				setTimeout(oas+"ccs['opera']["+i+"].disabled = "+dis,i*10);
			}
		}
	}
	return cst;
}


// css-unuse-css
function ccs_uncss(){
	d = document;
	var cls = d.styleSheets;
	if(!cls || !cls.length){
		cls = d.getElementsByTagName('link');
		for(var i=0; i<cls.length; i++){ if(ccs_true(cls[i])) cls[i].disabled = true; }
		cls = d.getElementsByTagName('style');
	}
	for(var i=0; i<cls.length; i++){ cls[i].disabled = true; }
	return ccs['uncss'];
}


// css-select-form-insert (Node)
function ccs_insert(){
	d = document;
	if(!ccs['sss']) ccs['sss'] = d.styleSheets;	// Gecko
	var cls = ccs['sss'];
	if(!cls || !cls.length) cls = d.getElementsByTagName('link');
	ccs['css'] = new Array();
	var type = ccs['type'];

	// p
	var dl,dc,ds;
	dc = d.createElement(ccs['tag']);
	dc.setAttribute('id',ccs['id']);
	dc.setAttribute('class',ccs['class']);
	dc.appendChild(d.createTextNode(ccs['before']));

	// select-type
	if(type == 'select'){
		// label
		dl = !ccs['nn'] ? d.createElement('label') : d.createElement('span');
		if(!ccs['nn']) dl.setAttribute('for','cssel');	// !NN6,7
		// select
		ds = d.createElement('select');
		ds.setAttribute('id','cssel');
		ds['onchange'] = ccs_selsel;	// onclick-event
	}
	// element
	for(var i=0; i<cls.length+2; i++){
		var cl = (i<cls.length) ? cls[i] : false;
		var st = ccs_checkin(cl,i,cls.length);	if(!st) continue;
		var sc = ccs['ss'][st];
		// radio-type
		if(type == 'radio'){
			// label
			var dl = !ccs['nn'] ? d.createElement('label') : d.createElement('span');
			if(!ccs['nn']) dl.setAttribute('for','cssel'+i);	// !NN6,7
			dl['onclick'] = ccs_selthis;	// onclick-event
			// input
			var de = d.createElement('input');
			de.setAttribute('type','radio');
			de.setAttribute('name','cssel');
			de.setAttribute('value',st);
			de.setAttribute('id','cssel'+i);
			if(sc) de = ccs_elstyle(de,sc);	// style
			if(st == ccs['save']) de.setAttribute('checked','checked');
			dl.appendChild(de);	// label > input
			dl.appendChild(d.createTextNode(st));	// label > input > text
			dc.appendChild(dl);	// p > label > input > text
		// select-type
		}else if(type == 'select'){
			// option
			var de = d.createElement('option');
			de.setAttribute('value',st);
			if(st == ccs['save']) de.setAttribute('selected','selected');
			if(sc) de = ccs_elstyle(de,sc);	// style
			de.appendChild(d.createTextNode(st));
			ds.appendChild(de);	// select > option
		// text-type
		}else{
			// span
			var dl = d.createElement(type);
			dl.setAttribute('title',st);
			dl['onclick'] = ccs_selsel;	// onclick-event
			if(sc) dl = ccs_elstyle(dl,sc);	// style
			var ct = ccs['text'] ? ccs['text'] : st;
			dl.appendChild(d.createTextNode(ct));	// span > text
			dc.appendChild(dl);	// p > span > text
		}
	}
	// select-type
	if(type == 'select'){
		dl.appendChild(ds);	// label > select > option
		dc.appendChild(dl);	// p > label > select > input
	}
	dc.appendChild(d.createTextNode(ccs['after']));

	// object-insert-type
	var da;  var po = ccs['posi'] % 2 ? true : false;
	if(ccs['obj']==1){	// id
		da = d.getElementById(ccs['key']);
	}else if(ccs['obj']==2){	// tags
		var dk = d.getElementsByTagName(ccs['key']);
		if(dk && dk.length) da = ccs['posi'] > 2 ? dk.item(dk.length-1) : dk.item(0);
	}else{	// nothing
		da = d.getElementsByTagName('body').item(0);
		po = ccs['posi'] <= 2 ? true : false;
	}
	if(da) po ? da.insertBefore(dc,da.firstChild) : da.appendChild(dc);
}


// css-select-form-insert (innerHTML)
function ccs_insert_html(){
	d = document;
	if(!ccs['sss']) ccs['sss'] = d.styleSheets;	// Gecko
	var cls = ccs['sss'];
	if(!cls || !cls.length) cls = d.getElementsByTagName('link');
	ccs['css'] = new Array();
	var type = ccs['type'];

	// css-box
	var sel = ccs['before'];

	// select-type
	if(type == 'select'){
		sel += '<label for="cssel">';
		sel += '<select onchange="ccs_select(this)" id="cssel">';
	}
	// element
	for(var i=0; i<cls.length+2; i++){
		var cl = (i<cls.length) ? cls[i] : false;
		var st = ccs_checkin(cl,i,cls.length);	if(!st) continue;
		var sc = ccs['ss'][st];
		if(sc) sc = sc.indexOf(':') >= 0 ? 'style="'+sc+'"' : 'class="'+sc+'"';
		// radio-type
		if(type == 'radio'){
			var ch = st == ccs['save'] ? ' checked="checked" ' : ' ';
			sel += '<label for="cssel'+i+'" onclick="ccs_select(this.firstChild)">';
			sel += '<input class="button" type="radio" name="cssel" id="cssel'+i+'"';
			sel += ' value="'+st+'" '+sc+ch+ccs['empty']+'>'+st+'</label>';
		// select-type
		}else if(type == 'select'){
			var se = st == ccs['save'] ? ' selected="selected"' : '';
			sel += '<option value="'+st+'" '+sc+se+'>'+st+'</option>';
		// text-type
		}else{
			var ct = ccs['text'] ? ccs['text'] : st;
			sel += '<'+type+' title="'+st+'" onclick="ccs_select(this)" ';
			sel += sc+'>'+ct+'</'+type+'>';
		}
	}
	if(type == 'select') sel += '</select></label>';

	sel += ccs['after'];

	// p
	var ctag1 = '<' +ccs['tag']+' id="'+ccs['id']+'" class="'+ccs['class']+'">';
	var ctag2 = '</'+ccs['tag']+'>';
	var selw = ctag1 + sel + ctag2;

	// object-insert-type
	var da;  var po = ccs['posi'] % 2 ? 'afterBegin' : 'beforeEnd';
	if(ccs['obj']==1){	// id
		da = d.all(ccs['key']);
	}else if(ccs['obj']==2){	// tags
		var dk = d.all.tags(ccs['key']);
		if(dk && dk.length) da = ccs['posi'] > 2 ? dk.item(dk.length-1) : dk.item(0);
	}else if(ccs['obj']!=3){	// nothing
		da = d.body;
		po = ccs['posi'] <= 2 ? 'afterBegin' : 'beforeEnd';
	}else{	// string
		var dk = d.body.innerHTML.split(ccs['key']);  if(!dk) return;
		var it = ccs['posi'] > 2 ? dk.length-1 : 1;
		ccs['posi'] % 2 ? dk[it-1] += selw : dk[it] = selw + dk[it];
		d.body.innerHTML = dk.join(ccs['key']);
	}
	if(da && ccs['obj']!=3) da.insertAdjacentHTML(po,selw);
}


// add-element-style
function ccs_elstyle(obj,sty){
	if(sty.indexOf(':') >= 0){	// style
		var ss = sty.split(/\s*;\s*/);
		for (var j=0; j<ss.length; j++){
			var sc = ss[j] ? ss[j].split(/\s*:\s*/,2) : false;
			if(sc) obj.style[sc[0]] = sc[1];
		}
	}else{	// class
		obj.className += sty;
	}
	return obj;
}


// css-box-check-for
function ccs_checkin(sl,j,len){
	var st = sl ? sl.title : false;
	if(j==len && ccs['none']) st = ccs['none'];
	else if(j==len+1 && ccs['uncss']) st = ccs['uncss'];
	else if(!st || ccs['css'][st] || (!ccs['ie'] && !ccs_true(sl))) st = false;
	if(st) ccs['css'][st] = true;
	return st;
}


// this-object
function ccs_selsel() { ccs_select(this); }
function ccs_selthis(){ ccs_select(this.firstChild); }


// css-select-onchange
function ccs_select(obj){
	if(obj) obj = obj.value ? obj.value : obj.title;
	if(!obj || obj == ccs['save']) return;

	// css-ccs_change
	ccs['save'] = obj != ccs['uncss'] ? ccs_change(obj,1) : ccs_uncss();

	// css-cookie-set
	if(ccs['unload'] != 2) ccs_setcookie(ccs['save'],1);

	// NN6,7-radio-check-on/off
	if(ccs['type'] == 'radio' && ccs['nn']){
		var ob = obj.parentNode.parentNode.childNodes;	// radio - label - p - label
		for(var i=0; i<ob.length; i++){
			var o = ob[i].firstChild;
			if(o && o['type'] && o['type'] == 'radio'){
				o.checked = (o['value'] == ccs['save']) ? true : false;
			}
		}
	}
	window.focus();
//	if(navigator.product){ window.history.go(0); }	// Gecko-reload
}


// css-cookie-set
function ccs_setcookie(cst,csl){
	d = document;

	// cookie-style-title
	if(!cst || csl != 1){	// @unload
		var cls = ccs['sss'];
		if(!cls || !cls.length) cls = d.getElementsByTagName('link');
		for(var i=0; i<cls.length; i++){
			if(!ccs['ie'] && !ccs_true(cls[i])) continue;	// stylesheet?
			if(cls[i].title && cls[i].disabled==false){ cst = cls[i].title;  break; }
		}
	}
	if(!cst && ccs['none']) cst = ccs['none'];	// css-none

	// cookie-string
	var ccook = '';
	// domain-pass
	if(ccs['path']){
		if(ccs['domain'] && ccs['domain']!='auto') ccook += '; domain='+ccs['domain'];
		else if(d.domain && ccs['domain']=='auto') ccook += '; domain='+d.domain;
		ccook += '; path=' + ccs['path'];
	}
	// time
	if(ccs['days']){
		var exp = new Date();
		exp.setTime(exp.getTime() + 86400000 * ccs['days']);
		ccook += '; expires=' + exp.toGMTString();
	}
	// cookie-write
	d.cookie = ccs['cname'] + '=' + escape(cst) + ccook;
}


// Disabled-Css-Obj @ Opera
if(window.opera){ ccs['opera'] = new Array();  if(ccs['unload']>1) ccs['unload'] = 0; }


// Browzer-Agent ie? nn? etc?
ccs['ie'] = false;  ccs['nn'] = false;
if(d.all && !window.opera) ccs['ie'] = true;
if(navigator.userAgent.indexOf("Netscape") >= 0) ccs['nn'] = true;


// style with title @ Insert
ccs['ss'] = new Array();
for (var i=0; i<ccs['title'].length; i++){
	ccs['ss'][ccs['title'][i]] = ccs['style'][i];
	if(!ccs['file'][i]){ ccs['none'] = ccs['title'][i]; }
	else if(ccs['file'][i] == 'un'){ ccs['uncss'] = ccs['title'][i]; }
}

// to-main-script
if((d.styleSheets || d.getElementsByTagName)
	&& (d.all || d.getElementById)
	&& navigator.userAgent.indexOf("MSIE 4") < 0
//	&& navigator.userAgent.indexOf("Mac_PowerPC") < 0
){
	ccs_main();	// main-script
}
