﻿//ブラウザ判別
var ns4=document.layers&&!document.getElementById?1:0
var ns6=document.getElementById&&!document.all?1:0
var ie4=document.all?1:0
var ie5=(navigator.appName.indexOf('Microsoft Internet Explorer')>=0&&document.getElementById&&!window.opera)?1:0;
var mac=navigator.userAgent.indexOf('Mac')>=0?1:0
var opera=window.opera?1:0

//グローバル変数の宣言
var lwObj='';	// レイヤーウィンドウオブジェクト
var pre_lwObj=null;	// すでに起動しているレイヤーウィンドウオブジェクト
var orgX=20;	// レイヤーの初期X座標
var orgY=130;	// レイヤーの初期Y座標
var startX=0;
var startY=0;
var grabObj=null;

//idから オブジェクトを取得する
function getLayName(nm) {
	if (ns6||opera) {
		return document.getElementById(nm);
	}
	if (ns4) {
		var s='';
		for (var i=1; i<arguments.length; i++)
		  s+='document.layers.'+arguments[i]+'.';
		return eval(s+'document.layers.'+nm);
	}
	if (ie4) {
		return ie5?document.getElementById(nm):document.all(nm);
	}
	return null;
}

//指定した座標にレイヤーを移動する
function moveLayTo(lay,left,top) {
  if (ns6||opera) { 
    lay.style.left=left+'px';
    lay.style.top =top +'px';
    return;
  }
  if (ns4) {
		lay.moveTo(left,top); return;
	}
  if (ie4) {
    lay.style.pixelLeft=left;
    lay.style.pixelTop =top;
    return;
  }
}

//指定した差分だけ、レイヤーを移動する
function moveLayBy(lay,left,top) {
  if (ns6||opera) { 
    lay.style.left=parseInt(lay.style.left)+Math.round(left)+'px';
    lay.style.top =parseInt(lay.style.top )+Math.round(top)+'px';
    return;
  }
  if (ns4) {
		lay.moveBy(left,top); return;
	}
  if (ie4) {
    if (ie5) {
      lay.style.pixelLeft=lay.offsetLeft+Math.round(left);
      lay.style.pixelTop=lay.offsetTop+Math.round(top);
    } else {
      lay.style.pixelLeft+=Math.round(left);
      lay.style.pixelTop+=Math.round(top);
    }
    return;
  }
}

//レイヤーの表示/非表示を制御する
function setLayView(lay,visible) {
	if (ns6||ie4) { 
		lay.style.visibility=(visible)?'inherit':'hidden';
		lay.style.left = orgX+'px';
		lay.style.top = orgY+'px';
		return;
	}
	if (ns4) { 
		lay.visibility=(visible)?'inherit':'hide'; return; 
		lay.style.left = orgX;
		lay.style.top = orgY;
		return;
	}
	if (opera) { 
		lay.style.visibility=(visible)?'visible':'hidden';
		lay.style.left = orgX;
		lay.style.top = orgY;
		return;
	}
}

//マウスイベント発生時のX座標を取得する
function getEventPageX(e) {
	if (ns6) {
		return window.scrollX+e.clientX;
	}
	if (ns4) {
		return e.pageX;
	}
	if (ie4) {
		return document.body.scrollLeft+event.clientX;
	}
	if (opera) { 
		return (document.documentElement?pageXOffset:0)+e.clientX;
	}
	return 0;
}

//マウスイベント発生時のY座標を取得する
function getEventPageY(e) {
	if (ns6) {
		return window.scrollY+e.clientY;
	}
	if (ns4) {
		return e.pageY;
	}
	if (ie4) {
		return document.body.scrollTop+event.clientY;
	}
	if (opera) {
		return (document.documentElement?pageYOffset:0)+e.clientY;
	}
	return 0;
}

//リンクをクリックしたときの処理：レイヤーの初回表示
function showLayWin(subObj) {
	if (!subObj) {
		return;
	}  
	if (!pre_lwObj) {
	    moveLayTo(subObj,orgX,orgY);
	    setLayView(subObj,true);
	    subObj.isVisible=true;
	} else {
		setLayView(pre_lwObj,true);
		pre_lwObj.isVisible=true;
	} 
}

//レイヤーの「×」ボタンをクリックしたときの処理：レイヤーを非表示に
function hideLayWin(subObj) {
	setLayView(subObj,false);
	subObj.isVisible=false;
	pre_lwObj=subObj;
}

//マウス押下時の処理
function mouseDown(e) {
	startX=getEventPageX(e); startY=getEventPageY(e);
	grabObj=this.parent;
	if (ns4) {
		document.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
	}
	if (ns6) {
		document.addEventListener('mousemove',mouseMove,true);
		document.addEventListener('mouseup',mouseUp,true);
	} else {
		document.onmousemove=mouseMove;
		document.onmouseup  =mouseUp;
	}
	return false; 
}

//マウス移動時の処理
function mouseMove(e) {
	if (grabObj) {
		curX=getEventPageX(e);
		curY=getEventPageY(e);
		dx=curX-startX; dy=curY-startY;
		if (curX!=startX||curY!=startY) {
			moveLayBy(grabObj,dx,dy);
		}
		startX=curX; startY=curY;
	}
	return false;
}

//マウス押上時の処理
function mouseUp(e) {  
	if (ns4) {
		document.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
	}
	if (ns6) {
		document.removeEventListener('mousemove',mouseMove,false);
		document.removeEventListener('mouseup',mouseUp,false);   
	} else {
		document.onmousemove=null;
		document.onmouseup  =null;
	}
	grabObj=null;
	return false;     
}

//初期化
function init() {
	lwObj=getLayName('LayWin0');
	lwObj.drag=getLayName('topbar0','LayWin0'); 
	lwObj.drag.parent=lwObj;
	if (ns4) {
		lwObj.drag.captureEvents(Event.MOUSEDOWN);
	}
	lwObj.drag.onmousedown=mouseDown;  
}
