	// 固定モード設定
	var isFixedMode = false;

	// ドラッグする対象を保持
	var targetObject;
	// 直前の座標を保持
	var last_X, last_Y;
	// 対象の頂点とカーソル位置の差異を保持
	var offset_X, offset_Y;
	// マウスボタンの状態を保持
	var isButtonDown = false;
	// 最大枚数時の最大Z軸座標
	var	Z_top = 50;
	// ブラウザの種類を保持
	var isNN = ( !( document.all) && document.getElementById);

	// レイヤー情報を取得する
	function GetLayerStyle(layerID) {
		if( navigator.appVersion.search( "(MS)?IE") > -1 ) {
			return( document.all[layerID] ) ? document.all[layerID].style : null ;
		} else {
			var doc = document.getElementsByTagName("div");

			return( doc[layerID] )? doc[layerID].style : null ;
		}
	}

	// マウスカーソルの状態を保持するオブジェクト
	function MouseStatus( event) {
		if( isNN) {
			this.x = event.pageX;
			this.y = event.pageY;
		} else {
			this.x = event.clientX;
			this.y = event.clientY;
		}
		this.status = event.type;
		return false;
	}

	// マウスボタンが押された時の処理
	function beMouseDown( target, mouse) {
		// マウスボタンの状態を保存
		isButtonDown = true;
		// 対象を保存
		targetObject = target;
		// 対象の左上頂点(基準点)とマウスカーソル位置の差異を保存
		offset_X = mouse.x - parseInt( targetObject.style.left);
		offset_Y = mouse.y - parseInt( targetObject.style.top);
		// イベントキャプチャを設定
		if( isNN)
			document.captureEvents( Event.MouseDown | Event.MouseUp);
		// ドラッグ中のイベントを変更設定
		document.onmouseup = DragSlip;
		document.onmousemove = DragSlip;
		// 対象のZ軸座標を前面に移動
		Z_top++;
		target.style.zIndex = Z_top;
		return false;
	}

	// マウスボタンが離された時の処理
	function beMouseUp() {
		// マウスボタンの状態を保存
		isButtonDown = false;
		// オブジェクト解放
		targetObject = null;
		// ドラッグ中のイベントを解除
		document.onmousemove = null;
		document.onmouseup = null;
		return false;
	}

	// マウスドラッグ中の処理
	function beMouseMove( mouse) {
		// カーソルの移動が無い時は処理しない
		if( last_X == mouse.x && last_Y == mouse.y)
			return;
		// 対象の座標を移動させる
		targetObject.style.left= mouse.x - offset_X;
		targetObject.style.top= mouse.y - offset_Y;
		return false;
	}

	// レイヤーをドラッグする
	// 引数 : ドラッグするレイヤ、マウス等のイベント(for Netscape)
	function DragSlip( target, nn_event) {
		// 固定モードならば、移動せずに関数を脱出
		if( isFixedMode)
			return;
		// イベントのためのオブジェクトを取得
		if( isNN) {
			if( isButtonDown)
				event = target;
			else
				event = nn_event;
		}
		// マウスカーソルの座標を取得
		var mouse = new MouseStatus( event);
		// マウスボタンの状態により分岐
		switch( mouse.status) {
		case 'mouseup':		// ボタンが離された時
			beMouseUp();
			break;
		case 'mousedown':	// ボタンが押された時
			beMouseDown( target, mouse);
			break;
		case 'mousemove':	// ドラッグされた時
			if( isButtonDown)
				beMouseMove( mouse);
			break;
		defaut:
			break;
		}
		// マウスカーソルの位置を保存
		last_X = mouse.x;
		last_Y = mouse.y;
		return false;
	}

