
//-----------------------------------------------
//KeyNavi Flip  (processed on 2003/12/15)
//This script requires keynavi_ja(en).js, keynavi_tools.js
//-----------------------------------------------

FL_VERSION="1.03";

function fl_opacity(v){
	if(!kl_layer_setopacity_ok() || v.msec1<=0 || v.steps<=0) return 100;
	return (100*(v.steps-v.kl_cnt-1))/v.steps;
}
function fl_trans_skip(v){
	kl_timer_stop(v);
	if(!v.skipped_time) v.skipped_time=0;
	if(v.skipped_time>v.msec3) return false;
	v.kl_msec=200;
	if(!v.ts) v.ts=kl_timer_new(kl_timer_restart,new Array(v),500,1);
	kl_timer_start(v.ts);
	v.skipped_time+=700;
	if(v.kl_cnt>=1) v.kl_cnt-=1;
	return false;
}
function fl_trans(v){
	var v=this;
	var slx0=v.slx; var slx=kl_slx(); v.slx=slx;
	var sly0=v.sly; var sly=kl_sly(); v.sly=sly;
	if(slx0!=slx || sly0!=sly){
		return fl_trans_skip(v);
	}
	if(kl_isfunc(v.stopfunc)) if(v.stopfunc()){
		return fl_trans_skip(v);
	}
	if(v.fl_skip){ v.fl_skip=0; return true; }
	if(fl_over(v)) return false;
	if(v.msec1<=0 || v.steps<=0 || v.kl_cnt>=v.steps-1){
		var e=v.lays[0];
		if(kl_elem_x(e)>slx+kl_windowwidth() ||
		   kl_elem_x(e)+kl_elem_width(e)<slx ||
		   kl_elem_y(e)>sly+kl_windowheight() ||
		   kl_elem_y(e)+kl_elem_height(e)<sly){
			return fl_trans_skip(v);
		}
		fl_next(v,"no_clear");
	}else{
		kl_layer_setopacity(fl_layer_fg(v),fl_opacity(v));
		v.kl_msec=Math.round(v.msec1/(v.steps+0.0));
	}
	v.skipped_time=0;
	return true;
}
function fl_over(v){
	if(kl_isint(v.reps)){ if(v.reps>=0 && v.cnt>=v.reps-1) return 1; }
	else if(v.reps=="norepeat"){ if(v.cnt>=v.lays.length-1) return 1; }
	else if(v.reps=="norepeat+1"){ if(v.cnt>=v.lays.length) return 1; }
	return 0;
}
function fl_setreps(v,n){ v.reps=n; return v; }

//FL_REPS="norepeat+1"
//FL_REPS="norepeat"
//FL_REPS=-1;
FL_REPS=1000;
FL_MSEC1=200;
FL_MSEC2=3000;
FL_MSEC3=60*60*1000;
FL_STEPS=100;
function fl_set(lays,msec1,msec2,steps,func,args,func0,args0){
	var v=kl_timer_new(fl_trans,new Array(),msec2,-1);
	v.kl_ust=1;
	v.cnt=0; v.reps=FL_REPS;
	v.lays=new Array();
	for(var i=0;i<lays.length;i++) v.lays[i]=kl_getelem(lays[i]);
	v.msec1=kl_isint(msec1) ? msec1 : FL_MSEC1;
	v.msec2=kl_isint(msec2) ? msec2 : FL_MSEC2;
	v.msec3=FL_MSEC3;
	v.steps=kl_isint(steps) ? steps : FL_STEPS;
	v.func =func; v.args =(args  ? args  : new Array());
	v.func0=func; v.args0=(args0 ? args0 : new Array());
	v.zfg=2; v.zbg=1;
	v.slx=kl_slx();
	v.sly=kl_sly();
	return v;
}
function fl_go(v,cnt,no_clear){
	if(cnt<0) cnt=0;
	if(!no_clear) v.fl_skip=1;
	v.cnt=cnt; v.kl_msec=v.msec2; kl_timer_rewind(v);
	var fg=fl_layer_fg(v); var bg=fl_layer_bg(v);
	for(var i=0;i<v.lays.length;i++){
		if(v.lays[i]==fg || v.lays[i]==bg) continue;
		kl_layer_hide(v.lays[i]);
		kl_layer_setzindex(v.lays[i],0);
	}
	kl_layer_setzindex(bg,v.zbg); kl_layer_setopacity(bg,100);
	kl_layer_setzindex(fg,v.zfg); kl_layer_setopacity(fg,100);
	if(!kl_layer_visible(fg)) kl_layer_show(fg);
	if(!kl_layer_visible(bg)) kl_layer_show(bg);
	if(v.func){
		if(kl_apply2(v,v.func,fg,cnt,  "fg",v.args)==false ||
		   kl_apply2(v,v.func,bg,cnt+1,"bg",v.args)==false)
			kl_timer_stop(v);
	}
	return v;
}
function fl_init(v,ifneeded){
	if(!ifneeded || !v.initilized) fl_rewind(v);
	v.initilized=1;
	return v;
}
function fl_start(v,msec){ fl_init(v); v.kl_msec=(msec ? msec : v.msec2/2); kl_timer_start(v); return v; }
function fl_restart(v){ fl_init(v,"ifn"); v.kl_msec=10; kl_timer_restart(v); return v; }
function fl_play(v){ if(fl_over(v)) fl_rewind(v); return fl_restart(v); }
function fl_stop(v){ kl_timer_stop(v); return v; }

