// JavaScript Document
scr="<div class=\"scr_vert\"><div class=\"scr_vert_bg\" onmousedown=\"set_evt(this,'vert',bar_mv_bg,null);\"><div class=\"scr_vert_bg_mid\"></div><div class=\"scr_vert_bg_top\"></div><div class=\"scr_vert_bg_bot\"></div></div><div class=\"scr_vert_dir_top\" onmousedown=\"vert_mv(this,false);\"></div><div class=\"scr_vert_dir_bot\" onmousedown=\"vert_mv(this,true);\"></div><div class=\"scr_vert_bar\" onmousedown=\"set_evt(this,'vert',get_pos,mv_bar);\"><div class=\"scr_vert_top\"></div><div class=\"scr_vert_mid\"></div><div class=\"scr_vert_bot\"></div><img class=\"scr_vert_bot\" src=\""+img_src+"/scr_"+b_color+"/scr_vert_bot.gif\" onload=\"set_vert_scr(this.parentNode,true);\"></div></div><div class=\"scr_hori\"><div class=\"scr_hori_bg\" onmousedown=\"set_evt(this,'hori',bar_mv_bg,null);\"><div class=\"scr_hori_bg_mid\"></div><div class=\"scr_hori_bg_l\"></div><div class=\"scr_hori_bg_r\"></div></div><div class=\"scr_hori_dir_l\" onmousedown=\"hori_mv(this,false);\"></div><div class=\"scr_hori_dir_r\" onmousedown=\"hori_mv(this,true);\"></div><div class=\"scr_hori_bar\" onmousedown=\"set_evt(this,'hori',get_pos,mv_bar);\"><div class=\"scr_hori_l\"></div><div class=\"scr_hori_mid\"></div><div class=\"scr_hori_r\"></div><img class=\"scr_hori_r\" src=\""+img_src+"/scr_"+b_color+"/scr_hori_r.gif\" onload=\"set_hori_scr(this.parentNode,true);\"></div></div>";

mv_value = mv_value_org = 200;
margin_left=margin_top=14;
min_width=min_height=20;
bar_top_h=bar_l_w = 7;
springInt=50;
friction = 0.2;
vAccell = 5;
vX = 0;
vY = 0;

//---Safari3.xで、カーソルでスクロールさせるとハングアップするので判別---//
var uAgent = navigator.userAgent;
var safari_3=false;
if(uAgent.match(/Safari/i)){if(uAgent.match(/3.0./i)) safari_3=true;}

//---VERTICAL MOVE---//
t_top = 0;
function vert_mv(obj,flag,key_ctl,timer,wheel_flag, key_flag){
	if(window.springTimer) clearInterval(springTimer);
	
	if(key_ctl) document.onkeyup=initoff;
	else document.onmouseup=initoff;
	
	if(flag) dir=1;
	else dir=-1;
	
	var p_obj=obj.parentNode;
	var m_obj = p_obj.childNodes[3];
	var ratio=gt_vert_ratio(obj.parentNode);
	
	var top_pos = Math.round( (p_obj.parentNode.childNodes[0].scrollTop + mv_value*dir)*ratio ) + margin_top;
	if(top_pos > p_obj.offsetHeight - margin_top - m_obj.offsetHeight) top_pos = p_obj.offsetHeight - margin_top - m_obj.offsetHeight;
	else if(top_pos < margin_top) top_pos = margin_top;
	
	t_top += top_pos - t_top;
	s_obj = m_obj;
	springTimer = setInterval("spring_mv_v(s_obj,t_top,"+margin_top+","+ratio+")",springInt);

	if(! wheel_flag && ! key_flag){
		if(! document.all && ! safari_3){
			if(! timer){var outTime=500; reset_scr_arobj();}
			else{var outTime=100;}
			nobj=obj;
			downTimer=setTimeout("vert_mv(nobj,"+flag+","+key_ctl+",true)",outTime);
		}
	}
	return false;
}
//---HORIZONTAL MOVE---//
function hori_mv(obj,flag,key_ctl,timer,wheel_flag, key_flag){
	if(window.springTimer) clearInterval(springTimer);
	
	if(key_ctl)document.onkeyup=initoff;
	else document.onmouseup=initoff;
	
	if(flag) dir=1;
	else dir=-1;
	
	var p_obj=obj.parentNode;
	var m_obj = p_obj.childNodes[3];
	var ratio=gt_hori_ratio(p_obj);
	
	var left_pos = Math.round( (p_obj.parentNode.childNodes[0].scrollLeft + mv_value*dir)*ratio ) + margin_left;
	if(left_pos > p_obj.offsetWidth - margin_left - m_obj.offsetWidth) left_pos = p_obj.offsetWidth - margin_left - m_obj.offsetWidth;
	else if(left_pos < margin_left) left_pos = margin_left;

	t_left += left_pos - t_left;
	s_obj = m_obj;
	springTimer = setInterval("spring_mv_h(s_obj,t_left,"+margin_top+","+ratio+")",100);

	if(! document.all && ! safari_3){
		if(! wheel_flag && ! key_flag){
			if(! timer){var outTime=500; reset_scr_arobj();}
			else{var outTime=100;}
			nobj=obj;
			downTimer=setTimeout("hori_mv(nobj,"+flag+","+key_ctl+","+meta_key+")",outTime);
		}
	}
	return false;
}
//---SCROLL---//
function set_evt(obj,flag,func_dn,func_mv){
	dir=flag;
	reset_scr_arobj();
	m_obj = obj.parentNode.childNodes[3];
	vX = 0;
	preX = m_obj.offsetLeft;
	vY = 0;
	preY = m_obj.offsetTop;
	
	if(func_dn) document.onmousedown=func_dn;
	if(func_mv) document.onmousemove=func_mv;
	if(func_dn==bar_mv_bg) p_obj = m_obj.parentNode.parentNode;
	else p_obj = m_obj;
	document.onmouseup = initoff;
	if(window.springTimer) clearInterval(springTimer);
}

