﻿/*-----------------------------------------------------------------------------

			정보소외 수혜확대     [ 화면확대/축소 ]

개요:
		시각 장애우 및 약시력자를 위한 화면 화면 확대기능의 자바스크립트

		
	Program : common/js/scrZoom.js
	author : ?
	created : ?
	description : 화면 우측의 바로가기 메뉴의 화면확대/축소 설정 적용 Script입니다.

	modified : 
		2005/09/06 황종원
			- Domain에 상관없이 Cookie Setting을 위해 Function 수정
			- 화면의 배율을 계속 유지하기 위한 Function 추가
			
	modified : 
		2005/09/24 황종원
			- 최대확대률을 160으로 수정 (너무 확대하면 우측의 화면설정 버튼이 보이지 않습니다.
			
		
-----------------------------------------------------------------------------*/
document.onkeypress = getKey;

//initZoomDisplay() ;
	
	function getKey(keyStroke) {
		isNetscape=(document.layers);
		eventChooser = (isNetscape) ? keyStroke.which : event.keyCode;
		which = String.fromCharCode(eventChooser).toLowerCase();
		which2 = eventChooser;

		var el=event.srcElement;

		if ((el.tagName != "INPUT") && (el.tagName != "TEXTAREA"))		//input,textarea 안에서의 +.-값은 실행안되도록
		{			
			if(which == "+" || which == "=")
 {
				//zoomInOut('zoom', 'in');
                                f_scalescreen(1);
                        }
			else if(which == "-" || which == "_")
 {
                                f_scalescreen(-1);
				//zoomInOut('zoom', 'out');
                        }
		}
	}
	
	var zoomRate = 10;			//확대/축소시 증감률
	//var maxRate = 300;			//최대확대률
	var maxRate = 160;			//최대확대률
	var minRate = 100;			//최소축소률

	function zoomInOut(contentid, how) {

		if(GetCookie("zoomVal") != null && GetCookie("zoomVal") != ""){
			//document.all[contentid].style.zoom = GetCookie("zoomVal");
			document.body.style.zoom = GetCookie("zoomVal");
			currZoom=GetCookie("zoomVal");
		}
		else{
			//document.all[contentid].style.zoom = '100%'; 
			document.body.style.zoom = '100%'; 
			currZoom = '100%';
		}
		
		if (((how == "in") && (parseInt(currZoom) >= maxRate)) || ((how == "out") && (parseInt(currZoom) <= minRate)) ) {
			return; 
		}
		if (how == "in") {
			//document.all[contentid].style.zoom = parseInt(document.all[contentid].style.zoom)+zoomRate+'%'
			document.body.style.zoom = parseInt(document.body.style.zoom)+zoomRate+'%'
		}
		else {
			//document.all[contentid].style.zoom = parseInt(document.all[contentid].style.zoom)-zoomRate+'%'
			document.body.style.zoom = parseInt(document.body.style.zoom)-zoomRate+'%'
		}
		//SetCookie("zoomVal",document.all[contentid].style.zoom);
		SetCookie("zoomVal",document.body.style.zoom, 1);
	}



	function SetCookie( name, value, expiredays ){
		var todayDate = new Date();
		todayDate.setDate( todayDate.getDate() + expiredays );
		document.cookie = name + "=" + escape( value ) + "; path=/;";
	}
	
	function GetCookie( name )
	{
	        var nameOfCookie = name + "=";
	        var x = 0;
	        while ( x <= document.cookie.length )
	        {
	                var y = (x+nameOfCookie.length);
	                if ( document.cookie.substring( x, y ) == nameOfCookie ) {
	                        if ( (endOfCookie=document.cookie.indexOf( ";", y )) == -1 )
	                                endOfCookie = document.cookie.length;
	                        return unescape( document.cookie.substring( y, endOfCookie ) );
	                }
	                x = document.cookie.indexOf( " ", x ) + 1;
	                if ( x == 0 )
	                        break;
	        }
	        return "";
	}


/*
	아래처럼 하면 Local PC에서만 사용가능합니다.
	Test Server에 올리시면 Cookie를 설정하시더라도
	불러올 수가 없습니다.
	그래서, 이전에 확대버튼을 계속 누르면 120% 까지밖에 안된 것입니다.
	Cookie를 불러오는 것이 실패해서
	계속 100% Default만 불러온 것이지요.
	
	function SetCookie(name,value){
		document.cookie = name + "=" + escape (value)+";domain=127.0.0.1";
	}

	function GetCookie(name){
		if (document.cookie != "") {
			zoomc = document.cookie.split("; ");
			for (var i=0; i < zoomc.length; i++) {
                zoomv = zoomc[i].split("="); 
                if (zoomv[0] == name) {
				    return  unescape(zoomv[1]);
                }
			}        
		}else{
			return "";
		}
	}
*/
	
	function GoZoom(contentid){
		if(GetCookie("zoomVal") != null && GetCookie("zoomVal") != ""){
			//document.all[contentid].style.zoom = GetCookie("zoomVal");
			document.body.style.zoom = GetCookie("zoomVal");
			currZoom=GetCookie("zoomVal");
		}
		else{
			//document.all[contentid].style.zoom = '100%'; 
			document.body.style.zoom = '100%'; 
			currZoom = '100%';
		}
	}
	
	function initZoomDisplay(){
		var currZoom = "100%" ;
		if(GetCookie("zoomVal") != null && GetCookie("zoomVal") != ""){
			currZoom=GetCookie("zoomVal");
		}
		//document.all[contentid].style.zoom = currZoom; 
		document.body.style.zoom = currZoom ;
	}	





//=============================================================================================================



var stmnLEFT = 940; // 왼쪽 여백 (태그인넷가 왼쪽에서 10픽셀 떨어진 곳에 보여집니다) 
var stmnGAP1 = 120; // 위쪽 여백 (태그인넷가 위에서 10픽셀 떨어진 곳에 보여집니다) 
var stmnGAP2 = 140; // 스크롤시 브라우저 위쪽과 떨어지는 거리 
var stmnBASE = 200; // 스크롤 시작위치 
var stmnActivateSpeed = 200; 
var stmnScrollSpeed = 10; 

var stmnTimer; 

function ReadCookie(name) 
{ 
var label = name + "="; 
var labelLen = label.length; 
var cLen = document.cookie.length; 
var i = 0; 

while (i < cLen) { 
                var j = i + labelLen; 

                if (document.cookie.substring(i, j) == label) { 
                                var cEnd = document.cookie.indexOf(";", j); 
                                if (cEnd == -1) cEnd = document.cookie.length; 

                                return unescape(document.cookie.substring(j, cEnd)); 
                } 

                i++; 
} 

return ""; 
} 

function SaveCookie(name, value, expire) 
{ 
var eDate = new Date(); 
eDate.setDate(eDate.getDate() + expire); 
document.cookie = name + "=" + value + "; expires=" +  eDate.toGMTString()+ "; path=/"; 
} 

