﻿// 本体HTMLがUTF-8なのでUTF-8(BOM付)に変換したらIE6でも文字拡大対応できました

// JavaScript Document

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


//メニューの位置固定  bodyタグに「onload="FM_left('flow_menu',5,5)」を入れる
	function browserCheck(){ 
		this.ver=navigator.appVersion
		this.agent=navigator.userAgent
		this.dom=document.getElementById?1:0
		this.opera6=((this.agent.indexOf("Opera 6")>-1) && this.dom)?1:0;
		this.ie5=((this.ver.indexOf("MSIE 5")>-1) && this.dom && !this.opera6)?1:0; 
		this.ie6r=((this.ver.indexOf("MSIE 6")>-1) && this.dom && (document.compatMode == "BackCompat"))?1:0;
		this.ie6s=((this.ver.indexOf("MSIE 6")>-1) && this.dom && (document.compatMode == "CSS1Compat"))?1:0;
		this.ie4=(document.all && !this.dom)?1:0;
		this.ie=(this.ie4||this.ie5||this.ie6r||this.ie6s)?1:0;
		this.mac=(this.agent.indexOf("Mac")>-1)?1:0;
		this.ns6=(this.dom && (parseInt(this.ver) >= 5)) ?1:0; 
		this.ns4=(document.layers && !this.dom)?1:0;
		this.ns=(this.ns4||this.ns6)?1:0;
		this.bw5=(this.ie5||this.ie6r)?1:0;
		this.bw6=(this.ie6s||this.ns6||this.opera6)?1:0;
		this.bw=(this.ie6r||this.ie6s||this.ie5||this.ns6||this.opera6)?1:0;
		return this;
	}
	
	// Global Variables
	var ENMarginTop, ENMarginBottom, ENTop;
	var ENDivname, ENObject, ENCurrentY;
	
	function FM_left(id, mt, mb, tp) // DIVid, margin-top, margin-bottom, position-top,
	{
		bw=new browserCheck;
		if (bw.bw) {
			ENDivname = bw.bw5 ? document.all(id) : bw.bw6 ? document.getElementById(id) : 0;
			ENObject = ENDivname.style;
			ENObject.position = 'absolute';
			ENMarginTop = mt ? mt : 0; // 引数mt省略時は0
			ENMarginBottom = mb ? mb : 0; // 引数mb省略時は0
			ENCurrentY = ENTop = tp ? tp : ENDivname.offsetTop; //引数tp省略時は自動取得
			ENSmoothMove();
		} 
	}
	
	function ENSmoothMove()
	{
		var winh = bw.ie6s ? document.documentElement.clientheight : (bw.ns6||bw.opera6) ? innerheight : bw.bw5 ? document.body.clientheight : 0 ;
		var yt = bw.ie6s ? document.documentElement.scrollTop : bw.bw5 ? document.body.scrollTop : (bw.ns6||bw.opera6) ? window.pageYOffset : 0;
		var divh = ENDivname.offsetheight;
	
		if (winh >= ENMarginTop + divh + ENMarginBottom) {
			yt = Math.max(yt + ENMarginTop, ENTop);
		} else {
			// 下へ向かう力
			var yt1 = Math.max(yt + ENMarginTop, ENTop);
			var f1 = (yt1 > ENCurrentY) ? 1 : 0;
			// 上へ向かう力
			var yt2 = yt - (divh + ENMarginBottom - winh);
			yt2 = Math.max(yt2, ENTop);
			var f2 = (yt2 < ENCurrentY) ? 1 : 0;
			// 両方の力が働いている場合は相殺
			if (f1 && f2) yt = ENCurrentY;
			else yt = f2 ? Math.max(yt1, yt2) : Math.min(yt1, yt2);
		}
	
		if (yt != ENCurrentY) {
			// 目標値に徐々に近づける
			var vy = (yt - ENCurrentY) * 0.25;
			if (Math.abs(vy) < 1) vy = (vy > 0) ? 1 : (vy < 0) ? -1 : 0;
			ENCurrentY += Math.round(vy);
			ENObject.top = ENCurrentY + 'px';
		}
		setTimeout('ENSmoothMove()', 20);
	}


