//
//
//JavaScript クロスブラウザ対応外部スクリプトライブラリ
//
//作成者：ＥＭＯＴＡＲＯ
//-------------------------------------------------------------
//注意事項：
//イベントハンドルのゲットはHTML内で記述する。
//下記参照（イベントハンドラを変更して使用する）
//-------------------------------------------------------------
//function init(e){
//xxxxx=getPositionX(e)；
//}
//これは、getPositionX関数を呼び出して引数をxxxxxに戻す処理。
//eはNN用のイベント値（Event.MOUSEMOVE等)を引き継いでいる。
//if (document.layers){
//document.captureEvents(Event.MOUSEMOVE);//NN4.x用
//}
//document.onmousemove=init;//これはonLoad時のみに処理をしてもいいかもしれないが、いまはfunction外に記述している。
//--------------------------------------------------------------
//ブラウザのチェックはオブジェクトのtrue,falseで行っています。
//document.all=true   →  IE4.0
//document.layers=true  →  NN
//document.getElementByID → IE5.5-6.x NN6.x
//-------------------------------------------------------------
//ブラウザ認識用変数ＳＥＴ
//BrowserCheck()を呼び出す
//うまくいかないときは、直接HTML内に書き込む
//-------------------------------------------------------------


//window.onload = BrowserCheck;

function BrowserCheck(){

// Macチェック : true = macintosh, false = other os
macCheck = navigator.userAgent.indexOf('Mac')!=-1;
// MacMSIE5.12チェック : true = MSIE 5.12(mac), false = others
macIE512=navigator.userAgent.indexOf('MSIE 5.12')!=-1;
// ブラウザバージョンチェック
//        IE4 = 1, IE5+ = 2, NN4 = 3, NN6+ = 4, others = 0
browsVer = document.all?(document.getElementById?2:1)
                   :(document.getElementById?4 :(document.layers?3:0));
}
//-------------------------------------------------------------
//初期化
//-------------------------------------------------------------
//レイヤ作成時のレイヤNO（createLayer()で使用)
createLayerNo = 0;                   


//**********************************************
//***************これよりライブラリ*************
//**********************************************
//----------------------------------------------------------------------------------------------------
//マウスのカーソル位置を得る。ドキュメントの絶対値。
//getPositionX(e);ｘ座標
//getPositionY(e);ｙ座標
//Event.MOUSEMOVE等で引き継いだeを必ず引数に入れる。
//offsetXはレイヤなどに反応してしまうため、ここでは使用していない。
//ちなみにclientXはwindow内の座標
//----------------------------------------------------------------------------------------------------
function getPositionX(e){
  if(browsVer==4)
    return e.clientX+window.scrollX;
  if(browsVer==2 || browsVer==1)
    return document.body.scrollLeft+window.event.clientX;
  if(browsVer==3)
    return e.pageX;
  return 0;
}

function getPositionY(e){
  if(browsVer==4)
    return e.clientY+window.scrollY;
  if(browsVer==2 || browsVer==1)
    return document.body.scrollTop+window.event.clientY;
  if(browsVer==3)
    return e.pageY;
  return 0;
}
//----------------------------------------------------------------------------------------------------
//ウインドウのサイズを取得する。
//getWindowWidth();ウィンドウの幅
//getWindowHeight();ウィンドウの高さ
//getWinXOffset();ウィンドウの左上にあたるドキュメントの座標Ｘ（スクロール時に威力を発揮）
//getWinYOffset();ウィンドウの左上にあたるドキュメントの座標Ｙ（スクロール時に威力を発揮）
//----------------------------------------------------------------------------------------------------
function getWindowWidth (){
  if(browsVer==4 || browsVer==3) return window.innerWidth;
  if(browsVer==2 || browsVer==1) return document.body.clientWidth;
  return 0;
}
function getWindowHeight(){
  if(browsVer==4 || browsVer==3) return window.innerHeight;
  if(browsVer==2 || browsVer==1) return document.body.clientHeight;
  return 0;
}
function getWinXOffset(){
  if(browsVer==4)            return window.scrollX;
  if(browsVer==2 || browsVer==1) return document.body.scrollLeft;
  if(browsVer==3)            return window.pageXOffset;
  return 0;
}
function getWinYOffset(){
  if(browsVer==4)            return window.scrollY;
  if(browsVer==2 || browsVer==1) return document.body.scrollTop;
  if(browsVer==3)            return window.pageYOffset;
  return 0;
}

