/*------------ [base] ------------*/

var w = window;
var d = document;
var ua = navigator.userAgent;
var av = navigator.appVersion;
// check OS
var WIN = ua.indexOf('Win')>=0;
var MAC = ua.indexOf('Mac')>=0;
var OSX = ua.indexOf('Mac OS X')>=0;
var LNX = ua.indexOf('Linux')>=0;

// check browser
var IE = ua.indexOf('MSIE')>=0;
var IE8 = ua.indexOf('MSIE 8.0')>=0;
var NN = ua.indexOf('Netscape')>=0;
var FF = ua.indexOf('Firefox')>=0;
var SF = ua.indexOf('Safari')>=0;
var OP = ua.indexOf('Opera')>=0;
var CR = ua.indexOf('Chrome')>=0;

// moveNaviBtn_html
var moveNaviBtn_html ='<div id="elevatorOff"><a href="#" onmouseover="swapImage(this,\'/shared/images/movenavi_btn_01_on.gif\')" onmouseout="swapImage(this,\'/shared/images/movenavi_btn_01.gif\')" onfocus="swapImage(this,\'/shared/images/movenavi_btn_01_on.gif\')" onblur="swapImage(this,\'/shared/images/movenavi_btn_01.gif\')"><img src="/shared/images/movenavi_btn_01.gif" alt="ナビゲーションを固定する" width="127" height="17" /></a></div>'+
'<div id="elevatorOn"><a href="#" onmouseover="swapImage(this,\'/shared/images/movenavi_btn_02_on.gif\')" onmouseout="swapImage(this,\'/shared/images/movenavi_btn_02.gif\')" onfocus="swapImage(this,\'/shared/images/movenavi_btn_02_on.gif\')" onblur="swapImage(this,\'/shared/images/movenavi_btn_02.gif\')"><img src="/shared/images/movenavi_btn_02.gif" alt="ナビゲーションをスライドさせる" width="153" height="17" /></a></div>';

/*------------ [Cookie] ------------*/
var cookieFlag = navigator.cookieEnabled;

//Cookieへ書出
//引数 key　 : データキー(半角英数 _ のみ)
//引数 value : データの値(日本語可)
//引数 days  : データを保持する日数(0の時は有効期限は省略)
function WriteCookie(key, value, days, path) {
	var str = key + '=' + escape(value) + ';';//書き出す値1:key=value
	if (days != 0) {//日数 0 の時は省略
		var dt = new Date();// 現在の日時
		dt.setDate(dt.getDate() + days);//days日後の日時
		str += 'expires=' + dt.toGMTString() + ';';//書き出す値2:有効期限
		str += 'path='+path;
	}
	document.cookie = str;//Cookieに書き出し
}

//Cookieの読込
//引数 key : 求める値のキー
//戻り値　 : 値(ない時は空文字'')
function ReadCookie(key) {
	var sCookie = document.cookie;//Cookie文字列
	var aData = sCookie.split(';');//';'で区切って'キー=値'の配列にする
	var oExp = new RegExp(' ', 'g');//すべての半角スペースを表す正規表現
	key = key.replace(oExp, '');//引数keyから半角スペースを除去
	var i = 0;
	while (aData[i]) {//語句ごとの処理 : マッチする要素を探す
	var aWord = aData[i].split('=');//さらに'='で区切る
	aWord[0] = aWord[0].replace(oExp, '');// 半角スペース除去
	if (key == aWord[0]) return unescape(aWord[1]);//マッチしたら値を返す
		if (++i >= aData.length) break;//要素数を超えたら抜ける
	}
	return '';//見つからない時は空文字を返す
}


/*------------ [elevatormenu] ------------*/
var speed = 20;//ナビゲーションの移動速度
var steps = 10;//ナビゲーションの移動幅

var snaviConts;
var Pos;
var strPos;//元の位置
var trgPos;//移動先位置
var steps;//移動幅
var pageHeight;

var MoviNaviOn;
var MoviNaviOff;
var MoveNaviFlag;