function RefreshStaticMenu() 
{ 
var stmnStartPoint, stmnEndPoint, stmnRefreshTimer; 

stmnStartPoint = parseInt(STATICMENU.style.top, 10); 
stmnEndPoint = document.documentElement.scrollTop + stmnGAP2; 
if (stmnEndPoint < stmnGAP1) stmnEndPoint = stmnGAP1; 

stmnRefreshTimer = stmnActivateSpeed; 

if ( stmnStartPoint != stmnEndPoint ) { 
                stmnScrollAmount = Math.ceil( Math.abs( stmnEndPoint - stmnStartPoint ) / 15 ); 
                STATICMENU.style.top = parseInt(STATICMENU.style.top, 10) + ( ( stmnEndPoint<stmnStartPoint ) ? -stmnScrollAmount : stmnScrollAmount ); 
                stmnRefreshTimer = stmnScrollSpeed; 
} 

stmnTimer = setTimeout ("RefreshStaticMenu();", stmnRefreshTimer); 
} 

function ToggleAnimate() 
{ 
if (ANIMATE.checked) { 
                RefreshStaticMenu(); 
                SaveCookie("ANIMATE", "true", 300); 
} 
else { 
                clearTimeout(stmnTimer); 
                STATICMENU.style.top = stmnGAP1; 
                SaveCookie("ANIMATE", "false", 300); 
} 
} 

function InitializeStaticMenu() 
{ 

		STATICMENU.style.left = stmnLEFT; 

		if (ReadCookie("ANIMATE") == "false") { 
                ANIMATE.checked = false; 
                STATICMENU.style.top = document.documentElement.scrollTop + stmnGAP1; 
		} 
		else { 
                ANIMATE.checked = true; 
                STATICMENU.style.top = document.documentElement.scrollTop + stmnBASE; 
                RefreshStaticMenu(); 
		} 
}

//================================================================================================

function open_quick(i)
{
	if(i == 1)
		window.open('/helpcom/hc_user_main.jsp',
            'Popupwin2','width=720,height=610,top=0,left=0,scrollbars=yes,resizable=no');
	else if(i == 2)
		window.open('/search/branch_search.jsp',
            'Popupwin3','width=1020,height=750,top=0,left=0,scrollbars=yes,resizable=no');
}

function fShowButton(gbn) {
	if(gbn == "1") {
		document.all.voiceOn.style.display = "none";
		document.all.voiceOff.style.display = "";
	} else if(gbn == "2"){
		document.all.voiceOn.style.display = ""; 
		document.all.voiceOff.style.display = "none";
	} 
}

/*
var sHTML = '';
sHTML += '<div id="quickmenu">';
sHTML += '<input id="ANIMATE" type="hidden">';
sHTML += '<div id="STATICMENU" style="position:absolute; left:0px; top:0px; width:56px; height:140px; z-index:0">';
sHTML += '<div class="textSize"><img src="/images/btnTextBig.gif" alt="글자 더 크게" onclick=f_scalescreen(1) style="cursor:hand;" /><img src="/images/btnTextSmall.gif" alt="글자 더 작게" onclick=f_scalescreen(-1) style="cursor:hand;"/></div>';

sHTML += '<div class="sound"><div id="voiceOn"><img class="imgBorder" src="/images/btnSoundOn.gif" alt="음성서비스 켜기" onclick="f_voiceStart(';
sHTML += "'start'";
sHTML += '); fShowButton('+"'1'"+'); " style="cursor:hand;"/></div>'; 
sHTML += '<div id="voiceOff" style="display:none;"><img class="imgBorder" src="/images/btnSoundOff.gif" alt="음성서비스 끄기" onclick="f_voiceStart(';
sHTML += "'stop'";
sHTML += '); fShowButton('+"'2'"+');" style="cursor:hand;" /></div></div>';
sHTML += '<div class="volume"><img class="imgBorder" src="/images/icoVolumePlus.gif" alt="볼륨 +" onclick="f_setVoiceVolume('+"'up'"+');" style="cursor:hand;"/><img class="imgBorder" src="/images/icoVolumeMinus.gif" alt="볼륨 -" onclick="f_setVoiceVolume('+"'down'"+');" style="cursor:hand;"/></div>';
sHTML += '<ul>'; 
sHTML += '<li><a href="/login/fla_loginCheckPage.jsp?key=O"><img class="imgBorder" src="/images/btnQuick01.gif" alt="마이페이지" /></a></li>';
sHTML += '<li><a href="/wbh/wbhb/wbhb_0900/wbhb_0901/wbhb_0901.html"><img src="/images/btnQuick02.gif" class="imgBorder" alt="보안프로그램 장애해결" /></a></li>';
sHTML += '<li><a href="javascript:open_quick(1);"><img class="imgBorder" src="/images/btnQuick03.gif" alt="온라인 도우미" /></a></li>';
sHTML += '<li><a href="javascript:open_quick(2);"><img class="imgBorder" src="/images/btnQuick04.gif" alt="지사찾기" /></a></li>';
sHTML += '<li><a href="/wbm/wbma/wbma_0100/wbma_0100.html"><img class="imgBorder" src="/images/btnQuick05.gif" alt="서식자료실" /></a></li>';
sHTML += '<li><a href="#top"><img class="imgBorder" src="/images/btnQuick06.gif" alt="top" /></a></li>';
sHTML += '</ul>';
sHTML += '</div>';
sHTML += '</div>';

document.write(sHTML);
InitializeStaticMenu();
*/

//================================================================================================



/******************************************************************************
 * 환경설정변수
 *****************************************************************************/

/* 음성 중지버튼 눌렀을때 (ON->OFF) */
var ttsenv_onstop_href = "javascript:f_voiceStart('start')";
var ttsenv_onstop_src = "http://www.pyeongtaek.go.kr/img/tts/toolbar_10.gif";
var ttsenv_onstop_alt = '음성 시작';
var ttsenv_onstop_title = '음성 시작';

/* 음성 시작버튼 눌렀을때 (OFF->ON) ON 이미지 추가해주세요!! */
var ttsenv_onstart_href = "javascript:f_voiceStart('stop')";
var ttsenv_onstart_src = "http://www.pyeongtaek.go.kr/img/tts/toolbar_10_1.gif";
var ttsenv_onstart_alt = '음성 중지';
var ttsenv_onstart_title = '음성 중지';

/* IE 사용시 화면 확대축소 비율 */
var ttsenv_zoomRate = 10;   /* 화면 확대축소 비율 변동폭 (% 단위) */
var ttsenv_zoommaxRate = 160;   /* 화면 확대축소시 원크기대 최대 확대비율 (% 단위) */
var ttsenv_zoomminRate = 100;   /* 화면 확대축소시 원크기대 최대 축소비율 (% 단위) */
var ttsenv_zoomDefault = 100;	/* 기본 화면 크기 */

