//m_script.js 二世代目開発・単体動作

	var scriptVer = "ver1.00 [ FREE ] 20030225B"; //バージョン情報

//■■■■■  デフォルト情報  ■■■■■// (通常は変更する必要はありません)
	alphaS      = false;    //アルファフィルタを使用する ( false / true )
	alphaLast   = 65;      //アルファフィルタの待機値 (0=透明 ～ 100=不透明)
	alphaOver   = 100;     //OnMouse状態のアルファフィルタ値
	DivLocationX = 10;     //ＤＩＶ位置Ｘ [数値]px
	DivLocationY = 10;     //ＤＩＶ位置Ｙ [数値]px
	timerIDtiming = 100;   //移動検知時間軸（静止状態での検知） [数値]ns
	moveIDtiming  = 30;    //移動タイミング時間軸               [数値]ns
	drawCount = 0.15;      //移動動作速度指定(0 静止 0.1>移動 1=完全追従 (1以上の設定は不可) )
	XEnable = 0;       //Ｘ座標方向動作可否
	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;
	isIE7 = VarUsrAgt.indexOf("msie 7.") != -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) || isIE7 || isNS6 || isNS7 || isMZ1 || isOP7);

	//Operaのなりきりブラウザ対策
	if (isOP7) isNS4 = isNS6 = isNS7 = isIE5 = isIE6 = isIE7 = isMZ1 = false;


var div_data = "";
var div_mini="";
var divcheck=false;
var divW;
var divH;
var MouseToDiv;
var ScriptStart = false;

var scroll_size = 0;

//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) + "px";
	div_data.style.left = (DivNow("X") + Math.ceil(tempX * drawCount) + tx) + "px";
	
	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;
	var UDstate=0;
	if (isIE5 || isIE6 || isIE7 || isOP7){ // mouseX ,Y 絶対座標
		mouseXm = document.documentElement.scrollLeft;
		mouseYm = document.documentElement.scrollTop;
	} else if (isNS6 || isNS7 || isMZ1) {
		mouseXm = self.pageXOffset;
		mouseYm = self.pageYOffset;
	}
	if (ordinate.toUpperCase() == "X"){        // X座標
		if (XEnable==1) {
			if(LRmode==1){
				return parseInt(WinSize("X") - DivSize("W") - DivLocationX + mouseXm - MozillaState);
			}
			return DivLocationX + mouseXm;
		}
		return DivLocationX;
	} else if (ordinate.toUpperCase() == "Y"){ // Y座標
		if (UDmode==1){
			return parseInt(WinSize("Y") - DivSize("H") - DivLocationY + mouseYm - MozillaState);
		}else {
			if (mouseYm > DivLocationY) {
				nowY = mouseYm + DivSize("H");
				stopY = document.body.scrollHeight - 24;
				if (nowY > stopY) {
					return mouseYm - (nowY - stopY);
				}else {
					return DivLocationY + (mouseYm - DivLocationY);
				}
			}else {
				return DivLocationY;
			}
		}
	}
}


//////////////////////////////////
//DIV現在位置を取得する
//ordinate(座標) "X" or "Y"
//戻り値 X or Y 座標
function DivNow(ordinate){
	if(!ScriptStart) return;
	if (ordinate.toUpperCase()=="X"){
		if (DivLocationX > 0) {
			return DivLocationX;
		}else {
			return parseInt(div_data.offsetLeft);
		}
	} else if (ordinate.toUpperCase()=="Y"){
		return parseInt(div_data.offsetTop);
	}
}


//////////////////////////////////
//Windowのサイズを取得する
//ordinate(座標) "X" or "Y"
//戻り値 X or Y 座標
//(DIV 標準位置によって返す値は変わります)
function WinSize(ordinate){
	if (ordinate.toUpperCase()=="X"){        //X座標
		if(isIE5 || isIE6 || isIE7 || isOP7){
			return document.body.clientWidth;
		} else if (isNS6 || isNS7 || isMZ1) {
			return innerWidth;
		}
	} else if (ordinate.toUpperCase()=="Y"){ //Y座標
		if(isIE5 || isIE6 || isIE7 || 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 document.getElementById('MoveDiv').clientWidth;
	} else if (ordinate.toUpperCase()=="H"){ //Y座標
		return document.getElementById('MoveDiv').clientHeight;
	}
}

//////////////////////////////////
//アルファフィルタの適応
function alphaState(){
	if(!alphaS) return;
	a_state = alphaLast;
	if(MouseToDiv) a_state=alphaOver;
	if (isIE5 || isIE6 || isIE7){
		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 || isIE7 || 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(top, left){
	DivLocationX = left;
	DivLocationY = top;
	if (isIE5 || isIE6 || isIE7) {
		DivLocationY = DivLocationY + 3;
	}
	
	if ( !document.getElementById("MoveDiv") || !isJS ) return;

	//グローバルで使用するDIV情報取得「div_data」の作成
	div_data = document.getElementById("MoveDiv");
	div_data.style.position="absolute";
	div_data.style.backgroundColor = '#FFFFFF';
	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//

//上記コメントは削除可です（残しておいてくれると助かりますが...）


