
//-----------------------------------------------
//KeyNavi Tools  (processed on 2003/12/15)
//-----------------------------------------------

KL_TOOLS_VERSION="1.0";

//-----timer-----
KL_TIMERS=new Array();
function kl_timer_start(){
	var args=arguments;
	var v=kl_isarray(args[0]) ? args[0] : kl_apply(kl_timer_new,args);
	kl_timer_rewind(v);
	return kl_timer_restart(v);
}
function kl_timer_restart(v){
	kl_timer_stop(v);
	v.kl_stat="timer"; v.kl_msecpre=v.kl_msec;
	if(v.kl_onstart) kl_apply2v(v,v.kl_onstart);
	v.kl_id=(v.kl_ust ? setTimeout(v.kl_es,v.kl_scale*v.kl_msec) : setInterval(v.kl_es,v.kl_scale*v.kl_msec));
	return v;
}
function kl_timer_rewind(v){
	v.kl_cnt=0; v.kl_msecpre=0; v.kl_msecsum=0; return v;
}
function kl_timer_stop(v){
	if(v.kl_stat=="stop" || v.kl_stat=="step" || !kl_isdef(v.kl_id))
		return false;
	v.kl_stat="stop";
	if(v.kl_ust) clearTimeout(v.kl_id); else clearInterval(v.kl_id); 
	if(v.kl_onstop) kl_apply2v(v,v.kl_onstop);
	return true;
}
function kl_timer_new(){
	var v=new Array("new"); kl_splice(v,1,1,arguments);
	return kl_apply(kl_timer_set,v);
}
function kl_timer_setscale(v,z){
	v.kl_scale=z;
	if(v.kl_stat=="timer" && !v.kl_ust){
		clearInterval(v.kl_id);
		v.kl_id=setInterval(v.kl_es,v.kl_scale*v.kl_msec);
	}
}
function kl_timer_step(v){
	kl_timer_stop(v); v.kl_stat="step"; return eval(v.kl_es);
}
function kl_timer_set(){
	var v=kl_slice(arguments,0,arguments.length);
	if(!kl_isarray(v[2])) kl_splice(v,2,2,new Array(new Array()));
	return kl_apply(kl_timer_set_raw,v);
}
function kl_timer_set_raw(v,func,args,msec,reps,use_settimeout,pass_cnt,pass_obj){
	if(!kl_isarray(v)) v=new Array();
	v[0]="kl_timer_obj";
	if(!kl_isint(v.kl_n)){
		var n=KL_TIMERS.length; KL_TIMERS[n]=v; v.kl_n=n;
	}
	if( kl_isstr(func))   func=new Function(func);
	if(!kl_isarray(args)) args=new Array();
	if(!kl_isint(reps))   reps=-1;
	v["kl_func"]=func; v["kl_args"]=args; v["kl_msec"]=msec;
	v["kl_scale"]=1;
	v["kl_reps"]=reps; v["kl_ust"]=use_settimeout;
	v["kl_cnt"]=0;
	v["kl_msecpre"]=0; v["kl_msecsum"]=0;
	v["kl_stat"]="stop";
	//---
	var s=""; var a="";
	if(pass_cnt) a+=",v['kl_cnt']";
	if(pass_obj) a+=",v";
	for(var i=0;i<args.length;i++) a+=",args["+i+"]";
	if(a.length) a=a.substring(1,a.length);
	//---
	s='' +
	'var args=v["kl_args"]; var quit=(v["kl_stat"]=="stop"); ' +
	'if(v["kl_reps"]>=0 && v["kl_cnt"]>=v["kl_reps"]) quit=1; ' +
	'if(!quit){ ' +
	'  if(v["kl_stat"]!="step") v["kl_msecsum"]+=v["kl_msecpre"]; ' +
	'  if(v["kl_func"]('+a+')==false) quit=1; ' +
	'} ' +
	'v["kl_cnt"]+=1; ' +
	'if(v["kl_reps"]>=0 && v["kl_cnt"]>=v["kl_reps"]) quit=1;' +
	'if(v["kl_stat"]=="timer"){ ' +
	'  if(quit) kl_timer_stop(v); ' +
	'  else if(v["kl_ust"]){ ' +
	'    clearTimeout(v["kl_id"]); ' +
	'    v["kl_id"]=setTimeout(v["kl_es"],v["kl_scale"]*v["kl_msec"]); ' +
	'    v["kl_msecpre"]=v["kl_msec"]; ' +
	'  } ' +
	'} ' +
	'return quit ? false : true;';
	//---
	v["kl_func0"]=new Function("v",s);
	v["kl_es"   ]="KL_TIMERS["+v.kl_n+"].kl_func0(KL_TIMERS["+v.kl_n+"])";
	return v;
}
function kl_timer_moving(v){ return (v.kl_stat=="timer"); }


function kl_getimg(name){
	if(!kl_isstr(name)) return name;
	if(document.images[name]) return document.images[name];
	if(KL_NS4) return kl_getimg_ns4(name,document);
	return 0;
}
function kl_getimg_ns4(name,doc){
	if(!doc.layers) return 0;
	if(doc.images) if(doc.images[name]) return doc.images[name];
	for(var i=0;i<doc.layers.length;i++){
		if(doc.layers[i].document){
			var t=kl_getimg_ns4(name,doc.layers[i].document);
			if(t) return t;
		}
	}
	return 0;
}
function kl_addhandler_ns4objs(objs,etype,func,args){
	return kl_ah_ns4objs(objs,etype,func,args,0);
}
function kl_delhandler_ns4objs(objs,etype,func,args){
	return kl_ah_ns4objs(objs,etype,func,args,1);
}
function kl_ah_ns4objs(objs,etype,func,args,isdel){
	if(!objs) return;
	for(var i=0;i<objs.length;i++){
		if(isdel) kl_delhandler(objs[i],etype,func,args);
		else      kl_addhandler(objs[i],etype,func,args);
	}
}


