﻿/**
 * 접근중인 페이지의 주소중 도메인명 부분
 */

var	_hostName;
_hostName	= document.location.href;
_hostName	= _hostName.substring(0, _hostName.indexOf("/", 8));
//_hostName	= _hostName + "/suntao";

/************************************************************************************************
 * S - iframe를 가지는 레이어 객체
 ***********************************************************************************************/
var	_IframeLayer_cnt	= 0;

// <body> 태그가 시작되지 않은 <head> 태그 안의 <script>태그에서 인스턴스 될 수 없습니다.
function IframeLayer() 
{
	if (document.body == null) 
	{
		throw new Error("IframeLayer는 <BODY> 태그가 시작되고 난 후에 인스턴스 하십시오.");
		return;
	}

	var	curCnt		= _IframeLayer_cnt++;

	// 맴버 초기화
	this.docObj					= document;
	this.div					= null;
	this.ifm					= null;
	this.ifmObj					= null;
	this.ifmBody				= null;
	this.ifmName				= "_ifmlayer" + curCnt;
	this.cssURL					= null;
	this.bgColor				= null;
	this.bgImage				= null;
	this.innerHTML				= null;
	this.allowTransparencyFlag	= false;

	// METHOD 결합
	this.moveTo				= _IframeLayer_moveTo;
	this.setSize			= _IframeLayer_setSize;
	this.setWidth			= _IframeLayer_setWidth;
	this.setHeight			= _IframeLayer_setHeight;
	this.getWidth			= _IframeLayer_getWidth;
	this.getHeight			= _IframeLayer_setHeight;
	this.setVisible			= _IframeLayer_setVisible;
	this.zIndex				= _IframeLayer_zIndex;
	this.setURL				= _IframeLayer_setURL;
	this.setInnerHTML		= _IframeLayer_setInnerHTML;
	this.write				= _IframeLayer_write;
	this.writeln			= _IframeLayer_writeln;
	this.getBody			= _IframeLayer_getBody;
	this.autoSize			= _IframeLayer_autoSize;
	this.setCss				= _IframeLayer_setCss;
	this.setBgColor			= _IframeLayer_setBgColor;
	this.setBgImage			= _IframeLayer_setBgImage;
	this.getLayerDiv		= _IframeLayer_getLayerDiv;
	this.allowTransparency	= _IframeLayer_allowTransparency;
	this.getPosX			= _IframeLayer_getPosX;
	this.getPosY			= _IframeLayer_getPosY;

	this.isLayer			= _IframeLayer_isLayer;

	// 레이어 생성
	this.div				= this.docObj.createElement("div");
	this.div.style.cssText	= "position:absolute; left:0px; top:0px; z-index:250; border-style:none;visibility:hidden;";
	this.div.innerHTML		= "<iframe name=\"" + this.ifmName + "\" width=\"100%\" height=\"100%\" src=\""
	+_hostName+"/ext/js/empty.html\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\" scrolling=\"no\" style=\"border:none;border-width:0px\"></iframe>";
	this.docObj.getElementById("mainbody").insertBefore(this.div, this.docObj.getElementById("mainbody").children[0]);
	this.ifm				= window.frames[this.ifmName];
	this.ifmObj				= this.div.children(0);
}

// 레이어를 이동 시킵니다.
function _IframeLayer_moveTo(x, y)
{
	this.div.style.posLeft	= x;
	this.div.style.posTop	= y;
}

// 현재 X 좌표위치를 리턴합니다.
function _IframeLayer_getPosX ()
{
	return this.div.style.posLeft;
}

// 현재 X 좌표위치를 리턴합니다.
function _IframeLayer_getPosY () 
{
	return this.div.style.posTop;
}

// 레이어 크기를 조절합니다.
function _IframeLayer_setSize(width, height) 
{
	this.ifmObj.width		= width;
	this.ifmObj.height		= height;
}

// 레이어 넓이를 조절합니다,
function _IframeLayer_setWidth(width) 
{
	this.ifmObj.width	= width;
}

// 레이어 높이를 조절합니다.
function _IframeLayer_getHeight(height) 
{
	this.ifmObj.height	= height;
}