function moveSnavi() {//ナビゲーションの挙動設定
	if(cookieFlag) {
		if(!CR){
			MoveNaviFlag = ReadCookie('MoveNavi');//Cookie読み込み
		}
	}
	if(MoveNaviFlag == 'true'|| MoveNaviFlag == '') {
		MoviNaviOn.style.display = 'none';
		MoviNaviOff.style.display = 'block';
		getPosition();
		trgPos = Pos;
		//下降の上限設定
		pageHeight = d.getElementById('body').scrollHeight;
		if(SF || CR || IE8) {
			if(MAC) {
				if(trgPos>pageHeight-384) {
					trgPos =d.getElementById('body').scrollHeight-384;
				}
			} else {
				if(trgPos>pageHeight-382) {
					trgPos =d.getElementById('body').scrollHeight-382;
				}
			}
		} else {
			if(trgPos>pageHeight-372) {
				trgPos =d.getElementById('body').scrollHeight-372;
			}
		}
		//上昇の上限設定
		if(trgPos<0) {
				trgPos = 0;
		}
		var movingsteps = steps;
		var distance;//移動距離
		distance = Math.abs(trgPos - strPos);
	
		if(distance>100) {//移動距離が長い時スピード上げる
			movingsteps = steps*5;
		}
		if(distance<25) {//移動距離が少ない時スピード落とす
			movingsteps = 1;
		}
		if(strPos>trgPos) {//上昇
			strPos -= movingsteps;
			//alert("strPos"+strPos+"/"+"trgPos"+trgPos);
		} else if(strPos<trgPos) {//下降
			strPos += movingsteps;
			//alert("strPos"+strPos+"/"+"trgPos"+trgPos);
		}
		if(distance != 0) {
			snaviConts.style.top = strPos + 'px';
		}
	} else {
		MoviNaviOn.style.display = 'block';
		MoviNaviOff.style.display = 'none';
	}
}

function getPosition() {//位置取得
	if(IE){
		Pos = d.documentElement.scrollTop-129;
	}else{
		Pos = w.pageYOffset-129;
	}
}


function setSnavi(e) {//ナビゲーションhtml挿入、移動元位置取得
	snaviConts = d.getElementById('sideNavigationConts');
	//snaviConts.innerHTML = snavi_html;
	movenaviBtnConts =d.getElementById('movenaviBt');
	movenaviBtnConts.innerHTML = moveNaviBtn_html;
	getPosition();
	strPos = Pos;
	if(strPos<0) {//初期位置設定
		strPos = 0;
	}
	//エレベーターメニューON/OFF設定
	MoviNaviOn = d.getElementById('elevatorOn');
	MoviNaviOff = d.getElementById('elevatorOff');
	
	MoviNaviOff.onclick = function() {
		if(cookieFlag) {
			if(CR){
				MoveNaviFlag = 'false';
				MoviNaviOn.style.display = 'block';
				MoviNaviOff.style.display = 'none';
			} else {
				WriteCookie('MoveNavi','false',30,'/');//データ'MoveNavi=false'を30日間保持
			}
		} else {
			MoveNaviFlag = 'false';
			MoviNaviOn.style.display = 'block';
			MoviNaviOff.style.display = 'none';
		}
		//OFF時は初期位置へ
		snaviConts.style.top = 0;
		strPos = 0;
	}
	MoviNaviOn.onclick = function() {
		if(cookieFlag) {
			if(CR){
				MoveNaviFlag = 'true';
				MoviNaviOn.style.display = 'none';
				MoviNaviOff.style.display = 'block';
			}else {
				WriteCookie('MoveNavi','true',30,'/');//データ'MoveNavi=true'を30日間保持
			}
		} else {
			MoveNaviFlag = 'true';
			MoviNaviOn.style.display = 'none';
			MoviNaviOff.style.display = 'block';
		}
	}
	//初期設定
	if(cookieFlag) {//cookie有効
		if(CR){//crome
			MoveNaviFlag = 'true';
			MoviNaviOn.style.display = 'none';
			MoviNaviOff.style.display = 'block'
			snaviConts.style.top = strPos + 'px';
		}else {
			MoveNaviFlag = ReadCookie('MoveNavi');//以前のcookie設定あり
			if(MoveNaviFlag=='') {//以前のcookie設定なし
				MoveNaviFlag = 'true';
				MoviNaviOn.style.display = 'none';
				MoviNaviOff.style.display = 'block';
				snaviConts.style.top = strPos + 'px';
			} else if(MoveNaviFlag=='true') {
				MoveNaviFlag = 'true';
				MoviNaviOn.style.display = 'none';
				MoviNaviOff.style.display = 'block'
				snaviConts.style.top = strPos + 'px';
			} else if(MoveNaviFlag=='false') {
				MoveNaviFlag = 'false';
				MoviNaviOn.style.display = 'block';
				MoviNaviOff.style.display = 'none'
				snaviConts.style.top = 0 + 'px';
			}
		}
	} else {//cookie無効
		MoveNaviFlag = 'true';
		MoviNaviOn.style.display = 'none';
		MoviNaviOff.style.display = 'block';
		snaviConts.style.top = strPos + 'px';
	}
	setInterval('moveSnavi()',speed);
}

function addListener(elem, eventType, func, cap) {
	if(elem.addEventListener) {
		elem.addEventListener(eventType, func, cap);
	} else if(elem.attachEvent) {
		elem.attachEvent('on' + eventType, func);
		return false;
	}
}

addListener(window, 'load', setSnavi, false);