//-----drag-----
KL_DLAYS=0;
function kl_drag_set(id){
	var e=kl_getelem(id); if(!e) return 0;
	kl_addhandler(e,"onmousedown",kl_drag_mdown);
	if(KL_NS4 && e.document) kl_addhandler_ns4objs(e.document.images,"onmousedown",kl_drag_mdown,new Array(e));
	if(!kl_isarray(KL_DLAYS)){
		kl_addhandler(document,"onmousemove",kl_drag_mmove);
		kl_addhandler(document,"onmouseup",  kl_drag_mup);
		KL_DLAYS=new Array();
	}
	return 1;
}
function kl_drag_clear(id){
	var e=kl_getelem(id); if(!e) return 0;
	if(KL_NS4 && e.document) kl_delhandler_ns4objs(e.document.images,"onmousedown",kl_drag_mdown,new Array(e));
	return kl_delhandler(e,"onmousedown",kl_drag_mdown);
}
function kl_drag_mdown(ev,e){
	if(!e) e=this;
	kl_drag_mdown_raw(ev,e);
	if(kl_isarray(e.kl_dlays)){
		for(var i=0;i<e.kl_dlays.length;i++)
			kl_drag_mdown_raw(ev,kl_getelem(e.kl_dlays[i]));
	}
	return true;
}
function kl_drag_mdown_raw(ev,e){
	for(var i=0;i<KL_DLAYS.length;i++) if(KL_DLAYS[0]==e) return 0;
	var x0=kl_mousex(ev);
	var y0=kl_mousey(ev);
	var rel=(kl_style(e,"position")=="relative");
	var xs=(rel ? kl_layer_x(e,0) : kl_elem_x(e));
	var ys=(rel ? kl_layer_y(e,0) : kl_elem_y(e));
	KL_DLAYS[KL_DLAYS.length]=new Array(e,0,x0,y0,xs-x0,ys-y0);
	return 1;
}
function kl_drag_mmove(ev){
	var x=kl_mousex(ev);
	var y=kl_mousey(ev);
	for(var i=0;i<KL_DLAYS.length;i++){
		var v=KL_DLAYS[i];
		if(!v[1]) if(kl_abs(v[2]-x)<5 && kl_abs(v[3]-y)<5) continue;
		v[1]="moving";
		kl_layer_moveto(v[0],v[4]+x,v[5]+y);
	}
	return (KL_DLAYS.length ? false : true);
}
function kl_drag_mup(){
	KL_DLAYS=new Array();
	return true;
}


//-----raise-----
KL_RLAYS=new Array();
function kl_raise_set(id){
	var e=kl_getelem(id); if(!e) return 0;
	KL_RLAYS[KL_RLAYS.length]=e;
	kl_addhandler(e,"onmousedown",kl_raise_mdown);
	if(KL_NS4 && e.document) kl_addhandler_ns4objs(e.document.images,"onmousedown",kl_raise_mdown,new Array(e));
	return 1;
}
function kl_raise_clear(id){
	var e=kl_getelem(id); if(!e) return 0;
	for(var i=0;i<KL_RLAYS.length;i++) if(KL_RLAYS[i]==e) KL_RLAYS[i]=0;
	if(KL_NS4 && e.document) kl_delhandler_ns4objs(e.document.images,"onmousedown",kl_raise_mdown,new Array(e));
	return kl_delhandler(e,"onmousedown",kl_raise_mdown);
}

function kl_raise_vset(ve,vz,e){
	if(!e) return;
	ve[ve.length]=e; vz[vz.length]=kl_layer_zindex(e,0);
	if(!e.kl_rlays) return;
	for(var i=0;i<e.kl_rlays.length;i++){
		var ee=kl_getelem(e.kl_rlays[i]); if(!ee) continue;
		ve[ve.length]=ee;
		vz[vz.length]=kl_layer_zindex(ee,0);
	}
}
function kl_raise_mdown(ev,e){
	if(!e) e=this;
	//---
	var min="nan";
	var ve=new Array(); var vz=new Array();
	kl_raise_vset(ve,vz,e);
	for(var i=0;i<ve.length;i++){
		if(!kl_isint(min)) min=vz[i]; else if(min>vz[i]) min=vz[i];
	}
	if(!kl_isint(min)) return true;
	//---
	var max="nan";
	var we=new Array(); var wz=new Array();
	for(var i=0;i<KL_RLAYS.length;i++){
		kl_raise_vset(we,wz,kl_getelem(KL_RLAYS[i]));
	}
	for(var i=0;i<we.length;i++){
		if(kl_contains(ve,we[i])) continue;
		if(!kl_isint(max)) max=wz[i]; else if(max<wz[i]) max=wz[i];
	}
	if(!kl_isint(max)) return true;
	//---
	if(max<min) return true;
	for(var i=0;i<ve.length;i++) kl_layer_setzindex(ve[i],vz[i]+max-min+1);
	return true;	
}


//-----keyword argument-----
function kl_alt(v1,v2){
	if(kl_isdef(v1)) return v1;
	return v2;
}
function kl_vget(v,key,isfunc,defval){
	if(!kl_isfunc(isfunc)) isfunc=kl_isdef;
	for(var i=0;i<v.length;i+=2){
		if(v[i]==key) if(isfunc(v[i+1])) return v[i+1];
	}
	return defval;
}
function kl_vset(v,key,val){
	for(var i=0;i<v.length;i+=2) if(v[i]==key){ v[i+1]=val; return; }
	var n=v.length; v[n]=key; v[n+1]=val;
}
function kl_vset2s(v0,key0,v,key,isfunc,defval){
	return kl_vset2(v0,key0,v,key,isfunc,defval,1);
}
function kl_vset2(v0,key0,v,key,isfunc,defval,safe){
	if(safe) if(kl_isdef(kl_vget(v0,key0))) return;
	var t;
	if(isfunc=="skip"){
		t=defval;
	}else if(kl_isarray(v)){
		t=kl_vget(v,key,isfunc,defval);
	}else{
		var f=(kl_isfunc(isfunc) ? isfunc : kl_isdef);
		t=(f(key) ? key : defval);
	}
	if(kl_isdef(t)) kl_vset(v0,key0,t);
}