// 레이어 넓이를 리턴합니다.
function _IframeLayer_getWidth() 
{
	return this.ifmObj.width;
}

// 레이어 높이를 리턴합니다.
function _IframeLayer_setHeight() 
{
	return this.ifmObj.height;
}

// 레이어 표시 여부를 설정합니다.
// 사용되는 곳의 페이지가 완전히 로드되고 난 후에만 사용 가능합니다.
function _IframeLayer_setVisible(flag) 
{
	if (this.ifm.document.body != null) 
	{
		//throw new Error("IframeLayer.setVisible METHOD는 도큐멘트 로드 완료 후에만 사용 될 수 있습니다.");
	
		if (this.ifm.document.styleSheets.length == 0
			&& this.cssURL != null) 
		{   
			this.ifm.document.createStyleSheet(this.cssURL);
		}
		if (this.innerHTML != null
			&& this.innerHTML != this.ifm.document.body.innerHTML) 
		{
			this.ifm.document.body.innerHTML	= this.innerHTML;
			this.innerHTML						= null;
		}
		if (this.bgImage != null
			&& this.bgImage != this.ifm.document.body.background) 
		{
			this.ifm.document.body.background		= this.bgImage;
			this.bgImage							= null;
		}
		if (!this.ifmObj.allowTransparency && this.allowTransparencyFlag) 
		{
			this.ifm.document.body.style.backgroundColor	= "transparent";
			this.ifmObj.allowTransparency					= this.allowTransparencyFlag;
		}
		else 
		{
			this.ifm.document.body.style.backgroundColor	= this.bgColor;
		}
	}

	this.div.style.visibility			= (flag ? "visible" : "hidden");
}

// 레이어 z index를 설정합니다.
function _IframeLayer_zIndex(zIndex) 
{
	this.div.style.zIndex	= zIndex;
}

// 레이어의 내용을 url로 지정합니다.
function _IframeLayer_setURL(url) 
{
	this.ifm.document.location.href	= url;
}

// 레이어에 InnerHTML 지정합니다.
// html 값으로 지정된것이 object라면 그 object의 InnerHTML을 카피합니다.
function _IframeLayer_setInnerHTML(html) 
{
	var	inHtml;

	if (typeof(html) == "string") 
	{
		inHtml	= html;
	}
	else
	{
		try
		{
			inHtml	= html.innerHTML;
			if (inHtml == null)
			{
				inHtml	= "";
			}
		}
		catch (ignore)
		{
			inHtml	= "";
		}
	}

	if (this.ifm.document.body == null)
	{
		this.innerHTML	= inHtml;
	}
	else
	{
		this.ifm.document.body.innerHTML	= inHtml;
	}
}

// 레이어에 text를 씁니다.
// 사용되는 곳의 페이지가 완전히 로드되고 난 후에만 사용 가능합니다.
function _IframeLayer_write(text)
{
	if (this.ifm.document.body == null)
	{
		throw new Error("IframeLayer.write METHOD는 도큐멘트 로드 완료 후에만 사용 될 수 있습니다.");
	}
	this.ifm.document.body.write(text);
}

// 레이어에 text를 씁니다.
// 사용되는 곳의 페이지가 완전히 로드되고 난 후에만 사용 가능합니다.
function _IframeLayer_writeln(text)
{
	if (this.ifm.document.body == null)
	{
		throw new Error("IframeLayer.writeln METHOD는 도큐멘트 로드 완료 후에만 사용 될 수 있습니다.");
	}
	this.ifm.document.body.writeln(text);
}

// 레이어에 접근할 수 있는 바디 객체를 얻습니다.
// 사용되는 곳의 페이지가 완전히 로드되고 난 후에만 사용 가능합니다.
function _IframeLayer_getBody()
{
	if (this.ifm.document.body == null)
	{
		throw new Error("IframeLayer.getBody METHOD는 도큐멘트 로드 완료 후에만 사용 될 수 있습니다.");
	}
	return this.ifm.document.body;
}