//----------------------------------------------------------------------------------------------------
//名称(id)を指定してレイヤーオブジェクトを得る
//object> = getDivFromName(nm[,parentDivName...]);
//<object>      : レイアオブジェクト
//nm            : レイアの名称
//parentDivName : 親のレイア名
//使い方は、レイアが次のように記述されている場合
//<div id="layer1" style="position:absolute">
//  <div id="layer2" style="position:absolute">
//    <div id="layer3" style="position:absolute">
//    </div>
//  </div>
//</div>
//layer1, layer2, layer3 はそれぞれ次のよう記述します。
//var layer1 = getDivFromName('layer1');
//var layer2 = getDivFromName('layer2','layer1');
//var layer3 = getDivFromName('layer3','layer1','layer2');
//◆　idで指定する名称は、そのドキュメント上でユニーク(固有)でなければなりません
//
//
//これ以降の関数はこの関数でオブジェクトを得て、引数として渡してください。
//例：layerobj = getDivFromName("divname1");
//    name = getDivName(layerobj);
// 
//----------------------------------------------------------------------------------------------------
function getDivFromName(nm){
  if(browsVer==4 || browsVer==2) return document.getElementById(nm);
  if(browsVer==1)            return document.all(nm);
  if(browsVer==3){
    var s='';
    for(var i=1; i<arguments.length; i++)
      s+='document.layers.'+arguments[i]+'.';
    return eval(s+'document.layers.'+nm);
  }
  return null;
}
//----------------------------------------------------------------------------------------------------
//指定されたレイアオブジェクトの名称を取得します。
//<nm> = getDivName(div)
//  <nm> : 名称
//  div  : レイアオブジェクト
//
//----------------------------------------------------------------------------------------------------
function getDivName(div){
  if(browsVer==4 || browsVer==2 || browsVer==1) return div.id;
  if(browsVer==3)                       return div.name;
  return '';
}
//----------------------------------------------------------------------------------------------------
//レイア内に HTML として記述されている Imageオブジェクトを取得します。
//<object> = getDivImage(div,imgName);
//  <object> : Imageオブジェクト
//  div      : レイアオブジェクト
//  imgName  : IMGタグの名称
//◆　この関数で指定する画像には ID属性 と NAME属性が共に同じ名称で設定されていなければなりません。 
//
//----------------------------------------------------------------------------------------------------
function getDivImage(div,imgName){
  if(browsVer==4)            return document.images[imgName];
  if(browsVer==2 || browsVer==1) return document.images(imgName);
  if(browsVer==3)            return div.document.images[imgName];
  return null;
}


//----------------------------------------------------------------------------------------------------
//レイア内に HTML として記述されている Form要素を取得します。
//<object> = getDivForm(div,frmName);
//  <object> : Formのオブジェクト
//  div      : レイアオブジェクト
//  frmName  : Formの名称
//◆　この関数で指定するFormには ID属性 と NAME属性が共に同じ名称で設定されていなければなりません。 
//----------------------------------------------------------------------------------------------------
function getDivForm(div,frmName){
  if(browsVer==4)            return document.forms[frmName];
  if(browsVer==2 || browsVer==1) return document.forms(frmName);
  if(browsVer==3)            return div.document.forms[frmName];
  return null;
}
//----------------------------------------------------------------------------------------------------
//指定されたレイアの位置情報を初期化します
//initDivPos(div)
//  div : 位置情報を初期化するレイアオブジェクト
//◆　この関数は position:absolute; で、margin,border,padding 属性が 0 のレイアを対象とします。
//この関数はレイアの位置制御を行うとき、 レイアの位置情報が正確でない場合に最初に１回だけ呼び出して位置情報を設定します。
//
//ここで、位置情報が不定の場合とは以下の場合を言います。
//
//・インラインスタイルで left, top を指定しないでDIVタグを使用した場合
//
//また、Mac版IE5 では body の margin 属性を "0" に設定しないと正しく動作しません。 
//
//
//----------------------------------------------------------------------------------------------------
function initDivPos(div){
  if(browsVer==4){
    div.style.left=div.offsetLeft+'px';
    div.style.top =div.offsetTop +'px';
  } else if(browsVer==2 || browsVer==1){
    div.style.pixelLeft=div.offsetLeft;
    div.style.pixelTop =div.offsetTop;
  }
  return div;
}
//----------------------------------------------------------------------------------------------------
//指定されたレイアの位置を取得します。
//<left> = getDivLeft(div)    // Ｘ座標の取得
//<top>  = getDivTop (div)    // Ｙ座標の取得
//  <left> : レイアのＸ座標( pixel )
//  <top>  : レイアのＹ座標( pixel )
//  div    : レイアオブジェクト
//◆　この関数は position:absolute; なレイアを対象とします。
//div で指定するレイアの位置情報が不正確と思われる場合は、 あらかじめ initDivPos を呼び出してください。 
//----------------------------------------------------------------------------------------------------
function getDivLeft(div){
  if(browsVer==4 || browsVer==2) return div.offsetLeft;
  if(browsVer==1)            return div.style.pixelLeft;
  if(browsVer==3)            return div.left;
  return 0;
}