function kl_load_seth(e,func,args,msec){
	if(!func) return;
	if( kl_isstr(func)) func=new Function("etype",func);
	if(!kl_isarray(args)) args=new Array();
	if(!kl_isint(msec)) msec=-1;
	kl_clearhandler(e,"onload"); kl_clearhandler(e,"onerror");
	kl_addhandler(e,"onload", kl_load_proc,new Array(e,func,"load",args));
	kl_addhandler(e,"onerror",kl_load_proc,new Array(e,func,"error",args));
	e.kl_done=0;
	if(msec<0) return;
	e.kl_timer=kl_timer_start(kl_load_proc,new Array(0,e,func,"timeout",args),msec,1);

}
function kl_load_proc(evt,e,func,etype,args){
	//if(e.kl_done) return; e.kl_done=1;
	//if(kl_isarray(e.kl_timer)){ kl_timer_stop(e.kl_timer); e.kl_timer=0;}
	kl_apply2(e,func,etype,args);
}
function kl_load_image(url,func,args,msec){
	var e=new Image();
	return kl_load_image2(e,url,func,args,msec);
}
function kl_load_image2(e,url,func,args,msec){
	if(func) kl_load_seth(e,func,args,msec);
	e.src=url;
	return e;
}

KL_LS_NS4=0;
function kl_load_script(url,func,args,msec,ns4){
	if(ns4 && KL_NS4){
		var s="<script language='javascript' src='"+url+"'></script>";
		if(!KL_LS_NS4){
			KL_LS_NS4=kl_layer_new(new Array("html",s));
		}else{
			kl_layer_write(KL_LS_NS4,s,"ns4");
		}
		return KL_LS_NS4;
	}
	if(KL_IE5 || KL_NS6 || KL_OP7){
		var e=document.createElement("script");
		if(func) kl_load_seth(e,func,args,msec);
		e.setAttribute("src",url);
		document.body.appendChild(e);
		return e;
	}
	return 0;
}



//-----transparent layer creation-----
function kl_tlayer_new(html,fgcolor,bgcolor,opacity,opts){
	if(kl_undef(opts)) opts=new Array();
	var t,fg,bg;
	fg=new Array(); t=kl_vget(opts,"fg"); if(kl_isarray(t)) kl_copy(t,fg);
	bg=new Array(); t=kl_vget(opts,"bg"); if(kl_isarray(t)) kl_copy(t,bg);
	//---
	var v=new Array(
		fg,"html",0,html,kl_isstr,"&nbsp;",
		bg,"html",0,0,"skip","&nbsp;",
		fg,"url",opts,"url",kl_isstr,self["undefined"],
		fg,"fgcolor",0,fgcolor,kl_isstr,"black",
		bg,"bgcolor",0,bgcolor,kl_isstr,"orange",
		bg,"opacity",0,opacity,kl_isint,70,
		bg,"bgimage",opts,"bgimage",kl_isstr,self["undefined"],
		bg,"border",opts,"border",kl_isstr,"outset 1px",
		bg,"filter",opts,"bgfilter",kl_isstr,self["undefined"],
		fg,"filter",opts,"fgfilter",kl_isstr,self["undefined"],
		fg,"visibility",opts,"visibility",kl_isstr,"hidden",
		bg,"visibility",opts,"visibility",kl_isstr,"hidden"
	);
	//---
	for(var i=0;i<v.length;i+=6)
		kl_vset2s(v[i],v[i+1],v[i+2],v[i+3],v[i+4],v[i+5]);
	//---
	var pos =kl_vget(opts,"pos",     kl_isstr,"center_center");
	var pad =kl_vget(opts,"padding", 0,20);
	if(kl_isint(pad)) pad=new Array(pad,pad,pad,pad);
	if(kl_isarray(pad)){
		if(pad.length==1) pad=new Array(pad[0],pad[0],pad[0],pad[0]);
		if(pad.length==2) pad=new Array(pad[0],pad[1],pad[0],pad[1]);
	}
	var z   =kl_vget(opts,"zindex",  kl_isint,100);
	var w   =kl_vget(opts,"width",   kl_isint,"nan");
	var h   =kl_vget(opts,"height",  kl_isint,"nan");
	//---
	if(kl_isint(w)){ kl_vset2s(fg,"width", 0,0,"skip",w-pad[1]-pad[3]); }
	if(kl_isint(h)){ kl_vset2s(fg,"height",0,0,"skip",h-pad[0]-pad[2]); }
	//---
	kl_vset2s(fg,"pos",   0,0,"skip",pos);
	kl_vset2s(bg,"pos",   0,0,"skip",pos);
	kl_vset2s(fg,"zindex",0,0,"skip",z+1);
	kl_vset2s(bg,"zindex",0,0,"skip",z);
	//---
	var o1="-moz-box-sizing"; var o2="box-sizing";
	if(KL_NS6){
		kl_vset2s(fg,o1,opts,o1,kl_isstr,"border-box");
		kl_vset2s(bg,o1,opts,o1,kl_isstr,"border-box");
	}
	kl_vset2s(fg,o2,opts,o2,kl_isstr,"border-box");
	kl_vset2s(bg,o2,opts,o2,kl_isstr,"border-box");
	//---
	kl_vset2s(fg,"drag",opts,"drag");
	kl_vset2s(bg,"drag",opts,"drag");
	kl_vset2s(fg,"raise",opts,"raise");
	kl_vset2s(bg,"raise",opts,"raise");
	//---
	var e=new Array("kl_tlayer_obj");

	e.fg=kl_layer_new(fg); kl_layer_setpos(e.fg,pos,0,0,0,pad);

	kl_vset2s(bg,"width", 0,0,"skip",kl_elem_width(e.fg) +pad[1]+pad[3]);
	kl_vset2s(bg,"height",0,0,"skip",kl_elem_height(e.fg)+pad[0]+pad[2]);
	e.bg=kl_layer_new(bg);
	e.fgopts=fg; e.bgopts=bg;
	e.pad=pad;
	if(KL_IE4 && !KL_IE5)
		kl_timer_start(kl_tlayer_update,new Array(e),100,1);
	e.fg.kl_dlays=new Array(e.bg.id); e.bg.kl_dlays=new Array(e.fg.id);
	e.fg.kl_rlays=new Array(e.bg.id); e.bg.kl_rlays=new Array(e.fg.id);
	return e;
}
function kl_tlayer_update(e){
	kl_tlayer_update_size(e);
	var f=kl_layer_setpos(e.fg,kl_vget(e.fgopts,"pos"),0,0,0,e.pad);
	var g=kl_layer_setpos(e.bg,kl_vget(e.bgopts,"pos"));
	//e["kl_updated"]=1;
	return (f && g);
}
function kl_tlayer_update_size(e){
	return kl_layer_resizeto(e.bg,kl_elem_width(e.fg)+e.pad[1]+e.pad[3],
				kl_elem_height(e.fg)+e.pad[0]+e.pad[2]);
}
function kl_tlayer_show(e){
	var f=kl_layer_show(e.fg); var g=kl_layer_show(e.bg);
	return (f && g);
}
function kl_tlayer_hide(e){
	var f=kl_layer_hide(e.fg); var g=kl_layer_hide(e.bg);
	return (f && g);
}
function kl_tlayer_moveto(e,x,y){
	return kl_tlayer_setpos(e,"left:"+x+"_top:"+y+"_absolute");
	return (f && g);
}
function kl_tlayer_moveby(e,dx,dy){
	var f=kl_layer_moveby(e.fg,dx,dy); var g=kl_layer_moveby(e.bg,dx,dy);
	return (f && g);
}
function kl_tlayer_setpos(e,pos,check){
	var f=kl_layer_setpos(e.fg,pos,check,0,0,e.pad);
	var g=kl_layer_setpos(e.bg,pos,check);
	return (f || g);
}
function kl_tlayer_write(e,s,ns4,col){
	return kl_layer_write(e.fg,s,ns4,col);
}