/* NS 사용시 글자 확대축소 비율 */
var ttsenv_fontRate = 2;    /* 2pt 단위 */
var ttsenv_fontmaxRate = 19;    /* 최대 19pt */
var ttsenv_fontminRate = 9; /* 최소 9pt */
var ttsenv_fontDefault = 9;    /* 디폴트 숫자 크기 */

/* IE에도 글자 확대축소 사용여부 */
var ttsenv_mustadjustfont = false;

/* 글자색 배열 */
var ttsenv_fontcolor = new Array();
ttsenv_fontcolor[0] = "";
ttsenv_fontcolor[1] = "#000000";
ttsenv_fontcolor[2] = "#ffff00";
ttsenv_fontcolor[3] = "#ffffff";
ttsenv_fontcolor[4] = "#6666ff";
ttsenv_fontcolor[5] = "#ff6666";
ttsenv_fontcolor[6] = "#ff66ff";
ttsenv_fontcolor[7] = "#66ff66";

/* 배경색 배열 */
var ttsenv_bgcolor = new Array();
ttsenv_bgcolor[0] = "";
ttsenv_bgcolor[1] = "#ffffff";
ttsenv_bgcolor[2] = "#000000";
ttsenv_bgcolor[3] = "#6666ff";
ttsenv_bgcolor[4] = "#ff6666";
ttsenv_bgcolor[5] = "#ff66ff";
ttsenv_bgcolor[6] = "#66ff66";

/* 기본 음성속도 (1~5) */
var ttsenv_defaultspeed = 3;
/* 기본 음성볼륨 (1~5) */
var ttsenv_defaultvolume = 3;

var ttsenv_allow = new Array();
ttsenv_allow[0] = '137969cb255ad765f76eb5940030a1bb';
ttsenv_allow[1] = '9e93844b169763y760ec2cfe5363ff6d';
ttsenv_allow[2] = '6aac347c77407dd24ca9c721d8742eef';
ttsenv_allow[3] = 'bc1c66451891427d277f0fbce7b7e5a9';

/******************************************************************************
 * 내부사용변수 (건드릴 필요없음)
 *****************************************************************************/

/* 현재 확대축소비율 */
var tts_curRate;
/* 현재 글자색상번호 */
var tts_fontcolorindex;
/* 현재 배경색상번호 */
var tts_bgcolorindex;
/* 현재글자크기 */
var tts_curfontsize;

var tts_master = true;

/******************************************************************************
 * 외부에서 사용할 주요 스크립트
 *****************************************************************************/


/*****************************************************************************
 * f_setinit()
 *
 * 역할 : 쿠키값을 읽어서 글자 크기와 색상을 설정한다.
 *****************************************************************************/
function f_setInit()
{
    if((webgen_readcookie("zoomVal") != null) && (webgen_readcookie("zoomVal") != "")) {
        tts_curRate = webgen_readcookie("zoomVal");
        if(!((tts_curRate >ttsenv_zoomminRate)&(tts_curRate<ttsenv_zoommaxRate)))
            tts_curRate = ttsenv_zoomDefault;
        webgen_setcookie("zoomVal",tts_curRate, 1);
        document.body.style.zoom = tts_curRate + '%';
    } else {
        tts_curRate = ttsenv_zoomDefault;
        webgen_setcookie("zoomVal",tts_curRate, 1);
        document.body.style.zoom = tts_curRate + '%';
    }
    if((webgen_readcookie("fontSize")!=null)&&(webgen_readcookie("fontSize")!="")) {
        tts_curfontsize=webgen_readcookie("fontSize");
        if(!((tts_curfontsize>ttsenv_fontmaxRate)&(tts_curfontsize<ttsenv_fontminRate)))
            tts_curfontsize=ttsenv_fontDefault;
        webgen_setcookie("fontSize",tts_curfontsize,1);
    } else {
        tts_curfontsize=ttsenv_fontDefault;
        webgen_setcookie("fontSize",tts_curfontsize,1);
    }
    /*
    if(webgen_readcookie("fontColorIndex").length == 0)
        webgen_setcookie("fontColorIndex", 0, 1);
    else
        tts_fontcolorindex= webgen_readcookie("fontColorIndex");
    if(webgen_readcookie("bgColorIndex").length == 0)
        webgen_setcookie("bgColorIndex", 0, 1);
    else
        tts_bgcolorindex = webgen_readcookie("bgColorIndex");
    */
    webgen_setface();
}

/*****************************************************************************
 * f_setFontColor2()
 *
 * 입력인수1 : 색상 번호 (색상은 ttsenv_fontcolor 배열의 각 값)
 * 역할 : 글자색을 설정합니다.
 *****************************************************************************/
function f_setFontColor2(param)
{
    function webgen_subframefont(win,param) {
        if(win!=this) {
            if(win.f_setFontColor2!=null)
                win.f_setFontColor2(param);
        }
        if(win.frames.length>0) {
            var i;
            for(i=0;i<win.frames.length;i++)
                webgen_subframefont(win.frames[i],param);
        }
    }

    if ( (param >= 0) && (param < ttsenv_fontcolor.length) ) {
        tts_fontcolorindex = param;
        webgen_setface();
        webgen_subframefont(top,param);
    }
}

/*****************************************************************************
 * f_setBgColor2()
 *
 * 입력인수1 : 색상 번호 (색상은 ttsenv_fontcolor 배열의 각 값)
 * 역할 : 배경색을 설정합니다.
 *****************************************************************************/
function f_setBgColor2(param)
{
    function webgen_subframebg(win,param) {
        if(win!=this) {
            if(win.f_setBgColor2!=null)
                win.f_setBgColor2(param);
        }
        if(win.frames.length>0) {
            var i;
            for(i=0;i<win.frames.length;i++)
                webgen_subframebg(win.frames[i],param);
        }
    }

    if ( (param >= 0) && (param <= ttsenv_bgcolor.length) ) {
        tts_bgcolorindex = param;
        webgen_setface();
        webgen_subframebg(top,param);
    }
}

/* 화면 확대/축소 - 외부호출 */
/*****************************************************************************
 * f_scalescreen()
 *
 * 입력인수1 : mode = 0 현재값 유지, 1=확대, -1=축소
 * 역할 : 글자나 화면 확대 축소를 설정합니다. (ttsenv_mustabjustfont가
 *  true이거나 zoom 스타일을 지원하지 않는 경우 글자확대축소, 그 외는
 *  화면확대축소가 적용됩니다)
 *****************************************************************************/