function fl_rewind(v){ fl_go(v,0);  return v;}
function fl_prev(v,f){ fl_go(v,v.cnt-(fl_opacity(v)<80 ? 0 : 1),f); return v; }
function fl_next(v,f){ fl_go(v,v.cnt+1,f); return v; }

function fl_layer_fg(v){ return v.lays[v.cnt%v.lays.length]; }
function fl_layer_bg(v){ return v.lays[(v.cnt+1)%v.lays.length]; }

function fl_setfrm(e,cnt,mode,imgs,docache){
	var id=e.id; if(!id) return true;
	var t=fl_setfrm_i2t(imgs,cnt);
	e=kl_getimg(id+"_img"); if(e) if(e.fl_src!=t[0])
	kl_load_image2(e,t[0],"if(etype=='load') this.fl_src='"+t[0]+"';");
	e=kl_getelem(id+"_msg"); if(e) kl_replace(e,t[1]);
	if(mode=="bg"){
		if(docache) kl_load_image(fl_setfrm_i2t(imgs,cnt+1)[0]);
	}
	return true;
}
function fl_setfrm_i2t(imgs,idx){
	var t=imgs[idx%imgs.length];
	if(kl_isstr(t)) t=new Array(t,"&nbsp;");
	else if(t.length==1) t=new Array(t[0],"&nbsp;");
	return t;
}
//-------[easy way here]----------
FL_EZ_PREFIX="fl_ez_";
FL_EZ_TARGET=0;
function fl_ez_onload(){
	var pre=FL_EZ_PREFIX; if(!pre) return true;
	var lays=new Array();
	var cnt=0;
	while(1){
		var e=kl_getelem(pre+cnt); if(!e) break;
		lays[lays.length]=e;
		cnt+=1;
	}
	if(lays.length>=2){
		//lays.reverse();
		FL_EZ_TARGET=fl_set(lays);
		if(self["fl_stopfunc"]) FL_EZ_TARGET.stopfunc=fl_stopfunc;
		fl_start(FL_EZ_TARGET,700);
	}
	return true;
}
if(self["kl_addhandler_ex"]) kl_addhandler_ex("onload",fl_ez_onload);

function fl_ez_play(){ if(FL_EZ_TARGET) fl_play(FL_EZ_TARGET); }
function fl_ez_stop(){ if(FL_EZ_TARGET) fl_stop(FL_EZ_TARGET); }
function fl_ez_prev(){ if(FL_EZ_TARGET) fl_prev(FL_EZ_TARGET); }
function fl_ez_next(){ if(FL_EZ_TARGET) fl_next(FL_EZ_TARGET); }
function fl_ez_rewind(){ if(FL_EZ_TARGET) fl_rewind(FL_EZ_TARGET); }
function fl_ez_last(){ if(FL_EZ_TARGET) fl_ez_go(FL_EZ_TARGET.lays.length-1); }
function fl_ez_go(cnt){ if(FL_EZ_TARGET) fl_go(FL_EZ_TARGET,cnt); }

function fl_ez_timescale(z){ if(FL_EZ_TARGET) kl_timer_setscale(FL_EZ_TARGET,z*FL_EZ_TARGET.kl_scale); }