function kl_tlayer_visible(e){
	return (kl_layer_visible(e.fg) && kl_layer_visible(e.bg));
}




//-----fullscreen-----
function kl_fullscreen(url,name){
	if(!name) name="";
	if(KL_IE4 && !KL_IE4M) return window.open(url,name,"fullscreen=yes");
	var opt='top=0,left=0,screenX=0,screenY=0';
	var sw=kl_screenwidth("avail");
	var sh=kl_screenheight("avail");
	if(sw>0 && sh>0){ opt+=',outerWidth=' +sw; opt+=',outerHeight='+sh; }
	var win = window.open(url,name,opt);
	if(sw>0 && sh>0){ win.resizeTo(sw,sh); }
	if(win.moveTo) win.moveTo(0,0);
	if(KL_OP6) alert("Press F11 for fullscreen.");
	return win;
}
//-----open url in opener window-----
function kl_open(url,w,h,wname){
	if(!wname) wname="";
	var win=0;
	if(window.opener)
	if(!kl_closed(window.opener)){
		win=window.opener; if(win.focus) win.focus(); win.location=url;
		return win;
	}
	var opt="menubar=yes,toolbar=yes,location=yes,directories=no,status=yes,scrollbars=yes,resizable=yes";
	if(w) opt+=",width="+kl_tostr(w);
	if(h) opt+=",height="+kl_tostr(h);

	win=window.open(url,wname,opt); if(win.focus) win.focus();
	return win;
}

function kl_screenwidth(avail){
	if(!self["screen"]) return 0;
	if(avail && screen.availWidth) return screen.availWidth;
	return screen.width ? screen.width : 0;
}
function kl_screenheight(avail){
	if(!self["screen"]) return 0;
	if(avail && screen.availHeight) return screen.availHeight;
	return screen.height ? screen.height : 0;
}


//-----for elements-----
function kl_replace_ns4(id,s,col){
	var e=kl_getelem(id); if(!e) return 0;
	e.document.open();
	if(col) e.document.fgColor=col;
	e.document.write(s);
	e.document.close();
	return 1;
}
function kl_replace_raw(id,s,mode,ns4,col,ie4m_tail,ie4m_td){
	var e=kl_getelem(id); if(!e) return 0;
	if(KL_NS4) return (ns4 ? kl_replace_ns4(e,s,col) : 0);
	if(col && e.style) e.style.color=col;
	s=kl_replace_str(e,s,mode,ie4m_tail);
	if(mode=="always" || e.innerHTML!=s){
		if(KL_IE4M && ie4m_td){
			e.innerHTML="";
			var ee=document.createElement("span"); ee.innerHTML=s;
			e.appendChild(ee);
		}else{
			e.innerHTML=s;
		}
	}
	return 1;
}
function kl_replace_str(e,s,mode,tail){
	s=(mode=="append" ? e.innerHTML+s : (mode=="prepend" ? s+e.innerHTML : s));
	if(KL_IE4M && tail) if(kl_match_last(s,">")) return s+"\n";
	return s;
}
function kl_replace(id,s,mode,ns4,col){
	if(KL_OP6 && !KL_OP7) return 0;
	var e=kl_getelem(id); if(!e) return 0;
	var tn=kl_tagname(e);
	if(tn=="table" && e.id){
		var ee=kl_getelem("kl_content_"+e.id); if(ee) e=ee;
	}
	return kl_replace_raw(e,s,mode,ns4,col,"tail",tn=="td");
}

function kl_elem_xy(e,name,defval){
	var pos=(name=="x" ? "offsetLeft" : "offsetTop");
	if(!kl_isint(e[pos])) return defval;
	var t=0;
	while(1){
		if(e[pos]) t+=e[pos];
		if(!e.offsetParent) break;
		e=e.offsetParent;
	}
	return t;
}
function kl_elem_x(id,defval){
	var e=kl_getelem(id);
	if(!KL_NS4) return kl_elem_xy(e,"x",defval);
	if(kl_isint(e.pageX)) return e.pageX;
	return defval;
}
function kl_elem_y(id,defval){
	var e=kl_getelem(id);
	if(!KL_NS4) return kl_elem_xy(e,"y",defval);
	if(kl_isint(e.pageY)) return e.pageY;
	return defval;
}
function kl_elem_width(id,defval){
	var e=kl_getelem(id);
	if(!KL_NS4) return kl_isint(e.offsetWidth) ? e.offsetWidth : defval;
	return kl_layer_width(e,defval);
}
function kl_elem_height(id,defval){
	var e=kl_getelem(id);
	if(!KL_NS4) return kl_isint(e.offsetHeight) ? e.offsetHeight : defval;
	return kl_layer_height(e,defval);
}