function f_scalescreen(mode)
{
    function webgen_subframesize(win,param) {
        if(win!=this) {
            if(win.f_setFontColor2!=null)
                win.f_setFontColor2(param);
        }
        if(win.frames.length>0) {
            var i;
            for(i=0;i<win.frames.length;i++)
                webgen_subframefont(win.frames[i],param);
        }
    }

    if((document.body.style.zoom==null)||(ttsenv_mustadjustfont==true)) {
        /* 글자확대축소기능 사용시 */
        if(mode==1) { /* 확대 */
            if(tts_curfontsize==null)
                tts_curfontsize=ttsenv_fontminRate;
            else if(tts_curfontsize=='')
                tts_curfontsize=ttsenv_fontmaxRate;
            else {
                tts_curfontsize=tts_curfontsize-(-ttsenv_fontRate);
                if(tts_curfontsize>ttsenv_fontmaxRate)
                    tts_curfontsize=ttsenv_fontmaxRate;
            }
        } else if(-1) { /* 축소 */
            if(tts_curfontsize!=null) {
                if(tts_curfontsize!='') {
                    tts_curfontsize=tts_curfontsize-ttsenv_fontRate;
                    if(tts_curfontsize>ttsenv_fontminRate)
                        ttscurfontsize=ttsenv_fontminRate;
                }
            }
        }
        webgen_setcookie("fontSize", tts_curfontsize, 1);
        webgen_setface();
    } else {
        /* 화면확대축소기능 사용시 (비표준 zoom스타일 사용) */
        if(tts_curRate==null)
            tts_curRate=ttsenv_zoomDefault;
        if(tts_curRate=='')
            tts_curRate=ttsenv_zoomDefault;
        if (mode==1) {   /* 확대시 */
            tts_curRate=tts_curRate-(-ttsenv_zoomRate);
            if(tts_curRate>ttsenv_zoommaxRate)
                tts_curRate=ttsenv_zoommaxRate;
        } else if (mode==-1) {    /* 축소시 */
            tts_curRate=tts_curRate-ttsenv_zoomRate;
            if(tts_curRate<ttsenv_zoomminRate)
                tts_curRate=ttsenv_zoomminRate;
        }
        if(tts_curRate>ttsenv_zoommaxRate)
            tts_curRate = ttsenv_zoommaxRate;
        if(tts_curRate<ttsenv_zoomminRate)
            tts_curRate = ttsenv_zoomminRate;
        document.body.style.zoom = tts_curRate + '%';	/* 화면 확대 */
        webgen_setcookie("zoomVal",tts_curRate, 1);
    }
}

/*****************************************************************************
 * f_setBasic()
 *
 * 역할 : 글자 및 음성정보를 초기화한다.
 *****************************************************************************/
function f_setBasic()
{
    function webgen_subframerst(win,param) {
        if(win!=this) {
            if(win.f_setBasic!=null)
                win.f_setBasic();
        }
        if(win.frames.length>0) {
            var i;
            for(i=0;i<win.frames.length;i++)
                webgen_subframerst(win.frames[i],param);
        }
    }

    /* 글자크기 및 색 초기화 */
    /*
    webgen_setcookie("fontColorIndex", 0, 1);
    tts_fontcolorindex = webgen_readcookie("fontColorIndex");
    webgen_setcookie("bgColorIndex", 0, 1);
    tts_bgcolorindex = webgen_readcookie("bgColorIndex");
    */
    if((document.body.style.zoom!=null)&&(ttsenv_mustadjustfont==false)) {
        document.body.style.zoom = ttsenv_zoomDefault + '%';
        webgen_setcookie("zoomVal",ttsenv_zoomDefault, 1);
        tts_curRate = ttsenv_zoomDefault;
    } else {
        webgen_setcookie("fontSize",ttsenv_fontDefault,1);
        tts_curfontsize = webgen_readcookie("fontSize");
    }
    webgen_setface();
    /* 음성 초기화 */
    webgen_setcookie("voiceStart", "stop", 1);
    f_voiceStart( webgen_readcookie("voiceStart") );
    /*
    webgen_setcookie("voiceSpeed", ttsenv_defaultspeed, 1);
    voice_speed = webgen_readcookie("voiceSpeed");
    f_setVoiceSpeed( "NO" );
    webgen_setcookie("voiceVolum", ttsenv_defaultvolume, 1);
    voice_volume = webgen_readcookie("voiceVolum");
    f_setVoiceVolume( "NO" );
    */
    webgen_subframerst(top);
}

/*****************************************************************************
 * f_setVoice()
 *
 * 역할 : 쿠키에 저장된 과거 음성정보를 불러들인다.
 *  페이지 사용시 body onload 이벤트에 넣어주어야 함
 *****************************************************************************/
function f_setVoice()
{
    onTTSSoundInit(document.body, false);
    if(webgen_readcookie("voiceStart").length == 0)
        webgen_setcookie("voiceStart", "stop", 1);
    /*
    if(webgen_readcookie("voiceSpeed").length == 0) {
        webgen_readcookie("voiceSpeed", ttsenv_defaultspeed, 1);
        voice_speed=ttsenv_defaultspeed;
    }
    if(webgen_readcookie("voiceVolum").length == 0) {
        webgen_setcookie("voiceVolum", ttsenv_defaultvolume, 1);
        voice_volume=ttsenv_defaultvolume;
    }
    */
    if(webgen_readcookie("voiceStart") == "start") {   /* 음성 ON 시 */
        f_voiceStart("start");
        f_setVoiceSpeed("NO");
        f_setVoiceVolume("NO");
    }
    if(document.onkeydown!=null) {
	document.tempkeydown=document.onkeydown;
	document.onkeydown=f_CtrlKey;
    }
}

/*****************************************************************************
 * f_setVoiceSpeed()
 *
 * 입력인수 1 : 속도 up/down 여부 지정.
 *  'up' => 속도빠르게, 'down' => 속도느리게 
 * 역할 : 음성 속도를 빠르게 혹은 느리게 한다.
 *****************************************************************************/
function f_setVoiceSpeed(mode)
{
    var strPlay = "";

    if ( webgen_readcookie("voiceSpeed").length == 0 )
        voice_speed = ttsenv_defaultspeed;
    else
        voice_speed = webgen_readcookie("voiceSpeed");
    /* 1~5 사이 한계값을 넘어가지 않도록 조치 */
    if(voice_speed<1)
        voice_speed=1;
    else if(voice_speed>5)
        voice_speed=5;
    if( mode == "up" ) {
        if( voice_speed < 5 ) voice_speed = parseInt(voice_speed) + 1;
        f_playinput("음성 속도 "+ voice_speed);
    } else if( mode == "down" ){
        if( voice_speed > 1 ) voice_speed = parseInt(voice_speed) - 1;
        f_playinput("음성 속도 "+ voice_speed);
    }
    webgen_setcookie( "voiceSpeed", voice_speed, 1 );
}

/*****************************************************************************
 * f_setVoiceVolume()
 *
 * 입력인수 1 : 볼륨 up/down 여부 지정. 'up' => 볼륨크게, 'down' => 볼륨작게
 * 역할 : 볼륨을 줄이거나 늘린다
 *****************************************************************************/
