//m_script.js 二世代目開発・単体動作

	var scriptVer = "ver1.00 [ FREE ] 20030225B" //バージョン情報

//■■■■■  デフォルト情報  ■■■■■// (通常は変更する必要はありません)
	alphaS      = true    //アルファフィルタを使用する ( false / true )
	alphaLast   = 65      //アルファフィルタの待機値 (0=透明 〜 100=不透明)
	alphaOver   = 100     //OnMouse状態のアルファフィルタ値
	DivLocationX = 10     //ＤＩＶ位置Ｘ [数値]px
	DivLocationY = 10     //ＤＩＶ位置Ｙ [数値]px
	timerIDtiming = 300   //移動検知時間軸（静止状態での検知） [数値]ns
	moveIDtiming  = 30    //移動タイミング時間軸               [数値]ns
	drawCount = 0.15      //移動動作速度指定(0 静止 0.1>移動 1=完全追従 (1以上の設定は不可) )
	XEnable = 1       //Ｘ座標方向動作可否
	YEnable = 1       //Ｙ座標方向動作可否
	LRmode       = 0      //基準位置（0=← 1=→)
	UDmode       = 0      //基準位置（0=↑ 1=↓)
//■■■■■■■■■■■■■■■■■■■//


//ブラウザチェック (is[ブラウザ] OK=true / NG= false )
	var VarUsrAgt = navigator.userAgent.toLowerCase();
	isMac = (navigator.appVersion.indexOf("Mac") != -1);
	isWin = (navigator.appVersion.indexOf("Win") != -1);
	isX11 = (navigator.appVersion.indexOf("x11") != -1);
	isNS4 = (document.layers) ? 1 : 0;
	isNS6 = VarUsrAgt.indexOf("netscape6") != -1;
	isNS7 = VarUsrAgt.indexOf("netscape/7.") != -1;
	isIE5 = VarUsrAgt.indexOf("msie 5.") != -1;
	isIE6 = VarUsrAgt.indexOf("msie 6.") != -1;
	isOP6 = VarUsrAgt.indexOf("opera 6.") != -1 || VarUsrAgt.indexOf("opera/6.") != -1;
	isOP7 = VarUsrAgt.indexOf("opera 7.") != -1 || VarUsrAgt.indexOf("opera/7.") != -1;
	isMZ1 = navigator.appName.indexOf("Netscape") != -1 && navigator.appVersion.charAt(0)   == 5;

	isJS = ( (isIE5 && !isMac) || (isIE6 && !isMac) || isNS6 || isNS7 || isMZ1 || isOP7)

	//Operaのなりきりブラウザ対策
	if (isOP7) isNS4 = isNS6 = isNS7 = isIE5 = isIE6 = isMZ1 = false


var div_data = "" , div_mini="" , divcheck=false
var divW , divH , MouseToDiv
var ScriptStart = false

//Mozillaブラウザは、スクロールバー数値分を加算します（右寄せ時）
var MozillaState =0
if (isNS6 || isNS7 || isMZ1) MozillaState = 15

//////////////////////////////////
//待機時動作ルーチン (timerID : timerIDtimingで呼出)
function divPreset(){
	alphaState() //アルファチャンネルの適応

	//座標移動を検出した場合に発動するルーチン
	if ( (DivLocat("X") - DivNow("X")) !=0 && XEnable || (DivLocat("Y") - DivNow("Y")) !=0 && YEnable){
		clearInterval(timerID); timerID = 0;
		timerID = setInterval("moveDiv()",moveIDtiming);
	}
}

//////////////////////////////////
//DIV動作ルーチン (timerID : moveIDtimingで呼出)
function moveDiv(){
	alphaState() //アルファチャンネルの適応

	//移動方向チェックルーチン
	tempX = DivLocat("X") - DivNow("X"); tempY = DivLocat("Y") - DivNow("Y"); 
	tx = parseInt((tempX - Math.abs(tempX)) / (Math.abs(tempX) * 2))
	ty = parseInt((tempY - Math.abs(tempY)) / (Math.abs(tempY) * 2))
	if (tx==0) tx=1;    if (ty==0) ty=1     //正方向移動時
	if (isNaN(tx) || drawCount==1) tx=0;if (isNaN(ty) || drawCount==1) ty=0 //DIV基準位置とイコール

	//DIV移動量計算代入ルーチン
	div_data.style.top  = DivNow("Y") + Math.ceil(tempY * drawCount) + ty
	div_data.style.left = DivNow("X") + Math.ceil(tempX * drawCount) + tx

	if (tx == 0 && ty == 0){ //DIV位置の移動が完了
		clearInterval(timerID); timerID = 0;
		timerID = setInterval("divPreset()",timerIDtiming);
	}
}