//-----layer: basic funcs-----
KL_LAYER_ATTRS=new Array();
KL_LAYER_ATTRS["x"]=new Array("int","left","pixelLeft","left");
KL_LAYER_ATTRS["y"]=new Array("int","top", "pixelTop" ,"top");
KL_LAYER_ATTRS["z"]=new Array("int","zIndex","zIndex","zIndex");
KL_LAYER_ATTRS["w"]=new Array("int","width", "pixelWidth", "width");
KL_LAYER_ATTRS["h"]=new Array("int","height","pixelHeight","height");
KL_LAYER_ATTRS["v"]=new Array("str","visibility","visibility","visibility");
KL_LAYER_ATTRS["fc"]=new Array("str","fgColor","color","color");
KL_LAYER_ATTRS["bc"]=new Array("str","bgColor","backgroundColor","backgroundColor");
KL_LAYER_ATTRS["bi"]=new Array("str","background","backgroundImage","backgroundImage");
function kl_layer_getattr(id,name,defval){
	var e=kl_getelem(id); if(!e) return defval;
	var attrs=KL_LAYER_ATTRS[name];
	var t;
	if(KL_NS4){
		if(name=="w" || name=="h"){
			if(e.clip) t=e.clip[attrs[1]]; else return defval;
		}else if(name=="bi"){
			if(e.background) t=e.background.src; else return defval
		}else{
			t=e[attrs[1]];
		}
		if(name=="bc" && kl_isint(t))
			t="#"+kl_tostr(t/(16*16*16*16),16,2)+kl_tostr((t%(16*16*16*16))/(16*16),16,2)+kl_tostr(t%(16*16),16,2);
	}else{
		t=kl_style(e,attrs[(KL_IE4 && !KL_IE5) ? 2 : 3]);
	}
	if(attrs[0]=="int"){
		t=kl_toint(t);
		return (kl_isint(t) ? t : defval);
	}
	if(attrs[0]=="str"){
		return (kl_isstr(t) ? t : defval);
	}
	return t;
}
function kl_layer_setattr(id,name,val){
	var e=kl_getelem(id); if(!e) return 0;
	var attrs=KL_LAYER_ATTRS[name];
	var t;
	if(KL_NS4){
		if(name=="w" || name=="h"){
			if(e.clip) e.clip[attrs[1]]=val; else return 0;
		}else if(name=="fc"){
			if(e.document) e.document.fgColor=val; else return 0;
		}else if(name=="bi"){
			if(e.background) e.background.src=val; else return 0;
		}else e[attrs[1]]=val;
		return 1;
	}
	if(!e.style) return 0;
	if(KL_IE4 && !KL_IE5){ e.style[attrs[2]]=val; return 1; }
	if(KL_OP6 && !KL_OP7){ e.style[attrs[3]]=val; return 1; }

	if(attrs[0]=="int") val=val+"";
	if(name=="x" || name=="y" || name=="w" || name=="h") val+="px";
	e.style[attrs[3]]=val;
	return 1;
}
function kl_layer_x(id,defval){ return kl_layer_getattr(id,"x",defval); }
function kl_layer_y(id,defval){ return kl_layer_getattr(id,"y",defval); }
function kl_layer_width( id,defval){ return kl_layer_getattr(id,"w",defval); }
function kl_layer_height(id,defval){ return kl_layer_getattr(id,"h",defval); }
function kl_layer_zindex(id,defval){ return kl_layer_getattr(id,"z",defval); }
function kl_layer_visibility(id,defval){ return kl_layer_getattr(id,"v",defval); }
function kl_layer_fgcolor(id,defval){ return kl_layer_getattr(id,"fc",defval); }
function kl_layer_bgcolor(id,defval){ return kl_layer_getattr(id,"bc",defval); }
function kl_layer_bgimage(id,defval){ return kl_layer_getattr(id,"bi",defval); }

function kl_layer_setzindex(id,val){ return kl_layer_setattr(id,"z",val); }
function kl_layer_show(id){ return kl_layer_setattr(id,"v","visible"); }
function kl_layer_hide(id){ return kl_layer_setattr(id,"v","hidden"); }


function kl_layer_setfgcolor(id,color,ns4string){
	if(KL_NS4 && kl_isstr(ns4string))
		return kl_layer_write(id,ns4string,1,color);
	return kl_layer_setattr(id,"fc",color);
}
function kl_layer_setbgcolor(id,color,color2){
	if(!color2) color2="white";
	if(color=="transparent"){
		if(KL_NS4) color=null;
		if(KL_OP6 && !KL_OP7) color=color2;
	}
	return kl_layer_setattr(id,"bc",color);
}
function kl_layer_setbgimage(id,src,src2){
	if(!src2) src2="/just_for_opera6_bgimg_bug.gif";
	if(!src.length){
		if(KL_OP6 && !KL_OP7) src='url('+src2+')';
		if(KL_NS4) src=null;
	}else{
		if(!KL_NS4) src='url('+src+')';
	}
	return kl_layer_setattr(id,"bi",src);
}

function kl_layer_moveto(id,x,y){
	var e=kl_getelem(id); if(!e) return 0;
	if(KL_NS4){ e.moveTo(x,y); return 1; }
	kl_layer_setattr(e,"x",x);
	kl_layer_setattr(e,"y",y);
	return 1;
}
function kl_layer_moveby(id,dx,dy){
	var e=kl_getelem(id); if(!e) return 0;
	if(KL_NS4){ e.moveBy(dx,dy); return 1; }
	kl_layer_moveto(e,kl_layer_x(e,0)+dx,kl_layer_y(e,0)+dy);
	return 1;
}
function kl_layer_resizeto(id,w,h){
	var e=kl_getelem(id); if(!e) return 0;
	if(KL_NS4){ e.resizeTo(w,h); return 1; }
	kl_layer_setattr(e,"w",w);
	kl_layer_setattr(e,"h",h);
	return 1;
}
function kl_layer_resizeby(id,dw,dh){
	var e=kl_getelem(id); if(!e) return 0;
	if(KL_NS4){ e.resizeBy(dw,dh); return 1; }
	kl_layer_resizeto(e,kl_layer_width(e,0)+dw,kl_layer_height(e,0)+dh);
	return 1;
}

