
//
//	gm menu
//	2002/02/26 version
//
//  2006/09/17 modernize.
//
var __gm_instances = {};

Function.prototype.bind = function(object) {
	var __method = this;
	return function() {
		return __method.apply(object, arguments);
	}
}

window.$ = function (id) {
	return document.getElementById(id);
}

function trace(n) {
	//console.log(n);
}


// if moveFromX, moveFromY is NaN, start from current layer position of style information.
function toggle_gm(id, on_end)
{
	var gm_instance = null;
	if ( __gm_instances[id] ) {
		gm_instance = __gm_instances[id];
	} else {
		gm_instance = new gm(id);
		__gm_instances[id] = gm_instance;
	}
	gm_instance.toggle(on_end);
}

function gm( id )
{
	this.id = id;
	this.target_id = this.id + "-content";

	this.moveFromX = $(this.target_id).offsetLeft;
	this.moveFromY = 0 - $(this.target_id).offsetHeight + $(this.id).offsetHeight - 20;

	this.moveToX = this.moveFromX;
	this.moveToY = 0;

	if ( navigator.userAgent.match(/MSIE.+Mac_PowerPC/) ) {
		this.moveFromX -= 34;
		this.moveFromY += 10;

		this.moveToX -= 34;
	}



	this.msec = 420;
	this.timeSlice = 80;

	var	layerStyle = GetLayerStyle(this.target_id);
	this.original_visibility = layerStyle.visibility;
	this.original_display = layerStyle.display;
}

function $(id) { return document.getElementById(id); }
function GetLayerStyle(layerID)
{
	var s;
	var d = document.getElementById(layerID);
	s = d.style;
	return s;
}

gm.prototype.toggle = function (on_end)
{
	this.MoveLayer(on_end);
}

gm.prototype.MoveLayer = function MoveLayer(on_end)
{
	if( this.isMoving )
		return;
	
	this.StartMoveLayer(on_end);
	this.layerStatus = ( this.layerStatus != "moved") ? "moved" : "";
}


gm.prototype.StartMoveLayer = function (on_end)
{
	this.currentFrame = 0;
	
	this.lastFrame = Math.ceil( this.msec/this.timeSlice );
	if ( this.msec % this.timeSlice )
		this.lastFrame++;

	var	layerStyle = GetLayerStyle(this.target_id);
	var x1, x2, y1, y2;
	if (this.layerStatus == "moved" ) {
		x1 = NaN;
		y1 = NaN;
		x2 = this.moveFromX;
		y2 = this.moveFromY;
	} else {
		x1 = this.moveFromX;
		y1 = this.moveFromY;
		x2 = this.moveToX;
		y2 = this.moveToY;
	}

	this.srcX = is_nan(x1, layerStyle.left);
	this.srcY = is_nan(y1, layerStyle.top);

	this.dstX = is_nan(x2, layerStyle.left);
	this.dstY = is_nan(y2, layerStyle.top);

	this.isMoving = true;

	var	alpha=0.2;

	var self = this;
	// macIE seems not suppoting OO style callback....
	if ( navigator.userAgent.match(/MSIE.+Mac_PowerPC/) ) {
		var  fn = "mac_ie_sucks('" + this.id + "'," + alpha + ")";
		this.timer = setInterval( fn, this.timeSlice );
	} else {
		this.timer = setInterval( function () {
				this.LocateLayerAccelerated( alpha, on_end );
			}.bind(this), this.timeSlice);
	}
}

function is_nan(value, style_prop)
{
	
	return (isNaN(value) ? parseInt(style_prop, 10) : value);
}

gm.prototype.LocateLayerAccelerated = function (alpha, on_end)
{
	gm_moving(this, alpha, on_end);
}

function mac_ie_sucks(id, alpha) {
	var self = __gm_instances[id];
	gm_moving(self, alpha);
}

function gm_moving(self, alpha, on_end) {
	var layerStyle = GetLayerStyle(self.target_id);
	self.currentFrame++;

	var x,y;

	if( self.currentFrame < self.lastFrame ) {
		var	t=Math.PI * (self.currentFrame/self.lastFrame);
		var	a=Math.cos(t);
		var	p=( 1 + Math.pow( Math.abs(a), alpha ) * ((a>0)?1:-1) ) / 2;
		x = self.srcX*p + self.dstX*(1-p);
		y = self.srcY*p + self.dstY*(1-p);
		Math.floor(x);
		layerStyle.left;

		layerStyle.left = Math.floor(x) + "px";
		layerStyle.top = Math.floor(y) + "px";
		layerStyle.visibility = "visible";
		layerStyle.display = "block";
		layerStyle.zIndex = "1600";
	} else {
		x = self.dstX;
		y = self.dstY;
		self.isMoving = false;
		clearInterval( self.timer );
		if( self.layerStatus != "moved" ) {
			layerStyle.visibility = self.original_visibility;
			layerStyle.display = self.original_display;
		}
		layerStyle.left = Math.floor(x) + "px";
		layerStyle.top = Math.floor(y) + "px";

		if (on_end) {
			on_end.call();
		}
	}
}


