﻿

/*
===========================================================
フォントサイズ変更スクリプト（タイプC）

Last Updated:09/21/2001

insomnia!Web Labo.
http://www3.airnet.ne.jp/insomnia/
http://www3.airnet.ne.jp/insomnia/labo/fsc/fscC.html
===========================================================
*/

/*
========== ::: 初期設定 ::: ==========
*/

// 値の単位を設定（必ずダブルクオートかクオートで括る）
var fontSizeUnit = "px";

// 一回の操作で変化させる値を設定（ダブルクオートやクオートで括らない）
var perOrder = 2;

// 初期状態の値を設定（ダブルクオートやクオートで括らない）
//var defaultSize = 13;
var defaultSize = 15;

// クッキーの名前（必ずダブルクオートかクオートで括る）
var ckName = "FSCc";

// クッキーの有効期限（日）（ダブルクオートやクオートで括らない）
var ckDays = 30;

// クッキーのパス（必ずダブルクオートかクオートで括る。指定が不要の場合は"/"にする）
var ckPath = "/"


// ブラウザチェック用関数
var vN = navigator.appVersion.charAt(0);
var bN = navigator.appName.charAt(0);
var Mac = (navigator.userAgent.indexOf("Mac",0) != -1);
var Win = (navigator.userAgent.indexOf("Win",0) != -1);
var oN= navigator.userAgent.toUpperCase();
var IE = false;
var NS6 = false;
var NS47 = false;
var v;


/*
========== ::: ページ読み込み時の値を設定 ::: ==========
*/

// クッキー読み出し
var fsCK = GetCookie( ckName );

if ( fsCK == null ){
  var currentSize = defaultSize;          //クッキーが無ければ現在の値を初期状態の値に設定
}
else{
  var currentSize = eval( fsCK );          //クッキーがあれば現在の値をクッキーの値に設定
}


/*
========== ::: head内にstyle要素を出力 ::: ==========
*/
document.writeln( '<style type="text/css">' );
document.writeln( 'body { font-size:' + currentSize + fontSizeUnit+ '; background-color: #FFFFFF; color: #333333; margin: 0px;}' );
document.writeln( 'td, p, div, ul { font-size:' + currentSize + fontSizeUnit+ '; font-family: "MS Pゴシック", "Osaka"; color: #333333;}' );
document.writeln( 'h1, h2, h3, h4, h5, h6 { font-size:' + currentSize + fontSizeUnit+ '; font-family: "MS Pゴシック", "Osaka";}' );
document.writeln( 'strong { font-size:' + currentSize + fontSizeUnit+ '; font-family: "MS Pゴシック", "Osaka"; font-weight: bold;}' );
document.writeln( 'sup { font-size:' + currentSize + fontSizeUnit+ ';}' );
document.writeln( 'sub { font-size:' + currentSize + fontSizeUnit+ ';}' );
document.writeln( '.pankuzu { font-size:100%}' );
document.writeln( '.log { font-size:100%}' );
document.writeln( '.mail { font-size:100%}' );
document.writeln( '.small { font-size:100%}' );
document.writeln( '.smaller { font-size:90%}' );
document.writeln( '.big { font-size:140%}' );
document.writeln( '</style>' );




if(oN.indexOf("MSIE") != -1){
	IE = true;
	}
else if(((oN.indexOf("NETSCAPE") != -1) || (oN.indexOf("GECKO") != -1)) && (oN.indexOf("4.7") == -1)){
	NS6 = true;
	}
else
	NS47 = true;


if(Win){
	if(IE){
		cssType = "wie";
		}
	else if (NS6){
		cssType = "wns";
		}

	else if (NS47){
		cssType = "n47";
		}
	}
else if (Mac){
	if(IE){
		cssType = "mie";
		}
	else if (NS6){
		cssType = "mns";
		}
	else if (NS47){
		cssType = "n47";
		}
	}

if(Win && IE){
	var s = oN.indexOf("MSIE ",0) + 5;
	var e = oN.indexOf(";",s);
	v = eval(oN.substring(s,e));
	}

if(Win && IE && (v >= 5.4)){
	flagChk = 3;
	}
else if(document.getElementById) {
	flagChk = 4;
	}
else if(document.all) {
	flagChk = 2
	}
else if(document.layers) {
	flagChk = 1
	}
else{
	flagChk = 0;
	}

function initObj(){
	if(Win && IE && (v >= 5.4)){
		flagChk = 3;
		}
	else if(document.getElementById) {
		flagChk = 4;
		}
	else if(document.all) {
		flagChk = 2
		}
	else if(document.layers) {
		flagChk = 1
		}
	else{
		flagChk = 0;
		}
	}




/*===================================
  [関数 fsc]
  引数CMDに渡される値に応じて
  変更後の値を算出しクッキーに書き込む。
====================================*/