function kl_layer_setpos(id,pos,check,dx,dy,pad){
	if(pos=="center")
		return kl_layer_setpos_raw(id,pos,pos,0,0,0,pad,check);
	if(!dx) dx=0; if(!dy) dy=0;
	var posx,posy;
	var is_abs=0;
	var v,t;
	v=pos.split("_");
	t=v[0].split(":"); posx=t[0]; if(t.length>=2) dx+=parseInt(t[1])
	t=v[1].split(":"); posy=t[0]; if(t.length>=2) dy+=parseInt(t[1])
	if(v.length>=3) if(v[2]=="absolute") is_abs=1;
	return kl_layer_setpos_raw(id,posx,posy,is_abs,dx,dy,pad,check);
}
function kl_layer_setpos_raw(id,posx,posy,is_abs,dx,dy,pad,check,skip){
	var e=kl_getelem(id); if(!e) return 0;
	if(KL_IE4 && !KL_IE5 && !skip)
		kl_timer_start(kl_layer_setpos_raw,
		  new Array(id,posx,posy,is_abs,dx,dy,pad,check,1),100,1);
	var x =0;
	var y =0;
	var w =kl_elem_width(id);
	var h =kl_elem_height(id);
	var w0=(is_abs ? kl_scrollwidth()  : kl_windowwidth());
	var h0=(is_abs ? kl_scrollheight() : kl_windowheight());

	if(!kl_isarray(pad)) pad=new Array(0,0,0,0);

	if(posx=="left"  ) x=(is_abs ? 0 : kl_slx())+dx+pad[3];
	if(posx=="center") x=(is_abs ? 0 : kl_slx())+(w0>w ? (w0-w)/2 : 0)+dx+(pad[3]-pad[1])/2;
	if(posx=="right" ) x=(is_abs ? 0 : kl_slx())+(w0-w)-dx-pad[1];

	if(posy=="top"   ) y=(is_abs ? 0 : kl_sly())+dy+pad[0];
	if(posy=="center") y=(is_abs ? 0 : kl_sly())+(h0>h ? (h0-h)/2 : 0)+dy+(pad[0]-pad[2])/2;
	if(posy=="bottom") y=(is_abs ? 0 : kl_sly())+(h0-h)-dy-pad[2];

	if(check){
		if(kl_abs(x-kl_elem_x(id,-1))<=1 &&
		   kl_abs(y-kl_elem_y(id,-1))<=1) return 0;
	}
	return kl_layer_moveto(id,x,y);
}
function kl_layer_centralize(id,check){
	return kl_layer_setpos_raw(id,"center","center",0,0,0,0,check);
}

function kl_layer_setclip(id,t,r,b,l){
	var e=kl_getelem(id); if(!e) return 0;
	if(KL_NS4){
		if(!e.clip) return 0;
		e.clip.top=t; e.clip.right=r; e.clip.bottom=b; e.clip.left=l;
		return 1;
	}
	e.style.clip='rect('+t+'px '+r+'px '+b+'px '+l+'px)';
	return 1;
}



function kl_layer_setopacity(id,val){
	var e=kl_getelem(id); if(!e) return 0;
	if(!kl_layer_setopacity_ok()) return 0;
	if(KL_IE4W){
		if(!e.filters.alpha) e.style.filter="alpha(opacity="+val+")"+
			(kl_isstr(e.style.filter) ? " "+e.style.filter : "");
		else e.filters.alpha.opacity=val;
		return 1;
	}
	if(KL_NS6){
		var t=val/100.0; if(t>0.999) t=0.999;
		e.style.MozOpacity=t; return 1;
	}
	return 0;
}
function kl_layer_setopacity_ok(){
	if(KL_IE4W) return 1;
	if(KL_NS6S) return 0;
	if(KL_NS6L) return (KL_MZV>=1.0 && screen.colorDepth>=16);
	return KL_NS6;
}
function kl_layer_visible(id){
	var e=kl_getelem(id); if(!e) return 0;
	if(!KL_NS4) return kl_visible2(e);
	var t=kl_layer_visibility(e);
	return (t!="hidden" && t!="hide");
}



function kl_layer_write(id,s,ns4,col){
	return kl_replace(id,s,0,ns4,col);
}
KL_LAYER_NEW_I2W=new Array();
function kl_layer_load(id,url,ns4){
	var e=kl_getelem(id); if(!e) return 0;
	if(KL_NS4){
		if(ns4){
			e.load(url,e.clip.width ? e.clip.width : 200);
			return 1;
		}
		return 0;
	}
	if(e.setAttribute){ e.setAttribute("src",url); return 1; }
	if(!KL_LAYER_NEW_I2W[e.id]) return 0;
	self.frames[KL_LAYER_NEW_I2W[e.id]].location=url;
	return 1;
}