// 레이어에 담긴 내용에 맞는 싸이즈 자동 조절
// 레이어에 담긴 내용이 TABLE로 둘러 쌓여 있어야 정확한 크기로 조절됩니다.
// 사용되는 곳의 페이지가 완전히 로드되고 난 후에만 사용 가능합니다.
function _IframeLayer_autoSize()
{
	var	newWidth;
	var	newHeight;

	if (this.ifm.document.body == null)
	{
		throw new Error("IframeLayer.autoSize METHOD는 도큐멘트 로드 완료 후에만 사용 될 수 있습니다.");
	}
	this.setSize(1, 1);
	newWidth	= this.ifm.document.body.scrollWidth;
	newHeight	= this.ifm.document.body.scrollHeight;
	this.setSize(newWidth, newHeight);
}

function _IframeLayer_isLayer( )
{
	return true;
}

// CSS를 URL로 지정합니다.
// 한번만 설정 될 수 있습니다.
function _IframeLayer_setCss(cssURL)
{
	if (this.cssURL != null)
	{
		throw new Error("CSS는 한번만 지정 가능합니다.");
	}
	this.cssURL	= cssURL;
}

// 레이어의 배경색을 지정합니다.
// 반영은 실시간으로 되지 않으며,setVisible METHOD가 호출될때마다 반영됩니다.
function _IframeLayer_setBgColor(color) 
{
	this.bgColor	= color;
}

// 레이어의 배경이미지를 지정합니다.
// 반영은 실시간으로 되지 않으며,setVisible METHOD가 호출될때마다 반영됩니다.
function _IframeLayer_setBgImage(url) 
{
	this.bgImage	= url;
}


// 레이어에 사용된 div 객체를 반환합니다.
function _IframeLayer_getLayerDiv() 
{
	return this.div;
}

// 레이어의 투명여부를 설정합니다.
// true를 전달하면 투명입니다.
function _IframeLayer_allowTransparency(flag) 
{
	this.allowTransparencyFlag	= flag;
}


/************************************************************************************************
 * S - 달력 선택 레이어
 ***********************************************************************************************/
var	_calLayer;

// 칼린더용 레이어 초기화. 반드시 <body> 태그가 시작된 이후에 호출 되어야 합니다.
function initCalendar() 
{
	_calLayer	= new IframeLayer();
	_calLayer.setBgColor("white");
}

/**
 * paramname		사용자가 선택한 날짜를 셋팅할 Obj 이름 - 문자열
 * initDate		 달력 다이얼로그 상에 초기값 - 문자열
 *				  yyyyMMddHH  형식으로 지정.
 *				  생략하면 현재 일시.
 * tobj				캘린더 레이어가 표시될 기준 위치가 될 앨리먼트 객체 null이 지정되면 마우스 포인터
 * dx				기준 위치로 부터의 상대 x 위치
 * dy				기준 위치로 부터의 상대 y 의치
 */
function fnCalPopup(paramname, initDate, tobj, dx, dy) 
{
	if (_calLayer == null) 
	{
		throw new Error("칼린더 표시를 위한 레이어의 초기화 initCalendar()가 호출된 적이 없습니다.");
	}

	var	loc;

	loc	= getPosition(tobj);

	if (dx == null) dx	= 0;
	if (dy == null) dy	= 0;

	_calLayer.setVisible(false);
	_calLayer.setSize(0, 0);

	_calLayer.moveTo(loc.x + dx, loc.y + dy);
	_calLayer.setURL(_hostName+"/library/calendar.aspx?mode=layer&paramname=" + paramname + (initDate == null ? "" : "&initdate=" + initDate));
}

/************************************************************************************************
 * S - 위치 좌표 객체
 ***********************************************************************************************/

function Position() 
{
	this.x	= 0;
	this.y	= 0;
}

/************************************************************************************************
 * E - 위치 좌표 객체
 ***********************************************************************************************/

// 주어진 객체의 위치를 Position객체로 반환합니다.
// 객체가 주어지지 않으면 마우스 포인터의 위치를 반환합니다.
function getPosition(tobj) 
{
	var	rv;
	var	cobj;

	rv	= new Position();
	if (tobj == null)
	{
		rv.x	= window.event.clientX;
		rv.y	= window.event.clientY;
	}
	else
	{
		cobj	= tobj;
		rv.x	= cobj.offsetLeft;
		rv.y	= cobj.offsetTop;
		cobj	= cobj.offsetParent;
		while(cobj != null)
		{
			rv.x	+= cobj.offsetLeft;
			rv.y	+= cobj.offsetTop;
			cobj	= cobj.offsetParent;
		}
	}

	return rv;
}

