// 日本語

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function pageBack(){
    history.back();
}

function is_oversea(lat, lng) {
  if ( ( lat < 31 || 45.42 < lat ) || ( lng < 129.5 || 145.6 < lng ) ) {
    return true;
  } else {
    return false;
  }
}

// Snap Comment Popup
flag = $H();
function popupComment(node_id) {
  if (!(flag[node_id]) && $('comment_' + node_id)) {
    //Element.show('comment_' + node_id);
    flag[node_id] = true;
    Effect.Appear('comment_' + node_id, {
      duration : 0.3,
      afterFinishInternal : function() {
        flag[node_id] = undefined;
        setTimeout('hideComment("' + node_id + '");', 2000);
      }
    });  
  }
}
function hideComment(node_id) {
  if ( !(flag[node_id]) && $('comment_' + node_id) && 
  //if ($('comment_' + node_id) && 
    Element.visible('comment_' + node_id) ) {
    //Element.hide('comment_' + node_id);
    flag[node_id] = true;
    Effect.Fade('comment_' + node_id, {
      duration : 0.3,
      afterFinishInternal : function() {
        flag[node_id] = undefined;
        Element.hide('comment_' + node_id);
      }
    });
  }
}

var comment = {};
comment = {
	inputid : '',
	formid : '',
	tmplid : '',
	cmntCntnrid : '',
	cmntclass : '',
	url : '',
	ev : 0,
	init : function(o){
		this.inputid = o.inputid;
		this.formid = o.formid;
		this.tmplid = o.tmplid;
		this.cmntCntnrid = o.cmntCntnrid;
		this.cmntclass = o.cmntclass;
		this.url = o.url;
		this.ev = o.ev;
	},
	submit : function(sid){
		var pars = 'sid='+sid+'&txt='+encodeURIComponent($(this.inputid+sid).value)+'&ev='+this.ev;
		$(this.formid+sid).disabled = true;
		var aj = new Ajax.Request( this.url, {method: 'get', parameters: pars, onComplete: comment.res} );
	},
	res : function(o){
		var result = eval( '(' + o.responseText + ')' );
		$(comment.formid+result.sid).disabled = false;
		if( result.is_success ){
			var rendered = Lyase.View.render({element:comment.tmplid}, result );
			var divC = document.createElement('div');
			divC.className = comment.cmntclass;
			divC.innerHTML = rendered;
			$(comment.cmntCntnrid+result.sid).appendChild(divC);
			$(comment.inputid+result.sid).value = '';
		}else{
			throw("can comment only after login");
		}
	}
};

var ColorForm = {};
ColorForm = {
	init : function(){
		var self = ColorForm;
		var eles = $A(document.getElementsByTagName('input'));
		eles = eles.concat( $A(document.getElementsByTagName('textarea')));
		eles.each( function(ele){
			Event.observe(ele,'focus',self.onFocus.bind(ele));
			Event.observe(ele,'blur',self.onBlur.bind(ele));
		});
	},
	onFocus : function(){
		this.style.backgroundColor = '#FFEEF0';
	},
	onBlur : function(){
		this.style.backgroundColor = '#FFFFFF';
	}
};
Event.observe(window, 'load', ColorForm.init, false);

var SmoothScroll = {};
SmoothScroll = {
	targety : 0,
	timer : 0,
	count : 0,
	lastDist : 0,
	options : { time:0, unit:0 },
	defaultOptions : {
		time : 300,	// [ms]
		unit : 20	// [ms]
	},
	smoothTop : function( options ){
		var self = SmoothScroll;
		self.options.time = self.defaultOptions.time;
		self.options.unit = self.defaultOptions.unit;
		if( options ){
			self.options.time = ( options.time ) ? options.time : self.options.time;
			self.options.unit = ( options.unit ) ? options.unit : self.options.unit;
		}
		clearInterval( self.timer );
		self.targety = 0;
		self.lastDist = 0;
		self.timer = setInterval('SmoothScroll.update()', self.options.unit );
		self.count = 0;
		self.update();
	},
	update : function(){
		var self = SmoothScroll;
		var dist = self.getScroll().y - self.targety;
		var speed = 2 * dist * self.options.unit / ( self.options.time - self.options.unit * self.count );
		speed = ( speed > 0 ) ? Math.ceil( speed ) : Math.floor( speed );
		if( Math.abs(dist) <= Math.abs(speed) ){
			// got there
			clearInterval( self.timer );
			self.setScroll(0,self.targety);
			return;
		}else if( self.lastDist != 0 && self.lastDist <= dist ){
			// mouse scroll by user
			clearInterval( self.timer );
			return;
		}
		self.lastDist = dist;
		self.setScroll(0,dist-speed);
		self.count++;
		if( self.count == self.options.time / self.options.unit ){
			// timeout
			clearInterval( self.timer );
			self.setScroll(0,self.targety);
		}
	},
	getScroll : function(){
		if( document.all ){
			x = document.body.scrollLeft || document.documentElement.scrollLeft;
			y = document.body.scrollTop  || document.documentElement.scrollTop;
		}else{
			x = pageXOffset;
			y = pageYOffset;
		}
		return { x : x, y : y };
	},
	setScroll : function(x,y){
		scrollTo(x,y);
	}
}

function embedSmoothScroll(){
	if (!document.getElementsByTagName){ return; }
	var as = document.getElementsByTagName('a');
	var len = as.length;
	for( var i=0; i<len; i++ ){
		var a = as[i];
		if( a.href.match('#top') ){
			Event.observe(a,'click',SmoothScroll.smoothTop);
			a.href="javascript:void(0);";
		}
	}
}
Event.observe(window, 'load', embedSmoothScroll, false);

function showLoginFormOnError(){
	if( loginerror ){
		Effect.SlideDown('login_form');
	}
}
Event.observe(window, 'load', showLoginFormOnError, false);
