// JScript source code

/**************************************************************************
  전역 변수 선언
**************************************************************************/
var layerX = 0 ;              // 초기 Layer 값 - X
var layerY = 0 ;              // 초기 Layer 값 - Y
var layer_element = null;  // Slide대상 Layer

var scroll_direction = '';
var inquire_interval = 100; // 페이지가 이동한 좌표를 읽어올 간격 지정
var slide_interval = 50 ;       // Layer가 이동할 속도

var pick_fixed = false ;    // 고정상태 값
var tmr_id = null;

var browser_info = '';       // Browser 객체 정보 - Netscape , IE
/**************************************************************************
*
*  Layer slide를 실행하기 위한 기본 정보를 입력받기위한 메인 함수
*
*  repeat : h - 좌우 이동만 허용, v - 상하 이동만 허용, null - 모두 허용
*	inquire : 페이지가 이동한 좌표를 읽어올 간격지정 (수가 낮을 수록 자주 체크)
*	slide : 이동속도 (수가 낮을 수록 빨리 움직인다.)
*  ex :  
*        <body onLoad = slideLayer( 'slidemenu', 'v','600','10') > 
*
**************************************************************************/
function slideLayer(layer_id, direction, inquire, slide )
{
	/*  브라우저 객체 종류를 읽어온다. */
	if( (navigator.appName == 'Netscape') && parseInt(navigator.appVersion,10) <= 4 ){
		//netscape 4.0 이하 Browser
		browser_info = 'Ns4' ;  // Browser 객체 종류
		// Netcape 4.0 이하 버전에서 대상 Element 읽어오기
		layer_element = document.layers[layer_id];
	}
	else if( (navigator.appName == 'Netscape') && parseInt(navigator.appVersion,10) > 4 ){
		//netscape 6.0 이상 Browser
		browser_info = 'Ns6' ;
		// netscape 6.0 이상 버전에서 대상 Element 읽어오기
		layer_element = document.getElementById(layer_id);
		layer_element = layer_element.style;  // Style 속성만 읽어온다.
	}
	else{
		// Explore 호환 Browser
		browser_info = 'Ie' ;
		//  대상 Element 읽어오기
		layer_element = document.all[layer_id].style; 
	}

	layer_element.visibility = 'visible'
	layer_element.position = 'absolute';
	inquire_interval	= parseInt(inquire,10);		// Layer 이동 간격
	slide_interval		= parseInt(slide,10);		// Layer 이동 속도
	scroll_direction	= direction.toLowerCase();	// Layer 이동 방향

	/* 초기 Layer의 위치값을 전역변수에 대입한다.						*/
	/* Layer위치를 고정하거나 또는 페이지가 스크롤될 경우 Layer이동시	*/
	/* 페이지에서 Layer 위치를 상대적으로 변경하기 위함					*/
	layerX = parseInt(layer_element.left, 10);
	layerY = parseInt(layer_element.top, 10);

	onSlide();
}

/**************************************************************************
  현재 브라우저의 페이지 위치 값을 읽어와 대상 객체를 움직인 좌표만큼
이동한다.
**************************************************************************/
function onSlide(){
	var page_posX, page_posY, layer_posX, layer_posY;
	var slideX = 0, slideY = 0;
	var interval = 0;

	if (pick_fixed) return;

	/* 현재 나타나는 페이지의 x, y좌표값을 읽어온다. */
	if ( browser_info == 'Ie'){ // Expoler 호환 버전
		page_posX = document.body.scrollLeft + layerX; 
		page_posY = document.body.scrollTop + layerY;
	}
	else if( browser_info == 'Ns4' || browser_info == 'Ns6' ){ // Netscape 버전
		page_posX = parseInt (window.pageXOffset, 10) + layerX;
		page_posY = parseInt (window.pageYOffset, 10) + layerY;
	}

	/* 현재 Layer 위치 값을 읽어온다. 전달받은 값은 'nnnnpx' 형식의 정수값이므로 */
	/* 정수화 한다. */
	layer_posX = parseInt(layer_element.left, 10);
	layer_posY = parseInt(layer_element.top, 10);

	/* Layer 이동이 끝난 후 다음 이동까지 간격 */
	interval = inquire_interval; 

	if (page_posX < layerX) page_posX = layerX;
	if (page_posY < layerY) page_posY = layerY;

	/* 페이지가 이동한 거리만큼 layer를 이동시킨다.    */
	if (page_posY != layer_posY || page_posX != layer_posX) {
		// Layer 이동이 끝 이동 거리 =  페이지가 이동 좌표 /  Layer Slide 간격
		slideX= Math.ceil( Math.abs(page_posX - layer_posX) / slide_interval ); 
		slideY = Math.ceil( Math.abs(page_posY - layer_posY) / slide_interval );

		if (page_posX < layer_posX)  slideX = -slideX;
		if (page_posY < layer_posY)  slideY = -slideY;

		if( scroll_direction != 'v') // Slide방향이 양측 또는 좌우 방향일때
		{
			layer_element.left = parseInt(layer_element.left,10)   + slideX;
		}

		if( scroll_direction != 'h')// Slide방향이 양측 또는 상하 방향일때
		{
			layer_element.top = parseInt(layer_element.top ,10)  + slideY ;
		}

		// Layer Slide 속도
		interval = slide_interval;
	}

	/* 함수 재귀호출 */
	setTimeout ("onSlide()", interval); 
}