function fsc( CMD ){

  // 拡大：現時点の値に一回の操作で変化させる値を加えて操作後の値"newSize"に代入
/*
  if ( CMD == "larger" ){
    var newSize = Number( currentSize + perOrder );
    SetCookie( ckName , newSize );          //クッキー書き込み
  }
*/
  if ( CMD == "larger" ){
    // 許可する最大サイズ
    //var maxSize = Number( defaultSize + perOrder );

    // 新しく設定（するかもしれない）サイズ
    //var newSize = Number( currentSize + perOrder );
    var newSize = Number( defaultSize + perOrder );

    // 「許可するサイズ」が「新しいサイズ」より「同じか小さい場合のみ」変更を許可する
    //if( maxSize >= newSize ){
        SetCookie( ckName , newSize );          //クッキー書き込み
    //}
  }


  // 縮小：現時点の値から一回の操作で変化させる値を引き操作後の値に代入
/*
  // 現時点のサイズの値が一回の操作で変化させる値と同じならそのまま操作後の値に代入
  if ( CMD == "smaller" ){
    if ( currentSize != perOrder ){
      var newSize = Number( currentSize - perOrder );
      SetCookie( ckName , newSize );          //クッキー書き込み
    }
    else{
      var newSize = Number( currentSize );
    }
  }
*/
  if ( CMD == "smaller" ){
    // 許可する最少サイズ
    //var minSize = Number( defaultSize - perOrder );

    // 新しく設定（するかもしれない）サイズ
    //var newSize = Number( currentSize - perOrder );
    var newSize = Number( defaultSize - perOrder );

    // 「許可するサイズ」が「新しいサイズ」より「同じか大きい場合のみ」変更を許可する
    //if( minSize <= newSize ){
        SetCookie( ckName , newSize );          //クッキー書き込み
    //}
  }

  // 元に戻す：操作後の値を初期値にする
  if ( CMD == "default" ){
    DeleteCookie( ckName );          //クッキー削除
  }

  // ページの再読み込み
  // 再読み込みをすることで変更後の値を反映したstyle要素が出力される
  location.reload();
}

// _______________________________________ end of function fsc() ___ 


/*===================================
  [関数 SetCookie]
  クッキーに値を書き込む
====================================*/
function SetCookie( name , value ){
  var dobj = new Date();
  dobj.setTime(dobj.getTime() + 24 * 60 * 60 * ckDays * 1000);
  var expiryDate = dobj.toGMTString();
  document.cookie = name + '=' + escape(value) + ';expires=' + expiryDate + ';path=' + ckPath;
}

/*===================================
  [関数 GetCookie]
  クッキーを取得する
====================================*/
function GetCookie (name){
  var arg  = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen){
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
    return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break;
  }
  return null;
}

/*===================================
  [関数 getCookieVal]
  クッキーの値を抽出する
====================================*/
function getCookieVal (offset){
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
  endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset,endstr));
}

/*===================================
  [関数 DeleteCookie]
  クッキーを削除する
====================================*/
function DeleteCookie(name){
  if (GetCookie(name)){
    document.cookie = name + '=' +
    '; expires=Thu, 01-Jan-70 00:00:01 GMT;path='+ckPath;
  }
}



function test(){
  document.write('\"stylesheet\" href=\"/css/' + cssType + '.css\" type=\"text/css\"');
}

function test2(){
  document.write('現在のフォントサイズ' + currentSize + fontSizeUnit );
}

function viewSizeBL(){
  // デフォルト
  if ( currentSize == defaultSize ){
    document.writeln( '<li id="switchFontSizeSmall"><a href="#" onclick="fsc(\'smaller\');return false;" onkeypress="fsc(\'smaller\');return false;"><em>s</em></a></li>');
    document.writeln( '<li id="switchFontSizeMedium" class="active"><a class="active" href="#" onclick="fsc(\'default\');return false;" onkeypress="fsc(\'default\');return false;"><em>m</em></a></li>');
    document.writeln( '<li id="switchFontSizeBig"><a href="#" onclick="fsc(\'larger\');return false;" onkeypress="fsc(\'larger\');return false;"><em>l</em></a></li></ul>');
  // 小さい
  }else if( currentSize < defaultSize ){
    document.writeln( '<li id="switchFontSizeSmall" class="active"><a class="active" href="#" onclick="fsc(\'smaller\');return false;" onkeypress="fsc(\'smaller\');return false;"><em>s</em></a></li>');
    document.writeln( '<li id="switchFontSizeMedium"><a href="#" onclick="fsc(\'default\');return false;" onkeypress="fsc(\'default\');return false;"><em>m</em></a></li>');
    document.writeln( '<li id="switchFontSizeBig"><a href="#" onclick="fsc(\'larger\');return false;" onkeypress="fsc(\'larger\');return false;"><em>l</em></a></li></ul>');
  // 大きい
  }else if( currentSize > defaultSize ){
    document.writeln( '<li id="switchFontSizeSmall"><a href="#" onclick="fsc(\'smaller\');return false;" onkeypress="fsc(\'smaller\');return false;"><em>s</em></a></li>');
    document.writeln( '<li id="switchFontSizeMedium"><a href="#" onclick="fsc(\'default\');return false;" onkeypress="fsc(\'default\');return false;"><em>m</em></a></li>');
    document.writeln( '<li id="switchFontSizeBig" class="active"><a class="active" href="#" onclick="fsc(\'larger\');return false;" onkeypress="fsc(\'larger\');return false;"><em>l</em></a></li></ul>');
  }

}


//EOF
