//-----------------------------------------------------------
//
//   change font size
//			cookie name : csw
//			property(1) : fontSize [0, 1, 2] <-- [小,中,大]
//----------------------------------- Nov.11.2011

$(document).ready(function(){
	var href_fontSize = ["csw_fontSizeSmall.css", "csw_fontSizeNormal.css", "csw_fontSizeLarge.css"];	// fontSizeの小、中、大の順に、style sheet名配列を宣言
	var buttonNum;	// clicked fontSize Button number
	var cookie;	// cookie for work
	var i;  		// for work
	
	// htmlが表示され文字ボタンがクリックされるまでの間のstyle sheet切替
	// cookieに「fontSize」が存在し、かつその値が"1"(htmlロード直後のstyle)でなかったら、その値のstyleSheetを指定、それ以外は何もしない。
	cookie = new Cookie("csw");	// Cookieコンストラクタ関数を呼び出す（下記）
	if (("fontSize" in cookie) && (cookie.fontSize != 1)) {	
		$("link#changeFontSize").attr("href", "css/" + href_fontSize[cookie.fontSize]);

		// cookie.fontSize番目のボタンを濃いブルーにして、cookie.fontSize番目以外のボタンを淡い色にする
		$("ul#ul_fontSize li").each(function(i){
			if ($(this).hasClass('currentSize'))  $(this).removeClass('currentSize');
			if (i == cookie.fontSize) $(this).addClass('currentSize');
		});
	}
	// 文字サイズ切替ボタンにクリック・リスナーを設定する
	$("ul#ul_fontSize li").click(function(){
	
		// 今、buttonNum番目のボタンが押下された
		buttonNum = $("ul#ul_fontSize li").index(this);
  		
		// hrefをbuttonNum番目のstyle sheetで置換する
		$("link#changeFontSize").attr("href", "css/" + href_fontSize[buttonNum]);
  		
		// buttonNum番目のボタンを濃いブルーにして、buttonNum番目以外のボタンを淡い色にする
		$("ul#ul_fontSize li").each(function(i){
			if ($(this).hasClass('currentSize'))  $(this).removeClass('currentSize');
			if (i == buttonNum)  $(this).addClass('currentSize');
		});
	
		// cookieを作成（置換）する
		cookie = new Cookie("csw");	// Cookieコンストラクタ関数を呼び出す（下記）
		cookie.fontSize = buttonNum;
		cookie.store(365);	// 有効期間365日でcookieを格納する

		// reload iframe (iframeコンテンツの文字サイズ変更)
		$("iframe.iframe_class").each(function(){this.contentWindow.location.reload();});
	});
});

/*******************************************/
/*    Cookie()コンストラクタ関数           */
/*******************************************/
// この関数は、「JavaScript 第5版／P.484」（O'reilly）を引用しています。

function Cookie(name) {
	this.$name = name;		// このクッキーの名前
	
	// ドキュメントの全クッキーリストを作成
	var allcookies = document.cookie;
	if (allcookies == "") return;
	
	// 個々のクッキーに分割し、今回使用するクッキーを探す
	var cookies = allcookies.split(';');
	var cookie  = null;
	for (i = 0; i < cookies.length; i++) {
		if (cookies[i].substring(0, name.length+1) == (name + "=")) {
			cookie = cookies[i];
			break;
		}
	}
	
	// クッキーが見つからなかった場合は、ここで終了
	if (cookie == null) return;
	
	var cookieval = cookie.substring(name.length+1);	// 等号の後ろ部分
	
	// 個々の「状態変数の名前／値のペア」に分割する。
	// 「名前と値のペア」は & で区切られ、名前と値自体はコロンで区切る。
	var a = cookieval.split('&');		// 「名前と値のペア」の配列に分割
	for (var i = 0; i < a.length; i++) {
		a[i] = a[i].split(':');			// 「名前と値を分割したペア」の配列を作成
	}
	
	// cookieオブジェクトのプロパティに設定
	for (var i = 0; i < a.length; i++) {
		this[a[i][0]] = decodeURIComponent(a[i][1]);
	}
}

/*******************************************/
/*    Cookieオブジェクトのstore()メソッド  */
/*******************************************/
//
//  daysToLive: クッキーの有効期間を日数で指定する
//  path      : クッキーのpath属性の値
//  domain    : クッキーのdomain属性の値
//  secure    : trueであればクッキーのsecure属性が指定される
//
Cookie.prototype.store = function(daysToLive, path, domain, secure) {
	// Cookieの各プロパティを一つにまとめクッキー値にする。
	// クッキーは等号とセミコロンを区切り文字として使用するので、
	// ここではコロンと & 記号を使って「状態変数」を区切り、一つのクッキー値にまとめる。
	// 句読点文字などそのままでは格納できない文字があるので、プロパティ値はエンコードしておく。
	
	var cookieval = "";
	for (var prop in this) {			// this はCookie()コンストラクタで生成したクッキー、propはthis[a[i][0]]に当る
		// メソッドや$で始まる名前（$nameがある）のプロパティは無視
		if ((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function')) continue;
		if (cookieval != "") cookieval += '&';			// 次の式で格納された「名前と値のペア」の直後に & を追加
		cookieval += prop + ':' + encodeURIComponent(this[prop]);
	}
	
	// 完全なクッキー（名前=値）を作る
	var cookie = this.$name + '=' + cookieval;
	
	// パラメータの指示に従って他のクッキー値を追加する
	if (daysToLive || daysToLive == 0)　cookie += "; max-age=" + (daysToLive*24*60*60);
	if (path)   cookie += "; path="   + path;
	if (domain) cookie += "; domain=" + domain;
	if (secure) cookie += "; secure";
	
	// クッキーを格納する
	document.cookie = cookie;
}

