//修正2003/11/20
//◎使用法
//	body onload="iniFunc()"
//	function startFixed() 内に fixedLAYER() を書いた関数を別途用意する
//
//◎使用例
//	fixedLAYER('レイヤ−名',位置,offSetX,offSetY) 
//
//◎引数解説
//	レイヤ−名: 固定するレイヤー名
//	位置: 固定するレイヤーの位置をあらわす文字(レイヤー左上を基点とする)
//		rightTop    右上    rightBottom  右下
//		leftBottom  左下    leftTop      左上(デフォルト)
//		center      中央
//		offSetX     最寄りの辺(または中心)からのpx距離(水平方向)
//		offSetY     最寄りの辺(または中心)からのpx距離(垂直方向)

var is_fixed = true;
var ie    = !!document.all;
var n4    = !!document.layers;
var w3c   = !!document.getElementById;
var mac45 = navigator.userAgent.indexOf('MSIE 4.5; Mac_PowerPC')>-1;
var nn    = navigator.userAgent.indexOf('Netscape')>-1;

function iniFunc()
{
	if( ie && !(mac45) ) window.onscroll = startFixed;
	startFixed();
}

function fixedLAYER(layName,posString,offSetX,offSetY)
{
	if(!is_fixed) return;

	offSetX = parseInt(offSetX,10);
	offSetY = parseInt(offSetY,10);

	if( posString=='rightTop' ){
		if(ie) offLeft = document.body.clientWidth + offSetX;
		else if(nn) offLeft = window.innerWidth + offSetX -15;
		else   offLeft = window.innerWidth + offSetX;
		if(ie) offTop  = offSetY;
		else   offTop  = offSetY;
	}
	else if( posString=='rightBottom' ){
		if(ie) offLeft = document.body.clientWidth + offSetX;
		else if(nn) offLeft = window.innerWidth + offSetX -15;
		else   offLeft = window.innerWidth + offSetX;
		if(ie) offTop  = document.body.clientHeight + offSetY;
		else if(nn) offTop  = window.innerHeight + offSetY -15;
		else   offTop  = window.innerHeight + offSetY;
	}
	else if( posString=='leftBottom' ){
		if(ie) offLeft = offSetX;
		else   offLeft = offSetX;
		if(ie) offTop  = document.body.clientHeight + offSetY;
		else   offTop  = window.innerHeight + offSetY;
	}
	else if( posString=='center' ){
		if(ie) offLeft = document.body.clientWidth/2 + offSetX;
		else   offLeft = window.innerWidth/2 + offSetX;
		if(ie) offTop  = document.body.clientHeight/2 + offSetY;
		else   offTop  = window.innerHeight/2 + offSetY;
	}
	else {
		if(ie) offLeft = offSetX;
		else   offLeft = offSetX;
		if(ie) offTop  = offSetY;
		else   offTop  = offSetY;
	}

	offLeft = parseInt(offLeft);
	offTop  = parseInt(offTop);

	if(ie){
		var mx = parseInt(document.body.scrollLeft + offLeft);
		var my = parseInt(document.body.scrollTop  + offTop);
	} else {
		var mx = parseInt(self.pageXOffset + offLeft);
		var my = parseInt(self.pageYOffset + offTop);
	}

	moveLAYER(layName,mx,my);

	//MacIE4.5またはIE以外はtimerを設置
	if( !(ie) || mac45 ){
		clearTimeout(fixedLAYER[layName]);
		fixedLAYER[layName] = setTimeout("fixedLAYER('"+layName+"','"+posString+"','"+offSetX+"','"+offSetY+"')",100);
	}
}

function moveLAYER(layName,x,y)
{
	if(ie){
		document.all(layName).style.pixelLeft = x;
		document.all(layName).style.pixelTop  = y;
	}
	else if(n4){
		document.layers[layName].moveTo(x,y);
	}
	else if(w3c){ 
		document.getElementById(layName).style.left = x;
		document.getElementById(layName).style.top  = y;
	}
}

//NN4リサイズ対策
if(n4) window.onresize = resizeFunc;
function resizeFunc()
{
	location.reload();
}

//固定or解除
function chFixMode()
{
	if(!is_fixed){
		is_fixed = true;
		iniFunc();
	} else {
		is_fixed = false;
	}
	return is_fixed;
}