function f_setVoiceVolume(mode)
{
    if ( webgen_readcookie("voiceVolum").length == 0 )
        voice_volume = ttsenv_defaultvolume;
    else
        voice_volume = webgen_readcookie("voiceVolum");
    /* 1~5 사이 범위 넘어가지 않도록 조치함 */
    if(voice_volume<1)
        voice_volume=1;
    else if(voice_volume>5)
        voice_volume=5;
    if( mode == "up" ) {
        if( voice_volume < 5 )
            voice_volume = parseFloat(voice_volume) + 1;
        f_playinput("음성 볼륨 "+ voice_volume);
    } else if( mode == "down" ) {
        if( voice_volume > 1 )
            voice_volume = parseFloat(voice_volume) - 1;
        f_playinput("음성 볼륨 "+ voice_volume);
    }
    //Cookie 재설정
    webgen_setcookie( "voiceVolum", voice_volume, 1 );
}

/*****************************************************************************
 * f_playinput()
 *
 * 입력인수1 : 음성으로 들을 문자열
 * 역할 : 문자열을 입력받아 음성으로 내보낸다.
 *****************************************************************************/
function f_playinput(inText) {
    onDirectOut(inText);
}

/*****************************************************************************
 * f_playinput_d()
 *
 * 입력인수1 : 음성으로 들을 문자열
 * 역할 : 문자열을 입력받아 음성으로 내보낸다. (f_playinput_d()와 동일함)
 *****************************************************************************/
function f_playinput_d(inText) {
    onDirectOut(inText);
}


/*****************************************************************************
 * f_voiceStart()
 *
 * 입력인수 1 : 음성 ON/OFF여부. "start" -> 음성ON, "stop" -> 음성 OFF
 * 역할 : 음성 ON/OFF 기능을 수행한다.
 *****************************************************************************/
function f_voiceStart(val)
{
    function webgen_displayon(mode) {
        var i;
        if(mode==1) {   /* OFF -> ON */
            for(i=1;i<=2;i++) {
                var obj=document.getElementById('tts_tool_on_'+i);
                if(obj!=null)
                    obj.style.display='block';
            }
        } else {    /* ON -> OFF */
            for(i=1;i<=2;i++) {
                var obj=document.getElementById('tts_tool_on_'+i);
                if(obj!=null)
                    obj.style.display='none';
            }
        }
    }
    if(val == "start") {
        /* 음성버튼은 일단 ON 한다. 실패시는 자동으로 OFF한다. */
        /*
        var lobj = document.getElementById("voice_link");
        var tobj = document.getElementById("voice_start");
        lobj.href = ttsenv_onstart_href;
        tobj.src = ttsenv_onstart_src;
        tobj.alt = ttsenv_onstart_alt;
        tobj.title = ttsenv_onstart_title;
        webgen_displayon(1);
        */
		fShowButton(1);
        webgen_setcookie("voiceStart", "start", 1);
        uvoice_mode = true;
    } else if(val == "stop") {
        /*
        var lobj = document.getElementById("voice_link");
        var tobj = document.getElementById("voice_start");
        lobj.href = ttsenv_onstop_href;
        tobj.src = ttsenv_onstop_src;
        tobj.alt = ttsenv_onstop_alt;
        tobj.title = ttsenv_onstop_title;
        webgen_displayon(0);
        */
		fShowButton(2);
        webgen_setcookie("voiceStart", "stop", 1);
        uvoice_mode = false;
    }
}

/* 내부 함수 : 글자크기 / 글자색 / 배경색 설정 (IE전용 화면확대축소는 여기가 아닌 f_scalescreen에서 직접 처리한다.) */
function webgen_setface()
{
    function webgen_setface_unit(tagarray,setback) {
        var i;
        if(tagarray!=null) {
            for (i=0;i<tagarray.length;i++) {
                /*
                   tagarray[i].style.color=ttsenv_fontcolor[tts_fontcolorindex];
                   if(setback==true)
                   tagarray[i].style.backgroundColor=ttsenv_bgcolor[tts_bgcolorindex];
                   */
                if((document.body.style.zoom==null)||(ttsenv_mustadjustfont==true)) {
                    if((tts_curfontsize!='')&&(tts_curfontsize!=null))
                        tagarray[i].style.fontSize=tts_curfontsize+'pt';
                    else
                        tagarray[i].style.fontSize='';
                }
            }
        }
    }
    var objs;

    objs=document.getElementsByTagName("td");
    webgen_setface_unit(objs,true);
    objs=document.getElementsByTagName("th");
    webgen_setface_unit(objs,true);
    objs=document.getElementsByTagName("div");
    webgen_setface_unit(objs,true);
    objs=document.getElementsByTagName("body");
    webgen_setface_unit(objs,true);
    objs=document.getElementsByTagName("a");
    webgen_setface_unit(objs,false);
    objs=document.getElementsByTagName("p");
    webgen_setface_unit(objs,false);
    objs=document.getElementsByTagName("span");
    webgen_setface_unit(objs,false);
    if(document.getElementById('select2')!=null)
        document.getElementById('select2').selectedIndex = parseInt(tts_fontcolorindex);
    if(document.getElementById('select')!=null)
        document.getElementById('select').selectedIndex = parseInt(tts_bgcolorindex);
    webgen_setcookie("fontColorIndex", tts_fontcolorindex , 1);
    webgen_setcookie("bgColorIndex", tts_bgcolorindex , 1);
    if((document.body.style.zoom==null)||(ttsenv_mustadjustfont==true))
        webgen_setcookie("fontSize", tts_curfontsize, 1);
}


/* 내부 함수 : 쿠키 읽기, str = 읽어들일 쿠키 키 이름 */
function webgen_readcookie(str)
{
    var key = str + "=" ;
    var key_len = key.length ;
    var cookie_len = document.cookie.length;
    var i = 0;

    while (i < cookie_len ) {
        var j = i + key_len;
        if ( document.cookie.substring( i, j ) == key ) {
            var cookie_end = document.cookie.indexOf(";",j);
            if (cookie_end == -1)
                cookie_end = document.cookie.length;
            return document.cookie.substring(j,cookie_end );
        }
        i++
    }
    return ""
}

/* 쿠키 설정함수, key = 쿠키 키이름, value = 쿠키 키값, term = 유효일자(보통 1로 넣음) */
function webgen_setcookie(key, value, term){
    var expire = new Date();
    expire.setDate( expire.getDate() + term );
    document.cookie = key + "=" + escape( value ) + "; path=/; expires=" + expire.toGMTString() + ";";
}



/*---------------------------------------------------------------------------
  음성 on/off 단축키 설정
  -----------------------------------------------------------------------------*/