//
// ---- gm menu ends. ----
//

// SetOnChangeReplaceImages()
	var onChangeReplaceImages= new Array();
	
	function SetOnChangeReplaceImages()
	{
		var imageArray = new Array();
		for(i=1;i<arguments.length;i++)
		{
			image=new Image();
			image.src=arguments[i];
			imageArray[i-1]=arguments[i];
//			alert(i+"+"+arguments[i] );
		}
		onChangeReplaceImages[ arguments[0] ] = imageArray;
	}
	function OnChangeReplaceImage(replaceImageID,s)
	{
		var index=s.selectedIndex;
//		alert(index+"+"+onChangeReplaceImages[index]);
		document.images[replaceImageID].src=onChangeReplaceImages[replaceImageID][index];
	}

// SetOnChangeReplaceImages() ends.

// GetDeliverDate()
	function GetDeliverDate()
	{
		var  maxDateCount=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
		time=new Date();
		var year=time.getYear()
		if( year%4 ) maxDateCount[1]++;
		var deliverMonth,deliverDate;
		deliverMonth=time.getMonth();
		deliverDate=time.getDate();
		if( time.getHours()>=16 )
			deliverDate+=2;
		else
			deliverDate+=1;
		if(deliverDate>maxDateCount[deliverMonth])
		{
			deliverDate-=maxDateCount[deliverMonth];
			deliverMonth++;
			if( deliverMonth>11 )
				year++;
			deliverMonth%=12;
		}
		return new Date(year,deliverMonth,deliverDate);
	}
// GetDeliverDate() ends.

	function HideLayer(id)
	{
		var	s=GetLayerStyle(id);
		s.visibility="hidden";
		s.display="none";
	}
	function ShowLayer(id)
	{
		var	s=GetLayerStyle(id);
		s.visibility="visible";
		s.display="block";
	}

function Mover(nam,num) {
	if(navigator.appVersion.charAt(0) >= "3") {
		document.images[nam].src = img[num].src;
	} else { }
}
function Mout(nam,num) {
	document.images[nam].src = img[num].src;
}


//
// page initialization.
//
	var img = new Array();
//	if(navigator.appVersion.charAt(0) >= "3") 
//	{
	img['baloon_0'] = new Image();  img['baloon_0'].src = "img/navichara/baloon-top2/0.gif";
	img['baloon_na'] = new Image();  img['baloon_na'].src = "img/navichara/baloon-top2/na.gif";
	img['baloon_intro'] = new Image();  img['baloon_intro'].src = "img/navichara/baloon-top2/intro.gif";
	img['baloon_top'] = new Image();  img['baloon_top'].src = "img/navichara/baloon-top2/top.gif";
	img['baloon_news'] = new Image();  img['baloon_news'].src = "img/navichara/baloon-top2/news.gif";
	img['baloon_shopping'] = new Image();  img['baloon_shopping'].src = "img/navichara/baloon-top2/shopping.gif";
	img['baloon_xmas'] = new Image();  img['baloon_xmas'].src = "img/navichara/baloon-top2/xmas.gif";
	img['baloon_md'] = new Image();  img['baloon_md'].src = "img/navichara/baloon-top2/md.gif";
	img['baloon_nyear'] = new Image();  img['baloon_nyear'].src = "img/navichara/baloon-top2/nyear.gif";
	img['baloon_noroshop'] = new Image();  img['baloon_noroshop'].src = "img/navichara/baloon-top2/noroshop.gif";
	img['baloon_calendarshop'] = new Image();  img['baloon_calendarshop'].src = "img/navichara/baloon-top2/calendarshop.gif";
	img['baloon_lesson'] = new Image();  img['baloon_lesson'].src = "img/navichara/baloon-top2/lesson.gif";
	img['baloon_books'] = new Image();  img['baloon_books'].src = "img/navichara/baloon-top2/books.gif";
	img['baloon_wedding'] = new Image();  img['baloon_wedding'].src = "img/navichara/baloon-top2/wedding.gif";

	img['baloon_aboutus'] = new Image();  img['baloon_aboutus'].src = "img/navichara/baloon-top2/aboutus.gif";
	img['baloon_access'] = new Image();  img['baloon_access'].src = "img/navichara/baloon-top2/access.gif";
	img['baloon_legal'] = new Image();  img['baloon_legal'].src = "img/navichara/baloon-top2/legal.gif";
	img['baloon_mail'] = new Image();  img['baloon_mail'].src = "img/navichara/baloon-top2/mail.gif";
	img['baloon_privacy'] = new Image();  img['baloon_privacy'].src = "img/navichara/baloon-top2/privacy.gif";
	img['baloon_sitemap'] = new Image();  img['baloon_sitemap'].src = "img/navichara/baloon-top2/sitemap.gif";
	
	img['potman1_0'] = new Image();  img['potman1_0'].src = "img/navichara/potman1_0.gif";
	img['potman1_1'] = new Image();  img['potman1_1'].src = "img/navichara/potman1_1.gif";
	
//	}
	