//////////////////////////////////
//DIVのあるべき位置を取得する
//ordinate(座標) "X" or "Y"
//戻り値 X or Y 座標
function DivLocat(ordinate){
	var LRstate=0,UDstate=0;
	if (isIE5 || isIE6 || isOP7){ // mouseX ,Y 絶対座標
		mouseXm = document.body.scrollLeft
		mouseYm = document.body.scrollTop
	} else if (isNS6 || isNS7 || isMZ1) {
		mouseXm = self.pageXOffset;
		mouseYm = self.pageYOffset;
	}
	if (ordinate.toUpperCase() == "X"){        // X座標
		if(LRmode==1){
			return parseInt(WinSize("X") - DivSize("W") - DivLocationX + mouseXm - MozillaState)
		}   return DivLocationX + mouseXm
	} else if (ordinate.toUpperCase() == "Y"){ // Y座標
		if (UDmode==1){
			return parseInt(WinSize("Y") - DivSize("H") - DivLocationY + mouseYm - MozillaState)
		}   return DivLocationY + mouseYm
	}
}


//////////////////////////////////
//DIV現在位置を取得する
//ordinate(座標) "X" or "Y"
//戻り値 X or Y 座標
function DivNow(ordinate){
	if(!ScriptStart) return;
	if (ordinate.toUpperCase()=="X"){
		return parseInt(div_data.style.left)
	} else if (ordinate.toUpperCase()=="Y"){
		return parseInt(div_data.style.top)
	}
}


//////////////////////////////////
//Windowのサイズを取得する
//ordinate(座標) "X" or "Y"
//戻り値 X or Y 座標
//(DIV 標準位置によって返す値は変わります)
function WinSize(ordinate){
	if (ordinate.toUpperCase()=="X"){        //X座標
		if(isIE5 || isIE6 || isOP7){
			return document.body.clientWidth
		} else if (isNS6 || isNS7 || isMZ1) {
			return innerWidth
		}
	} else if (ordinate.toUpperCase()=="Y"){ //Y座標
		if(isIE5 || isIE6 || isOP7){
			return document.body.clientHeight
		} else if (isNS6 || isNS7 || isMZ1) {
			return innerHeight
		}
	}
}

//////////////////////////////////
//Divのサイズを取得する
//ordinate(座標) "W" or "H"
//戻り値 Width or Height 座標
function DivSize(ordinate){
	if (ordinate.toUpperCase()=="W"){        //X座標
		return div_data.offsetWidth
	} else if (ordinate.toUpperCase()=="H"){ //Y座標
		return div_data.offsetHeight;
	}
}

//////////////////////////////////
//アルファフィルタの適応
function alphaState(){
	if(!alphaS) return;
	a_state = alphaLast
	if(MouseToDiv) a_state=alphaOver
	if (isIE5 || isIE6){
		div_data.style.filter = "alpha(opacity="+a_state+",style=0)"
	} else if (isNS6 || isNS7 || isMZ1){
		div_data.style.MozOpacity= a_state/100
	} else if (isOP7){

	}
}


//////////////////////////////////
//マウスの状況調査 (マウスがDIV上の場合は MouseToDiv = true )
var LastDivMode = false
function mousemove(myEvents){
	if(!ScriptStart) return;
	if (isIE5 || isIE6 || isOP7){ // mouseX ,Y 絶対座標
		mouseX  = window.event.clientX + document.body.scrollLeft; 
		mouseY  = window.event.clientY + document.body.scrollTop; 
	} else if (isNS6 || isNS7 || isMZ1) {
		mouseX  = myEvents.pageX; mouseY  = myEvents.pageY;
	}

	DivSize("W");DivSize("H")
	if ( mouseX >= DivNow("X") && ( DivNow("X") + DivSize("W") ) >= mouseX && mouseY >= DivNow("Y") && ( DivNow("Y")+DivSize("H") ) >= mouseY){
		if (LastDivMode == false) DivContents(maxMenu)
		MouseToDiv = LastDivMode = true
	} else {
		if (LastDivMode == true) DivContents(minMenu)
		MouseToDiv = LastDivMode = false
	}
}