function f_CtrlKey()
{
    /* Ctrl+F12 음성 on/off 단축키 기능 */
    if (window.event.ctrlKey && (event.keyCode == 123)){
        var vStart = webgen_readcookie("voiceStart");
        if (vStart == "start")
            f_voiceStart( "stop");
        else
            f_voiceStart( "start");
    }

    /* Ctrl+Shift+T 상단메뉴 단축키 기능 */
    if (window.event.ctrlKey &&  window.event.shiftKey && event.keyCode == 84){
        if(document.getElementById('tmenuptr')!=null)
            document.getElementById('tmenuptr').focus();	// 상단 Home으로 focus() 이동
    }

    /* Ctrl+Shift+L 좌측서브메뉴 단축키 기능 */
    if (window.event.ctrlKey &&  window.event.shiftKey && event.keyCode == 76){
        if(document.getElementById('lmenuptr')!=null)
            document.getElementById('lmenuptr').focus();	// 좌측 focus이동할 부분의 아이디 입력
    }

    /* Ctrl+Shift+C 본문 단축키 기능 */
    if (window.event.ctrlKey &&  window.event.shiftKey && event.keyCode == 67){
        if(document.getElementById('startptr')!=null)
            document.getElementById('startptr').focus();	// 본문 focus이동할 부분의 아이디 입력
    }

    /* Ctrl+Shift+B 문서끝 단축키 기능 */
    if (window.event.ctrlKey &&  window.event.shiftKey && event.keyCode == 66){
        if(document.getElementById('bottomptr')!=null)
            document.getElementById('bottomptr').focus();	// 하단 focus이동할 부분의 아이디 입력
    }

    /*
    if (window.event.ctrlKey &&  window.event.shiftKey && event.keyCode == 72){
        document.getElementById('movehelp').focus();
        document.getElementById("Helpplayer").play();
    }
    */
    if(document.tempkeydown!=null)
	document.tempkeydown();
}


/*
 * webgen java version
 */

var uvoice_mode = false;
var voice_speed = 3;
var voice_volume = 3;

var debug			 = true;
var HttpRequestObject= null;

function GetXmlHttp() {	
    if(HttpRequestObject){
        HttpRequestObject.abort()
    }

    if (window.XMLHttpRequest){
        HttpRequestObject = new XMLHttpRequest();
    }else if (window.ActiveXObject) {// code for IE
        try{
            HttpRequestObject = new ActiveXObject("Msxml2.XMLHTTP");
        }catch (e){
            try{
                HttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
                HttpRequestObject=null;
            }
        }
    }

    return HttpRequestObject;	
}

function PostAjaxResponseToFunction(url, parameters, callbackFunction, params){
    var xmlhttp = new GetXmlHttp();
    if (xmlhttp)	{
        timeoutId = window.setTimeout(function()  
                {  
                xmlhttp.abort();											
                tts_res_wait = false;
                //alert("Connection timeout!");
                //document.body.style.cursor='default';
                }, 5); 

        xmlhttp.onreadystatechange = function () 
        {
            if (xmlhttp && xmlhttp.readyState==4){//we got something back..
                if (xmlhttp.status==200){
                    var re = /^\s+|\s+$/g;
                    var response = xmlhttp.responseText;
                    if(response){
                        response = response.replace(re, '');
                    }
                    var functionToCall = callbackFunction+'(response,'+params+')';

                            eval(functionToCall);
                            //alert(functionToCall);
                            } else if(debug){
                            //alert("HTTP status="+xmlhttp.status);
                            }
                            }
                            window.clearTimeout(timeoutId);
                            //document.body.style.cursor='default';
                            }

                            //xmlhttp.overrideMimeType('text/xml');

                            xmlhttp.open('POST', url, true);
                            xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                            xmlhttp.setRequestHeader("Content-length", parameters.length);
                            xmlhttp.setRequestHeader("Accept-Language", "ko");
                            //Accept-Language: ko
                            xmlhttp.setRequestHeader("Connection", "close");
                            xmlhttp.send(parameters);
    }
}


var MD5 = function (string) {

    function RotateLeft(lValue, iShiftBits) {
        return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
    }

    function AddUnsigned(lX,lY) {
        var lX4,lY4,lX8,lY8,lResult;
        lX8 = (lX & 0x80000000);
        lY8 = (lY & 0x80000000);
        lX4 = (lX & 0x40000000);
        lY4 = (lY & 0x40000000);
        lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
        if (lX4 & lY4) {
            return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
        }
        if (lX4 | lY4) {
            if (lResult & 0x40000000) {
                return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
            } else {
                return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
            }
        } else {
            return (lResult ^ lX8 ^ lY8);
        }
    }

    function F(x,y,z) { return (x & y) | ((~x) & z); }
    function G(x,y,z) { return (x & z) | (y & (~z)); }
    function H(x,y,z) { return (x ^ y ^ z); }
    function I(x,y,z) { return (y ^ (x | (~z))); }

    function FF(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };

    function GG(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };

    function HH(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };

    function II(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };

    function ConvertToWordArray(string) {
        var lWordCount;
        var lMessageLength = string.length;
        var lNumberOfWords_temp1=lMessageLength + 8;
        var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
        var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
        var lWordArray=Array(lNumberOfWords-1);
        var lBytePosition = 0;
        var lByteCount = 0;
        while ( lByteCount < lMessageLength ) {
            lWordCount = (lByteCount-(lByteCount % 4))/4;
            lBytePosition = (lByteCount % 4)*8;
            lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
            lByteCount++;
        }
        lWordCount = (lByteCount-(lByteCount % 4))/4;
        lBytePosition = (lByteCount % 4)*8;
        lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
        lWordArray[lNumberOfWords-2] = lMessageLength<<3;
        lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
        return lWordArray;
    };

    function WordToHex(lValue) {
        var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
        for (lCount = 0;lCount<=3;lCount++) {
            lByte = (lValue>>>(lCount*8)) & 255;
            WordToHexValue_temp = "0" + lByte.toString(16);
            WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
        }
        return WordToHexValue;
    };

    function Utf8Encode(string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                //alert("==");
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    };

    var x=Array();
    var k,AA,BB,CC,DD,a,b,c,d;
    var S11=7, S12=12, S13=17, S14=22;
    var S21=5, S22=9 , S23=14, S24=20;
    var S31=4, S32=11, S33=16, S34=23;
    var S41=6, S42=10, S43=15, S44=21;

    string = Utf8Encode(string);
    x = ConvertToWordArray(string);


    a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;

    for (k=0;k<x.length;k+=16) {
        AA=a; BB=b; CC=c; DD=d;
        a=FF(a,b,c,d,x[k +0],S11,0xD76AA478);
        d=FF(d,a,b,c,x[k +1],S12,0xE8C7B756);
        c=FF(c,d,a,b,x[k +2],S13,0x242070DB);
        b=FF(b,c,d,a,x[k +3],S14,0xC1BDCEEE);
        a=FF(a,b,c,d,x[k +4],S11,0xF57C0FAF);
        d=FF(d,a,b,c,x[k +5],S12,0x4787C62A);
        c=FF(c,d,a,b,x[k +6],S13,0xA8304613);
        b=FF(b,c,d,a,x[k +7],S14,0xFD469501);
        a=FF(a,b,c,d,x[k +8],S11,0x698098D8);
        d=FF(d,a,b,c,x[k +9],S12,0x8B44F7AF);
        c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
        b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
        a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
        d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
        c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
        b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
        a=GG(a,b,c,d,x[k +1],S21,0xF61E2562);
        d=GG(d,a,b,c,x[k +6],S22,0xC040B340);
        c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
        b=GG(b,c,d,a,x[k +0],S24,0xE9B6C7AA);
        a=GG(a,b,c,d,x[k +5],S21,0xD62F105D);
        d=GG(d,a,b,c,x[k+10],S22,0x2441453);
        c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
        b=GG(b,c,d,a,x[k +4],S24,0xE7D3FBC8);
        a=GG(a,b,c,d,x[k +9],S21,0x21E1CDE6);
        d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
        c=GG(c,d,a,b,x[k +3],S23,0xF4D50D87);
        b=GG(b,c,d,a,x[k +8],S24,0x455A14ED);
        a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
        d=GG(d,a,b,c,x[k +2],S22,0xFCEFA3F8);
        c=GG(c,d,a,b,x[k +7],S23,0x676F02D9);
        b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
        a=HH(a,b,c,d,x[k +5],S31,0xFFFA3942);
        d=HH(d,a,b,c,x[k +8],S32,0x8771F681);
        c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
        b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
        a=HH(a,b,c,d,x[k +1],S31,0xA4BEEA44);
        d=HH(d,a,b,c,x[k +4],S32,0x4BDECFA9);
        c=HH(c,d,a,b,x[k +7],S33,0xF6BB4B60);
        b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
        a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
        d=HH(d,a,b,c,x[k +0],S32,0xEAA127FA);
        c=HH(c,d,a,b,x[k +3],S33,0xD4EF3085);
        b=HH(b,c,d,a,x[k +6],S34,0x4881D05);
        a=HH(a,b,c,d,x[k +9],S31,0xD9D4D039);
        d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
        c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
        b=HH(b,c,d,a,x[k +2],S34,0xC4AC5665);
        a=II(a,b,c,d,x[k +0],S41,0xF4292244);
        d=II(d,a,b,c,x[k +7],S42,0x432AFF97);
        c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
        b=II(b,c,d,a,x[k +5],S44,0xFC93A039);
        a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
        d=II(d,a,b,c,x[k +3],S42,0x8F0CCC92);
        c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
        b=II(b,c,d,a,x[k +1],S44,0x85845DD1);
        a=II(a,b,c,d,x[k +8],S41,0x6FA87E4F);
        d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
        c=II(c,d,a,b,x[k +6],S43,0xA3014314);
        b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
        a=II(a,b,c,d,x[k +4],S41,0xF7537E82);
        d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
        c=II(c,d,a,b,x[k +2],S43,0x2AD7D2BB);
        b=II(b,c,d,a,x[k +9],S44,0xEB86D391);
        a=AddUnsigned(a,AA);
        b=AddUnsigned(b,BB);
        c=AddUnsigned(c,CC);
        d=AddUnsigned(d,DD);
    }

    var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);

    return temp.toLowerCase();
}

