﻿window.addEvent("domready", ini);

// デフォルトのイベントハンドラキャンセル用
function cancel(){return false;}

function ini(){
	
	// Cookieを設定する関数
	function setMyCookie(name, val){

		// オプションパラメータ
		var myDomain = "dalarna.jp";
		var myPath = "/";
		var myDuration = 7;
		
		// Cookie保存
		Cookie.set(name, val, {domain: myDomain, path: myPath, duration: myDuration});
	
	}
	
	// string型のステータスを解析して、配列にする関数
	function parseNaviStatus(status){
		
		// 区切り文字
		var spliter = "@";
		
		var statusArr = $A(status.split(spliter));
		statusArr.each(function(obj, i){
			statusArr[i] = eval(obj);
		});
		
		// boolean型の配列を戻す
		return statusArr;
	}
			
	/* sideNavi */
	var snDt = $$("#naviInr dt a");

	// Cookieが保存されているか？
	if(Cookie.get("naviStatus")){
		// Cookieあり
		var naviStatus = Cookie.get("naviStatus");
	}else{
		// Cookieなし(初訪問)
		var naviStatus = "false@false@false@false";
		setMyCookie("naviStatus", naviStatus);
	}
	
	var statusArr = parseNaviStatus(naviStatus);

	// スライドのターゲットになるオブジェクトを配列に
	var snDd = $$("#naviInr dd");
	var snSlide = new Array();
	snDd.each(function(obj, i){
		snSlide[i] = new Fx.Slide(snDd[i], {wait: false, duration: 500});
		
		// ナビのステータスに応じてナビを閉じる
		if(!statusArr[i]){
			snSlide[i].hide();
		}

	});
	
	// トリガーをスライドするターゲットと結びつける
	snDt.each(function(obj, i){
		obj.onclick = cancel;
		obj.addEvent("click", function(){
			snSlide[i].toggle();
			
			// 該当するナビのステータスを反転し、Cookieを上書き
			statusArr[i] = !statusArr[i];
			naviStatus = statusArr.join("@");
			setMyCookie("naviStatus", naviStatus);
		});
	});
	

	/* ghost anchor */
	var ghostAnchor = $A($$("#naviInr ul a"));
	
	ghostAnchor.each(function(obj){		
		var fx = new Fx.Style(obj, "color", {duration: 500, wait: false, transition: Fx.Transitions.Sine.easeIn});
		obj.addEvent("mouseenter", function(){
			fx.start("#fff");
		});
		obj.addEvent("mouseleave", function(){
			fx.start("#e9bdbd");
		});
	});
	
	/* scroll */
	if($("scroll")){
		$("scroll").onclick = cancel;
		/*
		var myScroll = new Fx.Scroll(window, {duration: 1000, transition: Fx.Transitions.Sine.easeOut});
		$("scroll").addEvent("click", function(){myScroll.toTop(window);});
		*/
		$("scroll").addEvent("click", function(){tinyScroll.start();});
	}
	
}

var tinyScroll = {
	
	/* parameters */
	speed: 10,
	interval: 25,
	
	
	// return obj myPos
	__getPosition: function(){
		var myPos = new Object();
		if(document.documentElement.scrollTop){
			// MSIE, FF, Opera
			myPos.x = document.documentElement.scrollLeft;
			myPos.y = document.documentElement.scrollTop;
		}else{
			// for NetScape
			myPos.x = window.scrollX;
			myPos.y = window.scrollY;
		}
		
		return myPos;
	},
	
	// return obj myDestination
	__calcDestination: function(myPos){
		var myDestination = new Object();
		myDestination.x = myPos.x - myPos.x / this.speed;
		myDestination.y = myPos.y - myPos.y / this.speed;
		
		return myDestination;
	},
	
	// return void
	__myScroll: function(myDestination){
		window.scrollTo(myDestination.x, myDestination.y);
	},
	
	// initial
	start: function(){
		
		// get the position
		var myPos = this.__getPosition();
		
		// stop?
		if(myPos.y > 0.5 || myPos.x > 0.5){
			var myDestination = this.__calcDestination(myPos);
			this.__myScroll(myDestination);
			setTimeout("tinyScroll.start()", this.interval);
		}
	}
	
}




