function getDivTop(div){
  if(browsVer==4 || browsVer==2) return div.offsetTop;
  if(browsVer==1)            return div.style.pixelTop;
  if(browsVer==3)            return div.top;
  return 0;
}


//----------------------------------------------------------------------------------------------------
//指定されたレイアの位置を変更します。
//moveDivTo( div, left, top)   // 絶対座標での移動
//moveDivBy( div, dx, dy)      // 相対座標での移動
//  div  : レイアオブジェクト
//  left : レイアのＸ座標( pixel : 絶対座標 )
//  top  : レイアのＹ座標( pixel : 絶対座標 )
//  dx   : レイアのＸ方向の移動量( pixel )
//  dy   : レイアのＹ方向の移動量( pixel )
//◆　この関数は position:absolute; なレイアを対象とします。
//div で指定するレイアの位置情報が不正確と思われる場合は、 あらかじめ initDivPos を呼び出してください。
//また、left,top には整数を指定します。 実数を指定した場合には繰り返し呼び出すとIE では累積誤差が生じます。
//※この関数を使用しない場合は、このあとのlayerPositionを使う。 
//----------------------------------------------------------------------------------------------------
function moveDivTo(div,left,top){
  if(browsVer==4){
    div.style.left=left+'px';
    div.style.top =top +'px';
    return;
  }
  if(browsVer==2 || browsVer==1){
    div.style.pixelLeft=left;
    div.style.pixelTop =top;
    return;
  }
  if(browsVer==3){
    div.moveTo(left,top);
    return;
  }
}

function moveDivBy(div,left,top){
  if(browsVer==4){
    div.style.left=div.offsetLeft+left;
    div.style.top =div.offsetTop +top;
    return;
  }
  if(browsVer==2){
    div.style.pixelLeft=div.offsetLeft+left;
    div.style.pixelTop =div.offsetTop +top;
    return;
  }
  if(browsVer==1){
    div.style.pixelLeft+=left;
    div.style.pixelTop +=top;
    return;
  }
  if(browsVer==3){
    div.moveBy(left,top);
    return;
  }
}
//----------------------------------------------------------------------------------------------------
//レイヤーのポジションを変更する。
//上のmoveDivToと同じだが、命令が違う。
//例：layerPosition(div,"ｘ座標","ｙ座標"）;
//----------------------------------------------------------------------------------------------------
function layerPosition(div,x,y){
	if(browsVer==2 || browsVer==1){
		div.style.posLeft= x ;
		div.style.posTop = y ;
		return true;
	}
	if(browsVer==3){
		div.left = x ;
		div.top  = y ;
		return true;
	}
	if(browsVer==4){
		div.style.posLeft= x ;
		div.style.posTop = y ;
		return true;
	}

}
//----------------------------------------------------------------------------------------------------
//指定されたレイアのサイズ情報を設定します
//initDivSize(div)
//  div : サイズ情報を初期化するレイアオブジェクト
//◆　この関数は absolute なレイアを対象とします。
//この関数はレイアのサイズ制御を行うとき、 レイアのサイズ情報が正確でない場合に最初に呼び出してサイズ情報を設定します。
//ここで、サイズ情報が不定の場合とは以下の場合を言います。
//・インラインスタイルで width, height を指定しないでDIVタグを使用した場合
//・width, height は指定しているが、ブラウザによりサイズが調整される場合 
//◆　W3C の仕様では現在のサイズを取得するのに getComputedStyle を使用することになっていますが、 NN6(Mozilla)の一時期のバージョンまでは動作しなかったために offsetWidth/offsetHeight を使用しています。
//
//W3C DOM の仕様に合わせたスクリプトにするには以下のようにします。
//if(browsVer==4){
//  var style=document.defaultView.getComputedStyle(div,null);
//  div.style.width =style.getPropertyValue('width' );
//  div.style.height=style.getPropertyValue('height');
//}
//----------------------------------------------------------------------------------------------------
function initDivSize(div){
  if(browsVer==4){
    div.style.width =div.offsetWidth +'px';
    div.style.height=div.offsetHeight+'px';
  } else if(browsVer==2 || browsVer==1){
    div.style.pixelWidth =div.offsetWidth;
    div.style.pixelHeight=div.offsetHeight;
  }
  return div;
}
//----------------------------------------------------------------------------------------------------
//指定されたレイアのサイズを取得します。
//<width>  = getDivWidth (div)
//<height> = getDivHeight(div)
//  <width>  : レイアの幅( pixel )
//  <height> : レイアの高さ( pixel )
//  div      : サイズを取得するレイアオブジェクト
//◆　この関数は position:absolute; なレイアを対象とします。
//div で指定するレイアのサイズ情報が不正確と思われる場合は、 あらかじめ initDivSize を呼び出してください。 
//----------------------------------------------------------------------------------------------------
function getDivWidth (div){
  if(browsVer==4 || browsVer==2) return div.offsetWidth;
  if(browsVer==1)            return div.style.pixelWidth;
  if(browsVer==3)            return div.clip.width;
  return 0;
}