var name_i = new Array();
var name_n = new Array();


function InitEvent  (oElement, bFrame){
    oElement.onmouseover  = function(event){onElementOver('m', event, this);};
    oElement.onfocus	  = function(event){onElementOver('f', event, this);};
    oElement.onchange	  = function(event){onElementOver('c', event, this);};
}

var iframe_idx = 0;
function InitElement(oElement, bFrame){
	var elemArray = oElement.childNodes;

	if(bFrame){

	}

	if(elemArray){
		for (var i = 0; i < elemArray.length; i++) {
			var element  = elemArray[i];
			var elemTag  = element.tagName;
			var elemChild= element.childNodes;

			if (elemTag) {
				elemTag = elemTag.toUpperCase();

				if(elemTag=="!" || elemTag=="SCRIPT"){
					continue;
				}else if((elemTag=="TD")||(elemTag=="DIV")) {
					var bEvent	= true;
					var bText	= false;
					var oNode	= Array();

					for(var ii=0; ii<elemChild.length;ii++){
						if(elemChild[ii].tagName){
							if(elemChild[ii].tagName!="FONT" && elemChild[ii].tagName!="BR"){
								bEvent = false;
							}
						}else{
							if(elemChild[ii].nodeName=="#text"){
								var elemNew = document.createElement("SPAN");
								elemNew.style.padding = 0;
								elemNew.style.margin = 0;
								elemNew.innerText = elemChild[ii].nodeValue;

								//elemChild[ii].replaceNode (elemNew);
								if(elemChild[ii].replaceNode){
									elemChild[ii].replaceNode (elemNew);
								}else{
									elemChild[ii].replaceChild(elemNew);
								}
								bEvent	= false;
							}
						}
					}
					if(bEvent){
						element.temp1 = element.onmouseover;
						element.onmouseover  = function(event){onElementOver('m', bFrame, this,this.temp1);};
						element.temp2 = element.onfocus;
						element.onfocus = function(event){onElementOver('f', bFrame, this,this.temp2);};
					}else{
						InitElement(element, bFrame);
					}
				}else if(elemTag=="P") {
					//NO Child Node !!!
					var bEvent = true;
					for(var ii=0; ii<elemChild.length;ii++){
						if(elemChild[ii].tagName){
							if(elemChild[ii].tagName!="FONT" && elemChild[ii].tagName!="BR"){
								bEvent = false;
								break;
							}
						}
					}
					if(bEvent){
						element.temp1 = element.onmouseover;
						element.onmouseover  = function(event){onElementOver('m', bFrame, this,this.temp1);};
						element.temp2 = element.onfocus;
						element.onfocus = function(event){onElementOver('f', bFrame, this,this.temp2);};
					}else{
						InitElement(element, bFrame);
					}
				}else if(elemTag=="A"){
					element.temp1 = element.onmouseover;
					element.onmouseover  = function(event){onElementOver('m', bFrame, this,this.temp1);};
					element.temp2 = element.onfocus;
					element.onfocus = function(event){onElementOver('f', bFrame, this,this.temp2);};
					InitElement(element, bFrame);
				}else if(elemTag=="SELECT"){
					element.temp1 = element.onmouseover;
					element.onmouseover  = function(event){onElementOver('m', bFrame, this,this.temp1);};
					element.temp2 = element.onfocus;
					element.onfocus = function(event){onElementOver('f', bFrame, this, this.temp2);};
					element.temp3 = element.onchange;
					element.onchange	 = function(event){onElementOver('c', bFrame, this, this.temp3);};
				}else if((elemTag=="AREA")||(elemTag=="SPAN")||(elemTag=="FONT")||(elemTag=="H1")||(elemTag=="H3")||(elemTag=="H4")||(elemTag=="H5")||(elemTag=="H6")||(elemTag=="STRONG")||(elemTag=="B")) {
					element.temp1 = element.onmouseover;
					element.onmouseover  = function(event){onElementOver('m', bFrame, this, this.temp1);};
					element.temp2 = element.onfocus;
					element.onfocus = function(event){onElementOver('f', bFrame, this, this.temp2);};
				}else if(elemTag=="LABEL"){
					element.temp1 = element.onmouseover;
					element.onmouseover  = function(event){onElementOver('m', bFrame, this, this.temp1);};
					element.temp2 = element.onfocus;
					element.onfocus = function(event){onElementOver('f', bFrame, this, this.temp2);};
				}else if(elemTag=="INPUT"){
					var eletype = element.type.toUpperCase();
					if((eletype=="TEXT")||(eletype=="PASSWORD")||(eletype=="CHECKBOX")||(eletype=="RADIO")||(eletype=="IMAGE")) {
						element.temp1 = element.onmouseover;
						element.onmouseover  = function(event){onElementOver('m', bFrame, this, this.temp1);};
						element.temp2 = element.onfocus;
						element.onfocus = function(event){onElementOver('f', bFrame, this, this.temp2);};
					}
				}else if(elemTag=="IMG") {
					if(element.useMap) {
					}else{
						element.temp1 = element.onmouseover;
						element.onmouseover  = function(event){onElementOver('m', bFrame, this, this.temp1);};
						element.temp2 = element.onfocus;
						element.onfocus = function(event){onElementOver('f', bFrame, this, this.temp2);};
					}
				}else if(elemTag=="IFRAME"){
				}else if(elemChild){
					InitElement(element, bFrame);
				}
			}else{
				//alert(elemTag);
				if(element.nodeName=="#text"){
					//alert(element.nodeValue);					
				}
			}
		}
	}
}