//Flash
//v1.0
//Copyright 2006 Adobe Systems, Inc. All rights reserved.
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '<object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcparamname, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcparamname] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "id":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}

//文字の大きさ変更
/*
===========================================================
フォントサイズ変更スクリプト（タイプB）
insomnia!Web Labo.
http://insomnia.jp/workshop/
===========================================================
/*========== ::: ブラウザ判別時に使用する変数 ::: ==========*/
uaName = navigator.userAgent;
appName = navigator.appVersion;


/*========== ::: 初期設定 ::: ==========*/

// 値の単位を設定（必ずダブルクオートかクオートで括る）
var fontSizeUnit = "%";

// 一回の操作で変化させる値を設定（ダブルクオートやクオートで括らない）
var perOrder = 10;

// 初期状態の値を設定（ダブルクオートやクオートで括らない）
var defaultSize = 100;

// クッキーの名前（必ずダブルクオートかクオートで括る）
var ckName = "FSCb";

// クッキーの有効期限（日）（ダブルクオートやクオートで括らない）
var ckDays = 1;

// クッキーのパス（必ずダブルクオートかクオートで括る。指定がいらない場合は"/"にする）
var ckPath = "/"


/*========== :::ページ読み込み時の値を設定::: ==========*/

// クッキー読み出し
var fsCK = GetCookie(ckName);

if ( fsCK == null ) {
  currentSize = defaultSize;      //クッキーが無ければ現在の値を初期状態の値に設定
}
else{
  currentSize = Number(fsCK);      //クッキーがあれば現在の値をクッキーの値に設定
}


/*===================================
  [関数 fscRef]
  BODY要素のイベントハンドラ"onload"ならびに関数fscから呼び出される。
  変数"currentSize"の値に従って
  オブジェクトのfontStyleプロパティを変更する
====================================*/

function fscRef(){

  // === ::: 変更を加えるオブジェクトの判定 ::: ===
  //
  //  NN4もしくはMacIE4.0の場合、エラーメッセージを回避
  if (( document.layers )||(( appName.indexOf("Mac",0) != -1 ) && ( uaName.indexOf("MSIE 4.0",0) != -1 ))){
    return false;
  }

  else if( document.body ){
  
  // オブジェクトのfontSizeプロパティを書き換える
    document.body.style.fontSize = currentSize + fontSizeUnit;
  }
  
}

// _______________________________________ end of function fscRef() ___ 


/*===================================
  [関数 fsc]
  引数CMDに渡される値に応じて
  変更後の値を算出しクッキーに書き込む。
====================================*/

function fsc( CMD ){

  // 拡大：現時点の値に一回の操作で変化させる値を加えて操作後の値"newSize"に代入
  if( CMD == "larger" ){
    var newSize = Number( currentSize + perOrder );
    SetCookie( ckName , newSize );      //クッキー書き込み
  }

  // 縮小：現時点の値から一回の操作で変化させる値を引き操作後の値に代入
  // 現時点のサイズの値が一回の操作で変化させる値と同じならそのまま操作後の値に代入
  if( CMD == "smaller" ){
    if ( currentSize != perOrder ){
      var newSize = Number( currentSize - perOrder );
      SetCookie( ckName , newSize );      //クッキー書き込み
    }
    else{
      var newSize=Number(currentSize);
    }
  }

  // 元に戻す：操作後の値を初期値にする
  if( CMD == "default" ){
    var newSize = defaultSize;
    DeleteCookie( ckName );      //クッキー削除
  }


  // NN4もしくはMacIE4.0の場合、エラーメッセージを回避しダイアログを表示する
  // NN4用ダイアログ
  if( document.layers ){
    window.alert( "このスクリプトはNetscape Communicator4.xでは動作しません" );
    return false;
  }

  // MacIE4用ダイアログ
  else if(( appName.indexOf("Mac",0) != -1 ) && ( uaName.indexOf("MSIE 4.0",0) != -1)){
    window.alert( "Sorry! MacIE4.0 is not supported." );
    return false;
  }

  else{
  // 現在の値を操作後の値に変更
  currentSize = newSize;

  // サイズ変更関数を呼び出す
  fscRef();
  }
}

// _______________________________________ 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;
  }
}