function getDivHeight(div){
  if(browsVer==4 || browsVer==2) return div.offsetHeight;
  if(browsVer==1)            return div.style.pixelHeight;
  if(browsVer==3)            return div.clip.height;
  return 0;
}

//----------------------------------------------------------------------------------------------------
//指定されたレイアのサイズを変更します。
//resizeDivTo(div, width, height)   // 絶対サイズ
//resizeDivBy(div, dw, dh )         // 相対サイズ
//  div    : サイズを変更するレイアオブジェクト
//  width  : レイアの幅    ( pixel )
//  height : レイアの高さ  ( pixel )
//  dw     : Ｘ方向の変更量( pixel )
//  dh     : Ｙ方向の変更量( pixel )
//◆　この関数は position:absolute; なレイアを対象とします。
//div で指定するレイアのサイズ情報が不正確と思われる場合は、 あらかじめ initDivSize を呼び出してください。 
//
//----------------------------------------------------------------------------------------------------
function resizeDivTo(div,width,height){
  if(browsVer==4){
    div.style.width =width +'px';
    div.style.height=height+'px';
    return;
  }
  if(browsVer==2 || browsVer==1){
    div.style.pixelWidth =width;
    div.style.pixelHeight=height;
    return;
  }
  if(browsVer==3){
    div.resizeTo(width,height);
    return;
  }
}

function resizeDivBy(div,width,height){
  if(browsVer==4){
    div.style.width =(div.offsetWidth +width )+'px';
    div.style.height=(div.offsetHeight+height)+'px';
    return;
  }
  if(browsVer==2){
    div.style.pixelWidth =div.offsetWidth +width;
    div.style.pixelHeight=div.offsetHeight+height;
    return;
  }
  if(browsVer==1){
    div.style.pixelWidth +=width;
    div.style.pixelHeight+=height;
    return;
  }
  if(browsVer==3){
    div.resizeBy(width,height);
    return;
  }
}

//----------------------------------------------------------------------------------------------------
//レイアの 可視 を設定します。
//setDivVisibility  (div,  visible)
//setDivVisibilities(divs, visible)
//  div     : レイアオブジェクト
//  divs    : レイアのオブジェクト配列
//  visible : 可視性( true : 可視, false : 不可視 )
//----------------------------------------------------------------------------------------------------
function setDivVisibility(div,visible){
  if(browsVer==4 || browsVer==2 || browsVer==1){
    div.style.visibility=(visible)?'inherit':'hidden';
    return;
  }
  if(browsVer==3){
    div.visibility      =(visible)?'inherit':'hide';
    return;
  }
}

function setDivVisibilities(divs,visible){
  if(browsVer==4 || browsVer==2 || browsVer==1){
    for(var i=0; i<divs.length; i++)
      divs[i].style.visibility=(visible)?'inherit':'hidden';
  }
  if(browsVer==3){
    for(var i=0; i<divs.length; i++)
      divs[i].visibility      =(visible)?'inherit':'hide';
  }
  return divs;
}
//----------------------------------------------------------------------------------------------------
//レイヤーの可視を設定する。上と同じだが命令がちがう
//例：layerShow(div,"可視非可視"）;
//可視は1を、非可視は0を設定する。
//----------------------------------------------------------------------------------------------------

