var uaStr = navigator.userAgent;
if(uaStr.match(/ Safari/)){
document.write("<link href='./CSS/css01.css' rel='stylesheet' title='For N4' type='text/css'>");
}else{
	var _name = 'CSS';

   function CSSFunc() { this.init(); }

   CSSFunc.prototype = {

// rootPath : 'http://www.shiga-roudou.go.jp/',
 rootPath : './',

           initSheets : function() {
	 
     this.setSheet('文字の大きさ「標準」', 'CSS/css01.css', 'screen, print');

     this.setSheet('文字の大きさ「大」', 'CSS/css02.css', 'screen, print');
	 
     this.setSheet('文字の大きさ「最大」', 'CSS/css03.css', 'screen, print');

	}
, 

// NN4.x 専用のシートのパス（複数指定可）NN対策? maruko3.css(基本スタイルだけ指定する。?)
	NN4Sheets   : 'none',

// 選択されなかったシートを代替シートとして出力する場合は「 true 」..?
	modeAlt     : false,

// 選択シート情報のクッキーの保持期限（日）
	cookieLimit : 3,
        // 元の指定 : 30, 2007-03-25変更

// シートの選択リスト中で、デフォルトのシート名の後に表示する文字列 (Default)
	defaultStr  : '',
        // Default CSS shitei　任意選択 &#8658;

// Cookie の保存パス（無指定だと「/」）
	cookiePath  : '/',

// 選択フォームのアクセスキー (S):もとのキー
	formAccesskey : 'X',

// 「スタイル有り」の名前（NN4.xで使用）maruko3.css (基本スタイルだけ指定する。?)(step 1)
	name_wtstyle  : 'With-Style',

// ↓↓↓↓↓↓↓↓↓↓↓↓実行部↓↓↓↓↓↓↓↓↓↓↓

	init : function() {
		this.C  = new CookieFunc();
		this.UA = new UAFunc();

		this.sheets = [];

		this.counter       = 0;
		this.defaultIndex  = 0;
		this.forceIndex  = -1;
this.formContainer = (document.layers) ? 'form|name|StyleSelForm|action|' : '' ;
this.param = unescape(location.search).match(/[^?]*$/).toString().replace(/-FORCE.*/, '');
	},

	// スタイルの判別及び link 要素の出力
	writeHeader : function() {

		this.initSheets();
		this.NN4Num = this.setSheet(this.name_wtstyle, this.NN4Sheets);

		// 選択スタイルの情報を取得（ with Cookie ）
this.selectedId = (this.C.getValue('Selected')) ? this.C.getValue('Selected') :
this.sheets[this.defaultIndex].id ;
		if (this.sheets[this.param] > -1) {
		this.selectedId = this.param;
	if (/.*-FORCE#?.*/.test(location.search)) this.putCookie(this.param);
		}

		// スタイル判別と link 要素の出力
		if (this.UA.NN4) {
			if (this.NN4Sheets != 'none' &&
				this.selectedId == this.sheets[this.NN4Num].id) {
				this.sheets[this.NN4Num].selected = true;
				this.makeLink(true, this.sheets[this.NN4Num].id, this.NN4Sheets);
			} else this.sheets[0].selected = true;
		} else {
			var i = (this.forceIndex > -1) ? this.forceIndex :
				(this.sheets[this.selectedId] >= 0) ? this.sheets [this.selectedId] :
			this.defaultIndex ;
			this.sheets[i].selected = true;
			for (i = 0; i != this.NN4Num; i++)
			this.makeLink(this.sheets[i].selected, this.sheets[i].id,
this.sheets[i].path, this.sheets[i].media);
		}
	},

	// linking stylesheet
	makeLink : function(selected, title, paths, media) {
		if (!paths) return;

		var altStr = (selected) ? '' : 'alternate ' ,
			attsStr = (title) ? '|title|'+title : '' ,
			splitedPaths = paths.split(','),
			path;
		attsStr += (media) ? '|media|'+media : '' ;

		var PI,
			PIvalue = ' type="text/css"'+
				(media ? ' media="'+media+'"' : '')+
				(selected ? ' alternate="yes"' : '')+
				(title ? ' title="'+title+'"' : '');

		for (var i in splitedPaths) {
		path = (splitedPaths[i].match(/^[^\/]+:\/\//)) ? splitedPaths[i] : this.rootPath+splitedPaths[i] ;
			if (this.modeAlt || selected) {
				document.write(
					makeNode('link|type|text/css|rel|'+altStr+'stylesheet|href|'+path+attsStr)
				);
			}
		}
	},


	// 選択フォームの出力
	writeForm : function() {
		var label_content   = '',
			key_label       = '';

// フォームラベル+スペース+フォーム 2005-06-29

	if (this.formLabel) label_content = this.formLabel+' ';

// フォームラベル+スペース+フォーム 2005-06-29

	if (this.formAccesskey)
		key_label = '|accesskey|'+this.formAccesskey;

this.styleForm = (this.forceIndex > -1 ||
                 (this.UA.NN4 && this.NN4Sheets == 'none')) ? '' :
			makeNode('div|id|StyleSel',
				makeNode('label'+key_label,
					label_content+
					makeNode('select|id|Styles|name|Styles|onchange|'+_name+'.formApply(this);',
            this.makeOptions())
					)
				);

	document.write(makeNode(this.formContainer, this.styleForm));
	},

                // +this.formAccesskey (アクセスキーの設定を追加するとき)

	// 送信
	formApply : function(obj) {
	this.putCookie(this.sheets[obj.options[obj.selectedIndex].value].id);
		location.href = location.href.match(/^[^#?]*/);
	},

	putCookie : function(value) {
	this.C.setValue('Selected', value, this.cookieLimit, this.cookiePath);
	},

	makeOptions : function() {
		var options = '',
			selectContent = '';

		if (this.UA.NN4) selectContent = this.makeOption(this.NN4Num);
		else {
			for (var n = 0; n != this.NN4Num; n++) {
				options += this.makeOption(n);
			if (this.sheets[n].group != this.sheets[n+1].group ||
					n == this.NN4Num-1) {
     selectContent += (options && this.sheets[n].group && !this.UA.NS6) ?
     makeNode('optgroup|label|'+this.sheets[n].group, options) : options ;
					options = '';
				}
			}
		}

		return(selectContent);
	},

	makeOption : function(num) {
	if (this.sheets[num].hidden) return '';
	var selAtt = (this.sheets[num].selected) ? '|selected|selected' : '' ;
	var defStr = (num == this.defaultIndex) ? this.defaultStr : '' ;
	return(makeNode('option|value|'+num+'|label|'+this.sheets[num].label+selAtt,
        this.sheets[num].id+defStr));
	},

	// シート定義
	setSheet : function(label, path, media, flags) {
		var n = this.counter;
		if (flags && flags.match(/\bdefault\b/i)) this.defaultIndex = n;
		if (flags && flags.match(/\bforce\b/i)) this.forceIndex = n;

		this.sheets[n] = new Array();

		this.sheets[label]      = n;
		this.sheets[n].id       = this.sheets[n].label = label;
		this.sheets[n].path     = path;
		this.sheets[n].group    = '';
		this.sheets[n].media    = (media) ? media : false ;
		this.sheets[n].selected = false;
		if (/.*@.*/.test(label)) {
			this.sheets[n].label = label.match(/^[^@]*/);
			this.sheets[n].group = label.replace(/^[^@]*@/, '');
		}
		this.sheets[n].hidden   = (flags && flags.match(/\bhidden\b/i));

		return this.counter++;
	}
       }


// UA 判別（汎用）
function UAFunc() {
	var uaStr = navigator.userAgent;
	
	this.IE6  = (uaStr.match(/ MSIE 6/));
	this.IE55 = (uaStr.match(/ MSIE 5.5/));
	this.IE5  = (uaStr.match(/ MSIE 5/) && !this.IE55);
	this.NS60 = (uaStr.match(/Netscape6\/6\.0/));
	this.NS6  = (uaStr.match(/Netscape6\/6\./));
	this.Moz  = (uaStr.match(/Gecko/));
	this.NN4  = (document.layers);

	this.geckoVer = (this.Moz || this.NS6 || this.NS60) ?
        parseFloat(uaStr.match(/Gecko\/\d{8}/).toString().substring(6, 14)) : -1 ;

	this.MacIE5  = (uaStr.match(/ Mac/) && this.IE5);
	this.overIE5 = (this.IE6 || this.IE55 || this.IE5);
	this.IE4     = (!this.overIE5 && document.all);

       }


// クッキー関係の処理（汎用）
function CookieFunc() {
	this.cookieStr = (document.cookie) ? document.cookie.split(';') : [] ;

	this.getValue = function(name) {
		var cookie = this.cookieStr;
		for (var i = 0; i < cookie.length; i++) {
		if (cookie[i].split('=')[0].replace(/^\s+|\s+$/g, '') == name)
                return unescape(cookie[i].split('=')[1].replace(/^\s+|\s+$/g, ''));
		}
		return '';
	};

	this.setValue = function(name, data, limit, path) {
		if (!path) path = '/';

		if (!limit) limit = 0;
		var today = new Date();
			today.setTime(today.getTime()+1000*60*60*24*limit);
		var date = ';expires='+today.toGMTString();

		document.cookie = name+'='+escape(data)+';path='+path+date;
	};
       }


// 要素を生成（汎用）
function makeNode(param, content) {
	if (!param) return content;
	var element = param,
		attsStr = '';
	if (param.match(/\|/)) {
		var atts = param.split('|');
		element = atts[0];
		for (var i = 1; i < atts.length; i += 2)
			attsStr += ' '+atts[i]+'="'+atts[i+1]+'"';
	}
	return (!content) ?
		'<'+element+attsStr+' />\n' :
		'<'+element+attsStr+'>'+content+'<\/'+element+'>\n' ;
       }

     eval('var '+_name+' = new CSSFunc();'+_name+'.writeHeader();');
}