//---Spring Move Vertical---//
function spring_mv_v(m_obj,t_top,margin_top,ratio){
	if(t_top - m_obj.offsetTop > 0) m_obj.style.top = Math.ceil(m_obj.offsetTop  + (t_top - m_obj.offsetTop) * friction);
	else if(t_top - m_obj.offsetTop < 0) 	m_obj.style.top = Math.floor(m_obj.offsetTop  + (t_top - m_obj.offsetTop) * friction);
	m_obj.parentNode.parentNode.childNodes[0].scrollTop = Math.round( (m_obj.offsetTop - margin_top) /ratio);
	if(m_obj.offsetTop == t_top) clearInterval(springTimer);
}
//---Spring Move Horizontal---//
function spring_mv_h(m_obj,t_left,margin_left,ratio){
	if(t_left - m_obj.offsetLeft > 0) m_obj.style.left= Math.ceil(m_obj.offsetLeft  + (t_left - m_obj.offsetLeft) * friction);
	else if(t_left - m_obj.offsetLeft < 0) m_obj.style.left= Math.floor(m_obj.offsetLeft  + (t_left - m_obj.offsetLeft) * friction);
	m_obj.parentNode.parentNode.childNodes[0].scrollLeft = (m_obj.offsetLeft - margin_left) /ratio;
	if(t_left == m_obj.offsetLeft) clearInterval(springTimer);
}
function bar_mv_bg(evt){
	get_pos(evt);
	if(dir=="vert"){
		/*親要素の場所から絶対座標割り出し*/
		Y1=Y1 - m_obj.parentNode.parentNode.parentNode.parentNode.offsetTop - m_obj.parentNode.parentNode.parentNode.offsetTop;
//		alert(m_obj.parentNode.parentNode.parentNode.parentNode.offsetTop - m_obj.parentNode.parentNode.parentNode.offsetTop);
		/*ここまで*/
		if(m_obj.offsetTop >= Y1) t_top=Y1;
		else t_top = Y1 - m_obj.offsetHeight;
		s_obj = m_obj;
		springTimer = setInterval("spring_mv_v(s_obj,t_top,"+margin_top+","+ratio+")",springInt);
	}
	else if(dir=="hori"){
		/*親要素の場所から絶対座標割り出し*/
		X1=X1 - m_obj.parentNode.parentNode.parentNode.parentNode.offsetLeft - m_obj.parentNode.parentNode.parentNode.offsetLeft;
		/*ここまで*/
		if(m_obj.offsetLeft > X1) t_left = X1;
		else t_left = X1 - m_obj.offsetWidth;
		s_obj = m_obj;
		springTimer = setInterval("spring_mv_h(s_obj,t_left,"+margin_top+","+ratio+")",springInt);
	}
}
function get_pos(evt){
	if(dir=="vert"){
		ratio=gt_vert_ratio(m_obj.parentNode);
		if(document.all) evt=event;
		if(document.getElementById){ if(evt.y){startY = evt.y;}else{startY = evt.pageY;} obj_y = p_obj.offsetTop;}
		else if(document.layers){startY=evt.layerY; obj_y=p_obj.style.top;}
		else if(document.all){startY = evt.y; obj_y = m_obj.style.pixelTop;}
		 Y1 = -1*(obj_y - startY);
	}
	else if(dir=="hori"){
		ratio=gt_hori_ratio(m_obj.parentNode);
		if(document.all) evt=event;
		if(document.getElementById){ if(evt.y){ startX = evt.x; } else { startX = evt.pageX; } obj_x = p_obj.offsetLeft;}
		else if(document.layers){startX=evt.layerX; obj_x=p_obj.style.Left;}
		else if(document.all){startX = evt.x; obj_x = m_obj.style.pixelLeft;}
		 X1 = -1*(obj_x - startX);
	}
	return false;
}
function mv_bar(evt){
	if(dir=="vert"){
		if(document.all) evt=event;
		if(document.getElementById){ if(evt.y){Y = evt.y;} else if(evt.pageY){Y = evt.pageY; } }
		else if(document.layers){Y = evt.pageY;}
		else if(document.all){Y = evt.y;}
		if(Y-Y1 <= margin_top) var top_pos=margin_top;
		else if(Y-Y1 >= m_obj.parentNode.offsetHeight - margin_top - m_obj.offsetHeight) var top_pos=m_obj.parentNode.offsetHeight - margin_top - m_obj.offsetHeight;
		else top_pos=Y-Y1;
		m_obj.style.top = top_pos;
		vY =  top_pos - preY;
		preY = top_pos;
		m_obj.parentNode.parentNode.childNodes[0].scrollTop = Math.round( (m_obj.offsetTop - margin_top) /ratio);
		if(Y-Y1 >= m_obj.parentNode.offsetHeight - margin_top - m_obj.offsetHeight) m_obj.parentNode.parentNode.childNodes[0].scrollTop = m_obj.parentNode.parentNode.childNodes[0].scrollHeight;
	}
	else if(dir=="hori"){
		if(document.all) evt=event;
		if(document.getElementById){ if(evt.x){X = evt.x;} else if(evt.pageX){X = evt.pageX; } }
		else if(document.layers){X = evt.pageX;}
		else if(document.all){X = evt.x;}
		if(X-X1 <= margin_left) var left_pos=margin_left
		else if(X-X1 >= m_obj.parentNode.offsetWidth - margin_left - m_obj.offsetWidth) var left_pos=m_obj.parentNode.offsetWidth - margin_left - m_obj.offsetWidth;
		else left_pos=X-X1;
		m_obj.style.left = left_pos;
		vX =  left_pos - preX;
		preX = left_pos;
		m_obj.parentNode.parentNode.childNodes[0].scrollLeft = Math.round( (m_obj.offsetLeft - margin_left) /ratio);
		if(X-X1 >= m_obj.parentNode.offsetWidth - margin_left - m_obj.offsetWidth) m_obj.parentNode.parentNode.childNodes[0].scrollLeft = m_obj.parentNode.parentNode.childNodes[0].scrollWidth;
	}
	return false;
}
t_obj=null;
document.onkeydown=key_evt;
function key_evt (evt){
	if(window.springTimer) clearInterval(springTimer);//080331追加
//	initoff();
	if(document.all) evt=event;
	var nkey=evt.keyCode;
	if(! (document.all)){
		if(nkey==224) document.onkeyup=reset_scr_arobj;
		if(evt.metaKey || evt.ctrlKey)  if(nkey==107 || nkey==109 || nkey==64 || nkey==224) document.onkeypress = function(){chSizeTimer=setTimeout("reset_scr_arobj()",0);}
	}
	if(t_obj){
		if(! evt.shiftKey && !evt.ctrlKey && !evt.metaKey ){
			if(evt.altKey) mv_value=mv_value_org*2; else mv_value=mv_value_org
			if(nkey==40) vert_mv(t_obj.childNodes[1].childNodes[0],true,true,false,false,true);
			if(nkey==38) vert_mv(t_obj.childNodes[1].childNodes[0],false,true,false,false,true);
			if(nkey==39) hori_mv(t_obj.childNodes[2].childNodes[0],true,true,false,false,true);
			if(nkey==37) hori_mv(t_obj.childNodes[2].childNodes[0],false,true,false,false,true);
		}
	}
//		return false;
}