function layerShow(div,show){
	if(browsVer==2 || browsVer==1){
		switch(show){
			case 0:
				div.style.visibility = "hidden";
			break;
			case 1:
				div.style.visibility = "visible";
			break;
		}
	}
	if(browsVer==3){
		switch(show){
			case 0:
				div.visibility = "hide";
			break;
			case 1:
				div.visibility = "show";
			break;
		}
	}
	if(browsVer==4){
		switch(show){
			case 0:
				div.style.visibility = "hidden";
			break;
			case 1:
				div.style.visibility = "visible";
			break;
		}
	}
}


//----------------------------------------------------------------------------------------------------
//レイアにクリップ領域を設定します。
//setDivClip(div, top, right, bottom, left)
//  div    : レイアオブジェクト
//  top    : 上部のクリップ位置( pixel )
//  right  : 右部のクリップ位置( pixel )
//  bottom : 下部のクリップ位置( pixel )
//  left   : 左部のクリップ位置( pixel )
//◆　NN6(Mozilla) では現在(2001.09.30)のところ、 一応クリップされるものの正しく描画されません 
//----------------------------------------------------------------------------------------------------
function setDivClip(div,top,right,bottom,left){
  if(browsVer==4 || browsVer==2 || browsVer==1){
    div.style.clip=
        'rect('+top+'px '+right+'px '+bottom+'px '+left+'px)';
    return;
  }
  if(browsVer==3){
    div.clip.top   =top;   div.clip.right=right;
    div.clip.bottom=bottom;div.clip.left =left;
    return;
  }
}
//----------------------------------------------------------------------------------------------------
//レイアに HTML を出力します。
//writeDivHTML(div, op, cl, html[,html...])
//  div  : レイアオブジェクト
//  op   : div の内容をクリアする(true,false)
//  cl   : div の出力データの最後(true,false)
//  html : 書き出す HTML
//NN4.xではウインドウをリサイズされるとjavaがとまります。
//◆　Mac版 IE では、 html が複雑になるとうまく動作しないようです。
//また、Mac版 IE では innerHTML を使用しているため、 出力対象のレイアにあるオブジェクトは一旦破棄されますので、 変数に記憶している場合は再取得が必要になります。 
//----------------------------------------------------------------------------------------------------
function writeDivHTML(div,op,cl){
  var s='';
  for(var i=3; i<arguments.length; i++) s+=arguments[i];
  if(browsVer==4){
    if(op){
      while(div.hasChildNodes())
        div.removeChild(div.lastChild);
    }
    var range=document.createRange();
    range.selectNodeContents(div);
    range.collapse(true);
    var cf=range.createContextualFragment(s);
    div.appendChild(cf);
    return;
  }
  if(browsVer==2 || browsVer==1){
    if(op)   div.innerHTML='';
    if(macCheck&&!macIE512) div.innerHTML+=s;
    else              div.insertAdjacentHTML('BeforeEnd',s);
    return;
  }
  if(browsVer==3){
    if(op) div.document.open('text/html','replace');
    div.document.write(s);
    if(cl) div.document.close();
    return;
  }
}

//----------------------------------------------------------------------------------------------------
//レイアの背景色を設定します。
//setDivBackgroundColor(div, color)
//  div   : レイアオブジェクト
//  color : 設定する色( 透明の場合は "null" を指定する )
//
//----------------------------------------------------------------------------------------------------
function setDivBackgroundColor(div,color){
  if(color==null) color='transparent';
  if(browsVer==3) div.bgColor=color;
  else        div.style.backgroundColor=color;
}

//----------------------------------------------------------------------------------------------------
//レイアの背景イメージを設定します。
//setDivBackgroundImage(div, url)
//  div : レイアオブジェクト
//  url : 背景として設定する画像ファイルの URL
//
//----------------------------------------------------------------------------------------------------
function setDivBackgroundImage(div,url){
  if(browsVer==3)
    div.background.src=url?url:null;
  else
    div.style.backgroundImage=url?('url('+url+')'):'none';
}