//////////////////////////////////
//メニュー表示種の切り替え
test1=0
function DivContents(menu_mode){
	if(!div_mini) return;
	if (menu_mode != div_data.innerHTML){
		div_data.innerHTML = menu_mode
		test1++
	}
	status = test1
}

var minMenu,maxMenu
//////////////////////////////////
//初期動作ステータス作成
function startwindow(){
	if ( !document.getElementById("MoveDiv") || !isJS ) return;

	//グローバルで使用するDIV情報取得「div_data」の作成
	div_data = document.getElementById("MoveDiv");
	div_data.style.position="absolute"
	divcheck=true; //DIVの準備が完了

	if (document.getElementById("MoveDiv_min")){
		div_mini = document.getElementById("MoveDiv_min")
		maxMenu = div_data.innerHTML
		minMenu = div_mini.innerHTML
		div_mini.style.display = "none";
		div_mini.style.position= "absolute";
		div_data.innerHTML = minMenu
	}

	//DIVサイズの取得
	DivSize("W");
	DivSize("H");

	//ユーザーステータス読込
	for (i = 0 ; i <= 500; i ++){
		div_check = document.getElementsByTagName('div')[i];
		if (div_check){
			if(div_check.id.substr(0,8) =="setM_ID@"){
				ComponentsDivData(div_check.id) //ステータス読み込み
			}
		} else {
			break; //FOR終了
		}
	}

	//DIVを指定座標上に描画する
	div_data.style.top  = DivLocat("Y")
	div_data.style.left = DivLocat("X")

	alphaState()       //アルファフィルタ適応
	ScriptStart = true //スクリプト動作の許可

	timerID = setInterval("divPreset()",timerIDtiming);	//基幹時間軸の生成

	//マウスの動作を追従
	if (isJS) document.onmousemove = mousemove;
}

//コンポーネント情報引き渡し用ＤＩＶ解析部 v1.0
checkData=""
function ComponentsDivData(data){
	for (di = 0 ; di <= data.length ; di++){
		if ( data.substr(di,1) == "@" || data.substr(di,1) == "," || data.substr(di,1) == ";"){
			checkData = data.substr(di+1,2)
			for (dk = di+1 ; dk <= data.length ; dk++){ //識別子チェッカー
				if ( data.substr(dk,1) == "=" || data.substr(dk,1) == ":" ) break;
				if ( data.substr(dk,1) == "@" || data.substr(dk,1) == "," || data.substr(dk,1) == ";"){
					 dk=0;break;
				}
			}
			numberData = parseInt(data.substr(dk+1,8))
			if (!isNaN(numberData)){
				switch (checkData){
					case "aS":alphaS       = numberData;break
					case "aL":alphaLast   = numberData;break
					case "aO":alphaOver   = numberData;break
					case "Dx":DivLocationX = numberData;break
					case "Dy":DivLocationY = numberData;break
					case "T1":timerIDtiming= numberData;break
					case "T2":moveIDtiming = numberData;break
					case "Xe":XEnable     = numberData;break
					case "Ye":YEnable     = numberData;break
					case "LR":LRmode      = numberData;break
					case "UD":UDmode      = numberData;break
					case "cD":
						drawCount   = numberData/10;
						if (drawCount>1) drawCount=1
						break
					default:break;
				}
			}
		}
	}
}

//MOVING-SCRIPT///////////////////////////////////
//  Copyright(c) 2003 Calm all rights reserved. //
//  フリー配布 商用利用可 事前事後許諾非強制    //
//  詳細は www.calm-web.com へどうぞ。          //
//////////////////////////////////////2003-02-19//

//上記コメントは削除可です（残しておいてくれると助かりますが...）