function AceproRes(response, divname){
    iframe = document.getElementById("iframe_tts_sound");
    if(iframe){
        //response = response.replace(/ /g,"");
        iframe.src = "/eswebgen/webplay.jsp?tts_name="+response;
    }else{
        //alert("==== debug_res Not Found!");
    }
    tts_res_wait = false;
}

function utf8_encode(string) {
    var ret = string;

    if(ret){
        ret = ret.toString();
        ret = encodeURIComponent(ret);
        ret = ret.replace(/\+/g, "%2B");
    } 
    return ret;
}
var idx = 0;
var tts_text_prev = null;


function GetElementText(oElement){
    if(!oElement){
        return null;
    }

    var tagname  = oElement.tagName.toUpperCase();
    var tts_text = null;
    if(tagname=="IMG" || tagname=="AREA"){
        tts_text = oElement.alt;
    }else
        if(tagname=="SELECT"){
            if(oElement.options!=null) {
                if(oElement.options.length > 0) {
                    option  = oElement.options[oElement.selectedIndex];
                    tts_text= option.innerHTML;
                }
            }
        }else if(tagname=="INPUT"){
            if(oElement.type.toUpperCase()=="IMAGE") {
                tts_text = oElement.alt;
            } else {
                tts_text = oElement.title;
            }
        }else if(tagname=="A") {
            /* A태그는 약간 복잡하다 */
            var nodelist = oElement.childNodes;
            var i;
            tts_text=null;
            /* 먼저 내부 IMG 태그 스캔 - 있다면 IMG태그의 ALT 사용 */
            for(i=0;i<nodelist.length;i++) {
                if(nodelist[i].tagName!=null) {
                    if(nodelist[i].tagName.toUpperCase()=="IMG") {
                        tts_text=nodelist[i].alt;
                    }
                }
            }
            /* IMG태그 없는 경우 텍스트를 읽는다 */
            if(tts_text==null) {
                if (navigator.userAgent.indexOf("Firefox")>-1) {
                    tts_text = oElement.innerHTML;
                    tts_text = tts_text.replace(/&nbsp;/ig," ");
                    tts_text = tts_text.replace(/<br>/ig,"\n");
                    tts_text = tts_text.replace(/<br[^>]+>/ig,"\n");
                    tts_text = tts_text.replace(/<[^>]+>/g,"");
                } else {
                    tts_text = oElement.innerText;
                }
            }
        }else if((tagname=="FRAME")||(tagname=="IFRAME")||(tagname=="NOFRAMES")||(tagname=="FRAMESET")) {
            tts_text = oElement.title;
        }else{
            if (navigator.userAgent.indexOf("Firefox")>-1) {
                tts_text = oElement.innerHTML;
                tts_text = tts_text.replace(/&nbsp;/ig," ");
                tts_text = tts_text.replace(/<br>/ig,"\n");
                tts_text = tts_text.replace(/<br[^>]+>/ig,"\n");
                tts_text = tts_text.replace(/<[^>]+>/g,"");
            } else {
                tts_text = oElement.innerText;
            }
        }

    //tts_text = tts_text.replace(/ /g,"");
    if(tts_text.length > 0 && tts_text != tts_text_prev){
        return tts_text;
    }
    return null;
}

var tts_res_wait = false;
function onElementOver(type, bFrame, obj, callback){
    if(tts_res_wait){
    }else{
        var tts_text = GetElementText(obj);
        if(tts_text){
            md5_url = MD5(document.location.href);
            md5_text= MD5(tts_text);
            //tts_text = tts_text.replace(" ","<pause=\"5\">");
            tts_res_wait = true;
            if(uvoice_mode==true) {
		if(forwardcheck()==true) {
                    PostAjaxResponseToFunction("/eswebgen/webgen.jsp", "tagname="+obj.tagName+"&ttstext="+utf8_encode(tts_text)+"&md5_url="+md5_url+"&md5_text="+md5_text+"&ttsvolume="+voice_volume+"&ttsspeed="+voice_speed, "AceproRes", bFrame);
                }
            } else {
                tts_res_wait = false;
            }
            idx++;
        }
    }
    /* 기존 함수 호출하기 */
    if(callback!=null) {
        var obj;
        obj.run = callback;
        obj.run();
    }
}

function onDirectOut(text,bFrame) {
    if(!(tts_res_wait)) {
        if(text) {
            md5_url = MD5(document.location.href);
            md5_text= MD5(text);
            tts_res_wait = true;
            //text = text.replace(" ","<pause=\"5\">");
            if(uvoice_mode==true) {
		if(forwardcheck()==true) {
                    PostAjaxResponseToFunction("/eswebgen/webgen.jsp", "tagname=direct&ttstext="+utf8_encode(text)+"&md5_url="+md5_url+"&md5_text="+md5_text+"&ttsvolume="+voice_volume+"&ttsspeed="+voice_speed, "AceproRes", bFrame);
		}
            } else {
                tts_res_wait = false;
            }
            idx++;
        }
    }
}

function forwardcheck() {
    var i;
    var tg=MD5(document.location.host);
    if(ttsenv_allow.length==0)
	return false;
    for(i=0;i<ttsenv_allow.length;i++) {
	if(tg==ttsenv_allow[i])
	    return true;
    }
    return false;
}

function onTTSSoundInit(body, bFrame){
    if(!bFrame){
        //=========================================================
        //디버깅용
        //=========================================================
        InitElement(body, false);
        //=========================================================
        //디버깅용
        //=========================================================
        var iframe = document.createElement("iframe");
        iframe.id="iframe_tts_sound";
        iframe.style.width ="0";
        iframe.style.height="0";
        //iframe.style.display="none";
        document.body.appendChild(iframe);
    }else{
        InitElement(body, true);
    }
}