//----------------------------------------------------------------------------------------------------
//レイヤーをＣＳＳクラスを使って表示する。
//例：layerClass(div,"スタイルシートクラス名","テキスト（html）"）;
//スタイルシートのみをすり返ることはできないので、必ずテキストを入れる（ＨＴＭＬ可能）
//----------------------------------------------------------------------------------------------------

function layerClass(div,classname,htmldoc){
	if(browsVer==2 || browsVer==1){
		div.innerHTML="<div class=\'"+classname+"\'>"+htmldoc+"<\/div>";
		return true;
	}
	if(browsVer==3){
		div.document.open();
		div.document.write("<div class=\'",classname,"\'>",htmldoc,"<\/div>");
		div.document.close();
		return true;
	}
	if(browsVer==4){
		div.innerHTML="<div class=\'"+classname+"\'>"+htmldoc+"<\/div>";
		return true;
	}
}
//----------------------------------------------------------------------------------------------------
//レイヤーのフォントサイズと色を変更して表示する。
//例：layerPosition(div,"フォントサイズ（単位も）","色","テキスト（html）"）;
//スタイルシートのみをすり返ることはできないので、必ずテキストを入れる（ＨＴＭＬ可能）
//----------------------------------------------------------------------------------------------------
function layerFont(div,fsize,fcolor,htmldoc){
	if (browsVer==2 || browsVer==1){
		div.style.fontSize = fsize;
		div.style.color = fcolor;
		div.innerHTML = htmldoc;
		return true;
	}
	if (browsVer==3){
		div.document.open();
		div.document.write("<font size=\'",fsize,"\' color=\'",fcolor,"\'>",htmldoc,"<\/div>");
		div.document.close();
		return true;
	}
	if (browsVer==4){
		div.style.fontSize = fsize;
		div.style.color = fcolor;
		div.innerHTML = htmldoc;
		return true;
	}
}

//----------------------------------------------------------------------------------------------------
//レイヤーのＺ座標を変更する。
//setDivZIndex(div, order)
//  div   : レイアオブジェクト
//  order : Z オーダ
//----------------------------------------------------------------------------------------------------
function setDivZIndex(div,order){
  if(browsVer==4 || browsVer==2 || browsVer==1){
    div.style.zIndex=order;
    return;
  }
  if(browsVer==3){
    div.zIndex      =order;
    return;
  }
}


//----------------------------------------------------------------------------------------------------
//レイヤーを自動生成する。(position:absolute; )
//<object> = createLayer(left, top, width, height, [, parentLayer[, html ...]])
//<object>    : レイアオブジェクト
//  left        : レイアの左上コーナのＸ座標( pixel )
//  top         : レイアの左上コーナのＹ座標( pixel )
//  width       : レイアの幅( pixel )
//                0 を指定すると IE では 1 を設定する
//  height      : レイアの高さ( pixel )
//                0 を指定すると height を設定しない
//  parentLayer : 生成するレイアの親のオブジェクト
//                または null( 省略可 )
//  html        : 生成時に書き出す HTML( 省略可 )
//◆　NN4.xではウインドウをリサイズされるとjavaがとまります。
//◆　この関数は onLoadイベント以降で使用できます。
//また、生成時は visibility が hidden に設定されています。 
//◆　一応 Mac版IE でも動作するように無理やりしていますが、 この反作用としてレイアの高さが１行余分になります。 
//
//使い方は、100×200pixel のレイアを( 10,50 )の位置に document直下に生成するだけなら、 以下のように記述します。 
//var div = createLayer(10,50, 100,200);
//もし、レイアオブジェクト "layer1" 内に 100×200pixel のレイアを( 5,10 )の位置に生成するなら 
//var div = createLayer(5,10, 100,200, layer1);
//また、"<p>Hello!</p>" を内部に持つ、 幅100pixelのレイアを documentの( 10,20 )に生成するなら 
//var div = createLayer(10,20, 100,0, null, '<p>Hello!<\/p>');
//とします。また、出力 HTML はカンマ "," で繋げて複数指定できます。
//また、生成したレイヤ名は_js_layer_1,_js_layer_2,...となります。ただしNN4.xは配列layer[1],layer[2]で指名。
//参考ページ：http://www.din.or.jp/~hagi3/JavaScript/JSTips/Default.htm
//----------------------------------------------------------------------------------------------------
function createLayer(left,top,width,height,parentDiv){
  var s='';
  if(arguments.length>5){
    for(var i=5; i<arguments.length; i++) s+=arguments[i];
  }
  if(browsVer==4){
    var divName= '_js_layer_'+createLayerNo; createLayerNo++;
    var pDiv   =parentDiv?parentDiv:document.body;
    var div    =document.createElement('DIV');
    div.id=divName;
    div.setAttribute('style',
       'position:absolute;left:'+left+';top:'+top
      +(width >0?(';width:' +width ):'')
      +(height>0?(';height:'+height):'')
      +';visibility:hidden');
    var range=document.createRange();
    range.selectNodeContents(div);
    range.collapse(true);
    var cf=range.createContextualFragment(s);
    div.appendChild(cf);
    pDiv.appendChild(div);
    return div;
  }
  if(browsVer==2 || browsVer==1){
    var adj    =(macCheck&&!macIE512)?' ':'';
    var divName= '_js_layer_'+createLayerNo; createLayerNo++;
    var ha     =(height>0)?(';height:'+height):'';
    var pDiv   =parentDiv?parentDiv:document.body;
    pDiv.insertAdjacentHTML('BeforeEnd',
       '<div id="'+divName
      +'" style="position:absolute;left:'+left+';top:'+top
      +(width >0?(';width:' +width ):';width:1')
      +(height>0?(';height:'+height):'')
      +';visibility:hidden;">'+s+'<\/div>'+adj);
    return document.all(divName);
  }
  if(browsVer==3){
    var div=parentDiv?(new Layer(width,parentDiv))
                     :(new Layer(width));
    if(height>0) div.resizeTo(width,height);
    div.moveTo(left,top);
    if(s!=''){
      div.document.open('text/html','replace');
      div.document.write(s);
      div.document.close();
    }
    return div;
  }
  return null;
}