//-----dynamic layer creation-----
function kl_layer_new(arg){
	var e=0;
	var id  =kl_vget(arg,"id",kl_isstr,kl_layer_new_id());
	var url =kl_vget(arg,"url",kl_isstr,0);
	var html=kl_vget(arg,"html",kl_isstr,0);
	var par =kl_vget(arg,"parent",kl_isstr,0);

	if(KL_NS4)
		e=kl_layer_new_ns4(arg,id,url,html,par);
	else if(KL_IE55 || KL_NS6 || (!url && (KL_IE5 || KL_OP7)))
		e=kl_layer_new_ie55(arg,id,url,html,par);
	else if(document.all)
		e=kl_layer_new_ie4(arg,id,url,html,par);

	if(!e) return 0;
	if(kl_undef(kl_vget(arg,"x")) && kl_undef(kl_vget(arg,"y")))
		kl_layer_setpos(e,kl_vget(arg,"pos",0,"center"));
	if(kl_vget(arg,"drag")) kl_drag_set(e);
	if(kl_vget(arg,"raise")) kl_raise_set(e);
	return e;
}
KL_LAYER_NEW_CNT=0;
function kl_layer_new_id(){
	var cnt=KL_LAYER_NEW_CNT; KL_LAYER_NEW_CNT+=1;
	return "_js_layer_"+cnt;
}
function kl_layer_new_modify(e,arg){
	if(!e.style) return;
	var t;
	t=kl_vget(arg,"x");      if(kl_isint(t)) kl_layer_setattr(e,"x",t);
	t=kl_vget(arg,"y");      if(kl_isint(t)) kl_layer_setattr(e,"y",t);
	t=kl_vget(arg,"zindex"); if(kl_isint(t)) kl_layer_setattr(e,"z",t);
	t=kl_vget(arg,"width");  if(kl_isint(t)) kl_layer_setattr(e,"w",t);
	t=kl_vget(arg,"height"); if(kl_isint(t)) kl_layer_setattr(e,"h",t);
	t=kl_vget(arg,"fgcolor");if(kl_isstr(t)) kl_layer_setfgcolor(e,t);
	t=kl_vget(arg,"bgcolor");if(kl_isstr(t)) kl_layer_setbgcolor(e,t,kl_vget(arg,"bgcolor2"));
	t=kl_vget(arg,"bgimage");if(kl_isstr(t)) kl_layer_setbgimage(e,t);

	var v0=new Array("id","pos","drag","raise",
			"x","y","width","height","zindex",
			"fgcolor","bgcolor","bgimage","bgcolor2",
			"iframe","url","html","parent");
	var v=arg;
	var o=kl_vget(v,"opacity",kl_isint,100);
	for(var i=0;i<v.length;i+=2){
		if(kl_contains(v0,v[i])) continue;
		if(v[i]=="filter" && !KL_IE4W) continue;
		e.style[kl_layer_c2j(v[i])]=v[i+1];
	}
	if(o<100) kl_layer_setopacity(e,o);
}
function kl_layer_new_modify_iframe(e,arg,ie4){
	var o="";
	var id=(kl_isstr(e) ? e : e.id);
	var v=kl_vget(arg,"iframe",kl_isarray,new Array());

	var opts=new Array("frameborder","0","scrolling","no",
			   "marginwidth","0","marginheight","0","name","_win");
	for(var i=0;i<opts.length;i+=2){
		var idx=-1;
		for(var j=0;j<v.length;j+=2){
			if(v[j].toLowerCase()==opts[i]){ idx=j; break; }
		}
		if(idx==-1){
			idx=v.length;
			v[idx  ]=opts[i];
			v[idx+1]=(opts[i]=="name" ? id : "")+opts[i+1];
		}
		if(opts[i].toLowerCase()=="name"){
			KL_LAYER_NEW_I2W[id]=v[idx+1];
		}
	}
	for(var i=0;i<v.length;i+=2){
		if(ie4) o+=" "+v[i]+"='"+v[i+1]+"'";
		else    e.setAttribute(v[i],v[i+1]);
	}
	return o;
}
function kl_layer_c2j(n){
	var v=n.split("-");
	if(v.length<=1) return n;
	var t=v[0];
	for(var i=1;i<v.length;i++){
		if(!v[i].length) continue;
		t+=v[i].charAt(0).toUpperCase()+v[i].substring(1,v[i].length);
	}
	return t;
}
function kl_layer_new_ie55(arg,id,url,html,par){
	var e0=(par ? par : document.body);
	var e=document.createElement(url ? "iframe" : "div");
	if(KL_OP6 && !KL_OP7) return 0;
	e.setAttribute("id",id);
	e.style.position  ="absolute";
	e.style.visibility="hidden";
	e.style.left="0px"; e.style.top="0px";

	if(url) kl_layer_new_modify_iframe(e,arg);

	e0.appendChild(e);

	kl_layer_new_modify(e,arg);
	if(url){
		e.setAttribute("src",url);
	}else{
		e.innerHTML=kl_replace_str(e,html,"none","tail");
	}

	if(KL_IE4M){
		var ee=document.createElement("div");
		ee.style.position="absolute";
		ee.style.visibility="hidden";
		ee.style.left="0px"; ee.style.top="0px";
		//ee.innerHTML="";
		if(0) kl_timer_start(new Function("ee","document.body.appendChild(ee)"),new Array(ee),20,1);
		else document.body.appendChild(ee);
		ee.innerHTML="&nbsp;";
	}
	return e;
}
function kl_layer_new_ie4(arg,id,url,html,par){
	var o ="style='position:absolute; visibility:hidden;"+(KL_IE4M ? " left:0px; top:0px;" : "")+"'";
	var s;
	if(url){
		o+=kl_layer_new_modify_iframe(id,arg,"ie4");
		s="<iframe id='"+id+"' "+o+" src='"+url +"'></iframe>";
	}else{
		//s="<div id='"+id+"' "   +o+">"     +html+"</div>";
		o+="border='0' cellpadding='0' cellspacing='0'";
		s="<table id='"+id+"' "   +o+"><tr><td valign='top' id='kl_content_"+id+"'>" +html+"</td></tr></table>";
	}
	var e0=(par ? par : document.body);
	if(e0.insertAdjacentHTML){
		e0.insertAdjacentHTML("BeforeEnd",s);
		var e=document.all(id);
		kl_layer_new_modify(e,arg);
		return e;
	}
	return 0;
}
function kl_layer_new_ns4(arg,id,url,html,par){
	var w=kl_vget(arg,"width", kl_isint);
	var h=kl_vget(arg,"height",kl_isint);
	var wt=(kl_isint(w) ? w : 200);
	if(!par) par=self;
	var e=(par ? new Layer(wt,par) : new Layer(wt));
	//---
	var t;
	t=kl_vget(arg,"x"); if(kl_isint(t)) e.left=t;
	t=kl_vget(arg,"y"); if(kl_isint(t)) e.top =t;
	t=kl_vget(arg,"zindex");  if(kl_isint(t)) e.zIndex =t;
	t=kl_vget(arg,"bgcolor"); if(kl_isstr(t)) e.bgColor=t;
	t=kl_vget(arg,"bgimage"); if(kl_isstr(t)) e.background.src=t;
	t=kl_vget(arg,"visibility",kl_isstr,"hidden"); e.visibility=t;
	//if(kl_isint(w) && kl_isint(h)) e.resizeTo(w,h);
	if(kl_isint(w)) e.clip.width=w;
	if(kl_isint(h)) e.clip.height=h;

	if(url) e.load(url,w); else{
		e.document.open();
		t=kl_vget(arg,"fgcolor"); if(kl_isstr(t)) e.document.fgColor=t;
		e.document.write(html); e.document.close();
	}
	if(kl_isint(w) && e.clip.width !=w) e.clip.width=w;
	if(kl_isint(h) && e.clip.height!=h) e.clip.height=h;
	return e;
}