function main_DoFScommand(command, args)
{

   if(command == "getURL")

	   location.href  = args;

}





var viewImg = null;
var viewIframe = null;
var viewLayer = null;

var oldframe = null;

function closepreview(ifrno)
{ 
	
    var _viewIframe = document.getElementById("ifrm" + ifrno);
    var _viewLayer = document.getElementById("layer" + ifrno);
    var _viewImg = document.getElementById("iFrmImg" + ifrno);
	
    _viewIframe.style.display = 'none';
    _viewLayer.style.display = 'none';
    _viewImg.src=_hostName+'/images/icon/icon_folder_off.gif';    
	
    oldframe=null;
}

function view_iframe(ifrno)
{ //프레임 노출
    var _viewIframe = document.getElementById("ifrm" + ifrno);
    var _viewLayer = document.getElementById("layer" + ifrno);
    var _viewImg = document.getElementById("iFrmImg" + ifrno);


    _viewLayer.style.display = 'block'; //프레임 노출	
    _viewIframe.style.display = 'block'; //프레임 노출
	
    if(oldframe != null && oldframe != ifrno)
    { //기존 프레임넘버값이 null이 아니고 신규 넘버와 같지 않으면
	
	    viewIframe = document.getElementById("ifrm" + oldframe); //기존 프레임을 닫아준다.
	    viewLayer = document.getElementById("layer" + oldframe); //기존 프레임을 닫아준다.
	    
	    if(viewIframe != null)
	    {	//기존 프레임값이 null이 아니면 
		    viewIframe.style.display = 'none'; //기존 프레임은 닫아준다.
		    viewLayer.style.display = "none";
	    }		
    }
	
    if(viewImg != null && oldframe != ifrno)
    {	//기존 프레임넘버값과 신규 넘버와 같지 않으면 이미지도 변경해 준다.    	
	    if (viewImg.src==_hostName+'/images/icon/icon_folder_on.gif')
	    {
		    viewImg.src=_hostName+'/images/icon/icon_folder_off.gif';    
	    }		
    }
						
    oldframe = ifrno;
    viewImg = _viewImg;
}

function viewdetail(ifrno,ifrsrc){	//해당 정보 미리 보기
	
    var _viewLayer = document.getElementById("layer" + ifrno);  //프레임 객체
    _viewLayer.style.display = "block";	
    
    var _viewIframe = document.getElementById("ifrm" + ifrno);  //프레임 객체
    var _viewImg = document.getElementById("iFrmImg" + ifrno);	//이미지 객체	
	
    if (_viewImg.src==_hostName+'/images/icon/icon_folder_off.gif')
    { //이미지 객제의 이미지가 down 이면 up 이미지로 변경
	    _viewImg.src=_hostName+'/images/icon/icon_folder_on.gif';
	
	    if (!_viewIframe.src) 
	    { //프레임에 url이 설정되어있지 않으면(열린 프레임이 없으면)
			
		    //프레임 닫기
		    if (oldframe) 
		    { //프레임 넘버가 있다면 먼저 닫아라
			    closepreview(oldframe);
		    }
		
		    _viewIframe.src=ifrsrc;	//가져온 URL을 입력해라
		    _viewIframe.style.display = 'block'; //프레임을 보여줘라
			
		    oldframe = ifrno;	//현재 선택된 프레임 넘버
		    viewImg = _viewImg;
			
	    }
	    else
	    { //한번이라도 연적이 있는 프레임 : src가 이미 있고, display는 none
		    view_iframe(ifrno);
	    }		

				
    }
    else
    { //프레임을 열고 있는 상태라면 이미지를 변경하고 프레임 노출을 닫는다.
	    _viewImg.src=_hostName+'/images/icon/icon_folder_off.gif';
	    _viewIframe.style.display='none';
	    _viewLayer.style.display='none';
    }	
}