//----------------------------------------------------------------------------------------------------
//外部ファイル(*.html)を持つレイヤーを自動生成する。(position:absolute; )
//<object> = createExLayer(url, left, top, width, height,[, parentLayer])
//  <object>    : レイアオブジェクト
//  url         : 内部に表示する HTML を示す URL
//  left        : レイアの左上コーナのＸ座標( pixel )
//  top         : レイアの左上コーナのＹ座標( pixel )
//  width       : レイアの幅( pixel )
//  height      : レイアの高さ( pixel )
//  parentLayer : 生成するレイアの親のオブジェクト
//                ( 省略可 )
//◆　この関数は onLoadイベント以降で使用できます。
//また、生成時は visibility が hidden に設定されています。 
//◆　一応 Mac版IE でも動作するように無理やりしていますが、 この反作用としてレイアの高さが１行余分になります。 
//
//使い方は、同じディレクトリにある Hello.htm を内部に表示する、サイズが 200×100pixel のレイアを ( 10,50 )の位置に生成するには以下のように記述します。 
//var div = createExLayer('Hello.htm', 10,50, 200,100);
//また、生成したレイヤ名は_js_layer_1,_js_layer_2,...となります。ただしNN4.xは配列layer[1],layer[2]で指名。
//参考ページ：http://www.din.or.jp/~hagi3/JavaScript/JSTips/Default.htm
//----------------------------------------------------------------------------------------------------
function createExLayer(url,left,top,width,height,parentDiv){
  if(browsVer==4){
    var divName= '_js_layer_'+createLayerNo; createLayerNo++;
    var pDiv   =parentDiv?parentDiv:document.body;
    var div    =document.createElement('IFRAME');
    div.id=divName;
    div.name=divName;
    div.setAttribute('style',
       'position:absolute;left:'+left+';top:'+top
      +';width:'+width+(height>0?(';height:'+height):'')
      +';visibility:hidden');
    div.setAttribute('src',url);
    div.setAttribute('frameborder',0);
    div.setAttribute('scrolling','no');
    pDiv.appendChild(div);
    return div;
  }
  if(browsVer==2 || browsVer==1){
    var adj=(macCheck&&macIE512)?' ':'';
    var bd, divName='_js_layer_'+createLayerNo;
    createLayerNo++;
    var ha=(height>0)?(';height:'+height):'';
    if(arguments.length>5 && parentDiv)
         bd=parentDiv;
    else bd=document.body;
    bd.insertAdjacentHTML('BeforeEnd',
       '<div id="'+divName
      +'" style="position:absolute;left:'+left+';top:'+top
      +';width:'+width+ha+';visibility:hidden;">'
      +'<iframe src="'+url+'" name="'+divName+'_if" '
      +'width='+width+' height='+height
      +'marginwidth=0 marginheight=0 '
      +'scrolling="no" frameborder="no">'
      +'<\/iframe>'
      +'<\/div>'+adj);
    return document.all(divName);
  }
  if(browsVer==3){
    var div=parentDiv?(new Layer(width,parentDiv))
                     :(new Layer(width));
    if(height>0) div.resizeTo(width,height);
    div.moveTo(left,top);
    div.load(url,width);
    return div;
  }
  return null;
}
//----------------------------------------------------------------------------------------------------
//createExLayer関数で生成したレイアに表示しているドキュメントのスクロール位置を変更します。
//scrollExlHItTo(exdiv, x)     // 水平方向のスクロール
//scrollExlVItTo(exdiv, y)     // 垂直方向のスクロール
//  exdiv : 外部参照のレイアオブジェクト
//  x,y   : スクロール位置( pixel )
//◆　この関数は createExLayer関数で生成したレイアオブジェクトのみを対象とします。 
//----------------------------------------------------------------------------------------------------
function scrollExlHItTo(exdiv,x){
  if(browsVer==4){
    frames[exdiv.id].scrollTo(x,frames[exdiv.id].scrollY);
    return;
  }
  if(browsVer==2 || browsVer==1){
    frames(exdiv.id+'_if').scrollTo(
        x,frames(exdiv.id+'_if').document.body.scrollTop);
    return;
  }
  if(browsVer==3){
    var dx=x-exdiv.clip.left, ch=exdiv.clip.width;
    exdiv.left-=dx;
    exdiv.clip.left=x; exdiv.clip.width=ch;
    return;
  }
  return;
}