//-----preference-----
KL_PREF_CNAME="kl_pref";KL_PREF_CPATH="/"; KL_PREF_CEXP=1;
function kl_pref_s2v(s){
	var v=new Array(); if(!kl_isstr(s)) return v;
	var u=s.split("%%%%");
	for(var i=0;i<u.length;i++){
		var t=u[i].split("%%"); if(t.length==2) v[v.length]=t;
	}
	return v;
}
function kl_pref_v2s(v){
	var s=""; var w=new Array();
	for(var i=0;i<v.length;i++) w[i]=v[i].join("%%");
	return w.join("%%%%");
}
function kl_pref_set(name,val){ return kl_pref_set_raw(name,val+""); }
function kl_pref_del(name){ return kl_pref_set_raw(name,"","del"); }
function kl_pref_set_raw(name,val,isdel){
	var v=kl_pref_s2v(kl_cget("PREF"));
	var n=kl_index(v,name,-1,0);
	if(isdel){
		if(n<0) return 1;
		v[n]=new Array("del");
	}else{
		v[n<0 ? v.length : n]=new Array(name,val);
	}
	return kl_cset("PREF",kl_pref_v2s(v));
}
function kl_pref_get(name,defval){
	var v=kl_pref_s2v(kl_cget("PREF"));
	var n=kl_index(v,name,-1,0); if(n>=0) return v[n][1];
	return kl_isdef(defval) ? defval : -1;
}
function kl_pref_avail(){
	var t=kl_toint(kl_pref_get("kl_ck",-1),-1); t=(t+1)%1000;
	return kl_pref_set("kl_ck",t+"");
}
//---
function kl_pref_qn(name,val){
	return kl_pref_qn_raw(name,val);
}
function kl_pref_qn_raw(name,val){
	if(kl_tofloat(kl_pref_get(name,-1),-1)>=val) return 0;
	var r=document.referrer; var h=location.href;

	if(kl_isdef(navigator.cookieEnabled) && !(navigator.cookieEnabled)){
		if(h.indexOf("#")>0) return 0;
		if(r && h && kl_pagedir(r)==kl_pagedir(h)) return 0;
		return kl_isdir(h);
	}
	if(r && h) return (kl_pagedir(r)!=kl_pagedir(h));
	return (h.indexOf("#")<0 || kl_isdir(h));
}
function kl_pref_sn(name,val,safe){
	if(safe) if(kl_tofloat(kl_pref_get(name,-1),-1)>=val) return 1;
	return kl_pref_set(name,val);
}
function kl_pagedir(u){
	var n=u.lastIndexOf("/"); return (n>=0 ? u.substring(0,n) : u);
}
function kl_isdir(u){
	var t=new Array("/index.html","/index.htm","/");
	u=u.split("?")[0]; u=u.split("#")[0];
	for(var i=0;i<t.length;i++)
		if(u.lastIndexOf(t[i])==u.length-t[i].length) return 1;
	return 0;
}




//----misc-----
KL_APL=new Array();
function kl_apply(){
	return kl_apply_raw(0,arguments);
}
function kl_apply2(){
	var v=new Array();
	for(var i=1;i<arguments.length;i++) v[i-1]=arguments[i];
	return kl_apply_raw(arguments[0],v);
}
function kl_apply2v(e,func){
	if(kl_isstr(func)) func=new Array(new Function(func),new Array());
	else if(!kl_isarray(func)) func=new Array(func,new Array());
	return kl_apply2(e,func[0],func[1]);
}
function kl_apply_raw(e,v){
	var n=v.length-2;
	var a=v[v.length-1];
	if(!kl_isdef(KL_APL[n])) KL_APL[n]=new Array();
	if(!kl_isdef(KL_APL[n][a.length])) kl_apply_reg(v);
	return (KL_APL[n][a.length])(e,v);
}
function kl_apply_reg(v){
	var a=v[v.length-1];
	var sn=""; for(var i=1;i<=v.length-2;i++) sn+="v["+i+"],";
	var sa=""; for(var i=0;i<=a.length-1;i++) sa+="v[v.length-1]["+i+"],";
	var ss=sn+sa; if(ss.length) ss=ss.substring(0,ss.length-1);

	var sf="if(e){ var n=kl_unique(e,'kl_apply_tmp'); e[n]=v[0]; "
		+"var t=e[n]("+ss+"); e[n]=0; return t; } "
		+"var f=v[0]; return f("+ss+");";
	KL_APL[v.length-2][a.length]=new Function("e","v",sf);
}
function kl_unique(e,prefix){
	for(var i=0;i<100000;i++) if(!e[prefix+i]) return prefix+i;
	return prefix+0;
}
function kl_eval(s){
	if(KL_IE5 || KL_NS6 || KL_OP6) s="try{ "+s+" }catch(kl_err){ kl_err }";
	return eval(s);
}







KL_FRAMES=0;
KL_MSG_FOCUS_EN  ="Focus Changed to ";
function kl_changefocus(){
	var frms=KL_FRAMES;
	if(!frms) frms=parent.frames;
	if(!frms) return;
	var len=frms.length; var fwin=0;
	for(var i=0;i<len;i++)
		if(frms[i]==self){ fwin=frms[(i+1)%len]; break; }
	if(fwin && fwin.focus){
		kl_status(kl_msg("FOCUS")+fwin.name); fwin.focus();
	}
}
function kl_sec_names_set_old(max,prefix){
	if(!kl_isstr(prefix)) prefix="kl_";
	KL_SEC_NAMES=new Array();
	for(var i=0;i<max;i++) KL_SEC_NAMES[i]=prefix+kl_tostr(i);
}
function kl_gt(t){ //onClick='kl_gt(...)'
	var secn; var name;
	if(kl_isstr(t)){
		secn=kl_name2secn(t);
		name=t;
	}else{
		secn=t;
		name=kl_secn2name(t);
	}
	if(KL_OP6) KL_VNAME=name; else KL_VNAME=0;
	kl_sec_handler(secn,name);
}
function kl_onscroll(){ //experimental(IE5+(Win))
	if(!KL_ACTIVE) return true;
	if(KL_IE5 && !KL_IE4M && !KL_SEC_BASIC) kl_sec_handler_(kl_ssecn(),0);
	return true;
}



function kl_lang(){
	s="";
	if(navigator.browserLanguage) s=navigator.browserLanguage;
	else if(navigator.language) s=navigator.language;
	return s.substring(0,2);
}