//---Wheel---//
function wheel(event){
	if(window.springTimer) clearInterval(springTimer);//080331追加
	var delta=0;
	if(!event)/*ForIE.*/event=window.event;
	if(event.wheelDelta){/*IE/Opera.*/
		delta=event.wheelDelta;
		/**InOpera9,deltadiffersinsignascomparedtoIE.*/
		if(window.opera) delta=-delta;
	}
	else if(event.detail){
	/*Mozillacase. InMozilla,signofdeltaisdifferentthaninIE. Also,deltaismultipleof3.*/
		delta=-event.detail;
	}
	if(t_obj){
		if(delta<0) vert_mv(t_obj.childNodes[1].childNodes[0],true,false,false,true);
		else if(delta>0) vert_mv(t_obj.childNodes[1].childNodes[0],false,false,false,true);
	}
}

window.onresize=reset_scr_arobj;
function reset_scr_arobj(){
	if(window.chSizeTimer){clearTimeout(chSizeTimer);}
	for(i=0; i<vert_scr.length; i++){set_vert_scr(vert_scr[i]);}
	for(i=0; i<hori_scr.length; i++){set_hori_scr(hori_scr[i]);}
}
function reset_scr_obj(obj){
	set_vert_scr(obj.childNodes[1].lastChild);
	set_hori_scr(obj.childNodes[2].lastChild);
}
function initoff(){
	mv_value = mv_value_org;
	document.onmousedown=null;
	document.onmousemove=null;
	document.onmouseup=null;
	if(window.chSizeTimer){window.clearTimeout(chSizeTimer);}
	if(window.downTimer){window.clearTimeout(downTimer);}
	
	if(Math.abs(vY) > 1){
		var top_pos = m_obj.offsetTop + vY*vAccell;
		var p_obj = m_obj.parentNode;
		if(top_pos > p_obj.offsetHeight - margin_top - m_obj.offsetHeight) top_pos = p_obj.offsetHeight - margin_top - m_obj.offsetHeight;
		else if(top_pos < margin_top) top_pos = margin_top;
		t_top = top_pos;
		s_obj = m_obj;
		springTimer = setInterval("spring_mv_v(s_obj,t_top,"+margin_top+","+ratio+")",springInt);
	}
	if(Math.abs(vX)>1){
		var left_pos = m_obj.offsetLeft + vX*vAccell;
		var p_obj = m_obj.parentNode;
		if(left_pos > p_obj.offsetWidth - margin_left - m_obj.offsetWidth) left_pos = p_obj.offsetWidth - margin_left - m_obj.offsetWidth;
		else if(left_pos < margin_left) left_pos = margin_left;
		t_left = left_pos;
		s_obj = m_obj;
		springTimer = setInterval("spring_mv_h(s_obj,t_left,"+margin_left+","+ratio+")",springInt);
	}
	flag=key_ctl=meta_key=obj=ratio=dir="";
}
//---SET VERTICAL BAR---//
v_n = 0;
vert_scr = new Array();
function set_vert_scr(obj,flag){
	var p_obj=obj.parentNode;
	p_obj.parentNode.childNodes[0].style.width=p_obj.parentNode.offsetWidth-30;
	if(p_obj.parentNode.offsetWidth < p_obj.parentNode.childNodes[0].scrollWidth)  p_obj.parentNode.childNodes[0].style.height=p_obj.parentNode.offsetHeight-20;
	else p_obj.parentNode.childNodes[0].style.height=p_obj.parentNode.offsetHeight;
	p_obj.style.height=p_obj.parentNode.childNodes[0].offsetHeight;
	var ratio = gt_vert_ratio(p_obj);
	obj.style.height=Math.max(Math.round(ratio*p_obj.offsetHeight),min_height);
	if(obj.offsetHeight==min_height) ratio = gt_vert_ratio(p_obj);
	if(p_obj.parentNode.childNodes[0].scrollTop+p_obj.parentNode.offsetHeight > p_obj.parentNode.childNodes[0].scrollHeight) p_obj.parentNode.childNodes[0].scrollTop = p_obj.parentNode.childNodes[0].scrollHeight;
	var top_pos=Math.round(p_obj.parentNode.childNodes[0].scrollTop*ratio) + margin_top;
	if(top_pos >= p_obj.offsetHeight - margin_top - p_obj.childNodes[3].offsetHeight) top_pos = p_obj.offsetHeight - margin_top - p_obj.childNodes[3].offsetHeight;
	p_obj.childNodes[3].style.top=top_pos;
	p_obj.childNodes[0].style.height=p_obj.offsetHeight - margin_top*2;
	p_obj.childNodes[0].style.top=margin_top;
	p_obj.childNodes[0].childNodes[0].style.height=p_obj.childNodes[0].offsetHeight - bar_top_h*2;
	p_obj.childNodes[0].childNodes[0].style.top=bar_top_h;
	obj.childNodes[1].style.height=p_obj.childNodes[3].offsetHeight - bar_top_h*2;
	obj.childNodes[1].style.top=bar_top_h;
	if(flag){ vert_scr[v_n] = obj; obj.removeChild(obj.lastChild); v_n++; }
	if(p_obj.parentNode.offsetHeight < p_obj.parentNode.childNodes[0].scrollHeight){
		p_obj.style.visibility="visible";
		//DOMMouseScroll is for mozilla. 
		if(p_obj.parentNode.parentNode.addEventListener) p_obj.parentNode.parentNode.addEventListener('DOMMouseScroll', wheel, false);
		// IE/Opera
		p_obj.parentNode.parentNode.onmousewheel = wheel;
		//set t_obj
		p_obj.parentNode.parentNode.onmouseover=function(){t_obj = p_obj.parentNode;}
		p_obj.parentNode.parentNode.onmousedown=function(){t_obj = p_obj.parentNode;}
		p_obj.parentNode.parentNode.onmouseout=function(){t_obj = null;}
	}
	else{
		p_obj.style.visibility="hidden"; p_obj.parentNode.childNodes[0].style.width=p_obj.parentNode.offsetWidth;
		//DOMMouseScroll is for mozilla. 
		if(p_obj.parentNode.parentNode.removeEventListener) p_obj.parentNode.parentNode.removeEventListener('DOMMouseScroll', wheel, false);
		// IE/Opera
		p_obj.parentNode.parentNode.onmousewheel = null;
		//set t_obj
		p_obj.parentNode.parentNode.onmouseover=null;
		p_obj.parentNode.parentNode.onmousedown=null;
		p_obj.parentNode.parentNode.onmouseout=null;
		t_obj=null;
	}
}
function gt_vert_ratio(p_obj){
	if(p_obj.childNodes[3].offsetHeight==min_height) var ratio = (p_obj.offsetHeight - margin_top*2 - min_height)/(p_obj.parentNode.childNodes[0].scrollHeight - p_obj.parentNode.offsetHeight);
	else var ratio = (p_obj.offsetHeight - margin_top*2)/p_obj.parentNode.childNodes[0].scrollHeight;
	return ratio;
}
//---SET HORIZONTAL BAR---//
h_n=0;
hori_scr = new Array();
function set_hori_scr(obj,flag){
	var p_obj=obj.parentNode;
	p_obj.style.width=p_obj.parentNode.childNodes[0].offsetWidth;
	var ratio = gt_hori_ratio(p_obj);
	obj.style.width=Math.max(Math.round(ratio*p_obj.offsetWidth),min_width);
	if(p_obj.childNodes[3].offsetWidth==min_width) ratio = gt_vert_ratio(p_obj);
	if(p_obj.parentNode.childNodes[0].scrollLeft + p_obj.parentNode.childNodes[0].offsetWidth > p_obj.parentNode.childNodes[0].scrollWidth) p_obj.parentNode.childNodes[0].scrollLeft=p_obj.parentNode.childNodes[0].scrollWidth;
	var left_pos=Math.round(p_obj.parentNode.childNodes[0].scrollLeft*ratio) + margin_left;
	if(left_pos >= p_obj.offsetWidth - margin_left - p_obj.childNodes[3].offsetWidth) left_pos = p_obj.offsetWidth - margin_left - p_obj.childNodes[3].offsetWidth;
	p_obj.lastChild.style.left = left_pos;
	p_obj.childNodes[0].style.width=p_obj.offsetWidth - margin_left*2;
	p_obj.childNodes[0].style.left=margin_left;
	p_obj.childNodes[0].childNodes[0].style.width=p_obj.childNodes[0].offsetWidth - bar_l_w*2;
	p_obj.childNodes[0].childNodes[0].style.left=bar_l_w;
	p_obj.childNodes[3].childNodes[1].style.width=p_obj.childNodes[3].offsetWidth - bar_l_w*2;
	p_obj.childNodes[3].childNodes[1].style.left=bar_l_w;
	if(flag){ hori_scr[h_n] = obj; h_n++; obj.removeChild(obj.lastChild);}
	if(p_obj.parentNode.offsetWidth < p_obj.parentNode.childNodes[0].scrollWidth)  p_obj.style.visibility="visible";
	else p_obj.style.visibility="hidden";
}
function gt_hori_ratio(p_obj){
	if(p_obj.childNodes[3].offsetWidth==min_width) var ratio = (p_obj.offsetWidth - margin_left*2 - min_width)/(p_obj.parentNode.childNodes[0].scrollWidth - p_obj.parentNode.offsetWidth);
	else var ratio = (p_obj.offsetWidth - margin_left*2)/p_obj.parentNode.childNodes[0].scrollWidth;
	return ratio;
}
function cr_cover(obj){
	var cover=document.createElement('div');
	cover.className="cover";
	obj.appendChild(cover);
}