function scrollExlVItTo(exdiv,y){
  if(browsVer==4){
    frames[exdiv.id].scrollTo(frames[exdiv.id].scrollX,y);
    return;
  }
  if(browsVer==2 || browsVer==1){
    frames(exdiv.id+'_if').scrollTo(
        frames(exdiv.id+'_if').document.body.scrollLeft,y);
    return;
  }
  if(browsVer==3){
    var dy=y-exdiv.clip.top, ch=exdiv.clip.height;
    exdiv.top-=dy;
    exdiv.clip.top=y; exdiv.clip.height=ch;
    return;
  }
  return;
}
//----------------------------------------------------------------------------------------------------
//外部参照レイアのサイズを取得します。
//<width>  = getExlWidth(exdiv)
//<height> = getExlHeight(exdiv)
//◆　この関数は createExLayer関数で生成したレイアオブジェクトのみを対象とします。
//また、Mac版IE5 では getExlHeight は正しく動作しません。
//加えて、NN6(Mozilla)でも現在のところ(2001.09.30)正しく動作しません。 
//----------------------------------------------------------------------------------------------------
function getExlWidth (exdiv){
  if(browsVer==4)
    // NN6 is buggy( same exdiv.offsetWidth )
    return exdiv.contentDocument.body.offsetWidth;
  if(browsVer==2 || browsVer==1)
    return macCheck?frames(exdiv.id+'_if').document.body.offsetWidth
               :frames(exdiv.id+'_if').document.body.scrollWidth;
  if(browsVer==3)
    return exdiv.document.width;
  return 0;
}

function getExlHeight(exdiv){
  if(browsVer==4)
    return exdiv.contentDocument.body.offsetHeight;
  if(browsVer==2 || browsVer==1)
    return macCheck?frames(exdiv.id+'_if').document.body.offsetHeight
               :frames(exdiv.id+'_if').document.body.scrollHeight;
  if(browsVer==3)
    return exdiv.document.height;
  return 0;
}
//----------------------------------------------------------------------------------------------------
//外部参照レイアの外部ファイルを変更します。
//changeExlURL(exdiv, url)
//  exdiv : 外部参照レイアのオブジェクト
//  url   : 内部に表示する HTMLファイルの URL
//◆　この関数は createExLayer関数で生成したレイアオブジェクトのみを対象とします。
//----------------------------------------------------------------------------------------------------
function changeExlURL(exdiv,url){
  if(browsVer==4){
    exdiv.setAttribute('src',url);
    return;
  }
  if(browsVer==2 || browsVer==1){
    frames(exdiv.id+'_if').location.replace(url);
    return;
  }
  if(browsVer==3){
    exdiv.load(url,exdiv.clip.width);
    return;
  }
  return;
}

